From Michelleberggreg@ymail.com Fri Jan 1 16:16:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.2 required=5.0 tests=BAYES_50,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o01MGVch034414 for ; Fri, 1 Jan 2010 16:16:31 -0600 X-ASG-Debug-ID: 1262384237-2a1601aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from node142.smtp.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A4AED136538 for ; Fri, 1 Jan 2010 14:17:17 -0800 (PST) Received: from node142.smtp.com (node142.smtp.com [72.55.175.142]) by cuda.sgi.com with ESMTP id noUb1A7vWxQ9xhFn for ; Fri, 01 Jan 2010 14:17:17 -0800 (PST) Received: from www.vexat.net (174.36.218.26-static.reverse.softlayer.com [174.36.218.26]) by node142.smtp.com (Postfix) with ESMTPA id 5B7512AF849 for ; Fri, 1 Jan 2010 17:17:16 -0500 (EST) X-SMTPCOM-Spam-Policy: interspire.smtp.com is a paid relay service. We do not tolerate UCE of any kind. Please report it ASAP to abuse@smtp.com X-SMTPCOM-Sender-ID: 1161 X-SMTPCOM-Tracking-Number: 125455983 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Hi Subject: Hi Message-ID: <63ba90258fee40aac2fba1123950d4fa@www.vexat.net> Date: Fri, 01 Jan 2010 16:17:16 -0600 From: "Michelle Berggreg" Reply-To: Michelleberggreg@ymail.com MIME-Version: 1.0 X-Mailer-LID: 42 List-Unsubscribe: X-Mailer-RecptId: 118198 X-Mailer-SID: 82 X-Mailer-Sent-By: 4 Content-Type: text/plain; format=flowed; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Barracuda-Connect: node142.smtp.com[72.55.175.142] X-Barracuda-Start-Time: 1262384238 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0007 1.0000 -2.0163 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18695 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey, I'm just so excited, I can't tell you! I just bought a Louis Vuitton Monogram Graffiti Neverfull Bag for New Year. Have a look: http://www.vexat.net/iem/link.php?M=118198&N=82&L=97&F=T (Isn't it just AWESOME!) And this is the BEST Part. I got it for $200 off this super cool website selling some A+ Replicas. No one even notices its not authentic! Try your hand out. I'm sure you'll love it. Feel free to write to me in case you're looking for some coupons. I have some ;) Cya! Michelle Berggreg Powered by Interspire From SRS0+jZ7L+31+fromorbit.com=dave@internode.on.net Fri Jan 1 20:41:19 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o022fIk9051669 for ; Fri, 1 Jan 2010 20:41:19 -0600 X-ASG-Debug-ID: 1262400124-657402940000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6C2D01C1ED6D for ; Fri, 1 Jan 2010 18:42:05 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id Nqg9JFd5dPFn9ZkY for ; Fri, 01 Jan 2010 18:42:05 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10856271-1927428 for ; Sat, 02 Jan 2010 13:12:03 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQtwH-0007we-AD for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:42:01 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQtsi-0004yn-GO for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:38:20 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] XFS: Kill filestreams cache flush Subject: [PATCH] XFS: Kill filestreams cache flush Date: Sat, 2 Jan 2010 13:38:20 +1100 Message-Id: <1262399900-19110-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1262400127 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The filestreams cache flush is not needed in the sync code as it does not affect data writeback, and it is now not used by the growfs code, either, so kill it. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_sync.c | 3 --- fs/xfs/xfs_filestream.c | 14 -------------- fs/xfs/xfs_filestream.h | 1 - fs/xfs/xfs_mru_cache.c | 2 +- fs/xfs/xfs_mru_cache.h | 1 - 5 files changed, 1 insertions(+), 20 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 0e17683..c980d68 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -444,9 +444,6 @@ xfs_quiesce_data( xfs_sync_data(mp, SYNC_WAIT); xfs_qm_sync(mp, SYNC_WAIT); - /* drop inode references pinned by filestreams */ - xfs_filestream_flush(mp); - /* write superblock and hoover up shutdown errors */ error = xfs_sync_fsdata(mp, SYNC_WAIT); diff --git a/fs/xfs/xfs_filestream.c b/fs/xfs/xfs_filestream.c index 914d00d..390850e 100644 --- a/fs/xfs/xfs_filestream.c +++ b/fs/xfs/xfs_filestream.c @@ -455,20 +455,6 @@ xfs_filestream_unmount( } /* - * If the mount point's m_perag tree is going to be modified, all - * outstanding cache entries must be flushed to avoid accessing reference count - * addresses that have been freed. The call to xfs_filestream_flush() must be - * made inside the block that holds the m_perag_lock in write mode to do the - * reallocation. - */ -void -xfs_filestream_flush( - xfs_mount_t *mp) -{ - xfs_mru_cache_flush(mp->m_filestream); -} - -/* * Return the AG of the filestream the file or directory belongs to, or * NULLAGNUMBER otherwise. */ diff --git a/fs/xfs/xfs_filestream.h b/fs/xfs/xfs_filestream.h index 58378b2..260f757 100644 --- a/fs/xfs/xfs_filestream.h +++ b/fs/xfs/xfs_filestream.h @@ -135,7 +135,6 @@ int xfs_filestream_init(void); void xfs_filestream_uninit(void); int xfs_filestream_mount(struct xfs_mount *mp); void xfs_filestream_unmount(struct xfs_mount *mp); -void xfs_filestream_flush(struct xfs_mount *mp); xfs_agnumber_t xfs_filestream_lookup_ag(struct xfs_inode *ip); int xfs_filestream_associate(struct xfs_inode *dip, struct xfs_inode *ip); void xfs_filestream_deassociate(struct xfs_inode *ip); diff --git a/fs/xfs/xfs_mru_cache.c b/fs/xfs/xfs_mru_cache.c index 4b0613d..45ce15d 100644 --- a/fs/xfs/xfs_mru_cache.c +++ b/fs/xfs/xfs_mru_cache.c @@ -398,7 +398,7 @@ exit: * guaranteed that all the free functions for all the elements have finished * executing and the reaper is not running. */ -void +static void xfs_mru_cache_flush( xfs_mru_cache_t *mru) { diff --git a/fs/xfs/xfs_mru_cache.h b/fs/xfs/xfs_mru_cache.h index 5d439f3..36dd3ec 100644 --- a/fs/xfs/xfs_mru_cache.h +++ b/fs/xfs/xfs_mru_cache.h @@ -42,7 +42,6 @@ void xfs_mru_cache_uninit(void); int xfs_mru_cache_create(struct xfs_mru_cache **mrup, unsigned int lifetime_ms, unsigned int grp_count, xfs_mru_cache_free_func_t free_func); -void xfs_mru_cache_flush(xfs_mru_cache_t *mru); void xfs_mru_cache_destroy(struct xfs_mru_cache *mru); int xfs_mru_cache_insert(struct xfs_mru_cache *mru, unsigned long key, void *value); -- 1.6.5 From SRS0+BAOp+31+fromorbit.com=dave@internode.on.net Fri Jan 1 20:41:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o022fghb051706 for ; Fri, 1 Jan 2010 20:41:42 -0600 X-ASG-Debug-ID: 1262400148-623702ae0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5C5B0136B25 for ; Fri, 1 Jan 2010 18:42:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id 7giutCLkXQb8oGjK for ; Fri, 01 Jan 2010 18:42:29 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10928435-1927428 for ; Sat, 02 Jan 2010 13:12:28 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQtwg-0007wk-V9 for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:42:26 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQttI-000508-5M for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:38:56 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] XFS: Ensure we force all busy extents in range to disk Subject: [PATCH] XFS: Ensure we force all busy extents in range to disk Date: Sat, 2 Jan 2010 13:38:56 +1100 Message-Id: <1262399936-19195-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1262400151 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When we search for and find a busy extent during allocation we force the log out to ensure the extent free transaction is on disk before the allocation transaction. The curret implementation has a subtle bug in it - it does not handle multiple overlapping ranges. That is, if we free lots of little extents into a single contiguous extent, then allocate the contiguous extent, the busy search code stops searching at the first extent it finds that overlaps the allocated range. It then uses the commit LSN of the transaction to force the log out to. Unfortunately, the other busy ranges might have more recent commit LSNs than the first busy extent that is found, and this results in xfs_alloc_search_busy() returning before all the extent free transactions are on disk for the range being allocated. This can lead to potential metadata corruption or stale data exposure after a crash because log replay won't replay all the extent free transactions that cover the allocation range. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_trace.h | 9 +++++-- fs/xfs/xfs_alloc.c | 44 ++++++++++++++++++++--------------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h index 5ec1475..2b0819a 100644 --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h @@ -1064,14 +1064,15 @@ TRACE_EVENT(xfs_alloc_unbusy, TRACE_EVENT(xfs_alloc_busysearch, TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno, - xfs_extlen_t len, int found), - TP_ARGS(mp, agno, agbno, len, found), + xfs_extlen_t len, int found, xfs_lsn_t lsn), + TP_ARGS(mp, agno, agbno, len, found, lsn), TP_STRUCT__entry( __field(dev_t, dev) __field(xfs_agnumber_t, agno) __field(xfs_agblock_t, agbno) __field(xfs_extlen_t, len) __field(int, found) + __field(xfs_lsn_t, lsn) ), TP_fast_assign( __entry->dev = mp->m_super->s_dev; @@ -1079,12 +1080,14 @@ TRACE_EVENT(xfs_alloc_busysearch, __entry->agbno = agbno; __entry->len = len; __entry->found = found; + __entry->lsn = lsn; ), - TP_printk("dev %d:%d agno %u agbno %u len %u %s", + TP_printk("dev %d:%d agno %u agbno %u len %u force lsn 0x%llx %s", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno, __entry->agbno, __entry->len, + __entry->lsn, __print_symbolic(__entry->found, XFS_BUSY_STATES)) ); diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index d58ca99..407a671 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -2565,7 +2565,7 @@ xfs_alloc_search_busy(xfs_trans_t *tp, struct xfs_perag *pag; xfs_perag_busy_t *bsy; xfs_agblock_t uend, bend; - xfs_lsn_t lsn; + xfs_lsn_t lsn = 0; int cnt; pag = xfs_perag_get(tp->t_mountp, agno); @@ -2574,34 +2574,32 @@ xfs_alloc_search_busy(xfs_trans_t *tp, uend = bno + len - 1; - /* search pagb_list for this slot, skipping open slots */ - for (bsy = pag->pagb_list; cnt; bsy++) { + /* + * search pagb_list for this slot, skipping open slots. We have to + * search the entire array as there may be multiple overlaps and + * we have to get the most recent LSN for the log force to push out + * all the transactions that span the range. + */ + for (bsy = pag->pagb_list; cnt; bsy++, cnt--) { + if (!bsy->busy_tp) + continue; - /* - * (start1,length1) within (start2, length2) - */ - if (bsy->busy_tp != NULL) { - bend = bsy->busy_start + bsy->busy_length - 1; - if ((bno > bend) || (uend < bsy->busy_start)) { - cnt--; - } else { - break; - } - } - } + bend = bsy->busy_start + bsy->busy_length - 1; + if ((bno > bend) || (uend < bsy->busy_start)) + continue; - trace_xfs_alloc_busysearch(tp->t_mountp, agno, bno, len, !!cnt); + /* (start1,length1) within (start2, length2) */ + if (XFS_LSN_CMP(bsy->busy_tp->t_commit_lsn, lsn) > 0) + lsn = bsy->busy_tp->t_commit_lsn; + } + spin_unlock(&pag->pagb_lock); + xfs_perag_put(pag); + trace_xfs_alloc_busysearch(tp->t_mountp, agno, bno, len, !!cnt, lsn); /* * If a block was found, force the log through the LSN of the * transaction that freed the block */ - if (cnt) { - lsn = bsy->busy_tp->t_commit_lsn; - spin_unlock(&pag->pagb_lock); + if (lsn) xfs_log_force(tp->t_mountp, lsn, XFS_LOG_FORCE|XFS_LOG_SYNC); - } else { - spin_unlock(&pag->pagb_lock); - } - xfs_perag_put(pag); } -- 1.6.5 From SRS0+Qv3u+31+fromorbit.com=dave@internode.on.net Fri Jan 1 20:42:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o022gP78051762 for ; Fri, 1 Jan 2010 20:42:25 -0600 X-ASG-Debug-ID: 1262400192-6be302780000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 73C311DAB36D for ; Fri, 1 Jan 2010 18:43:13 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id dGksxI35Ac4rdvPS for ; Fri, 01 Jan 2010 18:43:13 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10818608-1927428 for ; Sat, 02 Jan 2010 13:13:12 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQtxO-0007wo-Tg for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:43:10 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQtu0-00051S-43 for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:39:40 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] XFS: Don't flush stale inodes Subject: [PATCH] XFS: Don't flush stale inodes Date: Sat, 2 Jan 2010 13:39:40 +1100 Message-Id: <1262399980-19277-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1262400194 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Because inodes remain in cache much longer than inode buffers do under memory pressure, we can get the situation where we have stale, dirty inodes being reclaimed but the backing storage has been freed. Hence we should never, ever flush XFS_ISTALE inodes to disk as there is no guarantee that the backing buffer is in cache and still marked stale when the flush occurs. Signed-off-by: Dave Chinner --- fs/xfs/xfs_inode.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index c2618db..e5c9953 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2846,10 +2846,14 @@ xfs_iflush( mp = ip->i_mount; /* - * If the inode isn't dirty, then just release the inode - * flush lock and do nothing. + * If the inode isn't dirty, then just release the inode flush lock and + * do nothing. Treat stale inodes the same; we cannot rely on the + * backing buffer remaining stale in cache for the remaining life of + * the stale inode and so xfs_itobp() below may give us a buffer that + * no longer contains inodes below. Doing this stale check here also + * avoids forcing the log on pinned, stale inodes. */ - if (xfs_inode_clean(ip)) { + if (xfs_inode_clean(ip) || xfs_iflags_test(ip, XFS_ISTALE)) { xfs_ifunlock(ip); return 0; } -- 1.6.5 From SRS0+BAOp+31+fromorbit.com=dave@internode.on.net Fri Jan 1 20:43:00 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_63,J_CHICKENPOX_65,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o022h0RO051829 for ; Fri, 1 Jan 2010 20:43:00 -0600 X-ASG-Debug-ID: 1262400227-14d700450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AB91B135524 for ; Fri, 1 Jan 2010 18:43:48 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id vZNPrUJuK7PhtWg9 for ; Fri, 01 Jan 2010 18:43:48 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10928453-1927428 for ; Sat, 02 Jan 2010 13:13:46 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQtxx-0007wt-IC for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:43:45 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQtuY-00052n-Oq for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:40:14 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] XFS: Use list_heads for log recovery item lists Subject: [PATCH] XFS: Use list_heads for log recovery item lists Date: Sat, 2 Jan 2010 13:40:14 +1100 Message-Id: <1262400014-19360-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1262400229 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Remove the roll-your-own linked list operations. Signed-off-by: Dave Chinner --- fs/xfs/xfs_log_recover.c | 205 ++++++++++++++++------------------------------ fs/xfs/xfs_log_recover.h | 23 +++--- 2 files changed, 81 insertions(+), 147 deletions(-) diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index abc2034..c988261 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -50,8 +50,6 @@ STATIC int xlog_find_zeroed(xlog_t *, xfs_daddr_t *); STATIC int xlog_clear_stale_blocks(xlog_t *, xfs_lsn_t); -STATIC void xlog_recover_insert_item_backq(xlog_recover_item_t **q, - xlog_recover_item_t *item); #if defined(DEBUG) STATIC void xlog_recover_check_summary(xlog_t *); #else @@ -1373,36 +1371,45 @@ xlog_clear_stale_blocks( STATIC xlog_recover_t * xlog_recover_find_tid( - xlog_recover_t *q, + struct hlist_head *head, xlog_tid_t tid) { - xlog_recover_t *p = q; + xlog_recover_t *trans; + struct hlist_node *n; - while (p != NULL) { - if (p->r_log_tid == tid) - break; - p = p->r_next; + hlist_for_each_entry(trans, n, head, r_list) { + if (trans->r_log_tid == tid) + return trans; } - return p; + return NULL; } STATIC void -xlog_recover_put_hashq( - xlog_recover_t **q, - xlog_recover_t *trans) +xlog_recover_new_tid( + struct hlist_head *head, + xlog_tid_t tid, + xfs_lsn_t lsn) { - trans->r_next = *q; - *q = trans; + xlog_recover_t *trans; + + trans = kmem_zalloc(sizeof(xlog_recover_t), KM_SLEEP); + trans->r_log_tid = tid; + trans->r_lsn = lsn; + INIT_LIST_HEAD(&trans->r_itemq); + + INIT_HLIST_NODE(&trans->r_list); + hlist_add_head(&trans->r_list, head); } STATIC void xlog_recover_add_item( - xlog_recover_item_t **itemq) + struct list_head *head) { xlog_recover_item_t *item; item = kmem_zalloc(sizeof(xlog_recover_item_t), KM_SLEEP); - xlog_recover_insert_item_backq(itemq, item); + INIT_LIST_HEAD(&item->ri_list); + list_add_tail(&item->ri_list, head); } STATIC int @@ -1415,8 +1422,7 @@ xlog_recover_add_to_cont_trans( xfs_caddr_t ptr, old_ptr; int old_len; - item = trans->r_itemq; - if (item == NULL) { + if (list_empty(&trans->r_itemq)) { /* finish copying rest of trans header */ xlog_recover_add_item(&trans->r_itemq); ptr = (xfs_caddr_t) &trans->r_theader + @@ -1424,7 +1430,8 @@ xlog_recover_add_to_cont_trans( memcpy(ptr, dp, len); /* d, s, l */ return 0; } - item = item->ri_prev; + /* take the tail entry */ + item = list_entry(trans->r_itemq.prev, xlog_recover_item_t, ri_list); old_ptr = item->ri_buf[item->ri_cnt-1].i_addr; old_len = item->ri_buf[item->ri_cnt-1].i_len; @@ -1461,8 +1468,7 @@ xlog_recover_add_to_trans( if (!len) return 0; - item = trans->r_itemq; - if (item == NULL) { + if (list_empty(&trans->r_itemq)) { /* we need to catch log corruptions here */ if (*(uint *)dp != XFS_TRANS_HEADER_MAGIC) { xlog_warn("XFS: xlog_recover_add_to_trans: " @@ -1480,12 +1486,15 @@ xlog_recover_add_to_trans( memcpy(ptr, dp, len); in_f = (xfs_inode_log_format_t *)ptr; - if (item->ri_prev->ri_total != 0 && - item->ri_prev->ri_total == item->ri_prev->ri_cnt) { + /* take the tail entry */ + item = list_entry(trans->r_itemq.prev, xlog_recover_item_t, ri_list); + if (item->ri_total != 0 && + item->ri_total == item->ri_cnt) { + /* tail item is in use, get a new one */ xlog_recover_add_item(&trans->r_itemq); + item = list_entry(trans->r_itemq.prev, + xlog_recover_item_t, ri_list); } - item = trans->r_itemq; - item = item->ri_prev; if (item->ri_total == 0) { /* first region to be added */ if (in_f->ilf_size == 0 || @@ -1510,96 +1519,29 @@ xlog_recover_add_to_trans( return 0; } -STATIC void -xlog_recover_new_tid( - xlog_recover_t **q, - xlog_tid_t tid, - xfs_lsn_t lsn) -{ - xlog_recover_t *trans; - - trans = kmem_zalloc(sizeof(xlog_recover_t), KM_SLEEP); - trans->r_log_tid = tid; - trans->r_lsn = lsn; - xlog_recover_put_hashq(q, trans); -} - -STATIC int -xlog_recover_unlink_tid( - xlog_recover_t **q, - xlog_recover_t *trans) -{ - xlog_recover_t *tp; - int found = 0; - - ASSERT(trans != NULL); - if (trans == *q) { - *q = (*q)->r_next; - } else { - tp = *q; - while (tp) { - if (tp->r_next == trans) { - found = 1; - break; - } - tp = tp->r_next; - } - if (!found) { - xlog_warn( - "XFS: xlog_recover_unlink_tid: trans not found"); - ASSERT(0); - return XFS_ERROR(EIO); - } - tp->r_next = tp->r_next->r_next; - } - return 0; -} - -STATIC void -xlog_recover_insert_item_backq( - xlog_recover_item_t **q, - xlog_recover_item_t *item) -{ - if (*q == NULL) { - item->ri_prev = item->ri_next = item; - *q = item; - } else { - item->ri_next = *q; - item->ri_prev = (*q)->ri_prev; - (*q)->ri_prev = item; - item->ri_prev->ri_next = item; - } -} - -STATIC void -xlog_recover_insert_item_frontq( - xlog_recover_item_t **q, - xlog_recover_item_t *item) -{ - xlog_recover_insert_item_backq(q, item); - *q = item; -} - +/* + * Sort the log items in the transaction. Cancelled buffers need + * to be put first so they are processed before any items that might + * modify the buffers. If they are cancelled, then the modifications + * don't need to be replayed. + */ STATIC int xlog_recover_reorder_trans( xlog_recover_t *trans) { - xlog_recover_item_t *first_item, *itemq, *itemq_next; - xfs_buf_log_format_t *buf_f; - ushort flags = 0; + xlog_recover_item_t *item, *n; + LIST_HEAD(sort_list); + + list_splice_init(&trans->r_itemq, &sort_list); + list_for_each_entry_safe(item, n, &sort_list, ri_list) { + xfs_buf_log_format_t *buf_f; - first_item = itemq = trans->r_itemq; - trans->r_itemq = NULL; - do { - itemq_next = itemq->ri_next; - buf_f = (xfs_buf_log_format_t *)itemq->ri_buf[0].i_addr; + buf_f = (xfs_buf_log_format_t *)item->ri_buf[0].i_addr; - switch (ITEM_TYPE(itemq)) { + switch (ITEM_TYPE(item)) { case XFS_LI_BUF: - flags = buf_f->blf_flags; - if (!(flags & XFS_BLI_CANCEL)) { - xlog_recover_insert_item_frontq(&trans->r_itemq, - itemq); + if (!(buf_f->blf_flags & XFS_BLI_CANCEL)) { + list_move(&item->ri_list, &trans->r_itemq); break; } case XFS_LI_INODE: @@ -1607,7 +1549,7 @@ xlog_recover_reorder_trans( case XFS_LI_QUOTAOFF: case XFS_LI_EFD: case XFS_LI_EFI: - xlog_recover_insert_item_backq(&trans->r_itemq, itemq); + list_move_tail(&item->ri_list, &trans->r_itemq); break; default: xlog_warn( @@ -1615,8 +1557,8 @@ xlog_recover_reorder_trans( ASSERT(0); return XFS_ERROR(EIO); } - itemq = itemq_next; - } while (first_item != itemq); + } + ASSERT(list_empty(&sort_list)); return 0; } @@ -2820,14 +2762,13 @@ xlog_recover_do_trans( int pass) { int error = 0; - xlog_recover_item_t *item, *first_item; + xlog_recover_item_t *item; error = xlog_recover_reorder_trans(trans); if (error) return error; - first_item = item = trans->r_itemq; - do { + list_for_each_entry(item, &trans->r_itemq, ri_list) { switch (ITEM_TYPE(item)) { case XFS_LI_BUF: error = xlog_recover_do_buffer_trans(log, item, pass); @@ -2860,8 +2801,7 @@ xlog_recover_do_trans( if (error) return error; - item = item->ri_next; - } while (first_item != item); + } return 0; } @@ -2875,21 +2815,18 @@ STATIC void xlog_recover_free_trans( xlog_recover_t *trans) { - xlog_recover_item_t *first_item, *item, *free_item; + xlog_recover_item_t *item, *n; int i; - item = first_item = trans->r_itemq; - do { - free_item = item; - item = item->ri_next; - /* Free the regions in the item. */ - for (i = 0; i < free_item->ri_cnt; i++) { - kmem_free(free_item->ri_buf[i].i_addr); - } + list_for_each_entry_safe(item, n, &trans->r_itemq, ri_list) { + /* Free the regions in the item. */ + list_del(&item->ri_list); + for (i = 0; i < item->ri_cnt; i++) + kmem_free(item->ri_buf[i].i_addr); /* Free the item itself */ - kmem_free(free_item->ri_buf); - kmem_free(free_item); - } while (first_item != item); + kmem_free(item->ri_buf); + kmem_free(item); + } /* Free the transaction recover structure */ kmem_free(trans); } @@ -2897,14 +2834,12 @@ xlog_recover_free_trans( STATIC int xlog_recover_commit_trans( xlog_t *log, - xlog_recover_t **q, xlog_recover_t *trans, int pass) { int error; - if ((error = xlog_recover_unlink_tid(q, trans))) - return error; + hlist_del(&trans->r_list); if ((error = xlog_recover_do_trans(log, trans, pass))) return error; xlog_recover_free_trans(trans); /* no error */ @@ -2932,7 +2867,7 @@ xlog_recover_unmount_trans( STATIC int xlog_recover_process_data( xlog_t *log, - xlog_recover_t *rhash[], + struct hlist_head rhash[], xlog_rec_header_t *rhead, xfs_caddr_t dp, int pass) @@ -2966,7 +2901,7 @@ xlog_recover_process_data( } tid = be32_to_cpu(ohead->oh_tid); hash = XLOG_RHASH(tid); - trans = xlog_recover_find_tid(rhash[hash], tid); + trans = xlog_recover_find_tid(&rhash[hash], tid); if (trans == NULL) { /* not found; add new tid */ if (ohead->oh_flags & XLOG_START_TRANS) xlog_recover_new_tid(&rhash[hash], tid, @@ -2984,7 +2919,7 @@ xlog_recover_process_data( switch (flags) { case XLOG_COMMIT_TRANS: error = xlog_recover_commit_trans(log, - &rhash[hash], trans, pass); + trans, pass); break; case XLOG_UNMOUNT_TRANS: error = xlog_recover_unmount_trans(trans); @@ -3523,7 +3458,7 @@ xlog_do_recovery_pass( int error = 0, h_size; int bblks, split_bblks; int hblks, split_hblks, wrapped_hblks; - xlog_recover_t *rhash[XLOG_RHASH_SIZE]; + struct hlist_head rhash[XLOG_RHASH_SIZE]; ASSERT(head_blk != tail_blk); diff --git a/fs/xfs/xfs_log_recover.h b/fs/xfs/xfs_log_recover.h index b225455..75d7492 100644 --- a/fs/xfs/xfs_log_recover.h +++ b/fs/xfs/xfs_log_recover.h @@ -35,22 +35,21 @@ * item headers are in ri_buf[0]. Additional buffers follow. */ typedef struct xlog_recover_item { - struct xlog_recover_item *ri_next; - struct xlog_recover_item *ri_prev; - int ri_type; - int ri_cnt; /* count of regions found */ - int ri_total; /* total regions */ - xfs_log_iovec_t *ri_buf; /* ptr to regions buffer */ + struct list_head ri_list; + int ri_type; + int ri_cnt; /* count of regions found */ + int ri_total; /* total regions */ + xfs_log_iovec_t *ri_buf; /* ptr to regions buffer */ } xlog_recover_item_t; struct xlog_tid; typedef struct xlog_recover { - struct xlog_recover *r_next; - xlog_tid_t r_log_tid; /* log's transaction id */ - xfs_trans_header_t r_theader; /* trans header for partial */ - int r_state; /* not needed */ - xfs_lsn_t r_lsn; /* xact lsn */ - xlog_recover_item_t *r_itemq; /* q for items */ + struct hlist_node r_list; + xlog_tid_t r_log_tid; /* log's transaction id */ + xfs_trans_header_t r_theader; /* trans header for partial */ + int r_state; /* not needed */ + xfs_lsn_t r_lsn; /* xact lsn */ + struct list_head r_itemq; /* q for items */ } xlog_recover_t; #define ITEM_TYPE(i) (*(ushort *)(i)->ri_buf[0].i_addr) -- 1.6.5 From SRS0+ft/C+31+fromorbit.com=dave@internode.on.net Fri Jan 1 20:46:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_74 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o022kOTx052091 for ; Fri, 1 Jan 2010 20:46:25 -0600 X-ASG-Debug-ID: 1262400432-6bd102970000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 169AA1DAB3C8 for ; Fri, 1 Jan 2010 18:47:12 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id IYEG2Q5Z0pxU1H20 for ; Fri, 01 Jan 2010 18:47:12 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11047658-1927428 for ; Sat, 02 Jan 2010 13:17:11 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQu1G-0007xE-9b for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:47:10 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQtxr-00054L-HW for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:43:39 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/2] XFS: Don't wake xfsbufd when idle Subject: [PATCH 2/2] XFS: Don't wake xfsbufd when idle Date: Sat, 2 Jan 2010 13:43:35 +1100 Message-Id: <1262400215-19443-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1262400215-19443-1-git-send-email-david@fromorbit.com> References: <1262400215-19443-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1262400434 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The xfsbufd wakes every xfsbufd_centisecs (once per second by default) for each filesystem even when the filesystem is idle. If the xfsbufd has nothing to do, put it into a long term sleep and only wake it up when there is work pending (i.e. dirty buffers to flush soon). This will make laptop power misers happy. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_buf.c | 28 +++++++++++++++++++--------- 1 files changed, 19 insertions(+), 9 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 77b8be8..759cbaf 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -43,10 +43,10 @@ static kmem_zone_t *xfs_buf_zone; STATIC int xfsbufd(void *); -STATIC int xfsbufd_wakeup(int, gfp_t); +STATIC int xfsbufd_wakeup_all(int, gfp_t); STATIC void xfs_buf_delwri_queue(xfs_buf_t *, int); static struct shrinker xfs_buf_shake = { - .shrink = xfsbufd_wakeup, + .shrink = xfsbufd_wakeup_all, .seeks = DEFAULT_SEEKS, }; @@ -385,7 +385,7 @@ _xfs_buf_lookup_pages( __func__, gfp_mask); XFS_STATS_INC(xb_page_retries); - xfsbufd_wakeup(0, gfp_mask); + xfsbufd_wakeup_all(0, gfp_mask); congestion_wait(BLK_RW_ASYNC, HZ/50); goto retry; } @@ -1595,6 +1595,11 @@ xfs_buf_delwri_queue( list_del(&bp->b_list); } + if (list_empty(dwq)) { + /* start xfsbufd as it has something to do now */ + wake_up_process(bp->b_target->bt_task); + } + bp->b_flags |= _XBF_DELWRI_Q; list_add_tail(&bp->b_list, dwq); bp->b_queuetime = jiffies; @@ -1634,7 +1639,7 @@ xfs_buf_runall_queues( } STATIC int -xfsbufd_wakeup( +xfsbufd_wakeup_all( int priority, gfp_t mask) { @@ -1644,6 +1649,8 @@ xfsbufd_wakeup( list_for_each_entry(btp, &xfs_buftarg_list, bt_list) { if (test_bit(XBT_FORCE_SLEEP, &btp->bt_flags)) continue; + if (list_empty(&btp->bt_delwrite_queue)) + continue; set_bit(XBT_FORCE_FLUSH, &btp->bt_flags); wake_up_process(btp->bt_task); } @@ -1708,6 +1715,9 @@ xfsbufd( set_freezable(); do { + long age = xfs_buf_age_centisecs * msecs_to_jiffies(10); + long tout = age; + if (unlikely(freezing(current))) { set_bit(XBT_FORCE_SLEEP, &target->bt_flags); refrigerator(); @@ -1715,12 +1725,12 @@ xfsbufd( clear_bit(XBT_FORCE_SLEEP, &target->bt_flags); } - schedule_timeout_interruptible( - xfs_buf_timer_centisecs * msecs_to_jiffies(10)); - - xfs_buf_delwri_split(target, &tmp, - xfs_buf_age_centisecs * msecs_to_jiffies(10)); + /* sleep for a long time if there is nothing to do. */ + if (list_empty(&target->bt_delwrite_queue)) + tout = MAX_SCHEDULE_TIMEOUT; + schedule_timeout_interruptible(tout); + xfs_buf_delwri_split(target, &tmp, age); count = 0; while (!list_empty(&tmp)) { bp = list_entry(tmp.next, xfs_buf_t, b_list); -- 1.6.5 From SRS0+ft/C+31+fromorbit.com=dave@internode.on.net Fri Jan 1 20:46:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o022kPcg052099 for ; Fri, 1 Jan 2010 20:46:25 -0600 X-ASG-Debug-ID: 1262400432-7dcd035f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E83611502C1C for ; Fri, 1 Jan 2010 18:47:12 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id TKhQIDIni9D8cBHp for ; Fri, 01 Jan 2010 18:47:12 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11047659-1927428 for ; Sat, 02 Jan 2010 13:17:12 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQu1G-0007xD-7j for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:47:10 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQtxr-00054J-EY for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:43:39 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/2] XFS: Don't wake the aild once per second Subject: [PATCH 1/2] XFS: Don't wake the aild once per second Date: Sat, 2 Jan 2010 13:43:34 +1100 Message-Id: <1262400215-19443-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1262400215-19443-1-git-send-email-david@fromorbit.com> References: <1262400215-19443-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1262400434 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18712 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Now that the AIL push algorithm is traversal safe, we don't need a watchdog function in the xfsaild to catch pushes that fail to make progress. Remove the watchdog timeout and make pushes purely driven by demand. This will remove the once-per-second wakeup that is seen when the filesystem is idle and make laptop power misers happy. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 7 +++---- fs/xfs/xfs_trans_ail.c | 17 ++++++++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 09783cc..84ce77a 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -877,12 +877,11 @@ xfsaild( { struct xfs_ail *ailp = data; xfs_lsn_t last_pushed_lsn = 0; - long tout = 0; + long tout = 1000; /* milliseconds */ while (!kthread_should_stop()) { - if (tout) - schedule_timeout_interruptible(msecs_to_jiffies(tout)); - tout = 1000; + tout = !tout ? MAX_SCHEDULE_TIMEOUT : msecs_to_jiffies(tout); + schedule_timeout_interruptible(tout); /* swsusp */ try_to_freeze(); diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index 2ffc570..8ca123e 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c @@ -237,14 +237,15 @@ out: } /* - * Function that does the work of pushing on the AIL + * xfsaild_push does the work of pushing on the AIL. Returning a timeout of + * zero indicates that the caller should sleep until woken. */ long xfsaild_push( struct xfs_ail *ailp, xfs_lsn_t *last_lsn) { - long tout = 1000; /* milliseconds */ + long tout = 0; xfs_lsn_t last_pushed_lsn = *last_lsn; xfs_lsn_t target = ailp->xa_target; xfs_lsn_t lsn; @@ -279,7 +280,6 @@ xfsaild_push( * prevents use from spinning when we can't do anything or there is * lots of contention on the AIL lists. */ - tout = 10; lsn = lip->li_lsn; flush_log = stuck = count = 0; while ((XFS_LSN_CMP(lip->li_lsn, target) < 0)) { @@ -376,14 +376,14 @@ xfsaild_push( if (!count) { /* We're past our target or empty, so idle */ - tout = 1000; + tout = 0; } else if (XFS_LSN_CMP(lsn, target) >= 0) { /* * We reached the target so wait a bit longer for I/O to * complete and remove pushed items from the AIL before we * start the next scan from the start of the AIL. */ - tout += 20; + tout = 50; last_pushed_lsn = 0; } else if ((stuck * 100) / count > 90) { /* @@ -395,11 +395,14 @@ xfsaild_push( * Backoff a bit more to allow some I/O to complete before * continuing from where we were. */ - tout += 10; + tout = 20; + } else { + /* more to do, but wait a short while before continuing */ + tout = 10; } *last_lsn = last_pushed_lsn; return tout; -} /* xfsaild_push */ +} /* -- 1.6.5 From SRS0+ft/C+31+fromorbit.com=dave@internode.on.net Fri Jan 1 20:46:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o022kQXR052107 for ; Fri, 1 Jan 2010 20:46:26 -0600 X-ASG-Debug-ID: 1262400432-6bd102970002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B99FF1DAB3F6 for ; Fri, 1 Jan 2010 18:47:14 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id FJIost45KmspaA07 for ; Fri, 01 Jan 2010 18:47:14 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11047660-1927428 for ; Sat, 02 Jan 2010 13:17:12 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQu1G-0007xC-69 for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:47:10 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQtxr-00054H-Cg for xfs@oss.sgi.com; Sat, 02 Jan 2010 13:43:39 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/2] XFS: Run kernel threads on demand Subject: [PATCH 0/2] XFS: Run kernel threads on demand Date: Sat, 2 Jan 2010 13:43:33 +1100 Message-Id: <1262400215-19443-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1262400435 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18711 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We run the xfsbufd and the xfsaild once a second even when there is no work to do. Make them demand driven so that we don't needlessly wake idle CPUs to do nothing. This should make power misers with XFS filesystems happy. From SRS0+BAOp+31+fromorbit.com=dave@internode.on.net Fri Jan 1 21:06:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0236Q14053681 for ; Fri, 1 Jan 2010 21:06:26 -0600 X-ASG-Debug-ID: 1262401633-6bd102f20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 924E51DAB366 for ; Fri, 1 Jan 2010 19:07:14 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id lqvOCTqSmxAgsntj for ; Fri, 01 Jan 2010 19:07:14 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10940213-1927428 for ; Sat, 02 Jan 2010 13:37:12 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQuKd-0007yo-0Y for xfs@oss.sgi.com; Sat, 02 Jan 2010 14:07:11 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQuHE-00057Z-8F for xfs@oss.sgi.com; Sat, 02 Jan 2010 14:03:40 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch Subject: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch Date: Sat, 2 Jan 2010 14:03:36 +1100 Message-Id: <1262401416-19546-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1262401416-19546-1-git-send-email-david@fromorbit.com> References: <1262401416-19546-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1262401635 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18713 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently when the xfsbufd writes delayed write buffers, it pushes them to disk in the order they come off the delayed write list. If there are lots of buffers ѕpread widely over the disk, this results in overwhelming the elevator sort queues in the block layer and we end up losing the posibility of merging adjacent buffers to minimise the number of IOs. Add a sort array to the buftarg so that we can do high level sorting of the buffers once they are pulled off the delwri queue for writeback. Currently this array can hold 4096 buffers at a time which gives us a window 32 times larger than the default elevator maximums for ordering buffers. Ideally this should use a list sort rather than requiring an external buffer to sort the buffers in, but for simplicity just do it via sort function. Followup patches are needed to take the list sort functions from the DRM and UBIFS code and make it a common function and to utilise it. That will allow sorting the entire delwri queue to be written in one go. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_buf.c | 121 ++++++++++++++++++++++++++++++++------------ fs/xfs/linux-2.6/xfs_buf.h | 5 ++ 2 files changed, 93 insertions(+), 33 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index aaefc33..d53d08b 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -1644,12 +1644,18 @@ xfs_buf_delwri_promote( spinlock_t *dwlk = &bp->b_target->bt_delwrite_lock; long age = xfs_buf_age_centisecs * msecs_to_jiffies(10) + 1; - spin_lock(dwlk); ASSERT(bp->b_flags & XBF_DELWRI); ASSERT(bp->b_flags & _XBF_DELWRI_Q); - list_del(&bp->b_list); - list_add(&bp->b_list, dwq); + + /* + * Check the buffer age before locking the delayed write queue as we + * don't need to promote buffers that are already past the flush age. + */ + if (bp->b_queuetime < jiffies - age) + return; bp->b_queuetime = jiffies - age; + spin_lock(dwlk); + list_move(&bp->b_list, dwq); spin_unlock(dwlk); } @@ -1723,14 +1729,55 @@ xfs_buf_delwri_split( } +/* + * Compare function is more complex than it needs to be because + * the return value is only 32 bits and we are doing comparisons + * on 64 bit values + */ +int +xfs_buf_cmp( + const void *a, + const void *b) +{ + const struct xfs_buf *ap = *(const struct xfs_buf**)a; + const struct xfs_buf *bp = *(const struct xfs_buf**)b; + xfs_daddr_t diff; + + diff = ap->b_bn - bp->b_bn; + if (diff < 0) + return -1; + if (diff > 0) + return 1; + return 0; +} + +int +xfs_buf_delwri_sort( + xfs_buftarg_t *target, + struct list_head *list) +{ + int i = 0; + + while (i < XFS_BUF_SORTBUF_SIZE && !list_empty(list)) { + struct xfs_buf *bp = list_entry(list->next, xfs_buf_t, b_list); + + ASSERT(target == bp->b_target); + list_del_init(&bp->b_list); + target->bt_sortbuf[i++] = bp; + } + sort(target->bt_sortbuf, i, sizeof(struct xfs_buf *), xfs_buf_cmp, NULL); + + target->bt_sortbuf_num = i; + if (!list_empty(list)) + return 1; + return 0; +} + STATIC int xfsbufd( void *data) { - struct list_head tmp; xfs_buftarg_t *target = (xfs_buftarg_t *)data; - int count; - xfs_buf_t *bp; current->flags |= PF_MEMALLOC; @@ -1739,6 +1786,9 @@ xfsbufd( do { long age = xfs_buf_age_centisecs * msecs_to_jiffies(10); long tout = age; + int count = 0; + int more = 0; + struct list_head tmp; if (unlikely(freezing(current))) { set_bit(XBT_FORCE_SLEEP, &target->bt_flags); @@ -1753,15 +1803,14 @@ xfsbufd( schedule_timeout_interruptible(tout); xfs_buf_delwri_split(target, &tmp, age); - count = 0; - while (!list_empty(&tmp)) { - bp = list_entry(tmp.next, xfs_buf_t, b_list); - ASSERT(target == bp->b_target); - - list_del_init(&bp->b_list); - xfs_buf_iostrategy(bp); - count++; - } + do { + int i; + more = xfs_buf_delwri_sort(target, &tmp); + for (i = 0; i < target->bt_sortbuf_num; i++) { + xfs_buf_iostrategy(target->bt_sortbuf[i]); + count++; + } + } while (more); if (as_list_len > 0) purge_addresses(); @@ -1783,38 +1832,44 @@ xfs_flush_buftarg( xfs_buftarg_t *target, int wait) { - struct list_head tmp; - xfs_buf_t *bp, *n; + xfs_buf_t *bp; int pincount = 0; + int more = 0; + LIST_HEAD(tmp_list); + LIST_HEAD(wait_list); xfs_buf_runall_queues(xfsconvertd_workqueue); xfs_buf_runall_queues(xfsdatad_workqueue); xfs_buf_runall_queues(xfslogd_workqueue); set_bit(XBT_FORCE_FLUSH, &target->bt_flags); - pincount = xfs_buf_delwri_split(target, &tmp, 0); + pincount = xfs_buf_delwri_split(target, &tmp_list, 0); /* - * Dropped the delayed write list lock, now walk the temporary list + * Dropped the delayed write list lock, now walk the temporary list. + * All I/O is issued async and then if we need to wait for completion + * we do that after issuing all the IO. */ - list_for_each_entry_safe(bp, n, &tmp, b_list) { - ASSERT(target == bp->b_target); - if (wait) - bp->b_flags &= ~XBF_ASYNC; - else - list_del_init(&bp->b_list); - - xfs_buf_iostrategy(bp); - } + do { + int i; + more = xfs_buf_delwri_sort(target, &tmp_list); + for (i = 0; i < target->bt_sortbuf_num; i++) { + bp = target->bt_sortbuf[i]; + ASSERT(target == bp->b_target); + if (wait) { + bp->b_flags &= ~XBF_ASYNC; + list_add(&bp->b_list, &wait_list); + } + xfs_buf_iostrategy(bp); + } + } while (more); if (wait) blk_run_address_space(target->bt_mapping); - /* - * Remaining list items must be flushed before returning - */ - while (!list_empty(&tmp)) { - bp = list_entry(tmp.next, xfs_buf_t, b_list); + /* Now wait for IO to complete if required. */ + while (!list_empty(&wait_list)) { + bp = list_entry(wait_list.next, xfs_buf_t, b_list); list_del_init(&bp->b_list); xfs_iowait(bp); diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h index a7c6895..599708e 100644 --- a/fs/xfs/linux-2.6/xfs_buf.h +++ b/fs/xfs/linux-2.6/xfs_buf.h @@ -128,6 +128,8 @@ typedef struct xfs_bufhash { spinlock_t bh_lock; } xfs_bufhash_t; +#define XFS_BUF_SORTBUF_SIZE 4096 + typedef struct xfs_buftarg { dev_t bt_dev; struct block_device *bt_bdev; @@ -147,6 +149,9 @@ typedef struct xfs_buftarg { struct list_head bt_delwrite_queue; spinlock_t bt_delwrite_lock; unsigned long bt_flags; + int bt_sortbuf_num; + struct xfs_buf * bt_sortbuf[XFS_BUF_SORTBUF_SIZE]; + } xfs_buftarg_t; /* -- 1.6.5 From SRS0+BAOp+31+fromorbit.com=dave@internode.on.net Fri Jan 1 21:06:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0236cfc053708 for ; Fri, 1 Jan 2010 21:06:38 -0600 X-ASG-Debug-ID: 1262401644-2086020d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9E1CE1502BEC for ; Fri, 1 Jan 2010 19:07:25 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id 0EHShOQzjAgEHNRB for ; Fri, 01 Jan 2010 19:07:25 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10940215-1927428 for ; Sat, 02 Jan 2010 13:37:24 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQuKc-0007yl-TH for xfs@oss.sgi.com; Sat, 02 Jan 2010 14:07:10 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQuHE-00057U-3d for xfs@oss.sgi.com; Sat, 02 Jan 2010 14:03:40 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] XFS: Use delayed write for inodes rather than async Subject: [PATCH 1/3] XFS: Use delayed write for inodes rather than async Date: Sat, 2 Jan 2010 14:03:34 +1100 Message-Id: <1262401416-19546-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1262401416-19546-1-git-send-email-david@fromorbit.com> References: <1262401416-19546-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1262401646 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18714 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We currently do background inode flush asynchronously, resulting in inodes being written in whatever order the background writeback issues them. Make the inode flush delayed write instead of asynchronous which will push the inode into the backing buffer but not issue any IO. The buffer will then sit in cache to be flushed by either an AIL push or the xfsbufd timing out the buffer. This will allow accumulation of dirty inode buffers in memory and allow optimisation of inode cluster writeback at the xfsbufd level where we have much greater queue depths than the block layer elevators. This effectively means that any inode that is written back by background writeback will be seen as flush locked during AIL pushing, and will result in the buffers being pushed from there. A future path will address this non-optimal form of writeback, too. A side effect of this delayed write mechanism is that background inode reclaim will no longer directly flush inodes, nor can it wait on the flush lock. The result is that inode reclaim must leave the inode in the reclaimable state until it is clean. Hence attempts to reclaim a dirty inode in the background will simply skip the inode until it is clean and this allows other mechanisms (i.e. xfsbufd) to do more optimal writeback of the dirty buffers. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 2 +- fs/xfs/linux-2.6/xfs_sync.c | 52 +++++++++++++++++++++++++++++------------- fs/xfs/xfs_inode.c | 31 ++++--------------------- fs/xfs/xfs_inode.h | 8 ++---- fs/xfs/xfs_inode_item.c | 10 +++++-- fs/xfs/xfs_mount.c | 3 +- 6 files changed, 54 insertions(+), 52 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 84ce77a..752fa10 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -1074,7 +1074,7 @@ xfs_fs_write_inode( if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) goto out_unlock; - error = xfs_iflush(ip, XFS_IFLUSH_ASYNC_NOBLOCK); + error = xfs_iflush(ip, XFS_IFLUSH_DELWRI_NOBLOCK); } out_unlock: diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index c980d68..f974d1a 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -460,8 +460,8 @@ xfs_quiesce_fs( { int count = 0, pincount; + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); xfs_flush_buftarg(mp->m_ddev_targp, 0); - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); /* * This loop must run at least twice. The first instance of the loop @@ -585,7 +585,7 @@ xfs_sync_worker( if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); /* dgc: errors ignored here */ error = xfs_qm_sync(mp, SYNC_TRYLOCK); error = xfs_sync_fsdata(mp, SYNC_TRYLOCK); @@ -687,7 +687,7 @@ xfs_reclaim_inode( spin_unlock(&ip->i_flags_lock); write_unlock(&pag->pag_ici_lock); xfs_perag_put(pag); - return -EAGAIN; + return EAGAIN; } __xfs_iflags_set(ip, XFS_IRECLAIM); spin_unlock(&ip->i_flags_lock); @@ -695,32 +695,52 @@ xfs_reclaim_inode( xfs_perag_put(pag); /* - * If the inode is still dirty, then flush it out. If the inode - * is not in the AIL, then it will be OK to flush it delwri as - * long as xfs_iflush() does not keep any references to the inode. - * We leave that decision up to xfs_iflush() since it has the - * knowledge of whether it's OK to simply do a delwri flush of - * the inode or whether we need to wait until the inode is - * pulled from the AIL. - * We get the flush lock regardless, though, just to make sure - * we don't free it while it is being flushed. + * The inode is flushed delayed write. That means the flush lock + * may be held here and we will block for some time on it. Further, + * if we hold the inode lock, we prevent the AIL from locking and + * therefore being able to push the buffer. This means that we'll end + * up waiting here for the xfsbufd to age the buffer and write it out, + * which could be a long time. If we fail to get the flush lock, just + * clear the reclaim in progress state (we haven't cleared the reclaim + * needed state) so that the reclaim is delayed until the flush lock + * can be gained without blocking. */ xfs_ilock(ip, XFS_ILOCK_EXCL); - xfs_iflock(ip); + if (!xfs_iflock_nowait(ip)) + goto unlock_and_requeue; /* * In the case of a forced shutdown we rely on xfs_iflush() to * wait for the inode to be unpinned before returning an error. */ - if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) { - /* synchronize with xfs_iflush_done */ - xfs_iflock(ip); + if (!is_bad_inode(VFS_I(ip)) && !xfs_inode_clean(ip)) { + /* + * If we are flushing a dirty inode DELWRI, then don't + * immediately wait on the flush lock - requeue the inode for + * reclaim. Every time we re-enter and the flush lock is still + * held we will requeue at the initial flush lock check above. + * Otherwise, for synchronous writeback we synchronize with + * xfs_iflush_done by locking and unlocking the flush lock. + */ + if (xfs_iflush(ip, sync_mode) == 0) { + if (sync_mode == XFS_IFLUSH_DELWRI) + goto unlock_and_requeue; + xfs_iflock(ip); + xfs_ifunlock(ip); + } + } else { + /* need to unlock the clean inodes */ xfs_ifunlock(ip); } xfs_iunlock(ip, XFS_ILOCK_EXCL); xfs_ireclaim(ip); return 0; + +unlock_and_requeue: + xfs_iflags_clear(ip, XFS_IRECLAIM); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + return EAGAIN; } void diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index e5c9953..d175dca 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2832,7 +2832,7 @@ xfs_iflush( xfs_dinode_t *dip; xfs_mount_t *mp; int error; - int noblock = (flags == XFS_IFLUSH_ASYNC_NOBLOCK); + int noblock = (flags == XFS_IFLUSH_DELWRI_NOBLOCK); enum { INT_DELWRI = (1 << 0), INT_ASYNC = (1 << 1) }; XFS_STATS_INC(xs_iflush_count); @@ -2905,12 +2905,8 @@ xfs_iflush( case XFS_IFLUSH_DELWRI_ELSE_SYNC: flags = 0; break; - case XFS_IFLUSH_ASYNC_NOBLOCK: - case XFS_IFLUSH_ASYNC: - case XFS_IFLUSH_DELWRI_ELSE_ASYNC: - flags = INT_ASYNC; - break; case XFS_IFLUSH_DELWRI: + case XFS_IFLUSH_DELWRI_NOBLOCK: flags = INT_DELWRI; break; default: @@ -2920,15 +2916,11 @@ xfs_iflush( } } else { switch (flags) { + case XFS_IFLUSH_DELWRI_NOBLOCK: case XFS_IFLUSH_DELWRI_ELSE_SYNC: - case XFS_IFLUSH_DELWRI_ELSE_ASYNC: case XFS_IFLUSH_DELWRI: flags = INT_DELWRI; break; - case XFS_IFLUSH_ASYNC_NOBLOCK: - case XFS_IFLUSH_ASYNC: - flags = INT_ASYNC; - break; case XFS_IFLUSH_SYNC: flags = 0; break; @@ -2971,13 +2963,10 @@ xfs_iflush( if (error) goto cluster_corrupt_out; - if (flags & INT_DELWRI) { + if (flags & INT_DELWRI) xfs_bdwrite(mp, bp); - } else if (flags & INT_ASYNC) { - error = xfs_bawrite(mp, bp); - } else { + else error = xfs_bwrite(mp, bp); - } return error; corrupt_out: @@ -3012,16 +3001,6 @@ xfs_iflush_int( iip = ip->i_itemp; mp = ip->i_mount; - - /* - * If the inode isn't dirty, then just release the inode - * flush lock and do nothing. - */ - if (xfs_inode_clean(ip)) { - xfs_ifunlock(ip); - return 0; - } - /* set *dip = inode's place in the buffer */ dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index ec1f28c..559feeb 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -423,11 +423,9 @@ static inline void xfs_ifunlock(xfs_inode_t *ip) * Flags for xfs_iflush() */ #define XFS_IFLUSH_DELWRI_ELSE_SYNC 1 -#define XFS_IFLUSH_DELWRI_ELSE_ASYNC 2 -#define XFS_IFLUSH_SYNC 3 -#define XFS_IFLUSH_ASYNC 4 -#define XFS_IFLUSH_DELWRI 5 -#define XFS_IFLUSH_ASYNC_NOBLOCK 6 +#define XFS_IFLUSH_SYNC 2 +#define XFS_IFLUSH_DELWRI 3 +#define XFS_IFLUSH_DELWRI_NOBLOCK 4 /* * Flags for xfs_itruncate_start(). diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index f38855d..beb7d9f 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -867,10 +867,14 @@ xfs_inode_item_push( iip->ili_format.ilf_fields != 0); /* - * Write out the inode. The completion routine ('iflush_done') will - * pull it from the AIL, mark it clean, unlock the flush lock. + * Push the inode to it's backing buffer. This will not remove + * the inode from the AIL - a further push will be required to trigger + * a buffer push. However, this allows all the dirty inodes to be pushed to + * the buffer before it is pushed to disk. THe buffer IO completion + * will pull th einode from the AIL, mark it clean and unlock the flush + * lock. */ - (void) xfs_iflush(ip, XFS_IFLUSH_ASYNC); + (void) xfs_iflush(ip, XFS_IFLUSH_DELWRI); xfs_iunlock(ip, XFS_ILOCK_SHARED); return; diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 223d9c3..f3ce47a 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -1444,7 +1444,8 @@ xfs_unmountfs( * need to force the log first. */ xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); - xfs_reclaim_inodes(mp, XFS_IFLUSH_ASYNC); + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); + XFS_bflush(mp->m_ddev_targp); xfs_qm_unmount(mp); -- 1.6.5 From SRS0+BAOp+31+fromorbit.com=dave@internode.on.net Fri Jan 1 21:06:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0236b2s053706 for ; Fri, 1 Jan 2010 21:06:38 -0600 X-ASG-Debug-ID: 1262401644-208702040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4AA9A11EE1BE for ; Fri, 1 Jan 2010 19:07:24 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id PcSUWHUnCVdhyKMM for ; Fri, 01 Jan 2010 19:07:24 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10940214-1927428 for ; Sat, 02 Jan 2010 13:37:23 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQuKc-0007ym-VO for xfs@oss.sgi.com; Sat, 02 Jan 2010 14:07:10 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQuHE-00057W-6W for xfs@oss.sgi.com; Sat, 02 Jan 2010 14:03:40 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] XFS: Don't issue buffer IO direct from AIL push Subject: [PATCH 2/3] XFS: Don't issue buffer IO direct from AIL push Date: Sat, 2 Jan 2010 14:03:35 +1100 Message-Id: <1262401416-19546-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1262401416-19546-1-git-send-email-david@fromorbit.com> References: <1262401416-19546-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1262401646 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18714 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean All buffers logged into the AIL are marked as delayed write. When the AIL needs to push the buffer out, it issues an async write of the buffer. This means that IO patterns are dependent on the order of buffers in the AIL. Instead of flushing the buffer, promote the buffer in the delayed write list so that the next time the xfsbufd is run the buffer will be flushed by the xfsbufd. Return the state to the xfsaild that the buffer was promoted so that the xfsaild knows that it needs to cause the xfsbufd to run to flush the buffers that were promoted. Using the xfsbufd for issuing the IO allows us to dispatch all buffer IO from the one queue. This means that we can make much more enlightened decisions on what order to flush buffers to disk as we don't have multiple places issuing IO. Optimisations to xfsbufd will be in a future patch. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_buf.c | 22 +++++++++ fs/xfs/linux-2.6/xfs_buf.h | 11 +++++ fs/xfs/linux-2.6/xfs_trace.h | 1 + fs/xfs/quota/xfs_dquot_item.c | 87 +++++------------------------------ fs/xfs/quota/xfs_dquot_item.h | 4 -- fs/xfs/xfs_buf_item.c | 64 ++++++++++++++------------ fs/xfs/xfs_inode_item.c | 99 ++++++---------------------------------- fs/xfs/xfs_inode_item.h | 6 --- fs/xfs/xfs_trans_ail.c | 7 +++ 9 files changed, 104 insertions(+), 197 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 759cbaf..aaefc33 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -1631,6 +1631,28 @@ xfs_buf_delwri_dequeue( trace_xfs_buf_delwri_dequeue(bp, _RET_IP_); } +/* + * If a delwri buffer needs to be pushed before it has aged out, then + * promote it to the head of the delwri queue so that it will be flushed + * on the next xfsbufd run. + */ +void +xfs_buf_delwri_promote( + xfs_buf_t *bp) +{ + struct list_head *dwq = &bp->b_target->bt_delwrite_queue; + spinlock_t *dwlk = &bp->b_target->bt_delwrite_lock; + long age = xfs_buf_age_centisecs * msecs_to_jiffies(10) + 1; + + spin_lock(dwlk); + ASSERT(bp->b_flags & XBF_DELWRI); + ASSERT(bp->b_flags & _XBF_DELWRI_Q); + list_del(&bp->b_list); + list_add(&bp->b_list, dwq); + bp->b_queuetime = jiffies - age; + spin_unlock(dwlk); +} + STATIC void xfs_buf_runall_queues( struct workqueue_struct *queue) diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h index a34c7b5..a7c6895 100644 --- a/fs/xfs/linux-2.6/xfs_buf.h +++ b/fs/xfs/linux-2.6/xfs_buf.h @@ -261,6 +261,7 @@ extern int xfs_buf_ispin(xfs_buf_t *); /* Delayed Write Buffer Routines */ extern void xfs_buf_delwri_dequeue(xfs_buf_t *); +extern void xfs_buf_delwri_promote(xfs_buf_t *); /* Buffer Daemon Setup Routines */ extern int xfs_buf_init(void); @@ -424,6 +425,16 @@ extern void xfs_free_buftarg(struct xfs_mount *, struct xfs_buftarg *); extern void xfs_wait_buftarg(xfs_buftarg_t *); extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int); extern int xfs_flush_buftarg(xfs_buftarg_t *, int); + +/* + * run the xfsbufd on demand to age buffers. Use in combination with + * xfs_buf_delwri_promote() to flus delayed write buffers efficiently. + */ +static inline void xfs_flush_buftarg_delwri(xfs_buftarg_t *btp) +{ + wake_up_process(btp->bt_task); +} + #ifdef CONFIG_KDB_MODULES extern struct list_head *xfs_get_buftarg_list(void); #endif diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h index 2b0819a..bba87b7 100644 --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h @@ -464,6 +464,7 @@ DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unlock); DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unlock_stale); DEFINE_BUF_ITEM_EVENT(xfs_buf_item_committed); DEFINE_BUF_ITEM_EVENT(xfs_buf_item_push); +DEFINE_BUF_ITEM_EVENT(xfs_buf_item_pushbuf); DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf); DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf_recur); DEFINE_BUF_ITEM_EVENT(xfs_trans_getsb); diff --git a/fs/xfs/quota/xfs_dquot_item.c b/fs/xfs/quota/xfs_dquot_item.c index d0d4a9a..bc7e00e 100644 --- a/fs/xfs/quota/xfs_dquot_item.c +++ b/fs/xfs/quota/xfs_dquot_item.c @@ -212,68 +212,33 @@ xfs_qm_dquot_logitem_pushbuf( xfs_dquot_t *dqp; xfs_mount_t *mp; xfs_buf_t *bp; - uint dopush; dqp = qip->qli_dquot; ASSERT(XFS_DQ_IS_LOCKED(dqp)); /* - * The qli_pushbuf_flag keeps others from - * trying to duplicate our effort. - */ - ASSERT(qip->qli_pushbuf_flag != 0); - ASSERT(qip->qli_push_owner == current_pid()); - - /* * If flushlock isn't locked anymore, chances are that the * inode flush completed and the inode was taken off the AIL. * So, just get out. */ if (completion_done(&dqp->q_flush) || ((qip->qli_item.li_flags & XFS_LI_IN_AIL) == 0)) { - qip->qli_pushbuf_flag = 0; xfs_dqunlock(dqp); return; } mp = dqp->q_mount; bp = xfs_incore(mp->m_ddev_targp, qip->qli_format.qlf_blkno, - XFS_QI_DQCHUNKLEN(mp), - XFS_INCORE_TRYLOCK); - if (bp != NULL) { - if (XFS_BUF_ISDELAYWRITE(bp)) { - dopush = ((qip->qli_item.li_flags & XFS_LI_IN_AIL) && - !completion_done(&dqp->q_flush)); - qip->qli_pushbuf_flag = 0; - xfs_dqunlock(dqp); - - if (XFS_BUF_ISPINNED(bp)) { - xfs_log_force(mp, (xfs_lsn_t)0, - XFS_LOG_FORCE); - } - if (dopush) { - int error; -#ifdef XFSRACEDEBUG - delay_for_intr(); - delay(300); -#endif - error = xfs_bawrite(mp, bp); - if (error) - xfs_fs_cmn_err(CE_WARN, mp, - "xfs_qm_dquot_logitem_pushbuf: pushbuf error %d on qip %p, bp %p", - error, qip, bp); - } else { - xfs_buf_relse(bp); - } - } else { - qip->qli_pushbuf_flag = 0; - xfs_dqunlock(dqp); - xfs_buf_relse(bp); - } + XFS_QI_DQCHUNKLEN(mp), XFS_INCORE_TRYLOCK); + if (!bp) { + xfs_dqunlock(dqp); return; } - qip->qli_pushbuf_flag = 0; xfs_dqunlock(dqp); + if (XFS_BUF_ISDELAYWRITE(bp)) + xfs_buf_delwri_promote(bp); + xfs_buf_relse(bp); + return; } /* @@ -291,50 +256,24 @@ xfs_qm_dquot_logitem_trylock( xfs_dq_logitem_t *qip) { xfs_dquot_t *dqp; - uint retval; dqp = qip->qli_dquot; if (atomic_read(&dqp->q_pincount) > 0) - return (XFS_ITEM_PINNED); + return XFS_ITEM_PINNED; if (! xfs_qm_dqlock_nowait(dqp)) - return (XFS_ITEM_LOCKED); + return XFS_ITEM_LOCKED; - retval = XFS_ITEM_SUCCESS; if (!xfs_dqflock_nowait(dqp)) { /* - * The dquot is already being flushed. It may have been - * flushed delayed write, however, and we don't want to - * get stuck waiting for that to complete. So, we want to check - * to see if we can lock the dquot's buffer without sleeping. - * If we can and it is marked for delayed write, then we - * hold it and send it out from the push routine. We don't - * want to do that now since we might sleep in the device - * strategy routine. We also don't want to grab the buffer lock - * here because we'd like not to call into the buffer cache - * while holding the AIL lock. - * Make sure to only return PUSHBUF if we set pushbuf_flag - * ourselves. If someone else is doing it then we don't - * want to go to the push routine and duplicate their efforts. + * dquot has already been flushed to the backing buffer, + * leave it locked, pushbuf routine will unlock it. */ - if (qip->qli_pushbuf_flag == 0) { - qip->qli_pushbuf_flag = 1; - ASSERT(qip->qli_format.qlf_blkno == dqp->q_blkno); -#ifdef DEBUG - qip->qli_push_owner = current_pid(); -#endif - /* - * The dquot is left locked. - */ - retval = XFS_ITEM_PUSHBUF; - } else { - retval = XFS_ITEM_FLUSHING; - xfs_dqunlock_nonotify(dqp); - } + return XFS_ITEM_PUSHBUF; } ASSERT(qip->qli_item.li_flags & XFS_LI_IN_AIL); - return (retval); + return XFS_ITEM_SUCCESS; } diff --git a/fs/xfs/quota/xfs_dquot_item.h b/fs/xfs/quota/xfs_dquot_item.h index 5a63253..5acae2a 100644 --- a/fs/xfs/quota/xfs_dquot_item.h +++ b/fs/xfs/quota/xfs_dquot_item.h @@ -27,10 +27,6 @@ typedef struct xfs_dq_logitem { xfs_log_item_t qli_item; /* common portion */ struct xfs_dquot *qli_dquot; /* dquot ptr */ xfs_lsn_t qli_flush_lsn; /* lsn at last flush */ - unsigned short qli_pushbuf_flag; /* 1 bit used in push_ail */ -#ifdef DEBUG - uint64_t qli_push_owner; -#endif xfs_dq_logformat_t qli_format; /* logged structure */ } xfs_dq_logitem_t; diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index a30f7e9..0f30250 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c @@ -467,8 +467,10 @@ xfs_buf_item_unpin_remove( /* * This is called to attempt to lock the buffer associated with this * buf log item. Don't sleep on the buffer lock. If we can't get - * the lock right away, return 0. If we can get the lock, pull the - * buffer from the free list, mark it busy, and return 1. + * the lock right away, return 0. If we can get the lock, take a + * reference to the buffer. If this is a delayed write buffer that + * needs AIL help to be written back, invoke the pushbuf routine + * rather than the normal success path. */ STATIC uint xfs_buf_item_trylock( @@ -477,24 +479,18 @@ xfs_buf_item_trylock( xfs_buf_t *bp; bp = bip->bli_buf; - - if (XFS_BUF_ISPINNED(bp)) { + if (XFS_BUF_ISPINNED(bp)) return XFS_ITEM_PINNED; - } - - if (!XFS_BUF_CPSEMA(bp)) { + if (!XFS_BUF_CPSEMA(bp)) return XFS_ITEM_LOCKED; - } - /* - * Remove the buffer from the free list. Only do this - * if it's on the free list. Private buffers like the - * superblock buffer are not. - */ + /* take a reference to the buffer. */ XFS_BUF_HOLD(bp); ASSERT(!(bip->bli_flags & XFS_BLI_STALE)); trace_xfs_buf_item_trylock(bip); + if (XFS_BUF_ISDELAYWRITE(bp)) + return XFS_ITEM_PUSHBUF; return XFS_ITEM_SUCCESS; } @@ -626,11 +622,9 @@ xfs_buf_item_committed( } /* - * This is called to asynchronously write the buffer associated with this - * buf log item out to disk. The buffer will already have been locked by - * a successful call to xfs_buf_item_trylock(). If the buffer still has - * B_DELWRI set, then get it going out to disk with a call to bawrite(). - * If not, then just release the buffer. + * The buffer is locked, but is not a delayed write buffer. This happens + * if we race with IO completion and hence we don't want to try to write it + * again. Just release the buffer. */ STATIC void xfs_buf_item_push( @@ -642,17 +636,29 @@ xfs_buf_item_push( trace_xfs_buf_item_push(bip); bp = bip->bli_buf; + ASSERT(!XFS_BUF_ISDELAYWRITE(bp)); + xfs_buf_relse(bp); +} - if (XFS_BUF_ISDELAYWRITE(bp)) { - int error; - error = xfs_bawrite(bip->bli_item.li_mountp, bp); - if (error) - xfs_fs_cmn_err(CE_WARN, bip->bli_item.li_mountp, - "xfs_buf_item_push: pushbuf error %d on bip %p, bp %p", - error, bip, bp); - } else { - xfs_buf_relse(bp); - } +/* + * The buffer is locked and is a delayed write buffer. Promote the buffer + * in the delayed write queue as the caller knows that they must invoke + * the xfsbufd to get this buffer written. We have to unlock the buffer + * to allow the xfsbufd to write it, too. + */ +STATIC void +xfs_buf_item_pushbuf( + xfs_buf_log_item_t *bip) +{ + xfs_buf_t *bp; + + ASSERT(!(bip->bli_flags & XFS_BLI_STALE)); + trace_xfs_buf_item_pushbuf(bip); + + bp = bip->bli_buf; + ASSERT(XFS_BUF_ISDELAYWRITE(bp)); + xfs_buf_delwri_promote(bp); + xfs_buf_relse(bp); } /* ARGSUSED */ @@ -677,7 +683,7 @@ static struct xfs_item_ops xfs_buf_item_ops = { .iop_committed = (xfs_lsn_t(*)(xfs_log_item_t*, xfs_lsn_t)) xfs_buf_item_committed, .iop_push = (void(*)(xfs_log_item_t*))xfs_buf_item_push, - .iop_pushbuf = NULL, + .iop_pushbuf = (void(*)(xfs_log_item_t*))xfs_buf_item_pushbuf, .iop_committing = (void(*)(xfs_log_item_t*, xfs_lsn_t)) xfs_buf_item_committing }; diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index beb7d9f..0c4e719 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -602,33 +602,20 @@ xfs_inode_item_trylock( if (!xfs_iflock_nowait(ip)) { /* - * If someone else isn't already trying to push the inode - * buffer, we get to do it. + * inode has already been flushed to the backing buffer, + * leave it locked in shared mode, pushbuf routine will + * unlock it. */ - if (iip->ili_pushbuf_flag == 0) { - iip->ili_pushbuf_flag = 1; -#ifdef DEBUG - iip->ili_push_owner = current_pid(); -#endif - /* - * Inode is left locked in shared mode. - * Pushbuf routine gets to unlock it. - */ - return XFS_ITEM_PUSHBUF; - } else { - /* - * We hold the AIL lock, so we must specify the - * NONOTIFY flag so that we won't double trip. - */ - xfs_iunlock(ip, XFS_ILOCK_SHARED|XFS_IUNLOCK_NONOTIFY); - return XFS_ITEM_FLUSHING; - } - /* NOTREACHED */ + return XFS_ITEM_PUSHBUF; } /* Stale items should force out the iclog */ if (ip->i_flags & XFS_ISTALE) { xfs_ifunlock(ip); + /* + * we hold the AIL lock - notify the unlock routine of this + * so it doesn't try to get the lock again. + */ xfs_iunlock(ip, XFS_ILOCK_SHARED|XFS_IUNLOCK_NONOTIFY); return XFS_ITEM_PINNED; } @@ -746,11 +733,8 @@ xfs_inode_item_committed( * This gets called by xfs_trans_push_ail(), when IOP_TRYLOCK * failed to get the inode flush lock but did get the inode locked SHARED. * Here we're trying to see if the inode buffer is incore, and if so whether it's - * marked delayed write. If that's the case, we'll initiate a bawrite on that - * buffer to expedite the process. - * - * We aren't holding the AIL lock (or the flush lock) when this gets called, - * so it is inherently race-y. + * marked delayed write. If that's the case, we'll promote it and that will + * allow the caller to write the buffer by triggering the xfsbufd to run. */ STATIC void xfs_inode_item_pushbuf( @@ -759,26 +743,16 @@ xfs_inode_item_pushbuf( xfs_inode_t *ip; xfs_mount_t *mp; xfs_buf_t *bp; - uint dopush; ip = iip->ili_inode; - ASSERT(xfs_isilocked(ip, XFS_ILOCK_SHARED)); /* - * The ili_pushbuf_flag keeps others from - * trying to duplicate our effort. - */ - ASSERT(iip->ili_pushbuf_flag != 0); - ASSERT(iip->ili_push_owner == current_pid()); - - /* * If a flush is not in progress anymore, chances are that the * inode was taken off the AIL. So, just get out. */ if (completion_done(&ip->i_flush) || ((iip->ili_item.li_flags & XFS_LI_IN_AIL) == 0)) { - iip->ili_pushbuf_flag = 0; xfs_iunlock(ip, XFS_ILOCK_SHARED); return; } @@ -787,54 +761,12 @@ xfs_inode_item_pushbuf( bp = xfs_incore(mp->m_ddev_targp, iip->ili_format.ilf_blkno, iip->ili_format.ilf_len, XFS_INCORE_TRYLOCK); - if (bp != NULL) { - if (XFS_BUF_ISDELAYWRITE(bp)) { - /* - * We were racing with iflush because we don't hold - * the AIL lock or the flush lock. However, at this point, - * we have the buffer, and we know that it's dirty. - * So, it's possible that iflush raced with us, and - * this item is already taken off the AIL. - * If not, we can flush it async. - */ - dopush = ((iip->ili_item.li_flags & XFS_LI_IN_AIL) && - !completion_done(&ip->i_flush)); - iip->ili_pushbuf_flag = 0; - xfs_iunlock(ip, XFS_ILOCK_SHARED); - - trace_xfs_inode_item_push(bp, _RET_IP_); - - if (XFS_BUF_ISPINNED(bp)) { - xfs_log_force(mp, (xfs_lsn_t)0, - XFS_LOG_FORCE); - } - if (dopush) { - int error; - error = xfs_bawrite(mp, bp); - if (error) - xfs_fs_cmn_err(CE_WARN, mp, - "xfs_inode_item_pushbuf: pushbuf error %d on iip %p, bp %p", - error, iip, bp); - } else { - xfs_buf_relse(bp); - } - } else { - iip->ili_pushbuf_flag = 0; - xfs_iunlock(ip, XFS_ILOCK_SHARED); - xfs_buf_relse(bp); - } - return; - } - /* - * We have to be careful about resetting pushbuf flag too early (above). - * Even though in theory we can do it as soon as we have the buflock, - * we don't want others to be doing work needlessly. They'll come to - * this function thinking that pushing the buffer is their - * responsibility only to find that the buffer is still locked by - * another doing the same thing - */ - iip->ili_pushbuf_flag = 0; xfs_iunlock(ip, XFS_ILOCK_SHARED); + if (!bp) + return; + if (XFS_BUF_ISDELAYWRITE(bp)) + xfs_buf_delwri_promote(bp); + xfs_buf_relse(bp); return; } @@ -938,7 +870,6 @@ xfs_inode_item_init( /* We have zeroed memory. No need ... iip->ili_extents_buf = NULL; - iip->ili_pushbuf_flag = 0; */ iip->ili_format.ilf_type = XFS_LI_INODE; diff --git a/fs/xfs/xfs_inode_item.h b/fs/xfs/xfs_inode_item.h index cc8df1a..9a46795 100644 --- a/fs/xfs/xfs_inode_item.h +++ b/fs/xfs/xfs_inode_item.h @@ -144,12 +144,6 @@ typedef struct xfs_inode_log_item { data exts */ struct xfs_bmbt_rec *ili_aextents_buf; /* array of logged attr exts */ - unsigned int ili_pushbuf_flag; /* one bit used in push_ail */ - -#ifdef DEBUG - uint64_t ili_push_owner; /* one who sets pushbuf_flag - above gets to push the buf */ -#endif #ifdef XFS_TRANS_DEBUG int ili_root_size; char *ili_orig_root; diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index 8ca123e..7e15433 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c @@ -253,6 +253,7 @@ xfsaild_push( int flush_log, count, stuck; xfs_mount_t *mp = ailp->xa_mount; struct xfs_ail_cursor *cur = &ailp->xa_cursors; + int push_xfsbufd = 0; spin_lock(&ailp->xa_lock); xfs_trans_ail_cursor_init(ailp, cur); @@ -308,6 +309,7 @@ xfsaild_push( XFS_STATS_INC(xs_push_ail_pushbuf); IOP_PUSHBUF(lip); last_pushed_lsn = lsn; + push_xfsbufd = 1; break; case XFS_ITEM_PINNED: @@ -374,6 +376,11 @@ xfsaild_push( xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); } + if (push_xfsbufd) { + /* we've got delayed write buffers to flush */ + xfs_flush_buftarg_delwri(mp->m_ddev_targp); + } + if (!count) { /* We're past our target or empty, so idle */ tout = 0; -- 1.6.5 From SRS0+BAOp+31+fromorbit.com=dave@internode.on.net Fri Jan 1 21:06:39 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_54 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0236clD053722 for ; Fri, 1 Jan 2010 21:06:39 -0600 X-ASG-Debug-ID: 1262401644-208702040002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0AC2A1502BEC for ; Fri, 1 Jan 2010 19:07:26 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id Y56q2By9Q7KObCJa for ; Fri, 01 Jan 2010 19:07:26 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10940216-1927428 for ; Sat, 02 Jan 2010 13:37:24 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NQuKc-0007yk-Rj for xfs@oss.sgi.com; Sat, 02 Jan 2010 14:07:10 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NQuHE-00057S-1w for xfs@oss.sgi.com; Sat, 02 Jan 2010 14:03:40 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [RFC, PATCH 0/3] Kill async inode writeback Subject: [RFC, PATCH 0/3] Kill async inode writeback Date: Sat, 2 Jan 2010 14:03:33 +1100 Message-Id: <1262401416-19546-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1262401648 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18714 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently we do background inode writeback on demand from many different places - xfssyncd, xfsbufd, the bdi writeback threads and when pushing the AIL. The result is that inodes can be pushed at any time and there is little to no locality to the IO patterns results from such writeback. Indeed, we can have completing writebacks occurring which only serves to slow down writeback. The idea behind this series is to make metadata buffers get written from xfsbufd via the delayed write queue rather than than from all these other places. All the other places do is make the buffers delayed write so that the xfsbufd can issue them. This means that inode flushes can no longer happen asynchronously, but we still need a method for ensuring timely dispatch of buffers that we may be waiting for IO completion on. To do this, we allow delayed write buffers to be "promoted" in the delayed write queue. This effectively short-cuts the aging of the buffers, and combined with a demand flush of the xfsbufd we push all aged and promoted buffers out at the same time. Combine this with sorting the delayed write buffers to be written into disk offset order before dispatch, and we vastly improve the IO patterns for metadata writeback. IO is issued from one place and in a disk/elevator friendly order. Perf results on a debug XFS build (means allocation patterns are variable, so runtimes are also a bit variable): Untar 2.6.32 kernel tarball, sync, then remove: Untar+sync rm -rf xfs-dev: 25.2s 13.0s xfs-dev-delwri: 22.5s 9.1s 4 processes each creating 100,000, five byte files in separate directories concurrently, then 4 processes removing a directory each concurrently. create rm -rf xfs-dev: 8m32s 4m10s xfs-dev-delwri: 4m55s 3m42s There is still followup work to be done on the buffer sorting to make it more efficient, but overall the concept appears to be solid based on the improvements in sustained small file create rates. From BATV+ad3dc5ce6bcf5dcfbbff+2323+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 2 05:10:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02BA7GL096292 for ; Sat, 2 Jan 2010 05:10:08 -0600 X-ASG-Debug-ID: 1262430657-516f01350000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 72568137390 for ; Sat, 2 Jan 2010 03:10:57 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id B278Lgtk16zCsfE0 for ; Sat, 02 Jan 2010 03:10:57 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NR1sl-00075w-6i; Sat, 02 Jan 2010 11:10:55 +0000 Date: Sat, 2 Jan 2010 06:10:55 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] repair: compare superblock / AG headers fields against manual counts Subject: Re: [PATCH 3/3] repair: compare superblock / AG headers fields against manual counts Message-ID: <20100102111055.GA22222@infradead.org> References: <20091201150503.958283878@bombadil.infradead.org> <20091201151037.707510379@bombadil.infradead.org> <20091230224314.GD13802@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20091230224314.GD13802@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262430657 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Dec 31, 2009 at 09:43:14AM +1100, Dave Chinner wrote: > Might be worth a comment here saying that we are only calculating > totals from the ABTC btree scan. OTOH, is is worth checking that the > two btrees add up to the same number of free blocks, same maximum > length extent, etc? Yes, I'll look into adding that additional check. From BATV+ad3dc5ce6bcf5dcfbbff+2323+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 2 05:22:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02BMeZr097876 for ; Sat, 2 Jan 2010 05:22:40 -0600 X-ASG-Debug-ID: 1262431409-5a0201540000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2118C1374BD for ; Sat, 2 Jan 2010 03:23:30 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Ke9tztTBoQFSHgsH for ; Sat, 02 Jan 2010 03:23:30 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NR24v-0004Ic-Pv; Sat, 02 Jan 2010 11:23:29 +0000 Date: Sat, 2 Jan 2010 06:23:29 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Ensure we force all busy extents in range to disk Subject: Re: [PATCH] XFS: Ensure we force all busy extents in range to disk Message-ID: <20100102112329.GA27329@infradead.org> References: <1262399936-19195-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262399936-19195-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262431410 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, and quite interestin that we never could it before. Some nipicks below: > + /* > + * search pagb_list for this slot, skipping open slots. We have to > + * search the entire array as there may be multiple overlaps and > + * we have to get the most recent LSN for the log force to push out > + * all the transactions that span the range. > + */ > + for (bsy = pag->pagb_list; cnt; bsy++, cnt--) { Maybe you coult convert this to a more standard loop idiom while you're at it: for (cnt = 0; cnt < pag->pagb_count; cnt++) { bsy = &pag->pagb_list[cnt]; > + if (!bsy->busy_tp) > + continue; > > + bend = bsy->busy_start + bsy->busy_length - 1; > + if ((bno > bend) || (uend < bsy->busy_start)) no need for the inner braces here. And btw, the standard subsystem prefix is all lower case, xfs:, not XFS:. Also it seems like this patch requires your perag-lookup fixes first. Time to get them into the for-2.6.34 git tree ASAP as a base to work against. That might also make it easier to work on the lockless patch separately. From BATV+ad3dc5ce6bcf5dcfbbff+2323+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 2 05:52:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02BqnC4102682 for ; Sat, 2 Jan 2010 05:52:49 -0600 X-ASG-Debug-ID: 1262433218-3b59033f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E8D31DAB800 for ; Sat, 2 Jan 2010 03:53:38 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id KALeJaUkqxZIB2Ip for ; Sat, 02 Jan 2010 03:53:38 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NR2Y6-0007GM-LR; Sat, 02 Jan 2010 11:53:38 +0000 Date: Sat, 2 Jan 2010 06:53:38 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Kill filestreams cache flush Subject: Re: [PATCH] XFS: Kill filestreams cache flush Message-ID: <20100102115338.GA18502@infradead.org> References: <1262399900-19110-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262399900-19110-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262433219 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 01:38:20PM +1100, Dave Chinner wrote: > The filestreams cache flush is not needed in the sync code as it > does not affect data writeback, and it is now not used by the > growfs code, either, so kill it. I have to admit I never understood the purpose of this call. What xfs_fstrm_free_func does is: - clear the filesystems flag on the inode - decrement pagf_fstrms - drop references on the inode (and parent if known) - free the filestream item Nothing of that should matter for sync, although dropping inode references during sync might generally be a good idea. From BATV+ad3dc5ce6bcf5dcfbbff+2323+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 2 06:00:05 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02C051p103628 for ; Sat, 2 Jan 2010 06:00:05 -0600 X-ASG-Debug-ID: 1262433653-034c00f30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CDCC71503378 for ; Sat, 2 Jan 2010 04:00:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id OIGeFDfYhgQnvgyJ for ; Sat, 02 Jan 2010 04:00:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NR2f7-0008UB-Px; Sat, 02 Jan 2010 12:00:53 +0000 Date: Sat, 2 Jan 2010 07:00:53 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Don't flush stale inodes Subject: Re: [PATCH] XFS: Don't flush stale inodes Message-ID: <20100102120053.GB18502@infradead.org> References: <1262399980-19277-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262399980-19277-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262433654 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 01:39:40PM +1100, Dave Chinner wrote: > Because inodes remain in cache much longer than inode buffers do > under memory pressure, we can get the situation where we have stale, > dirty inodes being reclaimed but the backing storage has been freed. > Hence we should never, ever flush XFS_ISTALE inodes to disk as > there is no guarantee that the backing buffer is in cache and > still marked stale when the flush occurs. We should not flush stale inodes. But how do we even end up calling xfs_iflush with a stale inode? From SRS0+w7V++31+fromorbit.com=david@internode.on.net Sat Jan 2 06:04:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02C4o6N104136 for ; Sat, 2 Jan 2010 06:04:51 -0600 X-ASG-Debug-ID: 1262433937-3b5903a70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9344D1DAB9B4 for ; Sat, 2 Jan 2010 04:05:38 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id AmXxRmRAsxRRinIk for ; Sat, 02 Jan 2010 04:05:38 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10830494-1927428 for multiple; Sat, 02 Jan 2010 22:35:36 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NR2je-0008Jk-KS; Sat, 02 Jan 2010 23:05:34 +1100 Date: Sat, 2 Jan 2010 23:05:34 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Ensure we force all busy extents in range to disk Subject: Re: [PATCH] XFS: Ensure we force all busy extents in range to disk Message-ID: <20100102120534.GF13802@discord.disaster> References: <1262399936-19195-1-git-send-email-david@fromorbit.com> <20100102112329.GA27329@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100102112329.GA27329@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1262433939 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18745 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 06:23:29AM -0500, Christoph Hellwig wrote: > Looks good, and quite interestin that we never could it before. > > Some nipicks below: > > > + /* > > + * search pagb_list for this slot, skipping open slots. We have to > > + * search the entire array as there may be multiple overlaps and > > + * we have to get the most recent LSN for the log force to push out > > + * all the transactions that span the range. > > + */ > > + for (bsy = pag->pagb_list; cnt; bsy++, cnt--) { > > Maybe you coult convert this to a more standard loop idiom while you're > at it: > > for (cnt = 0; cnt < pag->pagb_count; cnt++) { > bsy = &pag->pagb_list[cnt]; Done. > > + if (!bsy->busy_tp) > > + continue; > > > > + bend = bsy->busy_start + bsy->busy_length - 1; > > + if ((bno > bend) || (uend < bsy->busy_start)) > > no need for the inner braces here. And done. Patch below. > And btw, the standard subsystem prefix is all lower case, xfs:, not > XFS:. One of these days I'll get it right ;) > Also it seems like this patch requires your perag-lookup fixes first. Yes. I've kind of been assuming that they will go in after reviews and fixups are completed. > Time to get them into the for-2.6.34 git tree ASAP as a base to work > against. That might also make it easier to work on the lockless patch > separately. Agreed. Cheers, Dave. -- Dave Chinner david@fromorbit.com xfs: Ensure we force all busy extents in range to disk When we search for and find a busy extent during allocation we force the log out to ensure the extent free transaction is on disk before the allocation transaction. The curret implementation has a subtle bug in it - it does not handle multiple overlapping ranges. That is, if we free lots of little extents into a single contiguous extent, then allocate the contiguous extent, the busy search code stops searching at the first extent it finds that overlaps the allocated range. It then uses the commit LSN of the transaction to force the log out to. Unfortunately, the other busy ranges might have more recent commit LSNs than the first busy extent that is found, and this results in xfs_alloc_search_busy() returning before all the extent free transactions are on disk for the range being allocated. This can lead to potential metadata corruption or stale data exposure after a crash because log replay won't replay all the extent free transactions that cover the allocation range. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_trace.h | 9 +++++-- fs/xfs/xfs_alloc.c | 47 +++++++++++++++++++---------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h index 5ec1475..2b0819a 100644 --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h @@ -1064,14 +1064,15 @@ TRACE_EVENT(xfs_alloc_unbusy, TRACE_EVENT(xfs_alloc_busysearch, TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno, - xfs_extlen_t len, int found), - TP_ARGS(mp, agno, agbno, len, found), + xfs_extlen_t len, int found, xfs_lsn_t lsn), + TP_ARGS(mp, agno, agbno, len, found, lsn), TP_STRUCT__entry( __field(dev_t, dev) __field(xfs_agnumber_t, agno) __field(xfs_agblock_t, agbno) __field(xfs_extlen_t, len) __field(int, found) + __field(xfs_lsn_t, lsn) ), TP_fast_assign( __entry->dev = mp->m_super->s_dev; @@ -1079,12 +1080,14 @@ TRACE_EVENT(xfs_alloc_busysearch, __entry->agbno = agbno; __entry->len = len; __entry->found = found; + __entry->lsn = lsn; ), - TP_printk("dev %d:%d agno %u agbno %u len %u %s", + TP_printk("dev %d:%d agno %u agbno %u len %u force lsn 0x%llx %s", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno, __entry->agbno, __entry->len, + __entry->lsn, __print_symbolic(__entry->found, XFS_BUSY_STATES)) ); diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index d58ca99..c9ee98d 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -2565,43 +2565,40 @@ xfs_alloc_search_busy(xfs_trans_t *tp, struct xfs_perag *pag; xfs_perag_busy_t *bsy; xfs_agblock_t uend, bend; - xfs_lsn_t lsn; + xfs_lsn_t lsn = 0; int cnt; pag = xfs_perag_get(tp->t_mountp, agno); spin_lock(&pag->pagb_lock); - cnt = pag->pagb_count; - uend = bno + len - 1; - /* search pagb_list for this slot, skipping open slots */ - for (bsy = pag->pagb_list; cnt; bsy++) { + /* + * search pagb_list for this slot, skipping open slots. We have to + * search the entire array as there may be multiple overlaps and + * we have to get the most recent LSN for the log force to push out + * all the transactions that span the range. + */ + for (cnt = 0; cnt < pag->pagb_count; cnt++) { + bsy = &pag->pagb_list[cnt]; + if (!bsy->busy_tp) + continue; - /* - * (start1,length1) within (start2, length2) - */ - if (bsy->busy_tp != NULL) { - bend = bsy->busy_start + bsy->busy_length - 1; - if ((bno > bend) || (uend < bsy->busy_start)) { - cnt--; - } else { - break; - } - } - } + bend = bsy->busy_start + bsy->busy_length - 1; + if (bno > bend || uend < bsy->busy_start) + continue; - trace_xfs_alloc_busysearch(tp->t_mountp, agno, bno, len, !!cnt); + /* (start1,length1) within (start2, length2) */ + if (XFS_LSN_CMP(bsy->busy_tp->t_commit_lsn, lsn) > 0) + lsn = bsy->busy_tp->t_commit_lsn; + } + spin_unlock(&pag->pagb_lock); + xfs_perag_put(pag); + trace_xfs_alloc_busysearch(tp->t_mountp, agno, bno, len, !!cnt, lsn); /* * If a block was found, force the log through the LSN of the * transaction that freed the block */ - if (cnt) { - lsn = bsy->busy_tp->t_commit_lsn; - spin_unlock(&pag->pagb_lock); + if (lsn) xfs_log_force(tp->t_mountp, lsn, XFS_LOG_FORCE|XFS_LOG_SYNC); - } else { - spin_unlock(&pag->pagb_lock); - } - xfs_perag_put(pag); } From SRS0+1s6Y+31+fromorbit.com=david@internode.on.net Sat Jan 2 06:11:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02CBJVE104855 for ; Sat, 2 Jan 2010 06:11:19 -0600 X-ASG-Debug-ID: 1262434327-7f7301510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 02C2715033D4 for ; Sat, 2 Jan 2010 04:12:07 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id jOkaNyTZUwj6FlgD for ; Sat, 02 Jan 2010 04:12:07 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11059890-1927428 for multiple; Sat, 02 Jan 2010 22:42:05 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NR2pv-0008KH-U4; Sat, 02 Jan 2010 23:12:03 +1100 Date: Sat, 2 Jan 2010 23:12:03 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Kill filestreams cache flush Subject: Re: [PATCH] XFS: Kill filestreams cache flush Message-ID: <20100102121203.GG13802@discord.disaster> References: <1262399900-19110-1-git-send-email-david@fromorbit.com> <20100102115338.GA18502@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100102115338.GA18502@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1262434329 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18746 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 06:53:38AM -0500, Christoph Hellwig wrote: > On Sat, Jan 02, 2010 at 01:38:20PM +1100, Dave Chinner wrote: > > The filestreams cache flush is not needed in the sync code as it > > does not affect data writeback, and it is now not used by the > > growfs code, either, so kill it. > > I have to admit I never understood the purpose of this call. I can't remember why it was put there, either. I may have even put it there when I was getting filestreams ready for merge but I can't remember at all... > What xfs_fstrm_free_func does is: > > - clear the filesystems flag on the inode > - decrement pagf_fstrms > - drop references on the inode (and parent if known) > - free the filestream item > > Nothing of that should matter for sync, although dropping inode > references during sync might generally be a good idea. Which means that sync destroys active filestreams associations and that seems more broken to me than anything an active reference will cause. I think just letting them time out is better than having them destroyed by external operations. I'm happy to leave it there if you want.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+5f+1+31+fromorbit.com=david@internode.on.net Sat Jan 2 06:14:00 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02CDxrI105153 for ; Sat, 2 Jan 2010 06:13:59 -0600 X-ASG-Debug-ID: 1262434487-77a000770000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 423961DAB7C4 for ; Sat, 2 Jan 2010 04:14:47 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id dZCLDBgszggFFOVK for ; Sat, 02 Jan 2010 04:14:47 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10940498-1927428 for multiple; Sat, 02 Jan 2010 22:44:46 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NR2sX-0008KT-05; Sat, 02 Jan 2010 23:14:45 +1100 Date: Sat, 2 Jan 2010 23:14:44 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Don't flush stale inodes Subject: Re: [PATCH] XFS: Don't flush stale inodes Message-ID: <20100102121444.GH13802@discord.disaster> References: <1262399980-19277-1-git-send-email-david@fromorbit.com> <20100102120053.GB18502@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100102120053.GB18502@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1262434489 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18745 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 07:00:53AM -0500, Christoph Hellwig wrote: > On Sat, Jan 02, 2010 at 01:39:40PM +1100, Dave Chinner wrote: > > Because inodes remain in cache much longer than inode buffers do > > under memory pressure, we can get the situation where we have stale, > > dirty inodes being reclaimed but the backing storage has been freed. > > Hence we should never, ever flush XFS_ISTALE inodes to disk as > > there is no guarantee that the backing buffer is in cache and > > still marked stale when the flush occurs. > > We should not flush stale inodes. But how do we even end up calling > xfs_iflush with a stale inode? xfs_reclaim_inode() -> xfs_iflush() according to the stack traces that found bad inode magic numbers in xfs_itobp(). Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+5f+1+31+fromorbit.com=david@internode.on.net Sat Jan 2 06:23:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02CNKCo106285 for ; Sat, 2 Jan 2010 06:23:20 -0600 X-ASG-Debug-ID: 1262435047-0d1200250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 48B001DAB8F8 for ; Sat, 2 Jan 2010 04:24:08 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id ONBYLIySBVlEtlRO for ; Sat, 02 Jan 2010 04:24:08 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10940666-1927428 for multiple; Sat, 02 Jan 2010 22:54:07 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NR31Z-0008L0-CT; Sat, 02 Jan 2010 23:24:05 +1100 Date: Sat, 2 Jan 2010 23:24:05 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Don't flush stale inodes Subject: Re: [PATCH] XFS: Don't flush stale inodes Message-ID: <20100102122405.GI13802@discord.disaster> References: <1262399980-19277-1-git-send-email-david@fromorbit.com> <20100102120053.GB18502@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100102120053.GB18502@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1262435049 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18747 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 07:00:53AM -0500, Christoph Hellwig wrote: > On Sat, Jan 02, 2010 at 01:39:40PM +1100, Dave Chinner wrote: > > Because inodes remain in cache much longer than inode buffers do > > under memory pressure, we can get the situation where we have stale, > > dirty inodes being reclaimed but the backing storage has been freed. > > Hence we should never, ever flush XFS_ISTALE inodes to disk as > > there is no guarantee that the backing buffer is in cache and > > still marked stale when the flush occurs. > > We should not flush stale inodes. But how do we even end up calling > xfs_iflush with a stale inode? Actually, here's most of the failure trace (unlimited scrollback buffers are great): [ 5703.683858] Device sdb2 - bad inode magic/vsn daddr 16129976 #0 (magic=0) [ 5703.690689] ------------[ cut here ]------------ [ 5703.691665] kernel BUG at fs/xfs/support/debug.c:62! [ 5703.691665] invalid opcode: 0000 [#1] SMP [ 5703.691665] last sysfs file: /sys/devices/virtual/net/lo/operstate [ 5703.691665] CPU 1 [ 5703.691665] Modules linked in: [ 5703.691665] Pid: 4017, comm: xfssyncd Not tainted 2.6.32-dgc #73 IBM eServer 326m -[796955M]- [ 5703.691665] RIP: 0010:[] [] cmn_err+0x101/0x110 [ 5703.691665] RSP: 0018:ffff8800a8cfdaa0 EFLAGS: 00010246 [ 5703.691665] RAX: 0000000002deff6d RBX: ffffffff819102d0 RCX: 0000000000000006 [ 5703.691665] RDX: ffffffff81fb5130 RSI: ffff8800ae2d9ba0 RDI: ffff8800ae2d9440 [ 5703.691665] RBP: ffff8800a8cfdb90 R08: 0000000000000000 R09: 0000000000000001 [ 5703.691665] R10: 0000000000000001 R11: 0000000000000001 R12: 0000000000000000 [ 5703.691665] R13: 0000000000000282 R14: 0000000000000000 R15: ffff8800ae34ca88 [ 5703.691665] FS: 00007f64efe476f0(0000) GS:ffff880007600000(0000) knlGS:0000000000000000 [ 5703.691665] CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b [ 5703.691665] CR2: 00007f64efe4b000 CR3: 00000000ad04f000 CR4: 00000000000006e0 [ 5703.691665] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 5703.691665] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 5703.691665] Process xfssyncd (pid: 4017, threadinfo ffff8800a8cfc000, task ffff8800ae2d9440) [ 5703.691665] Stack: [ 5703.691665] 0000003000000030 ffff8800a8cfdba0 ffff8800a8cfdac0 ffff8800ad585b24 [ 5703.691665] <0> 0000000000000002 ffffffff8135e77d ffff8800a8cfdbe0 0000000000f61fb8 [ 5703.691665] <0> 0000000000000000 0000000000000000 ffff8800a8cfdb10 ffffffff81388330 [ 5703.691665] Call Trace: [ 5703.691665] [] ? xfs_itobp+0x6d/0x100 [ 5703.691665] [] ? _xfs_buf_read+0x90/0xa0 [ 5703.691665] [] ? xfs_buf_read+0xdc/0x110 [ 5703.691665] [] ? xfs_trans_read_buf+0x43f/0x680 [ 5703.691665] [] ? disk_name+0x63/0xc0 [ 5703.691665] [] xfs_imap_to_bp+0x15a/0x240 [ 5703.691665] [] ? xfs_itobp+0x6d/0x100 [ 5703.691665] [] xfs_itobp+0x6d/0x100 [ 5703.691665] [] xfs_iflush+0x207/0x380 [ 5703.691665] [] xfs_reclaim_inode+0x15f/0x1b0 [ 5703.691665] [] xfs_reclaim_inode_now+0x68/0x90 [ 5703.691665] [] ? xfs_reclaim_inode_now+0x0/0x90 [ 5703.691665] [] xfs_inode_ag_walk+0x64/0xc0 [ 5703.691665] [] ? xfs_perag_get+0xe2/0x110 [ 5703.691665] [] xfs_inode_ag_iterator+0x77/0xc0 [ 5703.691665] [] ? xfs_reclaim_inode_now+0x0/0x90 I was hitting this regularly with workloads creating then removing hundreds of thousands of small files, and the patch I sent stopped them from occurring... Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+ad3dc5ce6bcf5dcfbbff+2323+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 2 06:46:02 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02Ck1eV109169 for ; Sat, 2 Jan 2010 06:46:01 -0600 X-ASG-Debug-ID: 1262436411-0cb200ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4CB5E172F08B for ; Sat, 2 Jan 2010 04:46:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id pEF46NtbYKwgx6BR for ; Sat, 02 Jan 2010 04:46:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NR3NZ-0003Ow-Om; Sat, 02 Jan 2010 12:46:49 +0000 Date: Sat, 2 Jan 2010 07:46:49 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Kill filestreams cache flush Subject: Re: [PATCH] XFS: Kill filestreams cache flush Message-ID: <20100102124649.GA8004@infradead.org> References: <1262399900-19110-1-git-send-email-david@fromorbit.com> <20100102115338.GA18502@infradead.org> <20100102121203.GG13802@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100102121203.GG13802@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262436411 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 11:12:03PM +1100, Dave Chinner wrote: > Which means that sync destroys active filestreams associations and > that seems more broken to me than anything an active reference will > cause. I think just letting them time out is better than having them > destroyed by external operations. I'm happy to leave it there if you > want.... Just trying to understand what's going on here. If you think the new behaviour is better and it doesn't cause any regressions in QA I'm fine with it. Consider it: Reviewed-by: Christoph Hellwig From andi@firstfloor.org Sat Jan 2 07:07:54 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02D7qmC111488 for ; Sat, 2 Jan 2010 07:07:53 -0600 X-ASG-Debug-ID: 1262437719-0cb1018e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5D3211DAB926 for ; Sat, 2 Jan 2010 05:08:39 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id KOadd3aBettPZ41n for ; Sat, 02 Jan 2010 05:08:39 -0800 (PST) Received: from basil.firstfloor.org (p5B3CABF9.dip0.t-ipconnect.de [91.60.171.249]) by one.firstfloor.org (Postfix) with ESMTP id AE6321A98018; Sat, 2 Jan 2010 14:08:37 +0100 (CET) Received: by basil.firstfloor.org (Postfix, from userid 1000) id 05A33B17C2; Sat, 2 Jan 2010 14:08:36 +0100 (CET) To: Dave Chinner Cc: xfs@oss.sgi.com, axboe@kernel.dk X-ASG-Orig-Subj: Re: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch Subject: Re: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch From: Andi Kleen References: <1262401416-19546-1-git-send-email-david@fromorbit.com> <1262401416-19546-4-git-send-email-david@fromorbit.com> Date: Sat, 02 Jan 2010 14:08:36 +0100 In-Reply-To: <1262401416-19546-4-git-send-email-david@fromorbit.com> (Dave Chinner's message of "Sat, 2 Jan 2010 14:03:36 +1100") Message-ID: <87fx6o7iy3.fsf@basil.nowhere.org> User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1262437720 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18749 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner writes: > Currently when the xfsbufd writes delayed write buffers, it pushes > them to disk in the order they come off the delayed write list. If > there are lots of buffers ѕpread widely over the disk, this results > in overwhelming the elevator sort queues in the block layer and we > end up losing the posibility of merging adjacent buffers to minimise > the number of IOs. > > Add a sort array to the buftarg so that we can do high level sorting > of the buffers once they are pulled off the delwri queue for > writeback. Currently this array can hold 4096 buffers at a time > which gives us a window 32 times larger than the default elevator > maximums for ordering buffers. At first look it seems a bit wasteful because the elevator sorts again. Is your window that much bigger than the elevators? Perhaps the sort queue in the elevator should be just enlarged? > > Ideally this should use a list sort rather than requiring an > external buffer to sort the buffers in, but for simplicity > just do it via sort function. Doing merge sort on lists is relatively simple There are plenty examples in a google search. An alternative is also to construct a rbtree on the fly and then walk it. But if you use sort() this way you probably should at least add a u64 swap function to lib/sort.c, otherwise all the pointers will be exchanged byte-by-byte on 64bit systems which is rather slow. -andi -- ak@linux.intel.com -- Speaking for myself only. From BATV+ad3dc5ce6bcf5dcfbbff+2323+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 2 07:16:13 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02DGC7M112279 for ; Sat, 2 Jan 2010 07:16:13 -0600 X-ASG-Debug-ID: 1262438222-3c6f00450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C00A11376DE for ; Sat, 2 Jan 2010 05:17:02 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id kpfOY93CL1Rh24vf for ; Sat, 02 Jan 2010 05:17:02 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NR3qn-0005Im-Pj; Sat, 02 Jan 2010 13:17:01 +0000 Date: Sat, 2 Jan 2010 08:17:01 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Don't flush stale inodes Subject: Re: [PATCH] XFS: Don't flush stale inodes Message-ID: <20100102131701.GA17320@infradead.org> References: <1262399980-19277-1-git-send-email-david@fromorbit.com> <20100102120053.GB18502@infradead.org> <20100102122405.GI13802@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100102122405.GI13802@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262438222 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This looks like a bigger problem to me. We only mark inodes as stale from xfs_ifree_cluster, which via xfs_ifree and xfs_inactive gets called from xfs_fs_clear_inode. Given that the inode has now been deleted we should not mark it as reclaimable in xfs_fs_destroy_inode but go on to reap it given that there is nothing to reclaim. From SRS0+H4Gf+31+fromorbit.com=david@internode.on.net Sat Jan 2 07:38:19 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02DcI5A114596 for ; Sat, 2 Jan 2010 07:38:19 -0600 X-ASG-Debug-ID: 1262439545-036803be0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6B57715034C7 for ; Sat, 2 Jan 2010 05:39:06 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id D41UDEJmgIymPGGg for ; Sat, 02 Jan 2010 05:39:06 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10869869-1927428 for multiple; Sun, 03 Jan 2010 00:09:04 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NR4C6-0008OX-TZ; Sun, 03 Jan 2010 00:39:02 +1100 Date: Sun, 3 Jan 2010 00:39:02 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Don't flush stale inodes Subject: Re: [PATCH] XFS: Don't flush stale inodes Message-ID: <20100102133902.GJ13802@discord.disaster> References: <1262399980-19277-1-git-send-email-david@fromorbit.com> <20100102120053.GB18502@infradead.org> <20100102122405.GI13802@discord.disaster> <20100102131701.GA17320@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100102131701.GA17320@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1262439547 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18752 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 08:17:01AM -0500, Christoph Hellwig wrote: > This looks like a bigger problem to me. We only mark inodes as stale > from xfs_ifree_cluster, which via xfs_ifree and xfs_inactive gets > called from xfs_fs_clear_inode. Given that the inode has now been > deleted we should not mark it as reclaimable in xfs_fs_destroy_inode > but go on to reap it given that there is nothing to reclaim. We can't reap it immediately as the inodes are usually dirty and pinned in memory at this point by transactions that have not yet been written to disk and completed. We need the inodes in core for log IO completion processing.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+H4Gf+31+fromorbit.com=david@internode.on.net Sat Jan 2 08:13:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02EDejc117892 for ; Sat, 2 Jan 2010 08:13:40 -0600 X-ASG-Debug-ID: 1262441667-0d1303d90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DE7671DABB03 for ; Sat, 2 Jan 2010 06:14:28 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id 15G5mpVCEFj0hmVJ for ; Sat, 02 Jan 2010 06:14:28 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10870536-1927428 for multiple; Sun, 03 Jan 2010 00:44:16 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NR4kA-0008Qc-H2; Sun, 03 Jan 2010 01:14:14 +1100 Date: Sun, 3 Jan 2010 01:14:14 +1100 From: Dave Chinner To: Andi Kleen Cc: xfs@oss.sgi.com, axboe@kernel.dk X-ASG-Orig-Subj: Re: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch Subject: Re: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch Message-ID: <20100102141414.GK13802@discord.disaster> References: <1262401416-19546-1-git-send-email-david@fromorbit.com> <1262401416-19546-4-git-send-email-david@fromorbit.com> <87fx6o7iy3.fsf@basil.nowhere.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87fx6o7iy3.fsf@basil.nowhere.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1262441669 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18753 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 02:08:36PM +0100, Andi Kleen wrote: > Dave Chinner writes: > > > Currently when the xfsbufd writes delayed write buffers, it pushes > > them to disk in the order they come off the delayed write list. If > > there are lots of buffers ѕpread widely over the disk, this results > > in overwhelming the elevator sort queues in the block layer and we > > end up losing the posibility of merging adjacent buffers to minimise > > the number of IOs. > > > > Add a sort array to the buftarg so that we can do high level sorting > > of the buffers once they are pulled off the delwri queue for > > writeback. Currently this array can hold 4096 buffers at a time > > which gives us a window 32 times larger than the default elevator > > maximums for ordering buffers. > > At first look it seems a bit wasteful because the elevator > sorts again. Is your window that much bigger than the elevators? Easily - at currently limits we can log about 8000 inodes a megabyte of log space and we can write over 150MB/s to the log. That adds up to about 1.2million inodes dirtied a second, or 40,000 inode buffers a second needing to be written back..... We have much more of a clue about what is happening at the filesytem level, and can optimise far more efficiently at higher levels. The elevator can only merge IOs if the higher layer sends it adjacent blocks. I don't want to do buffer merging in XFS, but I want adjacent IOs merged and the elevator does that well. Rather than sending buffers down in random order and only getting a few merges, sorting all the buffers first guarantees that all possible merges are made by the elevator across the entire dispatch without needing to tweak the elevator at all. IOWs, being smart at the higher layers where you have the context to do a good job means we don't need to add heuristics or tweaks to try to guess the best thing to do at the lower layers. > Perhaps the sort queue in the elevator should be just enlarged? Which we used to do and that caused all sorts of latency and OOM issues by pinning huge amounts of dirty memory in the elevators. > > Ideally this should use a list sort rather than requiring an > > external buffer to sort the buffers in, but for simplicity > > just do it via sort function. > > Doing merge sort on lists is relatively simple There are > plenty examples in a google search. An alternative is also > to construct a rbtree on the fly and then walk it. Already got it handled - there's a couple of copies of list_sort() already in the tree - I'll post an updated patch set in the next couple of days after I've had a chance to QA it. Cheers, Dave. -- Dave Chinner david@fromorbit.com From lists@nerdbynature.de Sat Jan 2 16:15:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o02MFLdd163739 for ; Sat, 2 Jan 2010 16:15:21 -0600 X-ASG-Debug-ID: 1262470569-08d902230000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from moutng.kundenserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1497A1DAC2C4 for ; Sat, 2 Jan 2010 14:16:10 -0800 (PST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.187]) by cuda.sgi.com with ESMTP id FQsXRdoEBAcxcPWz for ; Sat, 02 Jan 2010 14:16:10 -0800 (PST) Received: from bogon.housecafe.de (ppp-93-104-176-88.dynamic.mnet-online.de [93.104.176.88]) by mrelayeu.kundenserver.de (node=mreu1) with ESMTP (Nemesis) id 0Lg4q7-1Nk5sB49BD-00pVON; Sat, 02 Jan 2010 23:16:09 +0100 Received: from localhost ([127.0.0.1]) by bogon.housecafe.de with esmtp (Exim 4.69) (envelope-from ) id 1NRCGW-0001Sm-4i for xfs@oss.sgi.com; Sat, 02 Jan 2010 23:16:08 +0100 Date: Sat, 2 Jan 2010 14:16:08 -0800 (PST) From: Christian Kujau To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] use CFLAGS in src/Makefile Subject: [PATCH] use CFLAGS in src/Makefile Message-ID: User-Agent: Alpine 2.01 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Provags-ID: V01U2FsdGVkX1/VjdBCLmXTzySXgj80HvgT1slQovjxzUElVd7 N7PPjtn4TQrWepMZsNsnUHzobDmphjPiJvncsHED6FrfFe57vn 5lo0CSXzoPKk7ba2P6F3A== X-Barracuda-Connect: moutng.kundenserver.de[212.227.126.187] X-Barracuda-Start-Time: 1262470571 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18784 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, while compiling xfstests after configuring with a different CFLAGS value, gcc fails in ./src: [...] make[2]: Entering directory `/usr/local/src/xfstests-git/src' gcc -g -O2 -DDEBUG -I../include -DVERSION=\"1.0.0\" -L/opt/xfsprogs/lib -DREAD iopat.c -o preallo_rw_pattern_reader iopat.c:21:21: error: xfs/xfs.h: No such file or directory [...] Somehow CFLAGS isn't passed to gcc, but "GCFLAGS" is. I'm not too savvy with the xfstests build system, but in include/builddefs.in we see: # Global, Platform, Local CFLAGS CFLAGS += $(GCFLAGS) $(PCFLAGS) $(LCFLAGS) ...thus I'm proposing the following fix: --- xfstests-git/src/Makefile.orig 2010-01-02 14:01:32.692011000 -0800 +++ xfstests-git/src/Makefile 2010-01-02 14:04:13.352011000 -0800 @@ -97,10 +97,10 @@ dmiperf: dmiperf.o $(LINKTEST) $(LIBATTR) $(LDLIBS) preallo_rw_pattern_reader: - $(CC) $(GCFLAGS) $(LDFLAGS) -DREAD iopat.c -o preallo_rw_pattern_reader + $(CC) $(CFLAGS) $(LDFLAGS) -DREAD iopat.c -o preallo_rw_pattern_reader preallo_rw_pattern_writer: - $(CC) $(GCFLAGS) $(LDFLAGS) -DWRITE iopat.c -o preallo_rw_pattern_writer + $(CC) $(CFLAGS) $(LDFLAGS) -DWRITE iopat.c -o preallo_rw_pattern_writer ftrunc: ftrunc.o $(LINKTEST) Thanks, Christian. -- BOFH excuse #267: The UPS is on strike. From lists@nerdbynature.de Sun Jan 3 04:29:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_33,J_CHICKENPOX_62,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o03ATNa7220022 for ; Sun, 3 Jan 2010 04:29:23 -0600 X-ASG-Debug-ID: 1262514608-13da004c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from moutng.kundenserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1B90915047B4 for ; Sun, 3 Jan 2010 02:30:09 -0800 (PST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.187]) by cuda.sgi.com with ESMTP id c3PlCNRRVCvT5FbE for ; Sun, 03 Jan 2010 02:30:09 -0800 (PST) Received: from bogon.housecafe.de (ppp-93-104-176-88.dynamic.mnet-online.de [93.104.176.88]) by mrelayeu.kundenserver.de (node=mreu0) with ESMTP (Nemesis) id 0MNyIR-1NYnZt2tQ3-007Lcq; Sun, 03 Jan 2010 11:30:07 +0100 Received: from localhost ([127.0.0.1]) by bogon.housecafe.de with esmtp (Exim 4.69) (envelope-from ) id 1NRNin-0000MF-Ha for xfs@oss.sgi.com; Sun, 03 Jan 2010 11:30:05 +0100 Date: Sun, 3 Jan 2010 02:30:05 -0800 (PST) From: Christian Kujau To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] remove bashisms from xfstests Subject: [PATCH] remove bashisms from xfstests Message-ID: User-Agent: Alpine 2.01 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Provags-ID: V01U2FsdGVkX18EMQLMSUUGbtxHaDSof8C7KLvz+ZWqr4uRa1t 9+YWh3fVVlDWgDmFLrWCn7SUoMwAoMSMG312fhgZToHvYiAWi7 Cm/irNn6mqfNkYTZIBFnw== X-Barracuda-Connect: moutng.kundenserver.de[212.227.126.187] X-Barracuda-Start-Time: 1262514611 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=INFO_TLD X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18832 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 INFO_TLD URI: Contains an URL in the INFO top-level domain X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean While trying to run xfstests, I encountered several errors due to the fact that my /bin/sh is not linked to /bin/bash but to dash(1), which can be made the default /bin/sh in Debian based systems. The patch below is rather large and is touching many files, but it's pretty straightfoward: 1) convert brace expansions (e.g. "rm -f symlink_{0,1,2,3}") 2) convert "let..." into something (hopefully) more portable 3) replace 'a == b' with 'a = b' in bourne shell scripts With these changes applied, xfstests is actually running on this box (tested on Ubuntu/9.10). I don't have an IRIX system to test on though. There are still a few things left to fix, as I'm still get a few errors while running the tests, but without these changes the testsuit pretty much would not run at all. Thoughts? Christian. 71 files changed, 197 insertions(+), 175 deletions(-) diff -Nrup xfstests.orig/005 xfstests/005 --- xfstests.orig/005 2010-01-03 00:42:16.471617592 -0800 +++ xfstests/005 2010-01-03 00:43:56.321617592 -0800 @@ -45,7 +45,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 1 _cleanup() { cd $testdir - rm -f symlink_{0,1,2,3}{0,1,2,3,4,5,6,7,8,9} symlink_self empty_file + rm -f symlink_* empty_file cd / _cleanup_testdir } @@ -70,7 +70,7 @@ _touch() _supported_fs generic # IRIX UDF does not support symlinks -if [ $FSTYP == 'udf' ]; then +if [ $FSTYP = 'udf' ]; then _supported_os Linux else _supported_os Linux IRIX @@ -82,17 +82,24 @@ cd $testdir o=empty_file touch $o -for f in symlink_{0,1,2,3}{0,1,2,3,4,5,6,7,8,9} +f=1 +while [ $f -le 40 ] do - ln -s $o $f + ln -s $o symlink_$f o=$f + o=symlink_$f + f=$((f + 1)) done ln -s symlink_self symlink_self echo "*** touch deep symlinks" echo "" -_touch symlink_{0,1,2,3}{0,1,2,3,4,5,6,7,8,9} +i=1 +while [ $i -le 40 ]; do + _touch symlink_"$i" + i=$((i + 1)) +done echo "" echo "*** touch recusive symlinks" echo "" diff -Nrup xfstests.orig/007 xfstests/007 --- xfstests.orig/007 2010-01-03 00:42:16.481617592 -0800 +++ xfstests/007 2010-01-03 00:43:56.321617592 -0800 @@ -64,7 +64,7 @@ num_filenames=100 i=1 while [ $i -le $num_filenames ]; do echo "nametest.$i" >>$sourcefile - let i=$i+1 + i=$((i + 1)) done mkdir $testdir/$seq diff -Nrup xfstests.orig/010 xfstests/010 --- xfstests.orig/010 2010-01-03 00:42:16.501617592 -0800 +++ xfstests/010 2010-01-03 00:43:56.321617592 -0800 @@ -36,7 +36,7 @@ _cleanup() { cd / rm -f $tmp.* - rm -f $testdir/DBtest*.{pag,dir} + rm -f $testdir/DBtest*.pag $testdir/DBtest*.dir _cleanup_testdir } diff -Nrup xfstests.orig/016 xfstests/016 --- xfstests.orig/016 2010-01-03 00:42:16.521617592 -0800 +++ xfstests/016 2010-01-03 00:43:56.321617592 -0800 @@ -102,7 +102,7 @@ _log_traffic() do touch $out rm $out - let "count = count - 1" + count=$((count - 1)) done echo " *** unmount" diff -Nrup xfstests.orig/020 xfstests/020 --- xfstests.orig/020 2010-01-03 00:42:16.541617592 -0800 +++ xfstests/020 2010-01-03 00:43:56.321617592 -0800 @@ -128,7 +128,7 @@ do exit 1 fi - let "v = v + 1" + v=$((v + 1)) done echo "*** check" @@ -151,7 +151,7 @@ do exit 1 fi - let "v = v + 1" + v=$((v + 1)) done _attr_list $testfile diff -Nrup xfstests.orig/028 xfstests/028 --- xfstests.orig/028 2010-01-03 00:42:16.581617592 -0800 +++ xfstests/028 2010-01-03 00:43:56.321617592 -0800 @@ -58,7 +58,7 @@ while [ $i -lt 5 ]; do fi rm $dump_file sleep 2 - let i=$i+1 + i=$((i + 1)) done echo "middate = $middate" >>$seq.full --- xfstests.orig/031 2010-01-03 00:42:16.591617592 -0800 +++ xfstests/031 2010-01-03 02:19:04.505494591 -0800 @@ -69,6 +69,7 @@ _check_repair() _create_proto() { total=$1 + isize=256 count=0 # take inode size into account for non-shortform directories... @@ -85,7 +86,7 @@ EOF while [ $count -lt $total ] do - let count=$count+1 + count=$((count + 1)) cat >>$tmp.proto </dev/null diff -Nrup xfstests.orig/043 xfstests/043 --- xfstests.orig/043 2010-01-03 00:42:16.651617592 -0800 +++ xfstests/043 2010-01-03 00:43:56.321617592 -0800 @@ -49,7 +49,7 @@ _require_tape $TAPE_DEV _create_dumpdir_fill _erase_hard _do_dump_sub -rm -rf /var/{,lib/}xfsdump/inventory # delete it - let cleanup fix it +rm -rf /var/lib/xfsdump/inventory /var/xfsdump/inventory # delete it - let cleanup fix it _do_restore _diff_compare_sub _ls_compare_sub diff -Nrup xfstests.orig/044 xfstests/044 --- xfstests.orig/044 2010-01-03 00:42:16.661617592 -0800 +++ xfstests/044 2010-01-03 00:43:56.321617592 -0800 @@ -172,7 +172,7 @@ echo "*** write large dirty log" $here/src/loggen -u 2 -e 16000 -z 100 >$SCRATCH_LOGDEV _check_mount -echo -e -n "\n\r*** XFS QA 044 - done\n\r\n\r" >/dev/console +printf "\n\r*** XFS QA 044 - done\n\r\n\r" >/dev/console status=0 # if error diff -Nrup xfstests.orig/047 xfstests/047 --- xfstests.orig/047 2010-01-03 00:42:16.671617592 -0800 +++ xfstests/047 2010-01-03 00:43:56.321617592 -0800 @@ -58,7 +58,7 @@ while [ $i -lt 5 ]; do fi rm $dump_file sleep 2 - let i=$i+1 + i=$((i + 1)) done echo "middate = $middate" >>$seq.full diff -Nrup xfstests.orig/050 xfstests/050 --- xfstests.orig/050 2010-01-03 00:42:16.681617592 -0800 +++ xfstests/050 2010-01-03 00:43:56.321617592 -0800 @@ -181,7 +181,7 @@ EOF projid_file="$tmp.projid" echo "*** user" -if [ "$HOSTOS" == "IRIX" ] +if [ "$HOSTOS" = "IRIX" ] then _qmount_option "quota" else @@ -194,7 +194,7 @@ _qmount_option "gquota" _exercise echo "*** uqnoenforce" -if [ "$HOSTOS" == "IRIX" ] +if [ "$HOSTOS" = "IRIX" ] then _qmount_option "qnoenforce" else diff -Nrup xfstests.orig/051 xfstests/051 --- xfstests.orig/051 2010-01-03 00:42:16.691617592 -0800 +++ xfstests/051 2010-01-03 00:43:56.321617592 -0800 @@ -289,16 +289,13 @@ chacl -l acldir/file2 | _acl_filter_id echo "" echo "=== Recursive change ACL ===" rm -fr root -mkdir root -pushd root >/dev/null # create an arbitrary little tree for i in 1 2 3 4 5 6 7 8 9 0 do - mkdir -p a/$i - mkdir -p b/c$i/$i - touch a/$i/mumble + mkdir -p root/a/$i + mkdir -p root/b/c$i/$i + touch root/a/$i/mumble done -popd >/dev/null chown -R 12345.54321 root echo "Change #1..." $runas -u 12345 -g 54321 -- `which chacl` -r u::rwx,g::-w-,o::--x root diff -Nrup xfstests.orig/053 xfstests/053 --- xfstests.orig/053 2010-01-03 00:42:16.701617592 -0800 +++ xfstests/053 2010-01-03 00:43:56.321617592 -0800 @@ -68,7 +68,7 @@ for acl in $acls do _do "touch $test.$i" _do "chacl $acl $test.$i" - let i=$i+1 + i=$((i + 1)) done list_acls() @@ -77,7 +77,7 @@ list_acls() for acl in $acls do chacl -l $test.$i | _acl_filter_id | sed -e "s!$SCRATCH_MNT!\$SCRATCH_MNT!" - let i=$i+1 + i=$((i + 1)) done } diff -Nrup xfstests.orig/064 xfstests/064 --- xfstests.orig/064 2010-01-03 00:42:16.751617592 -0800 +++ xfstests/064 2010-01-03 00:43:56.321617592 -0800 @@ -72,7 +72,7 @@ while [ $i -le 9 ]; do date >>$seq.full find $SCRATCH_MNT -exec $here/src/lstat64 {} \; | sed 's/(00.*)//' >$tmp.dates.$i if [ $i -gt 0 ]; then - let level_1=$i-1 + level_1=$((i - 1)) diff -c $tmp.dates.$level_1 $tmp.dates.$i >>$seq.full else cat $tmp.dates.$i >>$seq.full @@ -80,7 +80,7 @@ while [ $i -le 9 ]; do dump_file=$tmp.df.level$i _do_dump_file -l $i - let i=$i+1 + i=$((i + 1)) done echo "Listing of what files we start with:" @@ -93,7 +93,7 @@ while [ $i -le 9 ]; do echo "restoring from df.level$i" dump_file=$tmp.df.level$i _do_restore_toc - let i=$i+1 + i=$((i + 1)) done echo "Do the cumulative restores" @@ -105,7 +105,7 @@ while [ $i -le 9 ]; do _do_restore_file_cum -l $i echo "ls -l restore_dir" ls -lR $restore_dir | _ls_size_filter | _check_quota_file - let i=$i+1 + i=$((i + 1)) done # success, all done diff -Nrup xfstests.orig/065 xfstests/065 --- xfstests.orig/065 2010-01-03 00:42:16.751617592 -0800 +++ xfstests/065 2010-01-03 00:43:56.321617592 -0800 @@ -160,7 +160,7 @@ while [ $i -le $num_dumps ]; do dump_file=$tmp.df.level$i _do_dump_file -l $i - let i=$i+1 + i=$((i + 1)) done echo "Look at what files are contained in the inc. dump" @@ -170,7 +170,7 @@ while [ $i -le $num_dumps ]; do echo "restoring from df.level$i" dump_file=$tmp.df.level$i _do_restore_toc - let i=$i+1 + i=$((i + 1)) done echo "Do the cumulative restores" @@ -182,7 +182,7 @@ while [ $i -le $num_dumps ]; do _do_restore_file_cum -l $i echo "list restore_dir" _list_dir $restore_dir | _check_quota_file | tee $tmp.restorals.$i - let i=$i+1 + i=$((i + 1)) done echo "" @@ -192,7 +192,7 @@ while [ $i -le $num_dumps ]; do echo "Comparing ls of FS with restored FS at level $i" diff -s $tmp.ls.$i $tmp.restorals.$i | sed "s#$tmp#TMP#g" echo "" - let i=$i+1 + i=$((i + 1)) done diff -Nrup xfstests.orig/067 xfstests/067 --- xfstests.orig/067 2010-01-03 00:42:16.761617592 -0800 +++ xfstests/067 2010-01-03 00:43:56.321617592 -0800 @@ -50,7 +50,7 @@ _require_scratch # set up fs for 1K inodes isize=0 _scratch_mkfs_xfs | _filter_mkfs >$seq.full 2>$tmp.mkfs -[ $? -eq 0 ] && source $tmp.mkfs +[ $? -eq 0 ] && . $tmp.mkfs if [ "$isize" -lt 1024 ]; then _scratch_mkfs_xfs -i size=1024 >>$here/$seq.full \ || _notrun "Cannot mkfs for this test using MKFS_OPTIONS specified" diff -Nrup xfstests.orig/068 xfstests/068 --- xfstests.orig/068 2010-01-03 00:42:16.771617592 -0800 +++ xfstests/068 2010-01-03 00:43:56.331617592 -0800 @@ -89,7 +89,7 @@ touch $tmp.running } & i=0 -let ITERATIONS=$ITERATIONS-1 +ITERATIONS=$((ITERATIONS - 1)) echo | tee -a $seq.full while [ $i -le $ITERATIONS ] @@ -108,7 +108,7 @@ do sleep 2 echo | tee -a $seq.full - let i=$i+1 + i=$((i + 1)) done # stop fsstress iterations diff -Nrup xfstests.orig/071 xfstests/071 --- xfstests.orig/071 2010-01-03 00:42:16.781617592 -0800 +++ xfstests/071 2010-01-03 00:43:56.331617592 -0800 @@ -145,7 +145,7 @@ do echo === Iterating, `expr $upperbound - $count` remains echo echo - let count=$count+1 + count=$((count + 1)) done # success, all done diff -Nrup xfstests.orig/074 xfstests/074 --- xfstests.orig/074 2010-01-03 00:42:16.801617592 -0800 +++ xfstests/074 2010-01-03 00:43:56.331617592 -0800 @@ -119,7 +119,7 @@ _supported_os IRIX Linux # These params can take a while on different CPUs/OSs # so we set them differently for different machines # -if [ $HOSTOS == "IRIX" ]; then +if [ $HOSTOS = "IRIX" ]; then if uname -R | grep -iq debug; then # e.g. getting around 37secs for 1,1,1 on IP30 debug numchildren=2 @@ -133,7 +133,7 @@ if [ $HOSTOS == "IRIX" ]; then numchildren=3 param_type="IRIX nondebug" fi -elif [ $HOSTOS == "Linux" ]; then +elif [ $HOSTOS = "Linux" ]; then if uname -a | grep -q SMP; then numloops=10 numfiles=5 diff -Nrup xfstests.orig/075 xfstests/075 --- xfstests.orig/075 2010-01-03 00:42:16.801617592 -0800 +++ xfstests/075 2010-01-03 00:43:56.331617592 -0800 @@ -79,7 +79,7 @@ _do_test() cd $out if ! $here/ltp/fsx $_param -P $here $seq.$_n >/dev/null then - echo " fsx ($_param) failed, $? - compare $seq.$_n.{good,bad,fsxlog}" + echo " fsx ($_param) failed, $? - compare $seq.$_n.good/bad/fsxlog" mv $out/$seq.$_n $here/$seq.$_n.full od -xAx $here/$seq.$_n.full > $here/$seq.$_n.bad od -xAx $here/$seq.$_n.fsxgood > $here/$seq.$_n.good @@ -159,5 +159,5 @@ _do_test 1 "-d -N $numops1 -S 0 -x" _do_test 2 "-d -N $numops2 -l $filelen -S 0" _do_test 3 "-d -N $numops2 -l $filelen -S 0 -x" -rm -f $seq.*.fsx{good,log} +rm -f $seq.*.fsxgood $seq.*.fsxlog exit 0 diff -Nrup xfstests.orig/084 xfstests/084 --- xfstests.orig/084 2010-01-03 00:42:16.841617592 -0800 +++ xfstests/084 2010-01-03 00:43:56.331617592 -0800 @@ -54,7 +54,7 @@ pgsize=`$here/src/feature -s` _supported_fs xfs _supported_os IRIX Linux -if [ $HOSTOS == "IRIX" ]; then +if [ $HOSTOS = "IRIX" ]; then if uname -R | grep -iq debug; then # taking up to 23 mins on my 512K octane on debug # not worth worrying about diff -Nrup xfstests.orig/085 xfstests/085 --- xfstests.orig/085 2010-01-03 00:42:16.851617592 -0800 +++ xfstests/085 2010-01-03 00:43:56.331617592 -0800 @@ -58,7 +58,11 @@ _scratch_mount >>$seq.full 2>&1 \ || _fail "mount failed: $MOUNT_OPTIONS" echo "touch files" -touch $SCRATCH_MNT/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9} +f=1 +while [ $f -le 100 ]; do + touch $SCRATCH_MNT/$f + f=$((f + 1)) +done echo "godown" src/godown -v -f $SCRATCH_MNT >> $seq.full diff -Nrup xfstests.orig/086 xfstests/086 --- xfstests.orig/086 2010-01-03 00:42:16.851617592 -0800 +++ xfstests/086 2010-01-03 00:43:56.331617592 -0800 @@ -102,15 +102,22 @@ for s in sync nosync ; do if [ $s = "sync" ]; then # generate some log traffic - but not too much # add some syncs to get the log flushed to disk - for file in $SCRATCH_MNT/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}; do - touch $file + file=1 + while [ $file -le 100 ]; do + touch $SCRATCH_MNT/$file + file=$((file + 1)) sync done else # generate some log traffic - but not too much - life gets a little # more complicated if the log wraps around. This traffic is # pretty much arbitary, but could probably be made better than this. - touch $SCRATCH_MNT/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9} + file=1 + while [ $file -le 100 ]; do + touch $SCRATCH_MNT/$file + file=$((file + 1)) + sync + done fi # check before on what FS should look like diff -Nrup xfstests.orig/089 xfstests/089 --- xfstests.orig/089 2010-01-03 00:42:16.871617592 -0800 +++ xfstests/089 2010-01-03 00:43:56.331617592 -0800 @@ -44,7 +44,7 @@ addentries() while [ $count -gt 0 ]; do touch `printf $pattern $count` - let count=$count-1 + count=$((count - 1)) done } diff -Nrup xfstests.orig/091 xfstests/091 --- xfstests.orig/091 2010-01-03 00:42:16.881617592 -0800 +++ xfstests/091 2010-01-03 00:43:56.331617592 -0800 @@ -40,7 +40,7 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 _supported_fs xfs _supported_os Linux IRIX -[ $HOSTOS == IRIX ] && _notrun "Not working on IRIX yet" +[ $HOSTOS = IRIX ] && _notrun "Not working on IRIX yet" rm -f $seq.full @@ -66,7 +66,7 @@ kernel=`uname -r | sed -e 's/\(2\..\).* if [ "$HOSTOS" = "Linux" -a "$kernel" = "2.6" ]; then xfs_info $TEST_DIR | _filter_mkfs 2> $tmp.info > /dev/null if [ $? -eq 0 ]; then - source $tmp.info + . $tmp.info bsize=$sectsz fi fi diff -Nrup xfstests.orig/097 xfstests/097 --- xfstests.orig/097 2010-01-03 00:42:16.911617592 -0800 +++ xfstests/097 2010-01-03 00:43:56.331617592 -0800 @@ -49,7 +49,7 @@ _umount_and_mount() { cd / umount $TARGET_DIR - if [ "$FSTYP" == "xfs" ]; then + if [ "$FSTYP" = "xfs" ]; then _test_mount else _scratch_mount @@ -65,7 +65,7 @@ _umount_and_mount() # link correct .out file # This is done bacause udf and xfs print attrs in different orders. rm -rf $seq.out -if [ "$FSTYP" == "xfs" ]; then +if [ "$FSTYP" = "xfs" ]; then ln -s $seq.out.xfs $seq.out else ln -s $seq.out.udf $seq.out @@ -79,7 +79,7 @@ _require_scratch _setup_testdir TARGET_DIR=$SCRATCH_MNT -[ "$FSTYP" == "xfs" ] && TARGET_DIR=$TEST_DIR +[ "$FSTYP" = "xfs" ] && TARGET_DIR=$TEST_DIR cd $TARGET_DIR echo "create file foo" diff -Nrup xfstests.orig/099 xfstests/099 --- xfstests.orig/099 2010-01-03 00:42:16.921617592 -0800 +++ xfstests/099 2010-01-03 00:43:56.331617592 -0800 @@ -40,7 +40,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 1 runas=$here/src/runas TARGET_DIR=$SCRATCH_MNT -[ "$FSTYP" == "xfs" ] && TARGET_DIR=$TEST_DIR +[ "$FSTYP" = "xfs" ] && TARGET_DIR=$TEST_DIR _cleanup() { @@ -331,7 +331,7 @@ _acl_list largeaclfile | _filter_aces_no #------------------------------------------------------- -if [ "$FSTYP" == "udf" ]; then +if [ "$FSTYP" = "udf" ]; then cd / umount $TARGET_DIR # Check the filesystem diff -Nrup xfstests.orig/100 xfstests/100 --- xfstests.orig/100 2010-01-03 00:42:16.921617592 -0800 +++ xfstests/100 2010-01-03 00:43:56.331617592 -0800 @@ -48,7 +48,7 @@ _supported_os IRIX Linux # Use _populate_fs() in common.rc to create a directory structure. TEMP_DIR=/tmp -[ "$FSTYP" == "xfs" ] && TEMP_DIR=$TEST_DIR +[ "$FSTYP" = "xfs" ] && TEMP_DIR=$TEST_DIR TAR_FILE=temp.tar NDIRS=3 NFILES=6 diff -Nrup xfstests.orig/105 xfstests/105 --- xfstests.orig/105 2010-01-03 00:42:16.941617592 -0800 +++ xfstests/105 2010-01-03 00:43:56.331617592 -0800 @@ -79,9 +79,9 @@ echo data > subdir/file ls -l subdir/file | awk '{ print $1, $3 }' # add an ACL with a user ACE which has no exec permission -if [ "$HOSTOS" == "Linux" ]; then +if [ "$HOSTOS" = "Linux" ]; then setfacl -m u:$acl1:r subdir -elif [ "$HOSTOS" == "IRIX" ]; then +elif [ "$HOSTOS" = "IRIX" ]; then chacl u:$acl:r--,g::---,o::--- subdir else echo "Unknown OS!" diff -Nrup xfstests.orig/108 xfstests/108 --- xfstests.orig/108 2010-01-03 00:42:16.961617592 -0800 +++ xfstests/108 2010-01-03 00:43:56.331617592 -0800 @@ -55,11 +55,11 @@ _require_prjquota test_files() { echo; echo "### create files, setting up ownership (type=$type)" - rm -f $SCRATCH_MNT/{buffer,direct,mmap} - $XFS_IO_PROG -fc "chproj $prid" $SCRATCH_MNT/{buffer,direct,mmap} - chown $uid $SCRATCH_MNT/{buffer,direct,mmap} - chgrp $gid $SCRATCH_MNT/{buffer,direct,mmap} - for file in $SCRATCH_MNT/{buffer,direct,mmap}; do + rm -f $SCRATCH_MNT/buffer $SCRATCH_MNT/direct $SCRATCH_MNT/mmap + $XFS_IO_PROG -fc "chproj $prid" $SCRATCH_MNT/buffer $SCRATCH_MNT/direct $SCRATCH_MNT/mmap + chown $uid $SCRATCH_MNT/buffer $SCRATCH_MNT/direct $SCRATCH_MNT/mmap + chgrp $gid $SCRATCH_MNT/buffer $SCRATCH_MNT/direct $SCRATCH_MNT/mmap + for file in $SCRATCH_MNT/buffer $SCRATCH_MNT/direct $SCRATCH_MNT/mmap; do $here/src/lstat64 $file | head -3 | filter_scratch $XFS_IO_PROG -c lsproj $file done @@ -78,7 +78,7 @@ test_accounting() wait echo "--- completed parallel IO ($type)" >>$seq.full - for file in $SCRATCH_MNT/{buffer,direct,mmap}; do + for file in $SCRATCH_MNT/buffer $SCRATCH_MNT/direct $SCRATCH_MNT/mmap; do $here/src/lstat64 $file | head -3 | filter_scratch done xfs_quota -c "quota -hnb -$type $id" $QARGS | filter_scratch diff -Nrup xfstests.orig/109 xfstests/109 --- xfstests.orig/109 2010-01-03 00:42:16.961617592 -0800 +++ xfstests/109 2010-01-03 00:43:56.331617592 -0800 @@ -52,7 +52,7 @@ populate() while [ $i -le $files -a "X$faststart" = "X" ]; do file=$SCRATCH_MNT/f$i xfs_io -f -d -c 'pwrite -b 64k 0 64k' $file >/dev/null - let i=$i+1 + i=$((i + 1)) done # remove every second file, freeing up lots of space @@ -60,7 +60,7 @@ populate() i=1 while [ $i -le $files -a "X$faststart" = "X" ]; do rm $SCRATCH_MNT/f$i - let i=$i+2 + i=$((i + 2)) done echo "flushing changes via umount/mount." @@ -81,10 +81,10 @@ allocate() xfs_io -f -c 'pwrite -b 64k 0 16m' $file \ >/dev/null 2>&1 rm $file - let j=$j+1 + j=$((j + 1)) done } & - let i=$i+1 + i=$((i + 1)) done wait diff -Nrup xfstests.orig/110 xfstests/110 --- xfstests.orig/110 2010-01-03 00:42:16.971617592 -0800 +++ xfstests/110 2010-01-03 00:43:56.331617592 -0800 @@ -66,8 +66,8 @@ E=10030600 while [ $I -le $E ] do echo > $SCRATCH_MNT/test/${STR1}${STR2}${STR3}${I} - let I=$I+1 - [ $[$I % 1000] -eq 0 ] && echo "Created $I/$E" + I=$((I + 1)) + [ `expr $I % 1000` -eq 0 ] && echo "Created $I/$E" done sync @@ -77,7 +77,7 @@ E=10030599 while [ $I -le $E ] do rm $SCRATCH_MNT/test/${STR1}${STR2}${STR3}${I} & - let I=$I+1 + I=$((I + 1)) done _check_scratch_fs diff -Nrup xfstests.orig/111 xfstests/111 --- xfstests.orig/111 2010-01-03 00:42:16.971617592 -0800 +++ xfstests/111 2010-01-03 00:43:56.331617592 -0800 @@ -55,7 +55,7 @@ I=0 while [ $I -lt 1000 ] do cp src/itrash.c $SCRATCH_MNT/${I} - let I=$I+1 + I=$((I + 1)) done umount $SCRATCH_DEV diff -Nrup xfstests.orig/112 xfstests/112 --- xfstests.orig/112 2010-01-03 00:42:16.981617592 -0800 +++ xfstests/112 2010-01-03 00:43:56.331617592 -0800 @@ -161,5 +161,5 @@ _do_test 1 "-A -d -N $numops1 -S 0 -x" _do_test 2 "-A -d -N $numops2 -l $filelen -S 0" _do_test 3 "-A -d -N $numops2 -l $filelen -S 0 -x" -rm -f $seq.*.fsx{good,log} +rm -f $seq.*.fsxgood $seq.*.fsxlog exit 0 diff -Nrup xfstests.orig/113 xfstests/113 --- xfstests.orig/113 2010-01-03 00:42:16.981617592 -0800 +++ xfstests/113 2010-01-03 00:43:56.331617592 -0800 @@ -55,7 +55,7 @@ _do_test() [ $__proc -gt 1 ] && _param="-t $__proc $_param" while [ $__proc -gt 1 ]; do _files="$_files $testdir/aiostress.$$.$_n.$__proc" - let __proc=$__proc-1 + __proc=$((__proc - 1)) done rm -f $_files diff -Nrup xfstests.orig/114 xfstests/114 --- xfstests.orig/114 2010-01-03 00:42:16.991617592 -0800 +++ xfstests/114 2010-01-03 00:43:56.331617592 -0800 @@ -149,8 +149,8 @@ _test_hardlink() paths="$d/l1 $d/l2 $d/l3 $d2/l4 $d2/l5 $d2/l6" i=0 for x in $paths; do - let i=$i+1 - let j=$i%2 + i=$((i + 1)) + j=`expr $i % 2` if [ $j -eq 0 ]; then echo "rm'ing $x" rm $x diff -Nrup xfstests.orig/117 xfstests/117 --- xfstests.orig/117 2010-01-03 00:42:17.001617592 -0800 +++ xfstests/117 2010-01-03 00:43:56.331617592 -0800 @@ -85,7 +85,7 @@ while [ $i -lt $ITERATIONS ]; do -s $seed \ -S -p 1 -n 1000 >>$seq.full 2>&1 - let i=$i+1 + i=$((i + 1)) done cd / diff -Nrup xfstests.orig/118 xfstests/118 --- xfstests.orig/118 2010-01-03 00:42:17.011617592 -0800 +++ xfstests/118 2010-01-03 00:43:56.331617592 -0800 @@ -57,17 +57,17 @@ _require_quota _chowning_file() { file=file.chown - let start=$1 - let limit=$2 - let delta=$3 + start=$1 + limit=$2 + delta=$3 cd $SCRATCH_MNT - let count=$start - while (( count < limit )); do + count=$start + while [ $count -lt $limit ]; do touch $file chown $count.$count $file - echo -n "." - let count=count+delta + printf "." + count=$((count + delta)) done echo "" } diff -Nrup xfstests.orig/119 xfstests/119 --- xfstests.orig/119 2010-01-03 00:42:17.011617592 -0800 +++ xfstests/119 2010-01-03 00:43:56.331617592 -0800 @@ -68,7 +68,7 @@ while [ $i -lt $max ]; do xfs_freeze -f $SCRATCH_MNT xfs_freeze -u $SCRATCH_MNT echo -n . - let i=$i+1 + i=$((i + 1)) done echo "done" diff -Nrup xfstests.orig/122 xfstests/122 --- xfstests.orig/122 2010-01-03 00:42:17.021617592 -0800 +++ xfstests/122 2010-01-03 00:43:56.331617592 -0800 @@ -46,7 +46,7 @@ _require_command /usr/bin/indent _type_size_filter() { # lazy SB adds __be32 agf_btreeblks - pv960372 - if [ "$($MKFS_XFS_PROG 2>&1 | grep -c lazy-count )" == "0" ]; then + if [ "$($MKFS_XFS_PROG 2>&1 | grep -c lazy-count )" = "0" ]; then perl -ne ' s/sizeof\( xfs_agf_t \) = 60/sizeof( xfs_agf_t ) = /; print;' diff -Nrup xfstests.orig/123 xfstests/123 --- xfstests.orig/123 2010-01-03 00:42:17.031617592 -0800 +++ xfstests/123 2010-01-03 00:43:56.331617592 -0800 @@ -58,7 +58,7 @@ s,^\s*$,,; _user_do() { - if [ "$HOSTOS" == "IRIX" ] + if [ "$HOSTOS" = "IRIX" ] then echo $1 | /bin/sh "su $qa_user 2>&1" | _filter_user_do else diff -Nrup xfstests.orig/124 xfstests/124 --- xfstests.orig/124 2010-01-03 00:42:17.031617592 -0800 +++ xfstests/124 2010-01-03 00:43:56.331617592 -0800 @@ -59,21 +59,21 @@ _scratch_mount for TESTFILE in $testdir/rw_pattern.tmp $SCRATCH_MNT/rw_pattern.tmp do count=1 - while (( count < 101 )) + while [ $count -lt 101 ] do src/preallo_rw_pattern_writer $TESTFILE src/preallo_rw_pattern_reader $TESTFILE - if (test $? -ne 0) then + if [ $? -ne 0 ]; then echo Read/Write Pattern Test FAILED. _cleanup exit 1 fi rm $TESTFILE - ((count=count+1)) + count=$((count + 1)) done #done for count of 100 done -if (test $? -eq 0 ) then +if [ $? -eq 0 ]; then status=0 fi diff -Nrup xfstests.orig/134 xfstests/134 --- xfstests.orig/134 2010-01-03 00:42:17.081617592 -0800 +++ xfstests/134 2010-01-03 00:43:56.331617592 -0800 @@ -101,7 +101,7 @@ cp $dir/2 $dir/3 xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -inN -p" $SCRATCH_DEV | tr -s '[:space:]' -if [ "$HOSTOS" == "IRIX" ] ; then +if [ "$HOSTOS" = "IRIX" ] ; then mkfile 1M $TEST_DIR/6 else xfs_mkfile 1M $TEST_DIR/6 diff -Nrup xfstests.orig/136 xfstests/136 --- xfstests.orig/136 2010-01-03 00:42:17.091617592 -0800 +++ xfstests/136 2010-01-03 00:43:56.331617592 -0800 @@ -75,7 +75,7 @@ add_eas() i=$start while [ $i -le $end ]; do attr -s name.$i -V value $file >/dev/null - let i=$i+1 + i=$((i + 1)) done } @@ -87,7 +87,7 @@ rm_eas() i=$start while [ $i -le $end ]; do attr -r name.$i $file >/dev/null - let i=$i+1 + i=$((i + 1)) done } @@ -185,7 +185,7 @@ _test_add_extents() while [ $j -le 30 ]; do do_extents $j _print_inode - let j=$j+2 + j=$((j + 2)) done #scale down @@ -193,7 +193,7 @@ _test_add_extents() while [ $j -ge 1 ]; do do_extents $j _print_inode - let j=$j-2 + j=$((j - 2)) done #build up @@ -201,7 +201,7 @@ _test_add_extents() while [ $j -le 30 ]; do do_extents $j _print_inode - let j=$j+2 + j=$((j + 2)) done } @@ -225,7 +225,7 @@ _test_extents_eas() _print_inode _print_inode_u > $tmp.u1 for j in `seq 1 $EAs_inc $EAs_max`; do - let k=$k+$EAs_inc-1 + k=$((k+ EAs_inc - 1)) add_eas $j $k done # should have same extents @@ -270,7 +270,7 @@ _test_eas_extents() EAs_inc=5 for j in `seq 1 $EAs_inc $EAs_max`; do - let k=$k+$EAs_inc-1 + k=$((k + EAs_inc - 1)) add_eas $j $k echo "--- EAs: $j ---" diff -Nrup xfstests.orig/137 xfstests/137 --- xfstests.orig/137 2010-01-03 00:42:17.101617592 -0800 +++ xfstests/137 2010-01-03 00:43:56.331617592 -0800 @@ -61,7 +61,7 @@ do echo error creating/writing file $file exit fi - let i=$i+1 + i=$((i + 1)) done # give the system a chance to write something out @@ -104,7 +104,7 @@ do rm -f $file fi fi - let i=$i+1 + i=$((i + 1)) done status=0 diff -Nrup xfstests.orig/138 xfstests/138 --- xfstests.orig/138 2010-01-03 00:42:17.101617592 -0800 +++ xfstests/138 2010-01-03 00:43:56.331617592 -0800 @@ -67,7 +67,7 @@ do echo error truncating file $file exit fi - let i=$i+1 + i=$((i + 1)) done # give the system a chance to write something out @@ -110,7 +110,7 @@ do rm -f $file fi fi - let i=$i+1 + i=$((i + 1)) done status=0 diff -Nrup xfstests.orig/139 xfstests/139 --- xfstests.orig/139 2010-01-03 00:42:17.101617592 -0800 +++ xfstests/139 2010-01-03 00:43:56.331617592 -0800 @@ -67,7 +67,7 @@ do echo error truncating file $file exit fi - let i=$i+1 + i=$((i + 1)) done # give the system a chance to write something out @@ -110,7 +110,7 @@ do rm -f $file fi fi - let i=$i+1 + i=$((i + 1)) done status=0 diff -Nrup xfstests.orig/140 xfstests/140 --- xfstests.orig/140 2010-01-03 00:42:17.111617592 -0800 +++ xfstests/140 2010-01-03 00:43:56.331617592 -0800 @@ -67,7 +67,7 @@ do echo error truncating file $file exit fi - let i=$i+1 + i=$((i + 1)) done # give the system a chance to write something out @@ -107,7 +107,7 @@ do rm -f $file fi fi - let i=$i+1 + i=$((i + 1)) done status=0 diff -Nrup xfstests.orig/149 xfstests/149 --- xfstests.orig/149 2010-01-03 00:42:17.151617592 -0800 +++ xfstests/149 2010-01-03 00:43:56.331617592 -0800 @@ -88,7 +88,7 @@ EOF while [ $count -lt $total ] do - let count=$count+1 + count=$((count + 1)) cat >>$tmp.proto </dev/null 2>&1 \ || _fail "mkfs failed!" diff -Nrup xfstests.orig/179 xfstests/179 --- xfstests.orig/179 2010-01-03 00:42:17.291617592 -0800 +++ xfstests/179 2010-01-03 00:43:56.341617592 -0800 @@ -77,7 +77,7 @@ _check_files() else echo file $file missing - fsync failed fi - let i=$i+1 + i=$((i + 1)) done } @@ -92,7 +92,7 @@ do echo error creating/writing file $file exit fi - let i=$i+1 + i=$((i + 1)) done # shutdown immediately after, then remount and test diff -Nrup xfstests.orig/180 xfstests/180 --- xfstests.orig/180 2010-01-03 00:42:17.301617592 -0800 +++ xfstests/180 2010-01-03 00:43:56.341617592 -0800 @@ -82,7 +82,7 @@ _check_files() else echo file $file missing - sync failed fi - let i=$i+1 + i=$((i + 1)) done } @@ -97,7 +97,7 @@ do echo error creating/writing file $file exit fi - let i=$i+1 + i=$((i + 1)) done # sync, then shutdown immediately after, then remount and test diff -Nrup xfstests.orig/182 xfstests/182 --- xfstests.orig/182 2010-01-03 00:42:17.311617592 -0800 +++ xfstests/182 2010-01-03 00:43:56.341617592 -0800 @@ -77,7 +77,7 @@ _check_files() else echo file $file missing - sync failed fi - let i=$i+1 + i=$((i + 1)) done } @@ -92,7 +92,7 @@ do echo error creating/writing file $file exit fi - let i=$i+1 + i=$((i + 1)) done # sync, then shutdown immediately after, then remount and test diff -Nrup xfstests.orig/190 xfstests/190 --- xfstests.orig/190 2010-01-03 00:42:17.341617592 -0800 +++ xfstests/190 2010-01-03 00:43:56.341617592 -0800 @@ -72,21 +72,21 @@ echo Verifying holes are in the correct xfs_bmap=`xfs_bmap $SCRATCH_MNT/$filename` xfs_bmap $SCRATCH_MNT/$filename >> $seq.full for i in $holes ; do - holeStart=$[`echo $i|$SED_PROG 's/:/ /g'|awk '{print $1}'`]; - holeEnd=$[`echo $i|$SED_PROG 's/:/ /g'|awk '{print $2}'`]; + holeStart=`echo $i | $SED_PROG 's/:/ /g' | awk '{print $1}'` + holeEnd=`echo $i | $SED_PROG 's/:/ /g' | awk '{print $2}'` #Round hole size down to a multiple of $fsblocksize - holeEnd=$[(($holeStart+$holeEnd)/$fsblocksize)*$fsblocksize] + holeEnd=`expr \( \( $holeStart + $holeEnd \) / $fsblocksize \) \* $fsblocksize` #Round hole start up to a multiple of $fsblocksize - if [ $[$holeStart % $fsblocksize] -gt 0 ] ; then - holeStart=$[($holeStart/$fsblocksize +1) * $fsblocksize] + if [ `expr $holeStart % $fsblocksize` -gt 0 ] ; then + holeStart=`expr \( $holeStart / $fsblocksize +1 \) \* $fsblocksize` fi #xfs_bmap prints holes in the following format # 1: [8..15]: hole - bmap="\[$[$holeStart/512]..$[($holeEnd/512) -1]\]"; + bmap="\[`expr $holeStart / 512`..`expr \( $holeEnd / 512 \) - 1`\]" echo $bmap >> $seq.full - if [ $holeEnd == $holeStart ] ; then + if [ $holeEnd = $holeStart ] ; then continue #there is no hole fi if ! echo $xfs_bmap|grep -q $bmap; then @@ -94,7 +94,7 @@ for i in $holes ; do status=1; fi done -if [ $status == 0 ] ; then +if [ $status = 0 ] ; then echo Test $seq Passed. fi diff -Nrup xfstests.orig/200 xfstests/200 --- xfstests.orig/200 2010-01-03 00:42:17.391617592 -0800 +++ xfstests/200 2010-01-03 00:43:56.341617592 -0800 @@ -84,7 +84,11 @@ echo "mounting read-write block device:" _scratch_mount 2>&1 | _filter_scratch echo "touch files" -touch $SCRATCH_MNT/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9} +i=1 +while [ $i -le 100 ]; do + touch $SCRATCH_MNT/$i + i=$((i + 1)) +done echo "going down:" src/godown -f $SCRATCH_MNT diff -Nrup xfstests.orig/203 xfstests/203 --- xfstests.orig/203 2010-01-03 00:42:17.401617592 -0800 +++ xfstests/203 2010-01-03 00:43:56.341617592 -0800 @@ -35,12 +35,12 @@ _write_holes() { file=$1 holes=$2 - let writes=$holes+1 + writes=$((holes + 1)) offset=0 for i in `seq 0 $writes`; do xfs_io -f $file -c "pwrite -q $offset 1" - let offset=$offset+0x100000 + offset=$((offset + 0x100000)) done } diff -Nrup xfstests.orig/205 xfstests/205 --- xfstests.orig/205 2010-01-03 00:42:17.411617592 -0800 +++ xfstests/205 2010-01-03 00:43:56.341617592 -0800 @@ -71,7 +71,7 @@ dd if=/dev/zero of=$SCRATCH_MNT/fred bs= echo "*** one file, a few bytes at a time" # now try a single file of that size -dd if=/dev/zero of=$SCRATCH_MNT/fred bs=15 count=$[26745/15*512] 2>&1 | _filter_dd +dd if=/dev/zero of=$SCRATCH_MNT/fred bs=15 count=`expr 26745 / 15 \* 512` 2>&1 | _filter_dd # success, all done echo "*** done" diff -Nrup xfstests.orig/common xfstests/common --- xfstests.orig/common 2010-01-03 00:42:18.711617592 -0800 +++ xfstests/common 2010-01-03 00:43:56.341617592 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved. # @@ -45,7 +44,7 @@ randomize=false rm -f $tmp.list $tmp.tmp $tmp.sed # Autodetect fs type based on what's on $TEST_DEV -if [ "$HOSTOS" == "Linux" ] +if [ "$HOSTOS" = "Linux" ] then export FSTYP=`blkid -s TYPE -o value $TEST_DEV` else diff -Nrup xfstests.orig/common.attr xfstests/common.attr --- xfstests.orig/common.attr 2010-01-03 00:42:18.711617592 -0800 +++ xfstests/common.attr 2010-01-03 00:43:56.341617592 -0800 @@ -77,11 +77,11 @@ _acl_list() # _create_n_aces() { - let n=$1-4 + n=$(($1 - 4)) acl='u::rwx,g::rwx,o::rwx,m::rwx' # 4 ace acl start while [ $n -ne 0 ]; do acl="$acl,u:$n:rwx" - let n=$n-1 + n=$((n - 1)) done echo $acl } diff -Nrup xfstests.orig/common.bonnie xfstests/common.bonnie --- xfstests.orig/common.bonnie 2010-01-03 00:42:18.721617592 -0800 +++ xfstests/common.bonnie 2010-01-03 01:11:24.505239592 -0800 @@ -17,7 +17,7 @@ # #check bonnie is installed -if [ "`whereis bonnie++`" == "bonnie++:"]; then +if [ "`whereis bonnie++`" = "bonnie++:"]; then echo $0 error bonnie not installed. exit fi diff -Nrup xfstests.orig/common.config xfstests/common.config --- xfstests.orig/common.config 2010-01-03 00:42:18.721617592 -0800 +++ xfstests/common.config 2010-01-03 00:43:56.341617592 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2000-2003,2006 Silicon Graphics, Inc. All Rights Reserved. # diff -Nrup xfstests.orig/common.dbench xfstests/common.dbench --- xfstests.orig/common.dbench 2010-01-03 00:42:18.731617592 -0800 +++ xfstests/common.dbench 2010-01-03 00:46:42.621617592 -0800 @@ -17,7 +17,7 @@ # #check dbench is installed -if [ "`whereis dbench`" == "dbench:"]; then +if [ "`whereis dbench`" = "dbench:"]; then echo $0 error dbench not installed. exit fi diff -Nrup xfstests.orig/common.dump xfstests/common.dump --- xfstests.orig/common.dump 2010-01-03 00:42:18.741617592 -0800 +++ xfstests/common.dump 2010-01-03 00:48:10.391617592 -0800 @@ -111,7 +111,7 @@ _check_onl() else sleep 1 fi - let i=$i+1 + i=$((i + 1)) done @@ -149,7 +149,7 @@ _wait_tape() else sleep 1 fi - let i=$i+1 + i=$((i + 1)) done } @@ -208,7 +208,7 @@ _require_tape() { dumptape=$1 - if [ -z "$dumptape" -o "@" == "$dumptape" ]; then + if [ -z "$dumptape" -o "@" = "$dumptape" ]; then echo "This test requires a dump tape - none was specified" echo "No dump tape specified" >$seq.notrun status=$NOTRUNSTS @@ -701,7 +701,7 @@ _create_hardlinks() _hardlink=$_fname$_suffix echo "creating hardlink $_hardlink to $_fname" ln $_fname $_hardlink - let _j=$_j+1 + _j=$((_j + 1)) done } @@ -717,7 +717,7 @@ _create_hardset() _i=1 while [ $_i -le $_numsets ]; do _create_hardlinks file$_i 5 - let _i=$_i+1 + _i=$((_i + 1)) done } @@ -993,7 +993,7 @@ _do_dump_multi_file() while [ $i -lt $multi ] do multi_args="$multi_args -f $dump_file.$i -M $media_label.$i" - let i=$i+1 + i=$((i + 1)) done echo "Dumping to files..." @@ -1113,7 +1113,7 @@ _do_restore_multi_file() while [ $i -lt $multi ] do multi_args="$multi_args -f $dump_file.$i" - let i=$i+1 + i=$((i + 1)) done echo "Restoring from file..." @@ -1384,7 +1384,7 @@ _check_quota_entries() # _check_quota_dumprestore() { - if [ "$HOSTOS" == "IRIX" ]; then + if [ "$HOSTOS" = "IRIX" ]; then _check_quota 'user quota information' \ 'group quota information' \ 'project quota information' | \ diff -Nrup xfstests.orig/common.filestreams xfstests/common.filestreams --- xfstests.orig/common.filestreams 2010-01-03 00:42:18.741617592 -0800 +++ xfstests/common.filestreams 2010-01-03 00:48:38.301617592 -0800 @@ -24,7 +24,7 @@ _check_filestreams_support() local irix_timeout_sysvar="xfs_mfstream_timeout" local linux_timeout_procvar="/proc/sys/fs/xfs/filestream_centisecs" local streams_avail="" - if [ "$HOSTOS" == "IRIX" ]; then + if [ "$HOSTOS" = "IRIX" ]; then # check for the filestreams timeout systune variable in irix streams_avail=`systune $irix_timeout_sysvar 2>&1 | perl -ne 'if (/'$irix_timeout_sysvar'\s+=\s+\d+/) {print "true"}'` @@ -33,7 +33,7 @@ _check_filestreams_support() [ -f $linux_timeout_procvar ] && streams_avail="true" fi - if [ "$streams_avail" == "true" ]; then + if [ "$streams_avail" = "true" ]; then return 0 else return 1 @@ -45,7 +45,7 @@ _set_stream_timeout_centisecs() local new_timeout_csecs=$1 local irix_timeout_sysvar="xfs_mfstream_timeout" local linux_timeout_procvar="/proc/sys/fs/xfs/filestream_centisecs" - if [ "$HOSTOS" == "IRIX" ]; then + if [ "$HOSTOS" = "IRIX" ]; then echo y | systune -r $irix_timeout_sysvar $new_timeout_csecs >/dev/null else echo $new_timeout_csecs > $linux_timeout_procvar @@ -70,7 +70,7 @@ _do_stream() cd $directory_name local dd_cmd="" - if [ "$HOSTOS" == "IRIX" ]; then + if [ "$HOSTOS" = "IRIX" ]; then # for irix use lmdd dd_cmd="lmdd" [ "$dio" = "1" ] && dd_cmd="$dd_cmd odirect=1" @@ -114,7 +114,7 @@ _check_for_dupes() local this_num_two for this_num_one in $num_str_one; do for this_num_two in $num_str_two; do - if [ "$this_num_one" == "$this_num_two" ]; then + if [ "$this_num_one" = "$this_num_two" ]; then echo "duplicate AG $this_num_one found" \ >> $here/$seq.full return 1 @@ -140,7 +140,7 @@ _test_streams() { _scratch_mkfs_xfs -dsize=$size,agcount=$agcount >/dev/null 2>&1 \ || _fail "mkfs failed" - if [ "$use_iflag" = "0" -o "$HOSTOS" == "IRIX" ]; then + if [ "$use_iflag" = "0" -o "$HOSTOS" = "IRIX" ]; then # mount using filestreams mount option _scratch_mount "-o filestreams" \ || _fail "filestreams mount failed" diff -Nrup xfstests.orig/common.log xfstests/common.log --- xfstests.orig/common.log 2010-01-03 00:42:18.751617592 -0800 +++ xfstests/common.log 2010-01-03 01:19:20.602131591 -0800 @@ -314,7 +314,11 @@ _create_log() # generate some log traffic - but not too much - life gets a little # more complicated if the log wraps around. This traffic is # pretty much arbitary, but could probably be made better than this. - touch $SCRATCH_MNT/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9} + i=1 + while [ $i -le 100 ]; do + touch $SCRATCH_MNT/$i + i=$((i + 1)) + done # unmount the FS _full "umount" @@ -342,9 +346,11 @@ _create_log_sync() # generate some log traffic - but not too much # add some syncs to get the log flushed to disk - for file in $SCRATCH_MNT/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}; do - touch $file + i=1 + while [ $i -le 100 ]; do + touch $SCRATCH_MNT/$i sync + i=$((i + 1)) done # unmount the FS diff -Nrup xfstests.orig/common.punch xfstests/common.punch --- xfstests.orig/common.punch 2010-01-03 00:42:18.761617592 -0800 +++ xfstests/common.punch 2010-01-03 00:49:22.511617592 -0800 @@ -40,7 +40,7 @@ _spawn_test_file() { -c "extsize" \ $test_file - if [ "$reserve_space" == "noresv" ]; then + if [ "$reserve_space" = "noresv" ]; then echo "+ not using resvsp at file creation" $XFS_IO_PROG -f \ -c "truncate $file_size" \ @@ -62,13 +62,13 @@ _do_punch() { local punch_type=$4 # u for unresvsp, d for dm_punch local test_file=$5 - if [ "$punch_type" == "u" ]; then + if [ "$punch_type" = "u" ]; then echo "+ hole punch using unresvsp" $XFS_IO_PROG -f \ -c "unresvsp $punch_offset $punch_size" \ $test_file fi - if [ "$punch_type" == "d" ]; then + if [ "$punch_type" = "d" ]; then echo "+ hole punch using dmapi punch_hole" ${DMAPI_QASUITE1_DIR}cmd/punch_hole -o $punch_offset -l $punch_size \ ${SCRATCH_MNT}/$test_file @@ -123,7 +123,7 @@ _test_punch() { local this_punch_type="" local dmap_punch_used=0 for this_punch_type in "${punch_types[@]}"; do - [ "$this_punch_type" == "d" ] && dmap_punch_used=1 + [ "$this_punch_type" = "d" ] && dmap_punch_used=1 done if [ $dmap_punch_used -ne 0 ]; then # a punch type of dm_punch has been specified, do a dmapi mount @@ -161,13 +161,13 @@ _test_punch() { local punch_index=0 local write_index=0 for operation in "${punch_write_order[@]}"; do - if [ "$operation" == "p" ]; then + if [ "$operation" = "p" ]; then _do_punch $blksize ${punch_points_blks[$punch_index]} \ ${punch_sizes_blks[$punch_index]} ${punch_types[$punch_index]} \ $filename punch_index=`expr $punch_index + 1` fi - if [ "$operation" == "w" ]; then + if [ "$operation" = "w" ]; then _do_write $blksize ${write_points_blks[$write_index]} \ ${write_sizes_blks[$write_index]} $filename write_index=`expr $write_index + 1` diff -Nrup xfstests.orig/common.quota xfstests/common.quota --- xfstests.orig/common.quota 2010-01-03 00:42:18.771617592 -0800 +++ xfstests/common.quota 2010-01-03 00:49:41.321617592 -0800 @@ -104,7 +104,7 @@ _choose_gid() _choose_prid() { - if [ "X$projid_file" == "X" ]; then + if [ "X$projid_file" = "X" ]; then projid_file=/etc/projid fi if [ ! -f $projid_file ]; then diff -Nrup xfstests.orig/common.rc xfstests/common.rc --- xfstests.orig/common.rc 2010-01-03 00:42:18.771617592 -0800 +++ xfstests/common.rc 2010-01-03 00:50:11.001617592 -0800 @@ -1,4 +1,3 @@ -##/bin/sh #----------------------------------------------------------------------- # Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved. # This program is free software; you can redistribute it and/or modify @@ -22,7 +21,7 @@ dd() { - if [ "$HOSTOS" == "Linux" ] + if [ "$HOSTOS" = "Linux" ] then command dd --help | grep noxfer > /dev/null 2>&1 @@ -170,7 +169,7 @@ _mount_ops_filter() params="$*" #get mount point to handle dmapi mtpt option correctly - let last_index=$#-1 + last_index=$(($# - 1)) [ $last_index -gt 0 ] && shift $last_index FS_ESCAPED=$1 @@ -701,7 +700,7 @@ _require_user() { qa_user=fsgqa cat /etc/passwd | grep -q $qa_user - [ "$?" == "0" ] || _notrun "$qa_user user not defined." + [ "$?" = "0" ] || _notrun "$qa_user user not defined." } # check that xfs_io, glibc, kernel, and filesystem all (!) support @@ -964,7 +963,7 @@ _udf_test_known_error_filter() _check_udf_filesystem() { - [ "$DISABLE_UDF_TEST" == "1" ] && return + [ "$DISABLE_UDF_TEST" = "1" ] && return if [ $# -ne 1 -a $# -ne 2 ] then @@ -1193,9 +1192,9 @@ _link_out_file() exit fi rm -f $1 - if [ "`uname`" == "IRIX64" ] || [ "`uname`" == "IRIX" ]; then + if [ "`uname`" = "IRIX64" ] || [ "`uname`" = "IRIX" ]; then ln -s $1.irix $1 - elif [ "`uname`" == "Linux" ]; then + elif [ "`uname`" = "Linux" ]; then ln -s $1.linux $1 else echo Error test $seq does not run on the operating system: `uname` @@ -1219,7 +1218,7 @@ _nfiles() if [ $size -gt 0 ]; then dd if=/dev/zero of=$file bs=1024 count=$size fi - let f=$f+1 + f=$((f + 1)) done } @@ -1233,7 +1232,7 @@ _descend() _nfiles $files # files for this dir [ $depth -eq 0 ] && return - let deep=$depth-1 # go 1 down + deep=$((depth - 1)) # go 1 down [ $verbose = true ] && echo "descending, depth from leaves = $deep" @@ -1241,7 +1240,7 @@ _descend() while [ $d -lt $dirs ] do _descend d$d $deep & - let d=$d+1 + d=$((d + 1)) wait done } -- BOFH excuse #134: because of network lag due to too many people playing deathmatch From andi@firstfloor.org Sun Jan 3 10:55:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o03GtoKX242308 for ; Sun, 3 Jan 2010 10:55:50 -0600 X-ASG-Debug-ID: 1262537799-4e6900700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5A3441DACD2E for ; Sun, 3 Jan 2010 08:56:39 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id NclffNPM5TUbtqig for ; Sun, 03 Jan 2010 08:56:39 -0800 (PST) Received: from basil.firstfloor.org (p5B3CAA53.dip0.t-ipconnect.de [91.60.170.83]) by one.firstfloor.org (Postfix) with ESMTP id E68171A98018; Sun, 3 Jan 2010 17:56:34 +0100 (CET) Received: by basil.firstfloor.org (Postfix, from userid 1000) id C0DB4B17C2; Sun, 3 Jan 2010 17:56:33 +0100 (CET) To: Christian Kujau Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] remove bashisms from xfstests Subject: Re: [PATCH] remove bashisms from xfstests From: Andi Kleen References: Date: Sun, 03 Jan 2010 17:56:33 +0100 In-Reply-To: (Christian Kujau's message of "Sun, 3 Jan 2010 02:30:05 -0800 (PST)") Message-ID: <87vdfjceke.fsf@basil.nowhere.org> User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1262537800 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18859 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christian Kujau writes: > > Thoughts? The usual much easier and less riskier change is to just change the first line in each script to #!/bin/bash -Andi -- ak@linux.intel.com -- Speaking for myself only. From mw@dermichi.com Sun Jan 3 11:05:35 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o03H5Z3C243415 for ; Sun, 3 Jan 2010 11:05:35 -0600 X-ASG-Debug-ID: 1262538384-4e6900eb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from firestarter.dermichi.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6A99E1DACCC9 for ; Sun, 3 Jan 2010 09:06:24 -0800 (PST) Received: from firestarter.dermichi.com (firestarter.dermichi.com [78.41.115.230]) by cuda.sgi.com with ESMTP id Q75PBsB0F52cmuUk for ; Sun, 03 Jan 2010 09:06:24 -0800 (PST) Received: from [2001:15c0:6679:1:218:8bff:feb1:c9e8] by firestarter.dermichi.com with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1NRTuG-0002JG-W9; Sun, 03 Jan 2010 18:06:21 +0100 Message-ID: <4B40CE8A.3070105@dermichi.com> Date: Sun, 03 Jan 2010 18:06:18 +0100 From: Michael Weissenbacher User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) MIME-Version: 1.0 To: Andi Kleen CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] remove bashisms from xfstests Subject: Re: [PATCH] remove bashisms from xfstests References: <87vdfjceke.fsf@basil.nowhere.org> In-Reply-To: <87vdfjceke.fsf@basil.nowhere.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: firestarter.dermichi.com[78.41.115.230] X-Barracuda-Start-Time: 1262538385 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18859 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean >> Thoughts? > > The usual much easier and less riskier change is to just change the > first line in each script to #!/bin/bash > Seconded, since there shouldn't be any linux distro around without /bin/bash installed. (just IMHO of course) From lists@nerdbynature.de Mon Jan 4 01:26:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o047QTQd079672 for ; Mon, 4 Jan 2010 01:26:30 -0600 X-ASG-Debug-ID: 1262590037-5b0c02210000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from moutng.kundenserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 311B31505920 for ; Sun, 3 Jan 2010 23:27:18 -0800 (PST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.187]) by cuda.sgi.com with ESMTP id XVtbCwMI76DSLyv0 for ; Sun, 03 Jan 2010 23:27:18 -0800 (PST) Received: from bogon.housecafe.de (ppp-93-104-176-88.dynamic.mnet-online.de [93.104.176.88]) by mrelayeu.kundenserver.de (node=mreu0) with ESMTP (Nemesis) id 0MPKo0-1NW53a1oYK-004sAL; Mon, 04 Jan 2010 08:27:14 +0100 Received: from localhost ([127.0.0.1]) by bogon.housecafe.de with esmtp (Exim 4.69) (envelope-from ) id 1NRhLN-00024Z-Oq; Mon, 04 Jan 2010 08:27:13 +0100 Date: Sun, 3 Jan 2010 23:27:13 -0800 (PST) From: Christian Kujau To: Andi Kleen cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] remove bashisms from xfstests Subject: Re: [PATCH] remove bashisms from xfstests In-Reply-To: <87vdfjceke.fsf@basil.nowhere.org> Message-ID: References: <87vdfjceke.fsf@basil.nowhere.org> User-Agent: Alpine 2.01 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Provags-ID: V01U2FsdGVkX1+OzIeIXnQOb/Q2BVUXrRI1fGXjamh9hSuOHZX EWP3Usl+HziD9pzyN35YU+A8a89F4ZtHwc2YXNzHiNB8nEpw2z toADnVUG94Ju/BDbHwTGQ== X-Barracuda-Connect: moutng.kundenserver.de[212.227.126.187] X-Barracuda-Start-Time: 1262590039 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18911 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, 3 Jan 2010 at 17:56, Andi Kleen wrote: > The usual much easier and less riskier change is to just change the > first line in each script to #!/bin/bash Hm, but it's less fun that way :-) OK, here's one with only changing /bin/sh to /bin/bash, for all scripts carrying bashisms according to checkbashisms(1). With this patch applied, I can now run xfstests w/o changing my /bin/sh to something else. Thanks, Christian. Signed-off-by: Christian Kujau diff -Nrup xfstests.orig/005 xfstests/005 --- xfstests.orig/005 2010-01-03 23:03:27.977265001 -0800 +++ xfstests/005 2010-01-03 22:19:34.825575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 005 # # Test symlinks & ELOOP diff -Nrup xfstests.orig/007 xfstests/007 --- xfstests.orig/007 2010-01-03 23:03:27.987270001 -0800 +++ xfstests/007 2010-01-03 22:21:42.535575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 007 # # drive the src/nametest program diff -Nrup xfstests.orig/010 xfstests/010 --- xfstests.orig/010 2010-01-03 23:03:28.017285001 -0800 +++ xfstests/010 2010-01-03 22:28:35.308153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 010 # # dbtest diff -Nrup xfstests.orig/016 xfstests/016 --- xfstests.orig/016 2010-01-03 23:03:28.067310001 -0800 +++ xfstests/016 2010-01-03 22:21:32.755575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 016 # # test end of log overwrite bug #796141 diff -Nrup xfstests.orig/020 xfstests/020 --- xfstests.orig/020 2010-01-03 23:03:28.097325001 -0800 +++ xfstests/020 2010-01-03 22:51:21.338153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 020 # # extended attributes diff -Nrup xfstests.orig/028 xfstests/028 --- xfstests.orig/028 2010-01-03 23:03:28.157355001 -0800 +++ xfstests/028 2010-01-03 22:51:29.958153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 028 # # To test out xfsinvutil diff -Nrup xfstests.orig/031 xfstests/031 --- xfstests.orig/031 2010-01-03 23:03:28.187370001 -0800 +++ xfstests/031 2010-01-03 22:51:43.908153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 031 # # exercise xfs_repair - ensure repeated use doesn't corrupt diff -Nrup xfstests.orig/043 xfstests/043 --- xfstests.orig/043 2010-01-03 23:03:28.277415001 -0800 +++ xfstests/043 2010-01-03 22:23:42.965575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 043 # # Test out xfsdump/restore but rmv inventory prior to restore. diff -Nrup xfstests.orig/044 xfstests/044 --- xfstests.orig/044 2010-01-03 23:03:28.287420001 -0800 +++ xfstests/044 2010-01-03 22:51:53.128153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 044 # # external log uuid/format tests (TODO - version 2 log format) diff -Nrup xfstests.orig/047 xfstests/047 --- xfstests.orig/047 2010-01-03 23:03:28.317435001 -0800 +++ xfstests/047 2010-01-03 22:52:06.758153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 047 # # invutil with interactive responses diff -Nrup xfstests.orig/050 xfstests/050 --- xfstests.orig/050 2010-01-03 23:03:28.337445001 -0800 +++ xfstests/050 2010-01-03 22:52:13.168153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 050 # # Exercises basic XFS quota functionality diff -Nrup xfstests.orig/051 xfstests/051 --- xfstests.orig/051 2010-01-03 23:03:28.347450001 -0800 +++ xfstests/051 2010-01-03 22:21:07.435575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 051 # # Test out ACLs. diff -Nrup xfstests.orig/053 xfstests/053 --- xfstests.orig/053 2010-01-03 23:03:28.367460001 -0800 +++ xfstests/053 2010-01-03 22:19:28.225575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 053 # # xfs_repair breaks acls diff -Nrup xfstests.orig/064 xfstests/064 --- xfstests.orig/064 2010-01-03 23:03:28.457505001 -0800 +++ xfstests/064 2010-01-03 22:18:56.425575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 064 # # test multilevel dump and restores with hardlinks diff -Nrup xfstests.orig/065 xfstests/065 --- xfstests.orig/065 2010-01-03 23:03:28.457505001 -0800 +++ xfstests/065 2010-01-03 22:20:08.665575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 065 # # Testing incremental dumps and cumulative restores with diff -Nrup xfstests.orig/067 xfstests/067 --- xfstests.orig/067 2010-01-03 23:03:28.477515001 -0800 +++ xfstests/067 2010-01-03 22:27:51.538325001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 067 # # Test out acl/dacls which fit in shortform in the inode diff -Nrup xfstests.orig/068 xfstests/068 --- xfstests.orig/068 2010-01-03 23:03:28.487520001 -0800 +++ xfstests/068 2010-01-03 22:52:31.798153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 068 # # Test case to reproduce xfs_freeze hang under filsystem load. diff -Nrup xfstests.orig/071 xfstests/071 --- xfstests.orig/071 2010-01-03 23:03:28.507530001 -0800 +++ xfstests/071 2010-01-03 22:52:39.198153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 071 # # Exercise IO at large file offsets. diff -Nrup xfstests.orig/074 xfstests/074 --- xfstests.orig/074 2010-01-03 23:03:28.537545001 -0800 +++ xfstests/074 2010-01-03 22:52:48.748153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 074 # # fstest diff -Nrup xfstests.orig/075 xfstests/075 --- xfstests.orig/075 2010-01-03 23:03:28.547550001 -0800 +++ xfstests/075 2010-01-03 22:19:23.145575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 075 # # fsx (non-AIO variant) diff -Nrup xfstests.orig/076 xfstests/076 --- xfstests.orig/076 2010-01-03 23:03:28.547550001 -0800 +++ xfstests/076 2010-01-03 22:53:01.758153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 076 # # Test blockdev reads in parallel with filesystem reads/writes diff -Nrup xfstests.orig/084 xfstests/084 --- xfstests.orig/084 2010-01-03 23:03:28.617585001 -0800 +++ xfstests/084 2010-01-03 22:19:08.795575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 084 # # Exercises unwritten extent reads and writes, looking diff -Nrup xfstests.orig/085 xfstests/085 --- xfstests.orig/085 2010-01-03 23:03:28.627590001 -0800 +++ xfstests/085 2010-01-03 22:53:11.388153000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 085 # # To test log replay by shutdown of file system diff -Nrup xfstests.orig/086 xfstests/086 --- xfstests.orig/086 2010-01-03 23:03:28.627590001 -0800 +++ xfstests/086 2010-01-03 22:19:45.175575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 086 # # To test log replay with version 2 logs diff -Nrup xfstests.orig/089 xfstests/089 --- xfstests.orig/089 2010-01-03 23:03:28.657605001 -0800 +++ xfstests/089 2010-01-03 22:53:23.799048001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 089 # # Emulate the way Linux mount manipulates /etc/mtab to attempt to diff -Nrup xfstests.orig/091 xfstests/091 --- xfstests.orig/091 2010-01-03 23:03:28.677615001 -0800 +++ xfstests/091 2010-01-03 22:53:32.133213001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 091 # # fsx exercising direct IO -- sub-block sizes and concurrent buffered IO diff -Nrup xfstests.orig/097 xfstests/097 --- xfstests.orig/097 2010-01-03 23:03:28.717635001 -0800 +++ xfstests/097 2010-01-03 22:19:53.435575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 097. Modifed from UDFQA test 033. # # simple attr tests for EAs: diff -Nrup xfstests.orig/099 xfstests/099 --- xfstests.orig/099 2010-01-03 23:03:28.737645001 -0800 +++ xfstests/099 2010-01-03 22:23:16.295575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 099. Modified from UDFQA test 036. # # ACL test diff -Nrup xfstests.orig/100 xfstests/100 --- xfstests.orig/100 2010-01-03 23:03:28.747650001 -0800 +++ xfstests/100 2010-01-03 22:53:50.292288001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 100. Modified from UDF QA test 030. # # Test whether a tarred directory structure can be untarred onto diff -Nrup xfstests.orig/105 xfstests/105 --- xfstests.orig/105 2010-01-03 23:03:28.787670001 -0800 +++ xfstests/105 2010-01-03 22:53:58.046163001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 105 # # Test fix of bug: diff -Nrup xfstests.orig/108 xfstests/108 --- xfstests.orig/108 2010-01-03 23:03:28.807680001 -0800 +++ xfstests/108 2010-01-03 22:54:07.030653001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 108 # # Simple quota accounting test for direct/buffered/mmap IO. diff -Nrup xfstests.orig/109 xfstests/109 --- xfstests.orig/109 2010-01-03 23:03:28.817685001 -0800 +++ xfstests/109 2010-01-03 22:54:15.604938001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 109 # # ENOSPC deadlock case from Asano Masahiro. diff -Nrup xfstests.orig/110 xfstests/110 --- xfstests.orig/110 2010-01-03 23:03:28.827690001 -0800 +++ xfstests/110 2010-01-03 22:21:15.615575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 110 # # Incorrect dir2 freetab warning case from Masanori Tsuda. diff -Nrup xfstests.orig/111 xfstests/111 --- xfstests.orig/111 2010-01-03 23:03:28.837695001 -0800 +++ xfstests/111 2010-01-03 22:20:59.015575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 111 # # Infinite xfs_bulkstat bad-inode loop case from Roger Willcocks. diff -Nrup xfstests.orig/112 xfstests/112 --- xfstests.orig/112 2010-01-03 23:03:28.847700001 -0800 +++ xfstests/112 2010-01-03 22:21:38.345575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 112 # # fsx (AIO variant, based on 075) diff -Nrup xfstests.orig/113 xfstests/113 --- xfstests.orig/113 2010-01-03 23:03:28.847700001 -0800 +++ xfstests/113 2010-01-03 22:54:30.972618001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 113 # # aio-stress diff -Nrup xfstests.orig/114 xfstests/114 --- xfstests.orig/114 2010-01-03 23:03:28.857705001 -0800 +++ xfstests/114 2010-01-03 22:54:38.706483001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 114 # # Test some parent ptr stuff diff -Nrup xfstests.orig/117 xfstests/117 --- xfstests.orig/117 2010-01-03 23:03:28.887720001 -0800 +++ xfstests/117 2010-01-03 22:54:46.380318001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 117 # # Attempt to cause filesystem corruption with serial fsstresses doing diff -Nrup xfstests.orig/118 xfstests/118 --- xfstests.orig/118 2010-01-03 23:03:28.897725001 -0800 +++ xfstests/118 2010-01-03 22:54:54.974613001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 118 # # To test out pv#940675 crash in xfs_trans_brelse + quotas diff -Nrup xfstests.orig/119 xfstests/119 --- xfstests.orig/119 2010-01-03 23:03:28.907730001 -0800 +++ xfstests/119 2010-01-03 22:55:05.629938001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 119 # # Leaking reservation space in the GRH diff -Nrup xfstests.orig/122 xfstests/122 --- xfstests.orig/122 2010-01-03 23:03:28.927740001 -0800 +++ xfstests/122 2010-01-03 22:55:29.822028001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 122 # # pv#952498 diff -Nrup xfstests.orig/123 xfstests/123 --- xfstests.orig/123 2010-01-03 23:03:28.937745001 -0800 +++ xfstests/123 2010-01-03 22:55:42.188208001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 123 # # Make sure user cannot overwrite, append, delete or move a file created by diff -Nrup xfstests.orig/124 xfstests/124 --- xfstests.orig/124 2010-01-03 23:03:28.947750001 -0800 +++ xfstests/124 2010-01-03 22:55:47.270748001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 124 # # Test preallocated_rw_pattern_test modified from CXFSQA test preallocated_rw_pattern_test diff -Nrup xfstests.orig/134 xfstests/134 --- xfstests.orig/134 2010-01-03 23:03:29.027790001 -0800 +++ xfstests/134 2010-01-03 22:55:56.015118001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 134 # # test to reproduce PV951636: diff -Nrup xfstests.orig/136 xfstests/136 --- xfstests.orig/136 2010-01-03 23:03:29.037795001 -0800 +++ xfstests/136 2010-01-03 22:56:06.480348001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 136 # # Test the attr2 code diff -Nrup xfstests.orig/137 xfstests/137 --- xfstests.orig/137 2010-01-03 23:03:29.047800001 -0800 +++ xfstests/137 2010-01-03 22:20:52.045575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 137 # # Test for NULL files problem diff -Nrup xfstests.orig/138 xfstests/138 --- xfstests.orig/138 2010-01-03 23:03:29.057805001 -0800 +++ xfstests/138 2010-01-03 22:23:54.535575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 138 # # Test for NULL files problem diff -Nrup xfstests.orig/139 xfstests/139 --- xfstests.orig/139 2010-01-03 23:03:29.067810001 -0800 +++ xfstests/139 2010-01-03 22:23:48.345575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 139 # # Test for NULL files problem diff -Nrup xfstests.orig/140 xfstests/140 --- xfstests.orig/140 2010-01-03 23:03:29.077815001 -0800 +++ xfstests/140 2010-01-03 22:56:17.856033001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 140 # # Test for NULL files problem diff -Nrup xfstests.orig/149 xfstests/149 --- xfstests.orig/149 2010-01-03 23:03:29.147850001 -0800 +++ xfstests/149 2010-01-03 22:56:33.453828001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 149 # # Exercise xfs_prepair - ensure repeated use doesn't corrupt diff -Nrup xfstests.orig/158 xfstests/158 --- xfstests.orig/158 2010-01-03 23:03:29.217885001 -0800 +++ xfstests/158 2010-01-03 22:56:45.079638001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 158 # # get/set file attributes diff -Nrup xfstests.orig/165 xfstests/165 --- xfstests.orig/165 2010-01-03 23:03:29.277915001 -0800 +++ xfstests/165 2010-01-03 22:56:54.704448001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 165 # # Test out prealloc, direct writes and buffered read diff -Nrup xfstests.orig/178 xfstests/178 --- xfstests.orig/178 2010-01-03 23:03:29.387970001 -0800 +++ xfstests/178 2010-01-03 22:19:15.625575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 178 # # Reproduce PV#:967665 diff -Nrup xfstests.orig/179 xfstests/179 --- xfstests.orig/179 2010-01-03 23:03:29.397975001 -0800 +++ xfstests/179 2010-01-03 22:21:22.735575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 179 # # Test for NULL files problem diff -Nrup xfstests.orig/180 xfstests/180 --- xfstests.orig/180 2010-01-03 23:03:29.397975001 -0800 +++ xfstests/180 2010-01-03 22:57:06.130158001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 180 # # Test for NULL files problem diff -Nrup xfstests.orig/182 xfstests/182 --- xfstests.orig/182 2010-01-03 23:03:29.417985001 -0800 +++ xfstests/182 2010-01-03 22:20:02.055575000 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 182 # # Test for NULL files problem diff -Nrup xfstests.orig/190 xfstests/190 --- xfstests.orig/190 2010-01-03 23:03:29.478015001 -0800 +++ xfstests/190 2010-01-03 22:57:13.493838001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 190 # # This test uses xfs_io to unreserve space in a file at various different diff -Nrup xfstests.orig/200 xfstests/200 --- xfstests.orig/200 2010-01-03 23:03:29.568060001 -0800 +++ xfstests/200 2010-01-03 22:57:22.268223001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 200 # # Check out various mount/remount/unmount scenarious on a read-only blockdev. diff -Nrup xfstests.orig/203 xfstests/203 --- xfstests.orig/203 2010-01-03 23:03:29.588070001 -0800 +++ xfstests/203 2010-01-03 22:57:30.112143001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 203 # # Test out reallocation of the extent array in xfs_io. diff -Nrup xfstests.orig/205 xfstests/205 --- xfstests.orig/205 2010-01-03 23:03:29.608080001 -0800 +++ xfstests/205 2010-01-03 22:57:36.685428001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 205 # # Test out ENOSPC flushing on small filesystems. diff -Nrup xfstests.orig/213 xfstests/213 --- xfstests.orig/213 2010-01-03 23:03:29.678115001 -0800 +++ xfstests/213 2010-01-03 22:57:46.330248001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 213 # # Check some unwritten extent boundary conditions, fallocate version. diff -Nrup xfstests.orig/215 xfstests/215 --- xfstests.orig/215 2010-01-03 23:03:29.688120001 -0800 +++ xfstests/215 2010-01-03 22:57:52.063113001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 215 # # Test out c/mtime updates after mapped writes. diff -Nrup xfstests.orig/218 xfstests/218 --- xfstests.orig/218 2010-01-03 23:03:29.718135001 -0800 +++ xfstests/218 2010-01-03 22:58:00.757458001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 218 # # Basic defragmentation sanity tests diff -Nrup xfstests.orig/219 xfstests/219 --- xfstests.orig/219 2010-01-03 23:03:29.718135001 -0800 +++ xfstests/219 2010-01-03 22:58:09.541848001 -0800 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 219 # # Simple quota accounting test for direct/buffered/mmap IO. diff -Nrup xfstests.orig/check xfstests/check --- xfstests.orig/check 2010-01-03 23:03:27.917235001 -0800 +++ xfstests/check 2010-01-03 23:19:32.149110001 -0800 @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # Control script for QA # -- BOFH excuse #36: dynamic software linking table corrupted From lists@nerdbynature.de Mon Jan 4 01:55:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o047txhX082334 for ; Mon, 4 Jan 2010 01:55:59 -0600 X-ASG-Debug-ID: 1262591808-604500cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from moutng.kundenserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 565B11C27FB3 for ; Sun, 3 Jan 2010 23:56:48 -0800 (PST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.171]) by cuda.sgi.com with ESMTP id Q2AcpCjZFvNWVt6S for ; Sun, 03 Jan 2010 23:56:48 -0800 (PST) Received: from bogon.housecafe.de (ppp-93-104-176-88.dynamic.mnet-online.de [93.104.176.88]) by mrelayeu.kundenserver.de (node=mreu2) with ESMTP (Nemesis) id 0LbNoU-1OCL5D3vvG-00kwtz; Mon, 04 Jan 2010 08:56:47 +0100 Received: from localhost ([127.0.0.1]) by bogon.housecafe.de with esmtp (Exim 4.69) (envelope-from ) id 1NRhnx-0002kZ-Di; Mon, 04 Jan 2010 08:56:45 +0100 Date: Sun, 3 Jan 2010 23:56:45 -0800 (PST) From: Christian Kujau To: Andi Kleen cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] remove bashisms from xfstests Subject: Re: [PATCH] remove bashisms from xfstests In-Reply-To: Message-ID: References: <87vdfjceke.fsf@basil.nowhere.org> User-Agent: Alpine 2.01 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Provags-ID: V01U2FsdGVkX1+8T4K4tUrY9oZo3AHrVAOEOq7VJqcQSp2/Bdb cEpWv0sCMbVOrt03Jn0EDnEk8F/6zxv9FTzjkCkoR4WJqv9V/H 23lYXPmNRIAox9vgPhm8Q== X-Barracuda-Connect: moutng.kundenserver.de[212.227.126.171] X-Barracuda-Start-Time: 1262591809 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18914 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, 3 Jan 2010 at 23:27, Christian Kujau wrote: > OK, here's one with only changing /bin/sh to /bin/bash, for all scripts > carrying bashisms according to checkbashisms(1). With this patch applied, > I can now run xfstests w/o changing my /bin/sh to something else. Well, almost - I'm still getting errors, because some of the scripts are not executed but sourced. Although the ./check script is /bin/bash now, the sourced scripts seem to get executed via /bin/sh, at least that's what I've experienced. Here's an additional patch, changing only the common.* scripts, for they are being sourced. Right now xfstests is running test 013 and no errors so far. Christian. Signed-off-by: Christian Kujau diff -Nrup xfstests.orig/common xfstests/common --- xfstests.orig/common 2010-01-03 23:03:32.029290001 -0800 +++ xfstests/common 2010-01-03 23:36:04.722433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved. # @@ -45,7 +44,7 @@ randomize=false rm -f $tmp.list $tmp.tmp $tmp.sed # Autodetect fs type based on what's on $TEST_DEV -if [ "$HOSTOS" == "Linux" ] +if [ "$HOSTOS" = "Linux" ] then export FSTYP=`blkid -s TYPE -o value $TEST_DEV` else diff -Nrup xfstests.orig/common.attr xfstests/common.attr --- xfstests.orig/common.attr 2010-01-03 23:03:32.039295001 -0800 +++ xfstests/common.attr 2010-01-03 23:36:27.602433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh #----------------------------------------------------------------------- # Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved. # This program is free software; you can redistribute it and/or modify @@ -77,11 +76,11 @@ _acl_list() # _create_n_aces() { - let n=$1-4 + n=$(($1 - 4)) acl='u::rwx,g::rwx,o::rwx,m::rwx' # 4 ace acl start while [ $n -ne 0 ]; do acl="$acl,u:$n:rwx" - let n=$n-1 + n=$((n - 1)) done echo $acl } diff -Nrup xfstests.orig/common.bonnie xfstests/common.bonnie --- xfstests.orig/common.bonnie 2010-01-03 23:03:32.049300001 -0800 +++ xfstests/common.bonnie 2010-01-03 23:36:48.682433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2002-2004 Silicon Graphics, Inc. All Rights Reserved. # @@ -17,7 +16,7 @@ # #check bonnie is installed -if [ "`whereis bonnie++`" == "bonnie++:"]; then +if [ "`whereis bonnie++`" = "bonnie++:"]; then echo $0 error bonnie not installed. exit fi diff -Nrup xfstests.orig/common.config xfstests/common.config --- xfstests.orig/common.config 2010-01-03 23:03:32.059305001 -0800 +++ xfstests/common.config 2010-01-03 23:33:46.432433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2000-2003,2006 Silicon Graphics, Inc. All Rights Reserved. # diff -Nrup xfstests.orig/common.dbench xfstests/common.dbench --- xfstests.orig/common.dbench 2010-01-03 23:03:32.059305001 -0800 +++ xfstests/common.dbench 2010-01-03 23:37:14.602433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2002-2005 Silicon Graphics, Inc. All Rights Reserved. # @@ -17,7 +16,7 @@ # #check dbench is installed -if [ "`whereis dbench`" == "dbench:"]; then +if [ "`whereis dbench`" = "dbench:"]; then echo $0 error dbench not installed. exit fi diff -Nrup xfstests.orig/common.defrag xfstests/common.defrag --- xfstests.orig/common.defrag 2010-01-03 23:03:32.079315001 -0800 +++ xfstests/common.defrag 2010-01-03 23:33:49.662433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2009 Eric Sandeen # All Rights Reserved. diff -Nrup xfstests.orig/common.dmapi xfstests/common.dmapi --- xfstests.orig/common.dmapi 2010-01-03 23:03:32.079315001 -0800 +++ xfstests/common.dmapi 2010-01-03 23:33:51.212433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. # diff -Nrup xfstests.orig/common.dump xfstests/common.dump --- xfstests.orig/common.dump 2010-01-03 23:03:32.099325001 -0800 +++ xfstests/common.dump 2010-01-03 23:38:42.102433002 -0800 @@ -1,4 +1,3 @@ -#/bin/sh # # Copyright (c) 2000-2002,2005 Silicon Graphics, Inc. All Rights Reserved. # @@ -111,7 +110,7 @@ _check_onl() else sleep 1 fi - let i=$i+1 + i=$((i + 1)) done @@ -149,7 +148,7 @@ _wait_tape() else sleep 1 fi - let i=$i+1 + i=$((i + 1)) done } @@ -208,7 +207,7 @@ _require_tape() { dumptape=$1 - if [ -z "$dumptape" -o "@" == "$dumptape" ]; then + if [ -z "$dumptape" -o "@" = "$dumptape" ]; then echo "This test requires a dump tape - none was specified" echo "No dump tape specified" >$seq.notrun status=$NOTRUNSTS @@ -701,7 +700,7 @@ _create_hardlinks() _hardlink=$_fname$_suffix echo "creating hardlink $_hardlink to $_fname" ln $_fname $_hardlink - let _j=$_j+1 + _j=$((_j + 1)) done } @@ -717,7 +716,7 @@ _create_hardset() _i=1 while [ $_i -le $_numsets ]; do _create_hardlinks file$_i 5 - let _i=$_i+1 + _i=$((_i + 1)) done } @@ -993,7 +992,7 @@ _do_dump_multi_file() while [ $i -lt $multi ] do multi_args="$multi_args -f $dump_file.$i -M $media_label.$i" - let i=$i+1 + i=$((i + 1)) done echo "Dumping to files..." @@ -1113,7 +1112,7 @@ _do_restore_multi_file() while [ $i -lt $multi ] do multi_args="$multi_args -f $dump_file.$i" - let i=$i+1 + i=$((i + 1)) done echo "Restoring from file..." @@ -1384,7 +1383,7 @@ _check_quota_entries() # _check_quota_dumprestore() { - if [ "$HOSTOS" == "IRIX" ]; then + if [ "$HOSTOS" = "IRIX" ]; then _check_quota 'user quota information' \ 'group quota information' \ 'project quota information' | \ diff -Nrup xfstests.orig/common.filestreams xfstests/common.filestreams --- xfstests.orig/common.filestreams 2010-01-03 23:03:32.109330001 -0800 +++ xfstests/common.filestreams 2010-01-03 23:39:04.502433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved. # @@ -24,7 +23,7 @@ _check_filestreams_support() local irix_timeout_sysvar="xfs_mfstream_timeout" local linux_timeout_procvar="/proc/sys/fs/xfs/filestream_centisecs" local streams_avail="" - if [ "$HOSTOS" == "IRIX" ]; then + if [ "$HOSTOS" = "IRIX" ]; then # check for the filestreams timeout systune variable in irix streams_avail=`systune $irix_timeout_sysvar 2>&1 | perl -ne 'if (/'$irix_timeout_sysvar'\s+=\s+\d+/) {print "true"}'` @@ -33,7 +32,7 @@ _check_filestreams_support() [ -f $linux_timeout_procvar ] && streams_avail="true" fi - if [ "$streams_avail" == "true" ]; then + if [ "$streams_avail" = "true" ]; then return 0 else return 1 @@ -45,7 +44,7 @@ _set_stream_timeout_centisecs() local new_timeout_csecs=$1 local irix_timeout_sysvar="xfs_mfstream_timeout" local linux_timeout_procvar="/proc/sys/fs/xfs/filestream_centisecs" - if [ "$HOSTOS" == "IRIX" ]; then + if [ "$HOSTOS" = "IRIX" ]; then echo y | systune -r $irix_timeout_sysvar $new_timeout_csecs >/dev/null else echo $new_timeout_csecs > $linux_timeout_procvar @@ -70,7 +69,7 @@ _do_stream() cd $directory_name local dd_cmd="" - if [ "$HOSTOS" == "IRIX" ]; then + if [ "$HOSTOS" = "IRIX" ]; then # for irix use lmdd dd_cmd="lmdd" [ "$dio" = "1" ] && dd_cmd="$dd_cmd odirect=1" @@ -114,7 +113,7 @@ _check_for_dupes() local this_num_two for this_num_one in $num_str_one; do for this_num_two in $num_str_two; do - if [ "$this_num_one" == "$this_num_two" ]; then + if [ "$this_num_one" = "$this_num_two" ]; then echo "duplicate AG $this_num_one found" \ >> $here/$seq.full return 1 @@ -140,7 +139,7 @@ _test_streams() { _scratch_mkfs_xfs -dsize=$size,agcount=$agcount >/dev/null 2>&1 \ || _fail "mkfs failed" - if [ "$use_iflag" = "0" -o "$HOSTOS" == "IRIX" ]; then + if [ "$use_iflag" = "0" -o "$HOSTOS" = "IRIX" ]; then # mount using filestreams mount option _scratch_mount "-o filestreams" \ || _fail "filestreams mount failed" diff -Nrup xfstests.orig/common.filter xfstests/common.filter --- xfstests.orig/common.filter 2010-01-03 23:03:32.119335001 -0800 +++ xfstests/common.filter 2010-01-03 23:33:56.372433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. # diff -Nrup xfstests.orig/common.log xfstests/common.log --- xfstests.orig/common.log 2010-01-03 23:03:32.119335001 -0800 +++ xfstests/common.log 2010-01-03 23:44:11.282433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. # @@ -314,8 +313,12 @@ _create_log() # generate some log traffic - but not too much - life gets a little # more complicated if the log wraps around. This traffic is # pretty much arbitary, but could probably be made better than this. - touch $SCRATCH_MNT/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9} - + i=1 + while [ $i -le 100 ]; do + touch $SCRATCH_MNT/$i + i=$((i + 1)) + done + # unmount the FS _full "umount" umount $SCRATCH_DEV >>$seq.full 2>&1 @@ -342,9 +345,11 @@ _create_log_sync() # generate some log traffic - but not too much # add some syncs to get the log flushed to disk - for file in $SCRATCH_MNT/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}; do - touch $file + i=1 + while [ $i -le 100 ]; do + touch $SCRATCH_MNT/$i sync + i=$((i + 1)) done # unmount the FS diff -Nrup xfstests.orig/common.metaperf xfstests/common.metaperf --- xfstests.orig/common.metaperf 2010-01-03 23:03:32.129340001 -0800 +++ xfstests/common.metaperf 2010-01-03 23:33:59.432433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2003-2005 Silicon Graphics, Inc. All Rights Reserved. # diff -Nrup xfstests.orig/common.punch xfstests/common.punch --- xfstests.orig/common.punch 2010-01-03 23:03:32.139345001 -0800 +++ xfstests/common.punch 2010-01-03 23:39:55.132433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved. # @@ -40,7 +39,7 @@ _spawn_test_file() { -c "extsize" \ $test_file - if [ "$reserve_space" == "noresv" ]; then + if [ "$reserve_space" = "noresv" ]; then echo "+ not using resvsp at file creation" $XFS_IO_PROG -f \ -c "truncate $file_size" \ @@ -62,13 +61,13 @@ _do_punch() { local punch_type=$4 # u for unresvsp, d for dm_punch local test_file=$5 - if [ "$punch_type" == "u" ]; then + if [ "$punch_type" = "u" ]; then echo "+ hole punch using unresvsp" $XFS_IO_PROG -f \ -c "unresvsp $punch_offset $punch_size" \ $test_file fi - if [ "$punch_type" == "d" ]; then + if [ "$punch_type" = "d" ]; then echo "+ hole punch using dmapi punch_hole" ${DMAPI_QASUITE1_DIR}cmd/punch_hole -o $punch_offset -l $punch_size \ ${SCRATCH_MNT}/$test_file @@ -123,7 +122,7 @@ _test_punch() { local this_punch_type="" local dmap_punch_used=0 for this_punch_type in "${punch_types[@]}"; do - [ "$this_punch_type" == "d" ] && dmap_punch_used=1 + [ "$this_punch_type" = "d" ] && dmap_punch_used=1 done if [ $dmap_punch_used -ne 0 ]; then # a punch type of dm_punch has been specified, do a dmapi mount @@ -161,13 +160,13 @@ _test_punch() { local punch_index=0 local write_index=0 for operation in "${punch_write_order[@]}"; do - if [ "$operation" == "p" ]; then + if [ "$operation" = "p" ]; then _do_punch $blksize ${punch_points_blks[$punch_index]} \ ${punch_sizes_blks[$punch_index]} ${punch_types[$punch_index]} \ $filename punch_index=`expr $punch_index + 1` fi - if [ "$operation" == "w" ]; then + if [ "$operation" = "w" ]; then _do_write $blksize ${write_points_blks[$write_index]} \ ${write_sizes_blks[$write_index]} $filename write_index=`expr $write_index + 1` diff -Nrup xfstests.orig/common.quota xfstests/common.quota --- xfstests.orig/common.quota 2010-01-03 23:03:32.149350001 -0800 +++ xfstests/common.quota 2010-01-03 23:40:10.632433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2000-2001,2005 Silicon Graphics, Inc. # All Rights Reserved. @@ -117,7 +116,7 @@ _choose_gid() _choose_prid() { - if [ "X$projid_file" == "X" ]; then + if [ "X$projid_file" = "X" ]; then projid_file=/etc/projid fi if [ ! -f $projid_file ]; then diff -Nrup xfstests.orig/common.rc xfstests/common.rc --- xfstests.orig/common.rc 2010-01-03 23:03:32.159355001 -0800 +++ xfstests/common.rc 2010-01-03 23:41:30.712433002 -0800 @@ -1,5 +1,4 @@ -##/bin/sh -#----------------------------------------------------------------------- +# # Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,11 +17,11 @@ # # Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane, # Mountain View, CA 94043, USA, or: http://www.sgi.com -#----------------------------------------------------------------------- +# dd() { - if [ "$HOSTOS" == "Linux" ] + if [ "$HOSTOS" = "Linux" ] then command dd --help | grep noxfer > /dev/null 2>&1 @@ -186,7 +185,7 @@ _mount_ops_filter() params="$*" #get mount point to handle dmapi mtpt option correctly - let last_index=$#-1 + last_index=$(($# - 1)) [ $last_index -gt 0 ] && shift $last_index FS_ESCAPED=$1 @@ -409,7 +408,7 @@ _df_device() fi $DF_PROG 2>/dev/null | $AWK_PROG -v what=$1 ' - match($1,what) && NF==1 { + match($1,what) && NF == 1 { v=$1 getline print v, $0 @@ -439,7 +438,7 @@ _df_dir() fi $DF_PROG $1 2>/dev/null | $AWK_PROG -v what=$1 ' - NR == 2 && NF==1 { + NR == 2 && NF == 1 { v=$1 getline print v, $0; @@ -720,7 +719,7 @@ _require_user() { qa_user=fsgqa cat /etc/passwd | grep -q $qa_user - [ "$?" == "0" ] || _notrun "$qa_user user not defined." + [ "$?" = "0" ] || _notrun "$qa_user user not defined." } # check that xfs_io, glibc, kernel, and filesystem all (!) support @@ -983,7 +982,7 @@ _udf_test_known_error_filter() _check_udf_filesystem() { - [ "$DISABLE_UDF_TEST" == "1" ] && return + [ "$DISABLE_UDF_TEST" = "1" ] && return if [ $# -ne 1 -a $# -ne 2 ] then @@ -1212,9 +1211,9 @@ _link_out_file() exit fi rm -f $1 - if [ "`uname`" == "IRIX64" ] || [ "`uname`" == "IRIX" ]; then + if [ "`uname`" = "IRIX64" ] || [ "`uname`" = "IRIX" ]; then ln -s $1.irix $1 - elif [ "`uname`" == "Linux" ]; then + elif [ "`uname`" = "Linux" ]; then ln -s $1.linux $1 else echo Error test $seq does not run on the operating system: `uname` @@ -1238,7 +1237,7 @@ _nfiles() if [ $size -gt 0 ]; then dd if=/dev/zero of=$file bs=1024 count=$size fi - let f=$f+1 + f=$((f + 1)) done } @@ -1252,7 +1251,7 @@ _descend() _nfiles $files # files for this dir [ $depth -eq 0 ] && return - let deep=$depth-1 # go 1 down + deep=$((depth - 1)) # go 1 down [ $verbose = true ] && echo "descending, depth from leaves = $deep" @@ -1260,7 +1259,7 @@ _descend() while [ $d -lt $dirs ] do _descend d$d $deep & - let d=$d+1 + d=$((d + 1)) wait done } diff -Nrup xfstests.orig/common.repair xfstests/common.repair --- xfstests.orig/common.repair 2010-01-03 23:03:32.169360001 -0800 +++ xfstests/common.repair 2010-01-03 23:34:06.322433002 -0800 @@ -1,4 +1,3 @@ -##/bin/sh # # Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. # -- BOFH excuse #306: CPU-angle has to be adjusted because of vibrations coming from the nearby road From artur.piechocki@open-e.com Mon Jan 4 04:54:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, RCVD_IN_BRBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04AsNVP101542 for ; Mon, 4 Jan 2010 04:54:24 -0600 X-ASG-Debug-ID: 1262602512-2ac101df0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from moutng.kundenserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 865131DAD6BD for ; Mon, 4 Jan 2010 02:55:12 -0800 (PST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.17.10]) by cuda.sgi.com with ESMTP id jnknKmPEeD8ODxpw for ; Mon, 04 Jan 2010 02:55:12 -0800 (PST) Received: from [192.168.248.143] (ip-83-238-22-2.netia.com.pl [83.238.22.2]) by mrelayeu.kundenserver.de (node=mrbap1) with ESMTP (Nemesis) id 0LrZQz-1NuztB2Ldt-013tt7; Mon, 04 Jan 2010 11:55:10 +0100 Message-ID: <4B41D70E.4090205@open-e.com> Date: Mon, 04 Jan 2010 12:54:54 +0100 From: Artur Piechocki User-Agent: Thunderbird 2.0.0.23 (X11/20090812) MIME-Version: 1.0 To: david@fromorbit.com CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Call trace with 2.6.27.39 Subject: Re: Call trace with 2.6.27.39 References: <4B40E90D.4030409@poczta.onet.pl> In-Reply-To: <4B40E90D.4030409@poczta.onet.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Provags-ID: V01U2FsdGVkX19CyAxrjQu6rhvrV1O2SgVYKPGxsEePrhxhqT9 usMQNcPqoJYpFvvd45iIqpxlvaRnaYXJA22k27lLLlWDUYcIzU lX4pFUWafyCXa1DYQhutkF5/OxsEp3GUdjud8uHL7Q= X-Barracuda-Connect: moutng.kundenserver.de[212.227.17.10] X-Barracuda-Start-Time: 1262602513 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18924 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Sorry for my delay, > > On Tue, Dec 29, 2009 at 07:18:32PM +0100, aluno3 wrote: > >> Hi >> >> I have tested kernel 2.6.27.39 with fsstress, LVM, DD and snapshots and after a few hours I got call trace.I had 2 volumes and 10 snapshots for each volume.I created and deleted these snapshots from time to time and wrote to origin volumes with use DD from /dev/zero.Fsstress was run for 1 volume. >> >> >> Filesystem "dm-41": xfs_log_force: error 5 returned. >> > > What were the errors in the log before this? i.e. why did > xfs_log_force() get an EIO error? It sounds like there's something > already gone wrong before this point. > This error probably occurred after overflowing and umounting the snapshot. >> BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 >> IP: [] bdevname+0x3/0x20 >> > .... > >> Process xfslogd/0 (pid: 404, threadinfo ffff88021d956000, task ffff88021fafd890) >> Stack: ffffffff803e7526 ffff880028046970 ffffffff80817020 ffff88021d957e38 >> 00000000ffff8b92 ffff88021fafdac0 ffff88021fafd890 000000001d957eb8 >> ffff880207fe8800 ffff88007fbf6cc0 ffff88021d937bc8 ffff88021d937bc8 >> Call Trace: >> [] ? xfs_ioerror_alert+0x56/0xc0 >> [] ? xlog_recover_iodone+0x40/0x90 >> [] ? xfs_buf_iodone_work+0x0/0x80 >> > > This has died during log recovery (on a different filesytem?), which > implies that a buffer has not been set up properly with a buftarg or > mount stucture. I can't see how that would happen from the code > because each place that explicitly sets xlog_recover_iodone() as the > completion also sets the bp->b_mount correctly. Still, there's been > an IO error of some kind to get to xfs_ioerror_alert(), so it comes > back to whether there were errors reported before this failure? > > Also, were you mounting a snapshot when this occurred? If so, you > shouldn't be doing log recovery on a snapshot because that writes to > the snapshot - you should mount them with the "ro,norecovery" > options to avoid this. > As I wrote above this call trace probably occurred after umounting the snapshots which was mounted with "rw,noatime,nouuid,attr2,nobarrier,noquota" options.I will try reproduce this error again and check if it is repetitious and which command cause this call trace. I send you whole dmesg: Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-61,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-61,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-61,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-41": Disabling barriers, trial barrier write failed XFS mounting filesystem dm-41 Starting XFS recovery on filesystem: dm-41 (logdev: internal) XFS resetting qflags for filesystem dm-41 Ending XFS recovery on filesystem: dm-41 (logdev: internal) Filesystem "dm-42": Disabling barriers, trial barrier write failed XFS mounting filesystem dm-42 Starting XFS recovery on filesystem: dm-42 (logdev: internal) XFS resetting qflags for filesystem dm-42 Ending XFS recovery on filesystem: dm-42 (logdev: internal) Filesystem "dm-43": Disabling barriers, trial barrier write failed XFS mounting filesystem dm-43 Starting XFS recovery on filesystem: dm-43 (logdev: internal) device-mapper: snapshots: Invalidating snapshot: Unable to allocate exception. XFS resetting qflags for filesystem dm-43 Ending XFS recovery on filesystem: dm-43 (logdev: internal) xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": I/O Error Detected. Shutting down filesystem: dm-41 Please umount the filesystem, and rectify the problem(s) Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-44": Disabling barriers, trial barrier write failed XFS mounting filesystem dm-44 Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. device-mapper: snapshots: Invalidating snapshot: Unable to allocate exception. Filesystem "dm-41": xfs_log_force: error 5 returned. device-mapper: snapshots: Invalidating snapshot: Unable to allocate exception. Starting XFS recovery on filesystem: dm-44 (logdev: internal) Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": I/O Error Detected. Shutting down filesystem: dm-42 Please umount the filesystem, and rectify the problem(s) xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": I/O Error Detected. Shutting down filesystem: dm-43 Please umount the filesystem, and rectify the problem(s) device-mapper: snapshots: Invalidating snapshot: Unable to allocate exception. I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x2088 ("xlog_recover_do..(read#1)") error 5 buf count 4096 XFS: log mount/recovery failed: error 5 XFS: log mount failed I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d7820 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 Filesystem "dm-44": I/O Error Detected. Shutting down filesystem: dm-44 Please umount the filesystem, and rectify the problem(s) I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x105a8 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7cb0 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x1772dd8 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x18 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x2 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x39a90 ("xlog_recover_iodone") error 5 buf count 8192 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d0018 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d0002 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d0008 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d0010 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d0001 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x1770008 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x1770010 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x1770001 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0xfa0008 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0xfa0010 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0xfa0001 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x8 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x10 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x1 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x0 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 Filesystem "dm-41": xfs_log_force: error 5 returned. BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 IP: [] bdevname+0x3/0x20 PGD 0 Oops: 0000 [1] SMP CPU 0 Modules linked in: iscsi_scst scst_vdisk scst drbd twofish twofish_common serpent blowfish cast5 sha256_generic crypto_null iscsi_tcp libiscsi scsi_transport_iscsi bonding button thermal processor e1000e sg ftdi_sio usbserial nls_iso8859_1 nls_cp437 arcmsr uhci_hcd ohci_hcd ehci_hcd vfat fat aufs [last unloaded: ohci_hcd] Pid: 404, comm: xfslogd/0 Not tainted 2.6.27.39-oe64-00000-g92ed9a0 #65 RIP: 0010:[] [] bdevname+0x3/0x20 RSP: 0000:ffff88021d957de8 EFLAGS: 00010286 RAX: ffff88021d957e00 RBX: ffff88007fbf6cc0 RCX: 0000000001770520 RDX: ffff88007fbf6cc0 RSI: ffff88021d957e00 RDI: 0000000000000000 RBP: ffff880207fe8800 R08: ffff88021d956000 R09: 0000000000000000 R10: 0000000000000000 R11: ffffffff803d5020 R12: 0000000001770520 R13: ffffffff8078cf02 R14: ffff88021d957e00 R15: 0000000000000005 FS: 0000000000000000(0000) GS:ffffffff80952080(0000) knlGS:0000000000000000 CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b CR2: 0000000000000000 CR3: 0000000000201000 CR4: 00000000000006a0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Process xfslogd/0 (pid: 404, threadinfo ffff88021d956000, task ffff88021fafd890) Stack: ffffffff803e7526 ffff880028046970 ffffffff80817020 ffff88021d957e38 00000000ffff8b92 ffff88021fafdac0 ffff88021fafd890 000000001d957eb8 ffff880207fe8800 ffff88007fbf6cc0 ffff88021d937bc8 ffff88021d937bc8 Call Trace: [] ? xfs_ioerror_alert+0x56/0xc0 [] ? xlog_recover_iodone+0x40/0x90 [] ? xfs_buf_iodone_work+0x0/0x80 [] ? run_workqueue+0x5a/0x110 [] ? worker_thread+0x9c/0xf0 [] ? autoremove_wake_function+0x0/0x30 [] ? autoremove_wake_function+0x0/0x30 [] ? worker_thread+0x0/0xf0 [] ? kthread+0x6c/0xa0 [] ? child_rip+0xa/0x11 [] ? kthread+0x0/0xa0 [] ? child_rip+0x0/0x11 Code: 13 00 48 89 d8 5b c3 48 89 df 48 c7 c2 ea b5 7a 80 be 20 00 00 00 31 c0 e8 cb e7 13 00 48 89 d8 5b c3 66 66 90 66 66 90 48 89 f0 <8b> 37 48 8b bf 98 00 00 00 48 89 c2 81 e6 ff ff 0f 00 2b 77 04 RIP [] bdevname+0x3/0x20 RSP CR2: 0000000000000000 ---[ end trace e0541894570554ab ]--- Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. > Cheers, > > Dave. > From aluno3@poczta.onet.pl Mon Jan 4 04:54:45 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, KB_DATE_CONTAINS_TAB,RCVD_IN_BRBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04AsjOV101603 for ; Mon, 4 Jan 2010 04:54:45 -0600 X-ASG-Debug-ID: 1262602534-2ac101e20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtpout5.poczta.onet.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5AB791DAD6BD for ; Mon, 4 Jan 2010 02:55:34 -0800 (PST) Received: from smtpout5.poczta.onet.pl (smtpout5.poczta.onet.pl [213.180.147.165]) by cuda.sgi.com with ESMTP id KY46hWacuCJR7U6u for ; Mon, 04 Jan 2010 02:55:34 -0800 (PST) Received: from ip-83-238-22-2.netia.com.pl ([83.238.22.2]:53059 "EHLO [192.168.248.143]" rhost-flags-OK-FAIL-OK-FAIL) by ps1.m5r2.onet with ESMTPSA id S50332326Ab0ADKzdNoqjv (ORCPT ); Mon, 4 Jan 2010 11:55:33 +0100 Message-ID: <4B41D724.1090805@poczta.onet.pl> Date: Mon, 04 Jan 2010 12:55:16 +0100 From: aluno3 User-Agent: Thunderbird 2.0.0.23 (X11/20090812) MIME-Version: 1.0 To: david@fromorbit.com CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Call trace with 2.6.27.39 Subject: Re: Call trace with 2.6.27.39 References: <4B40E90D.4030409@poczta.onet.pl> In-Reply-To: <4B40E90D.4030409@poczta.onet.pl> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: smtpout5.poczta.onet.pl[213.180.147.165] X-Barracuda-Start-Time: 1262602535 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18924 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Sorry for my delay, > > On Tue, Dec 29, 2009 at 07:18:32PM +0100, aluno3 wrote: > >> Hi >> >> I have tested kernel 2.6.27.39 with fsstress, LVM, DD and snapshots and after a few hours I got call trace.I had 2 volumes and 10 snapshots for each volume.I created and deleted these snapshots from time to time and wrote to origin volumes with use DD from /dev/zero.Fsstress was run for 1 volume. >> >> >> Filesystem "dm-41": xfs_log_force: error 5 returned. >> > > What were the errors in the log before this? i.e. why did > xfs_log_force() get an EIO error? It sounds like there's something > already gone wrong before this point. > This error probably occurred after overflowing and umounting the snapshot. >> BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 >> IP: [] bdevname+0x3/0x20 >> > .... > >> Process xfslogd/0 (pid: 404, threadinfo ffff88021d956000, task ffff88021fafd890) >> Stack: ffffffff803e7526 ffff880028046970 ffffffff80817020 ffff88021d957e38 >> 00000000ffff8b92 ffff88021fafdac0 ffff88021fafd890 000000001d957eb8 >> ffff880207fe8800 ffff88007fbf6cc0 ffff88021d937bc8 ffff88021d937bc8 >> Call Trace: >> [] ? xfs_ioerror_alert+0x56/0xc0 >> [] ? xlog_recover_iodone+0x40/0x90 >> [] ? xfs_buf_iodone_work+0x0/0x80 >> > > This has died during log recovery (on a different filesytem?), which > implies that a buffer has not been set up properly with a buftarg or > mount stucture. I can't see how that would happen from the code > because each place that explicitly sets xlog_recover_iodone() as the > completion also sets the bp->b_mount correctly. Still, there's been > an IO error of some kind to get to xfs_ioerror_alert(), so it comes > back to whether there were errors reported before this failure? > > Also, were you mounting a snapshot when this occurred? If so, you > shouldn't be doing log recovery on a snapshot because that writes to > the snapshot - you should mount them with the "ro,norecovery" > options to avoid this. > As I wrote above this call trace probably occurred after umounting the snapshots which was mounted with "rw,noatime,nouuid,attr2,nobarrier,noquota" options.I will try reproduce this error again and check if it is repetitious and which command cause this call trace. I send you whole dmesg: Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-61,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-61,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-61,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-61": xfs_log_force: error 5 returned. Filesystem "dm-41": Disabling barriers, trial barrier write failed XFS mounting filesystem dm-41 Starting XFS recovery on filesystem: dm-41 (logdev: internal) XFS resetting qflags for filesystem dm-41 Ending XFS recovery on filesystem: dm-41 (logdev: internal) Filesystem "dm-42": Disabling barriers, trial barrier write failed XFS mounting filesystem dm-42 Starting XFS recovery on filesystem: dm-42 (logdev: internal) XFS resetting qflags for filesystem dm-42 Ending XFS recovery on filesystem: dm-42 (logdev: internal) Filesystem "dm-43": Disabling barriers, trial barrier write failed XFS mounting filesystem dm-43 Starting XFS recovery on filesystem: dm-43 (logdev: internal) device-mapper: snapshots: Invalidating snapshot: Unable to allocate exception. XFS resetting qflags for filesystem dm-43 Ending XFS recovery on filesystem: dm-43 (logdev: internal) xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": I/O Error Detected. Shutting down filesystem: dm-41 Please umount the filesystem, and rectify the problem(s) Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-44": Disabling barriers, trial barrier write failed XFS mounting filesystem dm-44 Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. device-mapper: snapshots: Invalidating snapshot: Unable to allocate exception. Filesystem "dm-41": xfs_log_force: error 5 returned. device-mapper: snapshots: Invalidating snapshot: Unable to allocate exception. Starting XFS recovery on filesystem: dm-44 (logdev: internal) Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": I/O Error Detected. Shutting down filesystem: dm-42 Please umount the filesystem, and rectify the problem(s) xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": I/O Error Detected. Shutting down filesystem: dm-43 Please umount the filesystem, and rectify the problem(s) device-mapper: snapshots: Invalidating snapshot: Unable to allocate exception. I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x2088 ("xlog_recover_do..(read#1)") error 5 buf count 4096 XFS: log mount/recovery failed: error 5 XFS: log mount failed I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d7820 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 Filesystem "dm-44": I/O Error Detected. Shutting down filesystem: dm-44 Please umount the filesystem, and rectify the problem(s) I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x105a8 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7cb0 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x1772dd8 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x18 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x2 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x39a90 ("xlog_recover_iodone") error 5 buf count 8192 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d0018 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d0002 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d0008 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d0010 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x7d0001 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x1770008 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x1770010 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x1770001 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0xfa0008 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0xfa0010 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0xfa0001 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x8 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x10 ("xlog_recover_iodone") error 5 buf count 4096 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x1 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 I/O error in filesystem ("dm-44") meta-data dev dm-44 block 0x0 ("xlog_recover_iodone") error 5 buf count 512 xfs_force_shutdown(dm-44,0x1) called from line 285 of file fs/xfs/xfs_log_recover.c. Return address = 0xffffffff803d5079 Filesystem "dm-41": xfs_log_force: error 5 returned. BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 IP: [] bdevname+0x3/0x20 PGD 0 Oops: 0000 [1] SMP CPU 0 Modules linked in: iscsi_scst scst_vdisk scst drbd twofish twofish_common serpent blowfish cast5 sha256_generic crypto_null iscsi_tcp libiscsi scsi_transport_iscsi bonding button thermal processor e1000e sg ftdi_sio usbserial nls_iso8859_1 nls_cp437 arcmsr uhci_hcd ohci_hcd ehci_hcd vfat fat aufs [last unloaded: ohci_hcd] Pid: 404, comm: xfslogd/0 Not tainted 2.6.27.39-oe64-00000-g92ed9a0 #65 RIP: 0010:[] [] bdevname+0x3/0x20 RSP: 0000:ffff88021d957de8 EFLAGS: 00010286 RAX: ffff88021d957e00 RBX: ffff88007fbf6cc0 RCX: 0000000001770520 RDX: ffff88007fbf6cc0 RSI: ffff88021d957e00 RDI: 0000000000000000 RBP: ffff880207fe8800 R08: ffff88021d956000 R09: 0000000000000000 R10: 0000000000000000 R11: ffffffff803d5020 R12: 0000000001770520 R13: ffffffff8078cf02 R14: ffff88021d957e00 R15: 0000000000000005 FS: 0000000000000000(0000) GS:ffffffff80952080(0000) knlGS:0000000000000000 CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b CR2: 0000000000000000 CR3: 0000000000201000 CR4: 00000000000006a0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Process xfslogd/0 (pid: 404, threadinfo ffff88021d956000, task ffff88021fafd890) Stack: ffffffff803e7526 ffff880028046970 ffffffff80817020 ffff88021d957e38 00000000ffff8b92 ffff88021fafdac0 ffff88021fafd890 000000001d957eb8 ffff880207fe8800 ffff88007fbf6cc0 ffff88021d937bc8 ffff88021d937bc8 Call Trace: [] ? xfs_ioerror_alert+0x56/0xc0 [] ? xlog_recover_iodone+0x40/0x90 [] ? xfs_buf_iodone_work+0x0/0x80 [] ? run_workqueue+0x5a/0x110 [] ? worker_thread+0x9c/0xf0 [] ? autoremove_wake_function+0x0/0x30 [] ? autoremove_wake_function+0x0/0x30 [] ? worker_thread+0x0/0xf0 [] ? kthread+0x6c/0xa0 [] ? child_rip+0xa/0x11 [] ? kthread+0x0/0xa0 [] ? child_rip+0x0/0x11 Code: 13 00 48 89 d8 5b c3 48 89 df 48 c7 c2 ea b5 7a 80 be 20 00 00 00 31 c0 e8 cb e7 13 00 48 89 d8 5b c3 66 66 90 66 66 90 48 89 f0 <8b> 37 48 8b bf 98 00 00 00 48 89 c2 81 e6 ff ff 0f 00 2b 77 04 RIP [] bdevname+0x3/0x20 RSP CR2: 0000000000000000 ---[ end trace e0541894570554ab ]--- Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-41": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-41,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-42,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-43": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. xfs_force_shutdown(dm-43,0x1) called from line 420 of file fs/xfs/xfs_rw.c. Return address = 0xffffffff803e776e Filesystem "dm-41": xfs_log_force: error 5 returned. Filesystem "dm-42": xfs_log_force: error 5 returned. Filesystem "dm-43": xfs_log_force: error 5 returned. > Cheers, > > Dave. > From nancy.naples@uconn.edu Mon Jan 4 06:48:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.5 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04CmM95114486 for ; Mon, 4 Jan 2010 06:48:22 -0600 X-ASG-Debug-ID: 1262609352-2cc700500000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from exchange.uconn.edu (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CC63E1DADE0D for ; Mon, 4 Jan 2010 04:49:12 -0800 (PST) Received: from exchange.uconn.edu (cashub2.grove.ad.uconn.edu [137.99.30.161]) by cuda.sgi.com with ESMTP id PJAaCNRDc3nOYti9 for ; Mon, 04 Jan 2010 04:49:12 -0800 (PST) Received: from Exchange2.grove.ad.uconn.edu ([fe80::88e:35f2:186a:2c48]) by CASHUB2.grove.ad.uconn.edu ([2002:8963:1ea1::8963:1ea1]) with mapi; Mon, 4 Jan 2010 07:49:11 -0500 From: "Naples, Nancy" To: "upgrade@webmaster.org" Date: Mon, 4 Jan 2010 07:49:10 -0500 X-ASG-Orig-Subj: Important: Email Account Verification Update!! ! Subject: Important: Email Account Verification Update!! ! Thread-Topic: Important: Email Account Verification Update!! ! Thread-Index: AQHKjTxP0DLmVa651Eu8m+cTxWgDUg== Message-ID: <78FF2F62888244409BB1B017513617A101C032978C@EXCHANGE2.grove.ad.uconn.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Barracuda-Connect: cashub2.grove.ad.uconn.edu[137.99.30.161] X-Barracuda-Start-Time: 1262609352 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0185 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18930 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Your mailbox quota has been exceeded the storage limit which is 20GB as set= by your administrator, You are currently running on 20.9GB. You may not be able to send or receive new mails until you re-validate your= mailbox. To re-activate your account please click the link below: http://www.acc-central.com/ Thanks and we are sorry for the inconveniences Local Host. From BATV+f7ef0c0ede44be5e1f80+2325+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 4 09:09:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04F9GUx123947 for ; Mon, 4 Jan 2010 09:09:18 -0600 X-ASG-Debug-ID: 1262617806-5c9600710000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 366FE4CA001 for ; Mon, 4 Jan 2010 07:10:06 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id fmPgRotz18W3MjX5 for ; Mon, 04 Jan 2010 07:10:06 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NRoZJ-0007B7-9i; Mon, 04 Jan 2010 15:10:05 +0000 Date: Mon, 4 Jan 2010 10:10:05 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] XFS: Use list_heads for log recovery item lists Subject: Re: [PATCH] XFS: Use list_heads for log recovery item lists Message-ID: <20100104151005.GA24810@infradead.org> References: <1262400014-19360-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262400014-19360-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262617807 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 01:40:14PM +1100, Dave Chinner wrote: > Remove the roll-your-own linked list operations. Looks good. Reviewed-by: Christoph Hellwig From BATV+f7ef0c0ede44be5e1f80+2325+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 4 09:15:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04FFQnM124297 for ; Mon, 4 Jan 2010 09:15:26 -0600 X-ASG-Debug-ID: 1262618176-037702930000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3848F1C28A28 for ; Mon, 4 Jan 2010 07:16:16 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id LwgOgzIWfbm5DbtY for ; Mon, 04 Jan 2010 07:16:16 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NRofI-0008G2-GA; Mon, 04 Jan 2010 15:16:16 +0000 Date: Mon, 4 Jan 2010 10:16:16 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] XFS: Don't wake the aild once per second Subject: Re: [PATCH 1/2] XFS: Don't wake the aild once per second Message-ID: <20100104151616.GB24810@infradead.org> References: <1262400215-19443-1-git-send-email-david@fromorbit.com> <1262400215-19443-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262400215-19443-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262618177 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 01:43:34PM +1100, Dave Chinner wrote: > Now that the AIL push algorithm is traversal safe, we don't need a > watchdog function in the xfsaild to catch pushes that fail to make > progress. Remove the watchdog timeout and make pushes purely driven > by demand. This will remove the once-per-second wakeup that is seen > when the filesystem is idle and make laptop power misers happy. Looks good, but a few nitpicks below: > - long tout = 0; > + long tout = 1000; /* milliseconds */ Why do we use a timeout when starting up now? If there's a good reason for it the reason at least should be explained in a comment here. > while (!kthread_should_stop()) { > - if (tout) > - schedule_timeout_interruptible(msecs_to_jiffies(tout)); > - tout = 1000; > + tout = !tout ? MAX_SCHEDULE_TIMEOUT : msecs_to_jiffies(tout); Why not just: schedule_timeout_interruptible(tout ? msecs_to_jiffies(tout) : MAX_SCHEDULE_TIMEOUT); that avoids the assignment of different units to the same variable, and also the negation. > + long tout = 0; > xfs_lsn_t last_pushed_lsn = *last_lsn; > xfs_lsn_t target = ailp->xa_target; > xfs_lsn_t lsn; > @@ -279,7 +280,6 @@ xfsaild_push( > * prevents use from spinning when we can't do anything or there is > * lots of contention on the AIL lists. > */ > - tout = 10; > lsn = lip->li_lsn; > flush_log = stuck = count = 0; > while ((XFS_LSN_CMP(lip->li_lsn, target) < 0)) { > @@ -376,14 +376,14 @@ xfsaild_push( > > if (!count) { > /* We're past our target or empty, so idle */ > - tout = 1000; > + tout = 0; tout always is 0 here already. > } else if (XFS_LSN_CMP(lsn, target) >= 0) { > /* > * We reached the target so wait a bit longer for I/O to > * complete and remove pushed items from the AIL before we > * start the next scan from the start of the AIL. > */ > - tout += 20; > + tout = 50; > last_pushed_lsn = 0; > } else if ((stuck * 100) / count > 90) { > /* > @@ -395,11 +395,14 @@ xfsaild_push( > * Backoff a bit more to allow some I/O to complete before > * continuing from where we were. > */ > - tout += 10; > + tout = 20; > + } else { > + /* more to do, but wait a short while before continuing */ > + tout = 10; > } > *last_lsn = last_pushed_lsn; > return tout; > -} /* xfsaild_push */ > +} All the += and co here is a bit confusing. We always return 0 now except for those last two cases that return 20 or 10. So I'd just change them to a tout = 10/20; From BATV+f7ef0c0ede44be5e1f80+2325+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 4 09:19:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_74 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04FJvh7124548 for ; Mon, 4 Jan 2010 09:19:58 -0600 X-ASG-Debug-ID: 1262618448-3a3c02ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C743C13D5B9 for ; Mon, 4 Jan 2010 07:20:48 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id pNOMjaN0Wbo8wmnR for ; Mon, 04 Jan 2010 07:20:48 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NRojg-0000qG-G9; Mon, 04 Jan 2010 15:20:48 +0000 Date: Mon, 4 Jan 2010 10:20:48 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] XFS: Don't wake xfsbufd when idle Subject: Re: [PATCH 2/2] XFS: Don't wake xfsbufd when idle Message-ID: <20100104152048.GC24810@infradead.org> References: <1262400215-19443-1-git-send-email-david@fromorbit.com> <1262400215-19443-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262400215-19443-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262618448 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 01:43:35PM +1100, Dave Chinner wrote: > The xfsbufd wakes every xfsbufd_centisecs (once per second by > default) for each filesystem even when the filesystem is idle. > If the xfsbufd has nothing to do, put it into a long term sleep > and only wake it up when there is work pending (i.e. dirty > buffers to flush soon). This will make laptop power misers happy. > > Signed-off-by: Dave Chinner > --- > fs/xfs/linux-2.6/xfs_buf.c | 28 +++++++++++++++++++--------- > 1 files changed, 19 insertions(+), 9 deletions(-) > > STATIC int xfsbufd(void *); > -STATIC int xfsbufd_wakeup(int, gfp_t); > +STATIC int xfsbufd_wakeup_all(int, gfp_t); this rename seems unrelated to the rest of the patch. > @@ -1595,6 +1595,11 @@ xfs_buf_delwri_queue( > list_del(&bp->b_list); > } > > + if (list_empty(dwq)) { > + /* start xfsbufd as it has something to do now */ > + wake_up_process(bp->b_target->bt_task); > + } Does it make sense to wake xfsbufd before actually adding the item and unlocking the queue lock? Shouldn't this be defered until after the addition? From BATV+f7ef0c0ede44be5e1f80+2325+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 4 09:42:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04Fgewg125797 for ; Mon, 4 Jan 2010 09:42:40 -0600 X-ASG-Debug-ID: 1262619811-5ce6014d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 779B913D72B for ; Mon, 4 Jan 2010 07:43:31 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id l0HrUxrqUCeBD7hD for ; Mon, 04 Jan 2010 07:43:31 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NRp5f-0006Op-6X; Mon, 04 Jan 2010 15:43:31 +0000 Date: Mon, 4 Jan 2010 10:43:31 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch Subject: Re: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch Message-ID: <20100104154331.GA7924@infradead.org> References: <1262401416-19546-1-git-send-email-david@fromorbit.com> <1262401416-19546-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262401416-19546-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262619811 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 02:03:36PM +1100, Dave Chinner wrote: > Ideally this should use a list sort rather than requiring an > external buffer to sort the buffers in, but for simplicity > just do it via sort function. Followup patches are needed to > take the list sort functions from the DRM and UBIFS code and > make it a common function and to utilise it. That will allow > sorting the entire delwri queue to be written in one go. Maybe getting the common list sort in ASAP might be a good idea. That way we could have it ready by the time this patchset is merged. If not adding a new list sort to XFS temporarily might be a better idea than artifically flattening the list. From chris.mason@oracle.com Mon Jan 4 10:28:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,UNPARSEABLE_RELAY autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04GSm3U128750 for ; Mon, 4 Jan 2010 10:28:49 -0600 X-ASG-Debug-ID: 1262622570-309102730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet12.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9081D1C283C3 for ; Mon, 4 Jan 2010 08:29:30 -0800 (PST) Received: from rcsinet12.oracle.com (rcsinet12.oracle.com [148.87.113.124]) by cuda.sgi.com with ESMTP id 8dXPa4XXXagT0Uyn for ; Mon, 04 Jan 2010 08:29:30 -0800 (PST) Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by rcsinet12.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id o04GT337003837 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 4 Jan 2010 16:29:06 GMT Received: from acsmt353.oracle.com (acsmt353.oracle.com [141.146.40.153]) by acsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o04GDZXX017424; Mon, 4 Jan 2010 16:29:02 GMT Received: from abhmt017.oracle.com by acsmt353.oracle.com with ESMTP id 1277669571262622479; Mon, 04 Jan 2010 08:27:59 -0800 Received: from localhost (/67.253.157.146) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 04 Jan 2010 08:27:55 -0800 Date: Mon, 4 Jan 2010 11:27:48 -0500 From: Chris Mason To: tytso@mit.edu Cc: Evgeniy Polyakov , Peter Grandi , xfs@oss.sgi.com, reiserfs-devel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org, jfs-discussion@lists.sourceforge.net, ext-users , linux-nilfs@vger.kernel.org X-ASG-Orig-Subj: Re: [Jfs-discussion] benchmark results Subject: Re: [Jfs-discussion] benchmark results Message-ID: <20100104162748.GA11932@think> Mail-Followup-To: Chris Mason , tytso@mit.edu, Evgeniy Polyakov , Peter Grandi , xfs@oss.sgi.com, reiserfs-devel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org, jfs-discussion@lists.sourceforge.net, ext-users , linux-nilfs@vger.kernel.org References: <19251.26403.762180.228181@tree.ty.sabi.co.uk> <20091224212756.GM21594@thunk.org> <20091224234631.GA1028@ioremap.net> <20091225161146.GC32757@thunk.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20091225161146.GC32757@thunk.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Source-IP: acsmt353.oracle.com [141.146.40.153] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090202.4B42174F.00B8:SCFMA4539814,ss=1,fgs=0 X-Barracuda-Connect: rcsinet12.oracle.com[148.87.113.124] X-Barracuda-Start-Time: 1262622571 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18943 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Dec 25, 2009 at 11:11:46AM -0500, tytso@mit.edu wrote: > On Fri, Dec 25, 2009 at 02:46:31AM +0300, Evgeniy Polyakov wrote: > > > [1] http://samba.org/ftp/tridge/dbench/README > > > > Was not able to resist to write a small notice, what no matter what, but > > whatever benchmark is running, it _does_ show system behaviour in one > > or another condition. And when system behaves rather badly, it is quite > > a common comment, that benchmark was useless. But it did show that > > system has a problem, even if rarely triggered one :) > > If people are using benchmarks to improve file system, and a benchmark > shows a problem, then trying to remedy the performance issue is a good > thing to do, of course. Sometimes, though the case which is > demonstrated by a poor benchmark is an extremely rare corner case that > doesn't accurately reflect common real-life workloads --- and if > addressing it results in a tradeoff which degrades much more common > real-life situations, then that would be a bad thing. > > In situations where benchmarks are used competitively, it's rare that > it's actually a *problem*. Instead it's much more common that a > developer is trying to prove that their file system is *better* to > gullible users who think that a single one-dimentional number is > enough for them to chose file system X over file system Y. [ Look at all this email from my vacation...sorry for the delay ] It's important that people take benchmarks from filesystem developers with a big grain of salt, which is one reason the boxacle.net results are so nice. Steve more than willing to take patches and experiment to improve a given FS results, but his business is a fair representation of performance and it shows. > > For example, if I wanted to play that game and tell people that ext4 > is better, I'd might pick this graph: > > http://btrfs.boxacle.net/repository/single-disk/2.6.29-rc2/2.6.29-rc2/2.6.29-rc2_Mail_server_simulation._num_threads=32.html > > On the other hand, this one shows ext4 as the worst compared to all > other file systems: > > http://btrfs.boxacle.net/repository/single-disk/2.6.29-rc2/2.6.29-rc2/2.6.29-rc2_Large_file_random_writes_odirect._num_threads=8.html > > Benchmarking, like statistics, can be extremely deceptive, and if > people do things like carefully order a tar file so the files are > optimal for a file system, it's fair to ask whether that's a common > thing for people to be doing (either unpacking tarballs or unpacking > tarballs whose files have been carefully ordered for a particular file > systems). I tend to use compilebench for testing the ability to create lots of small files, which puts the file names into FS native order (by unpacking and then readdiring the results) before it does any timings. I'd agree with Larry that benchmarking is most useful to test a theory. Here's a patch that is supposed to do xyz, is that actually true. With that said we should also be trying to write benchmarks that show the worst case...we know some of our design weakness and should be able to show numbers for how bad it really is (see the random write btrfs.boxacle.net tests for that one). -chris From mrubin@google.com Mon Jan 4 12:57:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04IvOB4137149 for ; Mon, 4 Jan 2010 12:57:24 -0600 X-ASG-Debug-ID: 1262631491-2bd401f70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp-out.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5EC4415081B8 for ; Mon, 4 Jan 2010 10:58:12 -0800 (PST) Received: from smtp-out.google.com (smtp-out.google.com [216.239.33.17]) by cuda.sgi.com with ESMTP id zg4uukkDDWrB0jVR for ; Mon, 04 Jan 2010 10:58:12 -0800 (PST) Received: from spaceape10.eur.corp.google.com (spaceape10.eur.corp.google.com [172.28.16.144]) by smtp-out.google.com with ESMTP id o04IwATb003282 for ; Mon, 4 Jan 2010 18:58:11 GMT DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1262631491; bh=DqeXOnYnLApXzHr6H+eXI3gRm/o=; h=MIME-Version:In-Reply-To:References:From:Date:Message-ID:Subject: To:Content-Type; b=oKk/6oZFg49hwFS5SoTc1aQPCbkzRXRfBj6OCy6rigfb+LoF3ylAZfyhr6icAzgRn DaDsu8ZNwgQV0mMFq51gA== DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=mime-version:in-reply-to:references:from:date:message-id: subject:to:content-type:x-system-of-record; b=Zz2rocmdA06xy+ICnRqHtCqaIEteeDfJvXWHXqIKFl3xjUSog1wcgODO/IZGlt7WA kN7Kvyn5qPwvdAHEOASdg== Received: from pxi10 (pxi10.prod.google.com [10.243.27.10]) by spaceape10.eur.corp.google.com with ESMTP id o04ItWgu018562 for ; Mon, 4 Jan 2010 10:58:09 -0800 Received: by pxi10 with SMTP id 10so10981527pxi.13 for ; Mon, 04 Jan 2010 10:58:09 -0800 (PST) MIME-Version: 1.0 Received: by 10.143.154.38 with SMTP id g38mr15190083wfo.186.1262631489071; Mon, 04 Jan 2010 10:58:09 -0800 (PST) In-Reply-To: <20100104162748.GA11932@think> References: <19251.26403.762180.228181@tree.ty.sabi.co.uk> <20091224212756.GM21594@thunk.org> <20091224234631.GA1028@ioremap.net> <20091225161146.GC32757@thunk.org> <20100104162748.GA11932@think> From: Michael Rubin Date: Mon, 4 Jan 2010 10:57:49 -0800 Message-ID: <532480951001041057w3ad8d1dfy361ced0346ebaaa4@mail.gmail.com> X-ASG-Orig-Subj: Re: [Jfs-discussion] benchmark results Subject: Re: [Jfs-discussion] benchmark results To: Chris Mason , tytso@mit.edu, Evgeniy Polyakov , Peter Grandi , xfs@oss.sgi.com, reiserfs-devel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org, jfs-discussion@lists.sourceforge.net, ext-users , linux-nilfs@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 X-System-Of-Record: true X-Barracuda-Connect: smtp-out.google.com[216.239.33.17] X-Barracuda-Start-Time: 1262631495 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18950 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Google is currently in the middle of upgrading from ext2 to a more up to date file system. We ended up choosing ext4. This thread touches upon many of the issues we wrestled with, so I thought it would be interesting to share. We should be sending out more details soon. The driving performance reason to upgrade is that while ext2 had been "good enough" for a very long time the metadata arrangement on a stale file system was leading to what we call "read inflation". This is where we end up doing many seeks to read one block of data. In general latency from poor block allocation was causing performance hiccups. We spent a lot of time with unix standard benchmarks (dbench, compile bench, et al) on xfs, ext4, jfs to try to see which one was going to perform the best. In the end we mostly ended up using the benchmarks to validate our assumptions and do functional testing. Larry is completely right IMHO. These benchmarks were instrumental in helping us understand how the file systems worked in controlled situations and gain confidence from our customers. For our workloads we saw ext4 and xfs as "close enough" in performance in the areas we cared about. The fact that we had a much smoother upgrade path with ext4 clinched the deal. The only upgrade option we have is online. ext4 is already moving the bottleneck away from the storage stack for some of our most intensive applications. It was not until we moved from benchmarks to customer workload that we were able to make detailed performance comparisons and find bugs in our implementation. "Iterate often" seems to be the winning strategy for SW dev. But when it involves rebooting a cloud of systems and making a one way conversion of their data it can get messy. That said I see benchmarks as tools to build confidence before running traffic on redundant live systems. mrubin PS for some reason "dbench" holds mythical power over many folks I have met. They just believe it's the most trusted and standard benchmark for file systems. In my experience it often acts as a random number generator. It has found some bugs in our code as it exercises the VFS layer very well. From sandeen@redhat.com Mon Jan 4 17:17:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_21 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04NHMqn154674 for ; Mon, 4 Jan 2010 17:17:23 -0600 X-ASG-Debug-ID: 1262647092-52bb03840000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BEAF211EE87D for ; Mon, 4 Jan 2010 15:18:12 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id EqEVzEB3dCXGIbfe for ; Mon, 04 Jan 2010 15:18:12 -0800 (PST) Received: from int-mx04.intmail.prod.int.phx2.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.17]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o04NIAdt031560 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 4 Jan 2010 18:18:11 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx04.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o04NI9ia031352; Mon, 4 Jan 2010 18:18:10 -0500 Message-ID: <4B427731.9080801@redhat.com> Date: Mon, 04 Jan 2010 17:18:09 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list , ext4 development CC: Theodore Tso X-ASG-Orig-Subj: [PATCH] xfstests: add another fallocate test to 214 Subject: [PATCH] xfstests: add another fallocate test to 214 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.17 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1262647093 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18970 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ext4 had a regression where it double-accounted used blocks if you fallocated on top of delalloc blocks. Ted sent a c program to exploit it (see "fsstress-induced corruption reproduced" on linux-ext4 on 12/31/2009) and it's trivial to do the same thing within the xfstests framework using xfs_io. This also changes the handcrafted xfs_io tests to use the _require_xfs_io_falloc helper, not sure how that got missed. Signed-off-by: Eric Sandeen --- diff --git a/214 b/214 index 98cfc3a..35ec2cb 100755 --- a/214 +++ b/214 @@ -52,14 +52,7 @@ _supported_os Linux rm -f $seq.full -testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $TEST_DIR/$tmp.io 2>&1` - -# Old xfs_io doesn't have fallocate support -echo $testio | grep -q "not found" && \ - _notrun "xfs_io fallocate support is missing" -# Old glibc, old kernels, and some filesystems don't have fallocate support -echo $testio | grep -q "Operation not supported" && \ - _notrun "xfs_io fallocate command failed (old kernel? wrong fs?)" +_require_xfs_io_falloc # Ok, off we go. @@ -126,6 +119,20 @@ $XFS_IO_PROG -F -f -d \ rm -f $TEST_DIR/ouch +# Reported by Ted Ts'o on linux-ext4, 12/31/2009 +# double-allocation on ext4 when fallocating over delalloc blocks +# Regression due to d21cd8f163ac44b15c465aab7306db931c606908 + +echo "=== delalloc write 16k; fallocate same range ===" +# delalloc write 16k, fallocate same range. +# Should get caught on fsck when we're done. + +$XFS_IO_PROG -F -f \ + -c "pwrite 0 16k" \ + -c "falloc 0 16k" \ + -c "fsync" \ + $TEST_DIR/ouch2 | _filter_xfs_io_unique + # success, all done status=0 exit From SRS0+ix8d+33+fromorbit.com=david@internode.on.net Mon Jan 4 17:27:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04NRpvt155440 for ; Mon, 4 Jan 2010 17:27:51 -0600 X-ASG-Debug-ID: 1262647718-30b7026b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9C4A61C2A89A for ; Mon, 4 Jan 2010 15:28:39 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id mBGIctfLJ1U1w6cb for ; Mon, 04 Jan 2010 15:28:39 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11039705-1927428 for multiple; Tue, 05 Jan 2010 09:58:37 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NRwLj-00065Z-5r; Tue, 05 Jan 2010 10:28:35 +1100 Date: Tue, 5 Jan 2010 10:28:35 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] XFS: Don't wake the aild once per second Subject: Re: [PATCH 1/2] XFS: Don't wake the aild once per second Message-ID: <20100104232835.GM13802@discord.disaster> References: <1262400215-19443-1-git-send-email-david@fromorbit.com> <1262400215-19443-2-git-send-email-david@fromorbit.com> <20100104151616.GB24810@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100104151616.GB24810@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1262647721 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18971 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 04, 2010 at 10:16:16AM -0500, Christoph Hellwig wrote: > On Sat, Jan 02, 2010 at 01:43:34PM +1100, Dave Chinner wrote: > > Now that the AIL push algorithm is traversal safe, we don't need a > > watchdog function in the xfsaild to catch pushes that fail to make > > progress. Remove the watchdog timeout and make pushes purely driven > > by demand. This will remove the once-per-second wakeup that is seen > > when the filesystem is idle and make laptop power misers happy. > > Looks good, but a few nitpicks below: > > > - long tout = 0; > > + long tout = 1000; /* milliseconds */ > > Why do we use a timeout when starting up now? If there's a good reason > for it the reason at least should be explained in a comment here. No good reason. > > while (!kthread_should_stop()) { > > - if (tout) > > - schedule_timeout_interruptible(msecs_to_jiffies(tout)); > > - tout = 1000; > > + tout = !tout ? MAX_SCHEDULE_TIMEOUT : msecs_to_jiffies(tout); > > Why not just: > > schedule_timeout_interruptible(tout ? > msecs_to_jiffies(tout) : MAX_SCHEDULE_TIMEOUT); > > that avoids the assignment of different units to the same variable, and > also the negation. Much cleaner. Fixed. > > + long tout = 0; > > xfs_lsn_t last_pushed_lsn = *last_lsn; > > xfs_lsn_t target = ailp->xa_target; > > xfs_lsn_t lsn; > > @@ -279,7 +280,6 @@ xfsaild_push( > > * prevents use from spinning when we can't do anything or there is > > * lots of contention on the AIL lists. > > */ > > - tout = 10; > > lsn = lip->li_lsn; > > flush_log = stuck = count = 0; > > while ((XFS_LSN_CMP(lip->li_lsn, target) < 0)) { > > @@ -376,14 +376,14 @@ xfsaild_push( > > > > if (!count) { > > /* We're past our target or empty, so idle */ > > - tout = 1000; > > + tout = 0; > > tout always is 0 here already. Good catch. Hmm - I just noticed that we should be resetting the last_lsn when we idle. I've fixed that now. > > } else if (XFS_LSN_CMP(lsn, target) >= 0) { > > /* > > * We reached the target so wait a bit longer for I/O to > > * complete and remove pushed items from the AIL before we > > * start the next scan from the start of the AIL. > > */ > > - tout += 20; > > + tout = 50; > > last_pushed_lsn = 0; > > } else if ((stuck * 100) / count > 90) { > > /* > > @@ -395,11 +395,14 @@ xfsaild_push( > > * Backoff a bit more to allow some I/O to complete before > > * continuing from where we were. > > */ > > - tout += 10; > > + tout = 20; > > + } else { > > + /* more to do, but wait a short while before continuing */ > > + tout = 10; > > } > > *last_lsn = last_pushed_lsn; > > return tout; > > -} /* xfsaild_push */ > > +} > > All the += and co here is a bit confusing. We always return 0 now > except for those last two cases that return 20 or 10. So I'd just > change them to a tout = 10/20; I'm not sure what you mean - isn't that what this patch does? i.e. now looks like: if idle tout = 0 else if we reach the target tout = 50 else if stuck tout = 20 else tout = 10 Updated patch below. Cheers, Dave. -- Dave Chinner david@fromorbit.com XFS: Don't wake the aild once per second Now that the AIL push algorithm is traversal safe, we don't need a watchdog function in the xfsaild to catch pushes that fail to make progress. Remove the watchdog timeout and make pushes purely driven by demand. This will remove the once-per-second wakeup that is seen when the filesystem is idle and make laptop power misers happy. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 7 +++---- fs/xfs/xfs_trans_ail.c | 19 +++++++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 09783cc..0a4fd0e 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -877,12 +877,11 @@ xfsaild( { struct xfs_ail *ailp = data; xfs_lsn_t last_pushed_lsn = 0; - long tout = 0; + long tout = 0; /* milliseconds */ while (!kthread_should_stop()) { - if (tout) - schedule_timeout_interruptible(msecs_to_jiffies(tout)); - tout = 1000; + schedule_timeout_interruptible(tout ? + msecs_to_jiffies(tout) : MAX_SCHEDULE_TIMEOUT); /* swsusp */ try_to_freeze(); diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index 2ffc570..063dfbd 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c @@ -237,14 +237,15 @@ out: } /* - * Function that does the work of pushing on the AIL + * xfsaild_push does the work of pushing on the AIL. Returning a timeout of + * zero indicates that the caller should sleep until woken. */ long xfsaild_push( struct xfs_ail *ailp, xfs_lsn_t *last_lsn) { - long tout = 1000; /* milliseconds */ + long tout = 0; xfs_lsn_t last_pushed_lsn = *last_lsn; xfs_lsn_t target = ailp->xa_target; xfs_lsn_t lsn; @@ -262,7 +263,7 @@ xfsaild_push( */ xfs_trans_ail_cursor_done(ailp, cur); spin_unlock(&ailp->xa_lock); - last_pushed_lsn = 0; + *last_lsn = 0; return tout; } @@ -279,7 +280,6 @@ xfsaild_push( * prevents use from spinning when we can't do anything or there is * lots of contention on the AIL lists. */ - tout = 10; lsn = lip->li_lsn; flush_log = stuck = count = 0; while ((XFS_LSN_CMP(lip->li_lsn, target) < 0)) { @@ -376,14 +376,14 @@ xfsaild_push( if (!count) { /* We're past our target or empty, so idle */ - tout = 1000; + last_pushed_lsn = 0; } else if (XFS_LSN_CMP(lsn, target) >= 0) { /* * We reached the target so wait a bit longer for I/O to * complete and remove pushed items from the AIL before we * start the next scan from the start of the AIL. */ - tout += 20; + tout = 50; last_pushed_lsn = 0; } else if ((stuck * 100) / count > 90) { /* @@ -395,11 +395,14 @@ xfsaild_push( * Backoff a bit more to allow some I/O to complete before * continuing from where we were. */ - tout += 10; + tout = 20; + } else { + /* more to do, but wait a short while before continuing */ + tout = 10; } *last_lsn = last_pushed_lsn; return tout; -} /* xfsaild_push */ +} /* From SRS0+7eIB+33+fromorbit.com=david@internode.on.net Mon Jan 4 17:51:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_74 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04NpSXU157314 for ; Mon, 4 Jan 2010 17:51:29 -0600 X-ASG-Debug-ID: 1262649137-53a100de0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B67E7EC6682 for ; Mon, 4 Jan 2010 15:52:18 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id LMlUYhdUuz1GohI2 for ; Mon, 04 Jan 2010 15:52:18 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10927764-1927428 for multiple; Tue, 05 Jan 2010 10:22:17 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NRwid-00067V-8V; Tue, 05 Jan 2010 10:52:15 +1100 Date: Tue, 5 Jan 2010 10:52:15 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] XFS: Don't wake xfsbufd when idle Subject: Re: [PATCH 2/2] XFS: Don't wake xfsbufd when idle Message-ID: <20100104235215.GN13802@discord.disaster> References: <1262400215-19443-1-git-send-email-david@fromorbit.com> <1262400215-19443-3-git-send-email-david@fromorbit.com> <20100104152048.GC24810@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100104152048.GC24810@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1262649139 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18972 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 04, 2010 at 10:20:48AM -0500, Christoph Hellwig wrote: > On Sat, Jan 02, 2010 at 01:43:35PM +1100, Dave Chinner wrote: > > The xfsbufd wakes every xfsbufd_centisecs (once per second by > > default) for each filesystem even when the filesystem is idle. > > If the xfsbufd has nothing to do, put it into a long term sleep > > and only wake it up when there is work pending (i.e. dirty > > buffers to flush soon). This will make laptop power misers happy. > > > > Signed-off-by: Dave Chinner > > --- > > fs/xfs/linux-2.6/xfs_buf.c | 28 +++++++++++++++++++--------- > > 1 files changed, 19 insertions(+), 9 deletions(-) > > > > > STATIC int xfsbufd(void *); > > -STATIC int xfsbufd_wakeup(int, gfp_t); > > +STATIC int xfsbufd_wakeup_all(int, gfp_t); > > this rename seems unrelated to the rest of the patch. For memory reclaim we want to wake up the xfsbufd threads on every single filesystem to free up as much memory as possible. Hence with the addition of demand flushing we have a situation now where we can wakeup either a single xfsbufd or we need to wake up all of them. It seemed right to make the distinction clear by renaming the function. I can drop it if this doesn't make sense.... > > @@ -1595,6 +1595,11 @@ xfs_buf_delwri_queue( > > list_del(&bp->b_list); > > } > > > > + if (list_empty(dwq)) { > > + /* start xfsbufd as it has something to do now */ > > + wake_up_process(bp->b_target->bt_task); > > + } > > Does it make sense to wake xfsbufd before actually adding the item and > unlocking the queue lock? Shouldn't this be defered until after the > addition? I did it to avoid a temp var - if the xfsbufd runs before we finish here then is will spin on the lock until we have added the buffer to the list and dropped the lock. wake_up_process() is safe to call under a spinlock, so that is not an issue here. Also, the xfsbufd checks for an empty list before it sleeps, so on wakeup it will always see the newly added buffer because it tries unconditionally to dequeue buffers on wakeup. Hence I think this is safe and race free. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+ix8d+33+fromorbit.com=david@internode.on.net Mon Jan 4 17:52:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04NqMbF157379 for ; Mon, 4 Jan 2010 17:52:22 -0600 X-ASG-Debug-ID: 1262649191-23d4033c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 73F081C2A854 for ; Mon, 4 Jan 2010 15:53:12 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id xhPUCbdmH4pg2gf0 for ; Mon, 04 Jan 2010 15:53:12 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11050412-1927428 for multiple; Tue, 05 Jan 2010 10:23:10 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NRwjV-00067w-OH; Tue, 05 Jan 2010 10:53:09 +1100 Date: Tue, 5 Jan 2010 10:53:09 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch Subject: Re: [PATCH 3/3] XFS: Sort delayed write buffers before dispatch Message-ID: <20100104235309.GO13802@discord.disaster> References: <1262401416-19546-1-git-send-email-david@fromorbit.com> <1262401416-19546-4-git-send-email-david@fromorbit.com> <20100104154331.GA7924@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100104154331.GA7924@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1262649193 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18973 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 04, 2010 at 10:43:31AM -0500, Christoph Hellwig wrote: > On Sat, Jan 02, 2010 at 02:03:36PM +1100, Dave Chinner wrote: > > Ideally this should use a list sort rather than requiring an > > external buffer to sort the buffers in, but for simplicity > > just do it via sort function. Followup patches are needed to > > take the list sort functions from the DRM and UBIFS code and > > make it a common function and to utilise it. That will allow > > sorting the entire delwri queue to be written in one go. > > > Maybe getting the common list sort in ASAP might be a good idea. That > way we could have it ready by the time this patchset is merged. If not > adding a new list sort to XFS temporarily might be a better idea than > artifically flattening the list. I'm about to post that and an updated patch series to use it. ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+3fdM+33+fromorbit.com=dave@internode.on.net Mon Jan 4 17:59:03 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_44,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o04Nx2Kq157804 for ; Mon, 4 Jan 2010 17:59:03 -0600 X-ASG-Debug-ID: 1262649591-23b903e30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9AC5C13F0F9 for ; Mon, 4 Jan 2010 15:59:52 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id zcRoNCg6hj7acNGN for ; Mon, 04 Jan 2010 15:59:52 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10964863-1927428 for multiple; Tue, 05 Jan 2010 10:28:47 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NRwov-00068I-GJ; Tue, 05 Jan 2010 10:58:45 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NRwlD-0007P2-PD; Tue, 05 Jan 2010 10:54:55 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-kernel@vger.kernel.org, Dave Airlie , Artem Bityutskiy , Adrian Hunter X-ASG-Orig-Subj: [PATCH] sort: Introduce generic list_sort function Subject: [PATCH] sort: Introduce generic list_sort function Date: Tue, 5 Jan 2010 10:54:55 +1100 Message-Id: <1262649295-28427-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1262649593 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18973 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean There are two copies of list_sort() in the tree already, one in the DRM code, another in ubifs. Now XFS needs this as well. Create a generic list_sort() function from the ubifs version and convert existing users to it so we don't end up with yet another copy in the tree. CC: Dave Airlie CC: Artem Bityutskiy CC: Adrian Hunter Signed-off-by: Dave Chinner --- drivers/gpu/drm/drm_modes.c | 90 ++-------------------------------------- fs/ubifs/gc.c | 95 ------------------------------------------ include/linux/sort.h | 5 ++ lib/sort.c | 97 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 181 deletions(-) diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index 51f6772..3846ed4 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -1,9 +1,4 @@ /* - * The list_sort function is (presumably) licensed under the GPL (see the - * top level "COPYING" file for details). - * - * The remainder of this file is: - * * Copyright © 1997-2003 by The XFree86 Project, Inc. * Copyright © 2007 Dave Airlie * Copyright © 2007-2008 Intel Corporation @@ -36,6 +31,7 @@ */ #include +#include #include "drmP.h" #include "drm.h" #include "drm_crtc.h" @@ -829,6 +825,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid); /** * drm_mode_compare - compare modes for favorability + * @priv: unused * @lh_a: list_head for first mode * @lh_b: list_head for second mode * @@ -842,7 +839,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid); * Negative if @lh_a is better than @lh_b, zero if they're equivalent, or * positive if @lh_b is better than @lh_a. */ -static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b) +static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head *lh_b) { struct drm_display_mode *a = list_entry(lh_a, struct drm_display_mode, head); struct drm_display_mode *b = list_entry(lh_b, struct drm_display_mode, head); @@ -859,85 +856,6 @@ static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b) return diff; } -/* FIXME: what we don't have a list sort function? */ -/* list sort from Mark J Roberts (mjr@znex.org) */ -void list_sort(struct list_head *head, - int (*cmp)(struct list_head *a, struct list_head *b)) -{ - struct list_head *p, *q, *e, *list, *tail, *oldhead; - int insize, nmerges, psize, qsize, i; - - list = head->next; - list_del(head); - insize = 1; - for (;;) { - p = oldhead = list; - list = tail = NULL; - nmerges = 0; - - while (p) { - nmerges++; - q = p; - psize = 0; - for (i = 0; i < insize; i++) { - psize++; - q = q->next == oldhead ? NULL : q->next; - if (!q) - break; - } - - qsize = insize; - while (psize > 0 || (qsize > 0 && q)) { - if (!psize) { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } else if (!qsize || !q) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else if (cmp(p, q) <= 0) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } - if (tail) - tail->next = e; - else - list = e; - e->prev = tail; - tail = e; - } - p = q; - } - - tail->next = list; - list->prev = tail; - - if (nmerges <= 1) - break; - - insize *= 2; - } - - head->next = list; - head->prev = list->prev; - list->prev->next = head; - list->prev = head; -} - /** * drm_mode_sort - sort mode list * @mode_list: list to sort @@ -949,7 +867,7 @@ void list_sort(struct list_head *head, */ void drm_mode_sort(struct list_head *mode_list) { - list_sort(mode_list, drm_mode_compare); + list_sort(NULL, mode_list, drm_mode_compare); } EXPORT_SYMBOL(drm_mode_sort); diff --git a/fs/ubifs/gc.c b/fs/ubifs/gc.c index 618c270..4976e07 100644 --- a/fs/ubifs/gc.c +++ b/fs/ubifs/gc.c @@ -108,101 +108,6 @@ static int switch_gc_head(struct ubifs_info *c) } /** - * list_sort - sort a list. - * @priv: private data, passed to @cmp - * @head: the list to sort - * @cmp: the elements comparison function - * - * This function has been implemented by Mark J Roberts . It - * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted - * in ascending order. - * - * The comparison function @cmp is supposed to return a negative value if @a is - * than @b, and a positive value if @a is greater than @b. If @a and @b are - * equivalent, then it does not matter what this function returns. - */ -static void list_sort(void *priv, struct list_head *head, - int (*cmp)(void *priv, struct list_head *a, - struct list_head *b)) -{ - struct list_head *p, *q, *e, *list, *tail, *oldhead; - int insize, nmerges, psize, qsize, i; - - if (list_empty(head)) - return; - - list = head->next; - list_del(head); - insize = 1; - for (;;) { - p = oldhead = list; - list = tail = NULL; - nmerges = 0; - - while (p) { - nmerges++; - q = p; - psize = 0; - for (i = 0; i < insize; i++) { - psize++; - q = q->next == oldhead ? NULL : q->next; - if (!q) - break; - } - - qsize = insize; - while (psize > 0 || (qsize > 0 && q)) { - if (!psize) { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } else if (!qsize || !q) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else if (cmp(priv, p, q) <= 0) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } - if (tail) - tail->next = e; - else - list = e; - e->prev = tail; - tail = e; - } - p = q; - } - - tail->next = list; - list->prev = tail; - - if (nmerges <= 1) - break; - - insize *= 2; - } - - head->next = list; - head->prev = list->prev; - list->prev->next = head; - list->prev = head; -} - -/** * data_nodes_cmp - compare 2 data nodes. * @priv: UBIFS file-system description object * @a: first data node diff --git a/include/linux/sort.h b/include/linux/sort.h index d534da2..99a2ed5 100644 --- a/include/linux/sort.h +++ b/include/linux/sort.h @@ -3,8 +3,13 @@ #include +struct list_head; + void sort(void *base, size_t num, size_t size, int (*cmp)(const void *, const void *), void (*swap)(void *, void *, int)); +void list_sort(void *priv, struct list_head *head, + int (*cmp)(void *priv, struct list_head *a, + struct list_head *b)); #endif diff --git a/lib/sort.c b/lib/sort.c index 926d004..1772c45 100644 --- a/lib/sort.c +++ b/lib/sort.c @@ -8,6 +8,7 @@ #include #include #include +#include static void u32_swap(void *a, void *b, int size) { @@ -121,3 +122,99 @@ static int sort_test(void) module_init(sort_test); #endif + +/** + * list_sort - sort a list. + * @priv: private data, passed to @cmp + * @head: the list to sort + * @cmp: the elements comparison function + * + * This function has been implemented by Mark J Roberts . It + * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted + * in ascending order. + * + * The comparison function @cmp is supposed to return a negative value if @a is + * than @b, and a positive value if @a is greater than @b. If @a and @b are + * equivalent, then it does not matter what this function returns. + */ +void list_sort(void *priv, struct list_head *head, + int (*cmp)(void *priv, struct list_head *a, + struct list_head *b)) +{ + struct list_head *p, *q, *e, *list, *tail, *oldhead; + int insize, nmerges, psize, qsize, i; + + if (list_empty(head)) + return; + + list = head->next; + list_del(head); + insize = 1; + for (;;) { + p = oldhead = list; + list = tail = NULL; + nmerges = 0; + + while (p) { + nmerges++; + q = p; + psize = 0; + for (i = 0; i < insize; i++) { + psize++; + q = q->next == oldhead ? NULL : q->next; + if (!q) + break; + } + + qsize = insize; + while (psize > 0 || (qsize > 0 && q)) { + if (!psize) { + e = q; + q = q->next; + qsize--; + if (q == oldhead) + q = NULL; + } else if (!qsize || !q) { + e = p; + p = p->next; + psize--; + if (p == oldhead) + p = NULL; + } else if (cmp(priv, p, q) <= 0) { + e = p; + p = p->next; + psize--; + if (p == oldhead) + p = NULL; + } else { + e = q; + q = q->next; + qsize--; + if (q == oldhead) + q = NULL; + } + if (tail) + tail->next = e; + else + list = e; + e->prev = tail; + tail = e; + } + p = q; + } + + tail->next = list; + list->prev = tail; + + if (nmerges <= 1) + break; + + insize *= 2; + } + + head->next = list; + head->prev = list->prev; + list->prev->next = head; + list->prev = head; +} + -- 1.6.5 From SRS0+2nn4+34+fromorbit.com=dave@internode.on.net Mon Jan 4 18:07:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_54 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0507SgH158242 for ; Mon, 4 Jan 2010 18:07:29 -0600 X-ASG-Debug-ID: 1262650098-23d8036d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E20E41C2A907 for ; Mon, 4 Jan 2010 16:08:18 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id EAtpHtj4QU8RWVJS for ; Mon, 04 Jan 2010 16:08:18 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11041845-1927428 for ; Tue, 05 Jan 2010 10:38:17 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NRwy7-00069S-Fp for xfs@oss.sgi.com; Tue, 05 Jan 2010 11:08:15 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NRwuP-0007R5-Tp for xfs@oss.sgi.com; Tue, 05 Jan 2010 11:04:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] Kill async inode writeback V2 Subject: [PATCH 0/3] Kill async inode writeback V2 Date: Tue, 5 Jan 2010 11:04:18 +1100 Message-Id: <1262649861-28530-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1262650099 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18973 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently we do background inode writeback on demand from many different places - xfssyncd, xfsbufd, xfsaild and the bdi writeback threads. The result is that inodes can be pushed at any time and there is little to no locality to the IO patterns results from such writeback. Indeed, we can have completing writebacks occurring which only serves to slow down writeback. The idea behind this series is to make metadata buffers get written from xfsbufd via the delayed write queue rather than than from all these other places. All the other places do is make the buffers delayed write so that the xfsbufd can issue them. This means that inode flushes can no longer happen asynchronously, but we still need a method for ensuring timely dispatch of buffers that we may be waiting for IO completion on. To do this, we allow delayed write buffers to be "promoted" in the delayed write queue. This effectively short-cuts the aging of the buffers, and combined with a demand flush of the xfsbufd we push all aged and promoted buffers out at the same time. Combine this with sorting the delayed write buffers to be written into disk offset order before dispatch, and we vastly improve the IO patterns for metadata writeback. IO is issued from one place and in a disk/elevator friendly order. Version 2: - use generic list sort function - when unmounting, push the delwri buffers first, then do sync inode reclaim so that reclaim doesn't block for 15 seconds waiting for delwri inode buffers to be aged and written before the inodes can be reclaimed. Perf results (average of 3 runs) on a debug XFS build (means allocation patterns are randomly varied, so runtimes are also a bit variable): Untar 2.6.32 kernel tarball, sync, then remove: Untar+sync rm -rf xfs-dev: 25.2s 13.0s xfs-dev-delwri-1: 22.5s 9.1s xfs-dev-delwri-2: 21.9s 8.4s 4 processes each creating 100,000, five byte files in separate directories concurrently, then 4 processes removing a directory each concurrently. create rm -rf xfs-dev: 8m32s 4m10s xfs-dev-delwri-1: 4m55s 3m42s xfs-dev-delwri-2: 4m56s 3m33s From SRS0+m/r0+34+fromorbit.com=dave@internode.on.net Mon Jan 4 18:07:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0507U9H158256 for ; Mon, 4 Jan 2010 18:07:30 -0600 X-ASG-Debug-ID: 1262650098-5c1200e80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BDCB5EC63BE for ; Mon, 4 Jan 2010 16:08:19 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id 4nja822nlXmXBYqr for ; Mon, 04 Jan 2010 16:08:19 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10928642-1927428 for ; Tue, 05 Jan 2010 10:38:18 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NRwy7-00069T-Hf for xfs@oss.sgi.com; Tue, 05 Jan 2010 11:08:15 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NRwuP-0007R7-VV for xfs@oss.sgi.com; Tue, 05 Jan 2010 11:04:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] xfs: Use delayed write for inodes rather than async Subject: [PATCH 1/3] xfs: Use delayed write for inodes rather than async Date: Tue, 5 Jan 2010 11:04:19 +1100 Message-Id: <1262649861-28530-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1262649861-28530-1-git-send-email-david@fromorbit.com> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1262650100 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18974 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We currently do background inode flush asynchronously, resulting in inodes being written in whatever order the background writeback issues them. Make the inode flush delayed write instead of asynchronous which will push the inode into the backing buffer but not issue any IO. The buffer will then sit in cache to be flushed by either an AIL push or the xfsbufd timing out the buffer. This will allow accumulation of dirty inode buffers in memory and allow optimisation of inode cluster writeback at the xfsbufd level where we have much greater queue depths than the block layer elevators. This effectively means that any inode that is written back by background writeback will be seen as flush locked during AIL pushing, and will result in the buffers being pushed from there. A future path will address this non-optimal form of writeback, too. A side effect of this delayed write mechanism is that background inode reclaim will no longer directly flush inodes, nor can it wait on the flush lock. The result is that inode reclaim must leave the inode in the reclaimable state until it is clean. Hence attempts to reclaim a dirty inode in the background will simply skip the inode until it is clean and this allows other mechanisms (i.e. xfsbufd) to do more optimal writeback of the dirty buffers. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 2 +- fs/xfs/linux-2.6/xfs_sync.c | 52 +++++++++++++++++++++++++++++------------- fs/xfs/xfs_inode.c | 31 ++++--------------------- fs/xfs/xfs_inode.h | 8 ++---- fs/xfs/xfs_inode_item.c | 10 +++++-- fs/xfs/xfs_mount.c | 9 ++++++- 6 files changed, 60 insertions(+), 52 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 0a4fd0e..f3dd67d 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -1074,7 +1074,7 @@ xfs_fs_write_inode( if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) goto out_unlock; - error = xfs_iflush(ip, XFS_IFLUSH_ASYNC_NOBLOCK); + error = xfs_iflush(ip, XFS_IFLUSH_DELWRI_NOBLOCK); } out_unlock: diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index c980d68..f974d1a 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -460,8 +460,8 @@ xfs_quiesce_fs( { int count = 0, pincount; + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); xfs_flush_buftarg(mp->m_ddev_targp, 0); - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); /* * This loop must run at least twice. The first instance of the loop @@ -585,7 +585,7 @@ xfs_sync_worker( if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); /* dgc: errors ignored here */ error = xfs_qm_sync(mp, SYNC_TRYLOCK); error = xfs_sync_fsdata(mp, SYNC_TRYLOCK); @@ -687,7 +687,7 @@ xfs_reclaim_inode( spin_unlock(&ip->i_flags_lock); write_unlock(&pag->pag_ici_lock); xfs_perag_put(pag); - return -EAGAIN; + return EAGAIN; } __xfs_iflags_set(ip, XFS_IRECLAIM); spin_unlock(&ip->i_flags_lock); @@ -695,32 +695,52 @@ xfs_reclaim_inode( xfs_perag_put(pag); /* - * If the inode is still dirty, then flush it out. If the inode - * is not in the AIL, then it will be OK to flush it delwri as - * long as xfs_iflush() does not keep any references to the inode. - * We leave that decision up to xfs_iflush() since it has the - * knowledge of whether it's OK to simply do a delwri flush of - * the inode or whether we need to wait until the inode is - * pulled from the AIL. - * We get the flush lock regardless, though, just to make sure - * we don't free it while it is being flushed. + * The inode is flushed delayed write. That means the flush lock + * may be held here and we will block for some time on it. Further, + * if we hold the inode lock, we prevent the AIL from locking and + * therefore being able to push the buffer. This means that we'll end + * up waiting here for the xfsbufd to age the buffer and write it out, + * which could be a long time. If we fail to get the flush lock, just + * clear the reclaim in progress state (we haven't cleared the reclaim + * needed state) so that the reclaim is delayed until the flush lock + * can be gained without blocking. */ xfs_ilock(ip, XFS_ILOCK_EXCL); - xfs_iflock(ip); + if (!xfs_iflock_nowait(ip)) + goto unlock_and_requeue; /* * In the case of a forced shutdown we rely on xfs_iflush() to * wait for the inode to be unpinned before returning an error. */ - if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) { - /* synchronize with xfs_iflush_done */ - xfs_iflock(ip); + if (!is_bad_inode(VFS_I(ip)) && !xfs_inode_clean(ip)) { + /* + * If we are flushing a dirty inode DELWRI, then don't + * immediately wait on the flush lock - requeue the inode for + * reclaim. Every time we re-enter and the flush lock is still + * held we will requeue at the initial flush lock check above. + * Otherwise, for synchronous writeback we synchronize with + * xfs_iflush_done by locking and unlocking the flush lock. + */ + if (xfs_iflush(ip, sync_mode) == 0) { + if (sync_mode == XFS_IFLUSH_DELWRI) + goto unlock_and_requeue; + xfs_iflock(ip); + xfs_ifunlock(ip); + } + } else { + /* need to unlock the clean inodes */ xfs_ifunlock(ip); } xfs_iunlock(ip, XFS_ILOCK_EXCL); xfs_ireclaim(ip); return 0; + +unlock_and_requeue: + xfs_iflags_clear(ip, XFS_IRECLAIM); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + return EAGAIN; } void diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index e5c9953..d175dca 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2832,7 +2832,7 @@ xfs_iflush( xfs_dinode_t *dip; xfs_mount_t *mp; int error; - int noblock = (flags == XFS_IFLUSH_ASYNC_NOBLOCK); + int noblock = (flags == XFS_IFLUSH_DELWRI_NOBLOCK); enum { INT_DELWRI = (1 << 0), INT_ASYNC = (1 << 1) }; XFS_STATS_INC(xs_iflush_count); @@ -2905,12 +2905,8 @@ xfs_iflush( case XFS_IFLUSH_DELWRI_ELSE_SYNC: flags = 0; break; - case XFS_IFLUSH_ASYNC_NOBLOCK: - case XFS_IFLUSH_ASYNC: - case XFS_IFLUSH_DELWRI_ELSE_ASYNC: - flags = INT_ASYNC; - break; case XFS_IFLUSH_DELWRI: + case XFS_IFLUSH_DELWRI_NOBLOCK: flags = INT_DELWRI; break; default: @@ -2920,15 +2916,11 @@ xfs_iflush( } } else { switch (flags) { + case XFS_IFLUSH_DELWRI_NOBLOCK: case XFS_IFLUSH_DELWRI_ELSE_SYNC: - case XFS_IFLUSH_DELWRI_ELSE_ASYNC: case XFS_IFLUSH_DELWRI: flags = INT_DELWRI; break; - case XFS_IFLUSH_ASYNC_NOBLOCK: - case XFS_IFLUSH_ASYNC: - flags = INT_ASYNC; - break; case XFS_IFLUSH_SYNC: flags = 0; break; @@ -2971,13 +2963,10 @@ xfs_iflush( if (error) goto cluster_corrupt_out; - if (flags & INT_DELWRI) { + if (flags & INT_DELWRI) xfs_bdwrite(mp, bp); - } else if (flags & INT_ASYNC) { - error = xfs_bawrite(mp, bp); - } else { + else error = xfs_bwrite(mp, bp); - } return error; corrupt_out: @@ -3012,16 +3001,6 @@ xfs_iflush_int( iip = ip->i_itemp; mp = ip->i_mount; - - /* - * If the inode isn't dirty, then just release the inode - * flush lock and do nothing. - */ - if (xfs_inode_clean(ip)) { - xfs_ifunlock(ip); - return 0; - } - /* set *dip = inode's place in the buffer */ dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index ec1f28c..559feeb 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -423,11 +423,9 @@ static inline void xfs_ifunlock(xfs_inode_t *ip) * Flags for xfs_iflush() */ #define XFS_IFLUSH_DELWRI_ELSE_SYNC 1 -#define XFS_IFLUSH_DELWRI_ELSE_ASYNC 2 -#define XFS_IFLUSH_SYNC 3 -#define XFS_IFLUSH_ASYNC 4 -#define XFS_IFLUSH_DELWRI 5 -#define XFS_IFLUSH_ASYNC_NOBLOCK 6 +#define XFS_IFLUSH_SYNC 2 +#define XFS_IFLUSH_DELWRI 3 +#define XFS_IFLUSH_DELWRI_NOBLOCK 4 /* * Flags for xfs_itruncate_start(). diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index f38855d..beb7d9f 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -867,10 +867,14 @@ xfs_inode_item_push( iip->ili_format.ilf_fields != 0); /* - * Write out the inode. The completion routine ('iflush_done') will - * pull it from the AIL, mark it clean, unlock the flush lock. + * Push the inode to it's backing buffer. This will not remove + * the inode from the AIL - a further push will be required to trigger + * a buffer push. However, this allows all the dirty inodes to be pushed to + * the buffer before it is pushed to disk. THe buffer IO completion + * will pull th einode from the AIL, mark it clean and unlock the flush + * lock. */ - (void) xfs_iflush(ip, XFS_IFLUSH_ASYNC); + (void) xfs_iflush(ip, XFS_IFLUSH_DELWRI); xfs_iunlock(ip, XFS_ILOCK_SHARED); return; diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 223d9c3..16c4654 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -1444,7 +1444,14 @@ xfs_unmountfs( * need to force the log first. */ xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); - xfs_reclaim_inodes(mp, XFS_IFLUSH_ASYNC); + + /* + * flush the delwri buffers before the reclaim so that it doesn't + * block for a long time waiting to reclaim inodes that are already + * in the delwri state. + */ + XFS_bflush(mp->m_ddev_targp); + xfs_reclaim_inodes(mp, XFS_IFLUSH_SYNC); xfs_qm_unmount(mp); -- 1.6.5 From SRS0+m/r0+34+fromorbit.com=dave@internode.on.net Mon Jan 4 18:07:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0507UM5158255 for ; Mon, 4 Jan 2010 18:07:30 -0600 X-ASG-Debug-ID: 1262650097-5371014f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 48B43EC63BB for ; Mon, 4 Jan 2010 16:08:18 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id 3KZL0I75DQj0tRVJ for ; Mon, 04 Jan 2010 16:08:18 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 10928640-1927428 for ; Tue, 05 Jan 2010 10:38:17 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NRwy7-00069U-JE for xfs@oss.sgi.com; Tue, 05 Jan 2010 11:08:15 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NRwuQ-0007R9-2E for xfs@oss.sgi.com; Tue, 05 Jan 2010 11:04:26 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] xfs: Don't issue buffer IO direct from AIL push Subject: [PATCH 2/3] xfs: Don't issue buffer IO direct from AIL push Date: Tue, 5 Jan 2010 11:04:20 +1100 Message-Id: <1262649861-28530-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1262649861-28530-1-git-send-email-david@fromorbit.com> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1262650100 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18974 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean All buffers logged into the AIL are marked as delayed write. When the AIL needs to push the buffer out, it issues an async write of the buffer. This means that IO patterns are dependent on the order of buffers in the AIL. Instead of flushing the buffer, promote the buffer in the delayed write list so that the next time the xfsbufd is run the buffer will be flushed by the xfsbufd. Return the state to the xfsaild that the buffer was promoted so that the xfsaild knows that it needs to cause the xfsbufd to run to flush the buffers that were promoted. Using the xfsbufd for issuing the IO allows us to dispatch all buffer IO from the one queue. This means that we can make much more enlightened decisions on what order to flush buffers to disk as we don't have multiple places issuing IO. Optimisations to xfsbufd will be in a future patch. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_buf.c | 22 +++++++++ fs/xfs/linux-2.6/xfs_buf.h | 11 +++++ fs/xfs/linux-2.6/xfs_trace.h | 1 + fs/xfs/quota/xfs_dquot_item.c | 87 +++++------------------------------ fs/xfs/quota/xfs_dquot_item.h | 4 -- fs/xfs/xfs_buf_item.c | 64 ++++++++++++++------------ fs/xfs/xfs_inode_item.c | 99 ++++++---------------------------------- fs/xfs/xfs_inode_item.h | 6 --- fs/xfs/xfs_trans_ail.c | 7 +++ 9 files changed, 104 insertions(+), 197 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 759cbaf..aaefc33 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -1631,6 +1631,28 @@ xfs_buf_delwri_dequeue( trace_xfs_buf_delwri_dequeue(bp, _RET_IP_); } +/* + * If a delwri buffer needs to be pushed before it has aged out, then + * promote it to the head of the delwri queue so that it will be flushed + * on the next xfsbufd run. + */ +void +xfs_buf_delwri_promote( + xfs_buf_t *bp) +{ + struct list_head *dwq = &bp->b_target->bt_delwrite_queue; + spinlock_t *dwlk = &bp->b_target->bt_delwrite_lock; + long age = xfs_buf_age_centisecs * msecs_to_jiffies(10) + 1; + + spin_lock(dwlk); + ASSERT(bp->b_flags & XBF_DELWRI); + ASSERT(bp->b_flags & _XBF_DELWRI_Q); + list_del(&bp->b_list); + list_add(&bp->b_list, dwq); + bp->b_queuetime = jiffies - age; + spin_unlock(dwlk); +} + STATIC void xfs_buf_runall_queues( struct workqueue_struct *queue) diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h index a34c7b5..a7c6895 100644 --- a/fs/xfs/linux-2.6/xfs_buf.h +++ b/fs/xfs/linux-2.6/xfs_buf.h @@ -261,6 +261,7 @@ extern int xfs_buf_ispin(xfs_buf_t *); /* Delayed Write Buffer Routines */ extern void xfs_buf_delwri_dequeue(xfs_buf_t *); +extern void xfs_buf_delwri_promote(xfs_buf_t *); /* Buffer Daemon Setup Routines */ extern int xfs_buf_init(void); @@ -424,6 +425,16 @@ extern void xfs_free_buftarg(struct xfs_mount *, struct xfs_buftarg *); extern void xfs_wait_buftarg(xfs_buftarg_t *); extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int); extern int xfs_flush_buftarg(xfs_buftarg_t *, int); + +/* + * run the xfsbufd on demand to age buffers. Use in combination with + * xfs_buf_delwri_promote() to flus delayed write buffers efficiently. + */ +static inline void xfs_flush_buftarg_delwri(xfs_buftarg_t *btp) +{ + wake_up_process(btp->bt_task); +} + #ifdef CONFIG_KDB_MODULES extern struct list_head *xfs_get_buftarg_list(void); #endif diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h index 2b0819a..bba87b7 100644 --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h @@ -464,6 +464,7 @@ DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unlock); DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unlock_stale); DEFINE_BUF_ITEM_EVENT(xfs_buf_item_committed); DEFINE_BUF_ITEM_EVENT(xfs_buf_item_push); +DEFINE_BUF_ITEM_EVENT(xfs_buf_item_pushbuf); DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf); DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf_recur); DEFINE_BUF_ITEM_EVENT(xfs_trans_getsb); diff --git a/fs/xfs/quota/xfs_dquot_item.c b/fs/xfs/quota/xfs_dquot_item.c index d0d4a9a..bc7e00e 100644 --- a/fs/xfs/quota/xfs_dquot_item.c +++ b/fs/xfs/quota/xfs_dquot_item.c @@ -212,68 +212,33 @@ xfs_qm_dquot_logitem_pushbuf( xfs_dquot_t *dqp; xfs_mount_t *mp; xfs_buf_t *bp; - uint dopush; dqp = qip->qli_dquot; ASSERT(XFS_DQ_IS_LOCKED(dqp)); /* - * The qli_pushbuf_flag keeps others from - * trying to duplicate our effort. - */ - ASSERT(qip->qli_pushbuf_flag != 0); - ASSERT(qip->qli_push_owner == current_pid()); - - /* * If flushlock isn't locked anymore, chances are that the * inode flush completed and the inode was taken off the AIL. * So, just get out. */ if (completion_done(&dqp->q_flush) || ((qip->qli_item.li_flags & XFS_LI_IN_AIL) == 0)) { - qip->qli_pushbuf_flag = 0; xfs_dqunlock(dqp); return; } mp = dqp->q_mount; bp = xfs_incore(mp->m_ddev_targp, qip->qli_format.qlf_blkno, - XFS_QI_DQCHUNKLEN(mp), - XFS_INCORE_TRYLOCK); - if (bp != NULL) { - if (XFS_BUF_ISDELAYWRITE(bp)) { - dopush = ((qip->qli_item.li_flags & XFS_LI_IN_AIL) && - !completion_done(&dqp->q_flush)); - qip->qli_pushbuf_flag = 0; - xfs_dqunlock(dqp); - - if (XFS_BUF_ISPINNED(bp)) { - xfs_log_force(mp, (xfs_lsn_t)0, - XFS_LOG_FORCE); - } - if (dopush) { - int error; -#ifdef XFSRACEDEBUG - delay_for_intr(); - delay(300); -#endif - error = xfs_bawrite(mp, bp); - if (error) - xfs_fs_cmn_err(CE_WARN, mp, - "xfs_qm_dquot_logitem_pushbuf: pushbuf error %d on qip %p, bp %p", - error, qip, bp); - } else { - xfs_buf_relse(bp); - } - } else { - qip->qli_pushbuf_flag = 0; - xfs_dqunlock(dqp); - xfs_buf_relse(bp); - } + XFS_QI_DQCHUNKLEN(mp), XFS_INCORE_TRYLOCK); + if (!bp) { + xfs_dqunlock(dqp); return; } - qip->qli_pushbuf_flag = 0; xfs_dqunlock(dqp); + if (XFS_BUF_ISDELAYWRITE(bp)) + xfs_buf_delwri_promote(bp); + xfs_buf_relse(bp); + return; } /* @@ -291,50 +256,24 @@ xfs_qm_dquot_logitem_trylock( xfs_dq_logitem_t *qip) { xfs_dquot_t *dqp; - uint retval; dqp = qip->qli_dquot; if (atomic_read(&dqp->q_pincount) > 0) - return (XFS_ITEM_PINNED); + return XFS_ITEM_PINNED; if (! xfs_qm_dqlock_nowait(dqp)) - return (XFS_ITEM_LOCKED); + return XFS_ITEM_LOCKED; - retval = XFS_ITEM_SUCCESS; if (!xfs_dqflock_nowait(dqp)) { /* - * The dquot is already being flushed. It may have been - * flushed delayed write, however, and we don't want to - * get stuck waiting for that to complete. So, we want to check - * to see if we can lock the dquot's buffer without sleeping. - * If we can and it is marked for delayed write, then we - * hold it and send it out from the push routine. We don't - * want to do that now since we might sleep in the device - * strategy routine. We also don't want to grab the buffer lock - * here because we'd like not to call into the buffer cache - * while holding the AIL lock. - * Make sure to only return PUSHBUF if we set pushbuf_flag - * ourselves. If someone else is doing it then we don't - * want to go to the push routine and duplicate their efforts. + * dquot has already been flushed to the backing buffer, + * leave it locked, pushbuf routine will unlock it. */ - if (qip->qli_pushbuf_flag == 0) { - qip->qli_pushbuf_flag = 1; - ASSERT(qip->qli_format.qlf_blkno == dqp->q_blkno); -#ifdef DEBUG - qip->qli_push_owner = current_pid(); -#endif - /* - * The dquot is left locked. - */ - retval = XFS_ITEM_PUSHBUF; - } else { - retval = XFS_ITEM_FLUSHING; - xfs_dqunlock_nonotify(dqp); - } + return XFS_ITEM_PUSHBUF; } ASSERT(qip->qli_item.li_flags & XFS_LI_IN_AIL); - return (retval); + return XFS_ITEM_SUCCESS; } diff --git a/fs/xfs/quota/xfs_dquot_item.h b/fs/xfs/quota/xfs_dquot_item.h index 5a63253..5acae2a 100644 --- a/fs/xfs/quota/xfs_dquot_item.h +++ b/fs/xfs/quota/xfs_dquot_item.h @@ -27,10 +27,6 @@ typedef struct xfs_dq_logitem { xfs_log_item_t qli_item; /* common portion */ struct xfs_dquot *qli_dquot; /* dquot ptr */ xfs_lsn_t qli_flush_lsn; /* lsn at last flush */ - unsigned short qli_pushbuf_flag; /* 1 bit used in push_ail */ -#ifdef DEBUG - uint64_t qli_push_owner; -#endif xfs_dq_logformat_t qli_format; /* logged structure */ } xfs_dq_logitem_t; diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index a30f7e9..0f30250 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c @@ -467,8 +467,10 @@ xfs_buf_item_unpin_remove( /* * This is called to attempt to lock the buffer associated with this * buf log item. Don't sleep on the buffer lock. If we can't get - * the lock right away, return 0. If we can get the lock, pull the - * buffer from the free list, mark it busy, and return 1. + * the lock right away, return 0. If we can get the lock, take a + * reference to the buffer. If this is a delayed write buffer that + * needs AIL help to be written back, invoke the pushbuf routine + * rather than the normal success path. */ STATIC uint xfs_buf_item_trylock( @@ -477,24 +479,18 @@ xfs_buf_item_trylock( xfs_buf_t *bp; bp = bip->bli_buf; - - if (XFS_BUF_ISPINNED(bp)) { + if (XFS_BUF_ISPINNED(bp)) return XFS_ITEM_PINNED; - } - - if (!XFS_BUF_CPSEMA(bp)) { + if (!XFS_BUF_CPSEMA(bp)) return XFS_ITEM_LOCKED; - } - /* - * Remove the buffer from the free list. Only do this - * if it's on the free list. Private buffers like the - * superblock buffer are not. - */ + /* take a reference to the buffer. */ XFS_BUF_HOLD(bp); ASSERT(!(bip->bli_flags & XFS_BLI_STALE)); trace_xfs_buf_item_trylock(bip); + if (XFS_BUF_ISDELAYWRITE(bp)) + return XFS_ITEM_PUSHBUF; return XFS_ITEM_SUCCESS; } @@ -626,11 +622,9 @@ xfs_buf_item_committed( } /* - * This is called to asynchronously write the buffer associated with this - * buf log item out to disk. The buffer will already have been locked by - * a successful call to xfs_buf_item_trylock(). If the buffer still has - * B_DELWRI set, then get it going out to disk with a call to bawrite(). - * If not, then just release the buffer. + * The buffer is locked, but is not a delayed write buffer. This happens + * if we race with IO completion and hence we don't want to try to write it + * again. Just release the buffer. */ STATIC void xfs_buf_item_push( @@ -642,17 +636,29 @@ xfs_buf_item_push( trace_xfs_buf_item_push(bip); bp = bip->bli_buf; + ASSERT(!XFS_BUF_ISDELAYWRITE(bp)); + xfs_buf_relse(bp); +} - if (XFS_BUF_ISDELAYWRITE(bp)) { - int error; - error = xfs_bawrite(bip->bli_item.li_mountp, bp); - if (error) - xfs_fs_cmn_err(CE_WARN, bip->bli_item.li_mountp, - "xfs_buf_item_push: pushbuf error %d on bip %p, bp %p", - error, bip, bp); - } else { - xfs_buf_relse(bp); - } +/* + * The buffer is locked and is a delayed write buffer. Promote the buffer + * in the delayed write queue as the caller knows that they must invoke + * the xfsbufd to get this buffer written. We have to unlock the buffer + * to allow the xfsbufd to write it, too. + */ +STATIC void +xfs_buf_item_pushbuf( + xfs_buf_log_item_t *bip) +{ + xfs_buf_t *bp; + + ASSERT(!(bip->bli_flags & XFS_BLI_STALE)); + trace_xfs_buf_item_pushbuf(bip); + + bp = bip->bli_buf; + ASSERT(XFS_BUF_ISDELAYWRITE(bp)); + xfs_buf_delwri_promote(bp); + xfs_buf_relse(bp); } /* ARGSUSED */ @@ -677,7 +683,7 @@ static struct xfs_item_ops xfs_buf_item_ops = { .iop_committed = (xfs_lsn_t(*)(xfs_log_item_t*, xfs_lsn_t)) xfs_buf_item_committed, .iop_push = (void(*)(xfs_log_item_t*))xfs_buf_item_push, - .iop_pushbuf = NULL, + .iop_pushbuf = (void(*)(xfs_log_item_t*))xfs_buf_item_pushbuf, .iop_committing = (void(*)(xfs_log_item_t*, xfs_lsn_t)) xfs_buf_item_committing }; diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index beb7d9f..0c4e719 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -602,33 +602,20 @@ xfs_inode_item_trylock( if (!xfs_iflock_nowait(ip)) { /* - * If someone else isn't already trying to push the inode - * buffer, we get to do it. + * inode has already been flushed to the backing buffer, + * leave it locked in shared mode, pushbuf routine will + * unlock it. */ - if (iip->ili_pushbuf_flag == 0) { - iip->ili_pushbuf_flag = 1; -#ifdef DEBUG - iip->ili_push_owner = current_pid(); -#endif - /* - * Inode is left locked in shared mode. - * Pushbuf routine gets to unlock it. - */ - return XFS_ITEM_PUSHBUF; - } else { - /* - * We hold the AIL lock, so we must specify the - * NONOTIFY flag so that we won't double trip. - */ - xfs_iunlock(ip, XFS_ILOCK_SHARED|XFS_IUNLOCK_NONOTIFY); - return XFS_ITEM_FLUSHING; - } - /* NOTREACHED */ + return XFS_ITEM_PUSHBUF; } /* Stale items should force out the iclog */ if (ip->i_flags & XFS_ISTALE) { xfs_ifunlock(ip); + /* + * we hold the AIL lock - notify the unlock routine of this + * so it doesn't try to get the lock again. + */ xfs_iunlock(ip, XFS_ILOCK_SHARED|XFS_IUNLOCK_NONOTIFY); return XFS_ITEM_PINNED; } @@ -746,11 +733,8 @@ xfs_inode_item_committed( * This gets called by xfs_trans_push_ail(), when IOP_TRYLOCK * failed to get the inode flush lock but did get the inode locked SHARED. * Here we're trying to see if the inode buffer is incore, and if so whether it's - * marked delayed write. If that's the case, we'll initiate a bawrite on that - * buffer to expedite the process. - * - * We aren't holding the AIL lock (or the flush lock) when this gets called, - * so it is inherently race-y. + * marked delayed write. If that's the case, we'll promote it and that will + * allow the caller to write the buffer by triggering the xfsbufd to run. */ STATIC void xfs_inode_item_pushbuf( @@ -759,26 +743,16 @@ xfs_inode_item_pushbuf( xfs_inode_t *ip; xfs_mount_t *mp; xfs_buf_t *bp; - uint dopush; ip = iip->ili_inode; - ASSERT(xfs_isilocked(ip, XFS_ILOCK_SHARED)); /* - * The ili_pushbuf_flag keeps others from - * trying to duplicate our effort. - */ - ASSERT(iip->ili_pushbuf_flag != 0); - ASSERT(iip->ili_push_owner == current_pid()); - - /* * If a flush is not in progress anymore, chances are that the * inode was taken off the AIL. So, just get out. */ if (completion_done(&ip->i_flush) || ((iip->ili_item.li_flags & XFS_LI_IN_AIL) == 0)) { - iip->ili_pushbuf_flag = 0; xfs_iunlock(ip, XFS_ILOCK_SHARED); return; } @@ -787,54 +761,12 @@ xfs_inode_item_pushbuf( bp = xfs_incore(mp->m_ddev_targp, iip->ili_format.ilf_blkno, iip->ili_format.ilf_len, XFS_INCORE_TRYLOCK); - if (bp != NULL) { - if (XFS_BUF_ISDELAYWRITE(bp)) { - /* - * We were racing with iflush because we don't hold - * the AIL lock or the flush lock. However, at this point, - * we have the buffer, and we know that it's dirty. - * So, it's possible that iflush raced with us, and - * this item is already taken off the AIL. - * If not, we can flush it async. - */ - dopush = ((iip->ili_item.li_flags & XFS_LI_IN_AIL) && - !completion_done(&ip->i_flush)); - iip->ili_pushbuf_flag = 0; - xfs_iunlock(ip, XFS_ILOCK_SHARED); - - trace_xfs_inode_item_push(bp, _RET_IP_); - - if (XFS_BUF_ISPINNED(bp)) { - xfs_log_force(mp, (xfs_lsn_t)0, - XFS_LOG_FORCE); - } - if (dopush) { - int error; - error = xfs_bawrite(mp, bp); - if (error) - xfs_fs_cmn_err(CE_WARN, mp, - "xfs_inode_item_pushbuf: pushbuf error %d on iip %p, bp %p", - error, iip, bp); - } else { - xfs_buf_relse(bp); - } - } else { - iip->ili_pushbuf_flag = 0; - xfs_iunlock(ip, XFS_ILOCK_SHARED); - xfs_buf_relse(bp); - } - return; - } - /* - * We have to be careful about resetting pushbuf flag too early (above). - * Even though in theory we can do it as soon as we have the buflock, - * we don't want others to be doing work needlessly. They'll come to - * this function thinking that pushing the buffer is their - * responsibility only to find that the buffer is still locked by - * another doing the same thing - */ - iip->ili_pushbuf_flag = 0; xfs_iunlock(ip, XFS_ILOCK_SHARED); + if (!bp) + return; + if (XFS_BUF_ISDELAYWRITE(bp)) + xfs_buf_delwri_promote(bp); + xfs_buf_relse(bp); return; } @@ -938,7 +870,6 @@ xfs_inode_item_init( /* We have zeroed memory. No need ... iip->ili_extents_buf = NULL; - iip->ili_pushbuf_flag = 0; */ iip->ili_format.ilf_type = XFS_LI_INODE; diff --git a/fs/xfs/xfs_inode_item.h b/fs/xfs/xfs_inode_item.h index cc8df1a..9a46795 100644 --- a/fs/xfs/xfs_inode_item.h +++ b/fs/xfs/xfs_inode_item.h @@ -144,12 +144,6 @@ typedef struct xfs_inode_log_item { data exts */ struct xfs_bmbt_rec *ili_aextents_buf; /* array of logged attr exts */ - unsigned int ili_pushbuf_flag; /* one bit used in push_ail */ - -#ifdef DEBUG - uint64_t ili_push_owner; /* one who sets pushbuf_flag - above gets to push the buf */ -#endif #ifdef XFS_TRANS_DEBUG int ili_root_size; char *ili_orig_root; diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index 063dfbd..feb779a 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c @@ -253,6 +253,7 @@ xfsaild_push( int flush_log, count, stuck; xfs_mount_t *mp = ailp->xa_mount; struct xfs_ail_cursor *cur = &ailp->xa_cursors; + int push_xfsbufd = 0; spin_lock(&ailp->xa_lock); xfs_trans_ail_cursor_init(ailp, cur); @@ -308,6 +309,7 @@ xfsaild_push( XFS_STATS_INC(xs_push_ail_pushbuf); IOP_PUSHBUF(lip); last_pushed_lsn = lsn; + push_xfsbufd = 1; break; case XFS_ITEM_PINNED: @@ -374,6 +376,11 @@ xfsaild_push( xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); } + if (push_xfsbufd) { + /* we've got delayed write buffers to flush */ + xfs_flush_buftarg_delwri(mp->m_ddev_targp); + } + if (!count) { /* We're past our target or empty, so idle */ last_pushed_lsn = 0; -- 1.6.5 From SRS0+2nn4+34+fromorbit.com=dave@internode.on.net Mon Jan 4 18:07:39 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0507cVp158295 for ; Mon, 4 Jan 2010 18:07:38 -0600 X-ASG-Debug-ID: 1262650107-324300160000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6131013EEB7 for ; Mon, 4 Jan 2010 16:08:27 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id pxzNUC0mib9KJOGN for ; Mon, 04 Jan 2010 16:08:27 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11051502-1927428 for ; Tue, 05 Jan 2010 10:38:26 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NRwy7-00069W-Ku for xfs@oss.sgi.com; Tue, 05 Jan 2010 11:08:15 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NRwuQ-0007RC-3y for xfs@oss.sgi.com; Tue, 05 Jan 2010 11:04:26 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] xfs: Sort delayed write buffers before dispatch Subject: [PATCH 3/3] xfs: Sort delayed write buffers before dispatch Date: Tue, 5 Jan 2010 11:04:21 +1100 Message-Id: <1262649861-28530-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1262649861-28530-1-git-send-email-david@fromorbit.com> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1262650109 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18973 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently when the xfsbufd writes delayed write buffers, it pushes them to disk in the order they come off the delayed write list. If there are lots of buffers ѕpread widely over the disk, this results in overwhelming the elevator sort queues in the block layer and we end up losing the posibility of merging adjacent buffers to minimise the number of IOs. Use the new generic list_sort function to sort the delwri dispatch queue before issue to ensure that the buffers are pushed in the most friendly order possible to the lower layers. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_buf.c | 90 +++++++++++++++++++++++++++++++------------ 1 files changed, 65 insertions(+), 25 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index aaefc33..15c0dea 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "xfs_sb.h" #include "xfs_inum.h" @@ -1644,12 +1645,18 @@ xfs_buf_delwri_promote( spinlock_t *dwlk = &bp->b_target->bt_delwrite_lock; long age = xfs_buf_age_centisecs * msecs_to_jiffies(10) + 1; - spin_lock(dwlk); ASSERT(bp->b_flags & XBF_DELWRI); ASSERT(bp->b_flags & _XBF_DELWRI_Q); - list_del(&bp->b_list); - list_add(&bp->b_list, dwq); + + /* + * Check the buffer age before locking the delayed write queue as we + * don't need to promote buffers that are already past the flush age. + */ + if (bp->b_queuetime < jiffies - age) + return; bp->b_queuetime = jiffies - age; + spin_lock(dwlk); + list_move(&bp->b_list, dwq); spin_unlock(dwlk); } @@ -1723,14 +1730,42 @@ xfs_buf_delwri_split( } +/* + * Compare function is more complex than it needs to be because + * the return value is only 32 bits and we are doing comparisons + * on 64 bit values + */ +int +xfs_buf_cmp( + void *priv, + struct list_head *a, + struct list_head *b) +{ + struct xfs_buf *ap = container_of(a, struct xfs_buf, b_list); + struct xfs_buf *bp = container_of(b, struct xfs_buf, b_list); + xfs_daddr_t diff; + + diff = ap->b_bn - bp->b_bn; + if (diff < 0) + return -1; + if (diff > 0) + return 1; + return 0; +} + +void +xfs_buf_delwri_sort( + xfs_buftarg_t *target, + struct list_head *list) +{ + list_sort(NULL, list, xfs_buf_cmp); +} + STATIC int xfsbufd( void *data) { - struct list_head tmp; - xfs_buftarg_t *target = (xfs_buftarg_t *)data; - int count; - xfs_buf_t *bp; + xfs_buftarg_t *target = (xfs_buftarg_t *)data; current->flags |= PF_MEMALLOC; @@ -1739,6 +1774,8 @@ xfsbufd( do { long age = xfs_buf_age_centisecs * msecs_to_jiffies(10); long tout = age; + int count = 0; + struct list_head tmp; if (unlikely(freezing(current))) { set_bit(XBT_FORCE_SLEEP, &target->bt_flags); @@ -1753,11 +1790,10 @@ xfsbufd( schedule_timeout_interruptible(tout); xfs_buf_delwri_split(target, &tmp, age); - count = 0; + xfs_buf_delwri_sort(target, &tmp); while (!list_empty(&tmp)) { - bp = list_entry(tmp.next, xfs_buf_t, b_list); - ASSERT(target == bp->b_target); - + struct xfs_buf *bp; + bp = list_first_entry(&tmp, struct xfs_buf, b_list); list_del_init(&bp->b_list); xfs_buf_iostrategy(bp); count++; @@ -1783,38 +1819,42 @@ xfs_flush_buftarg( xfs_buftarg_t *target, int wait) { - struct list_head tmp; - xfs_buf_t *bp, *n; + xfs_buf_t *bp; int pincount = 0; + LIST_HEAD(tmp_list); + LIST_HEAD(wait_list); xfs_buf_runall_queues(xfsconvertd_workqueue); xfs_buf_runall_queues(xfsdatad_workqueue); xfs_buf_runall_queues(xfslogd_workqueue); set_bit(XBT_FORCE_FLUSH, &target->bt_flags); - pincount = xfs_buf_delwri_split(target, &tmp, 0); + pincount = xfs_buf_delwri_split(target, &tmp_list, 0); /* - * Dropped the delayed write list lock, now walk the temporary list + * Dropped the delayed write list lock, now walk the temporary list. + * All I/O is issued async and then if we need to wait for completion + * we do that after issuing all the IO. */ - list_for_each_entry_safe(bp, n, &tmp, b_list) { + xfs_buf_delwri_sort(target, &tmp_list); + while (!list_empty(&tmp_list)) { + struct xfs_buf *bp; + bp = list_first_entry(&tmp_list, struct xfs_buf, b_list); ASSERT(target == bp->b_target); - if (wait) + list_del_init(&bp->b_list); + if (wait) { bp->b_flags &= ~XBF_ASYNC; - else - list_del_init(&bp->b_list); - + list_add(&bp->b_list, &wait_list); + } xfs_buf_iostrategy(bp); } if (wait) blk_run_address_space(target->bt_mapping); - /* - * Remaining list items must be flushed before returning - */ - while (!list_empty(&tmp)) { - bp = list_entry(tmp.next, xfs_buf_t, b_list); + /* Now wait for IO to complete if required. */ + while (!list_empty(&wait_list)) { + bp = list_first_entry(&wait_list, struct xfs_buf, b_list); list_del_init(&bp->b_list); xfs_iowait(bp); -- 1.6.5 From SRS0+eCYC+34+fromorbit.com=david@internode.on.net Mon Jan 4 18:41:41 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o050ff5l160343 for ; Mon, 4 Jan 2010 18:41:41 -0600 X-ASG-Debug-ID: 1262652149-632f01100000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DF9F61C2AFCE for ; Mon, 4 Jan 2010 16:42:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id 1oLV6LiOnHmOiMIU for ; Mon, 04 Jan 2010 16:42:29 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11163878-1927428 for multiple; Tue, 05 Jan 2010 11:11:19 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NRxU5-0006Bv-9V; Tue, 05 Jan 2010 11:41:17 +1100 Date: Tue, 5 Jan 2010 11:41:17 +1100 From: Dave Chinner To: Chris Mason , tytso@mit.edu, Evgeniy Polyakov , Peter Grandi , xfs@oss.sgi.com, reiserfs-devel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org, jfs-discussion@lists.sourceforge.net, ext-users , linux-nilfs@vger.kernel.org X-ASG-Orig-Subj: Re: [Jfs-discussion] benchmark results Subject: Re: [Jfs-discussion] benchmark results Message-ID: <20100105004117.GP13802@discord.disaster> References: <19251.26403.762180.228181@tree.ty.sabi.co.uk> <20091224212756.GM21594@thunk.org> <20091224234631.GA1028@ioremap.net> <20091225161146.GC32757@thunk.org> <20100104162748.GA11932@think> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100104162748.GA11932@think> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1262652150 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18975 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 04, 2010 at 11:27:48AM -0500, Chris Mason wrote: > On Fri, Dec 25, 2009 at 11:11:46AM -0500, tytso@mit.edu wrote: > > On Fri, Dec 25, 2009 at 02:46:31AM +0300, Evgeniy Polyakov wrote: > > > > [1] http://samba.org/ftp/tridge/dbench/README > > > > > > Was not able to resist to write a small notice, what no matter what, but > > > whatever benchmark is running, it _does_ show system behaviour in one > > > or another condition. And when system behaves rather badly, it is quite > > > a common comment, that benchmark was useless. But it did show that > > > system has a problem, even if rarely triggered one :) > > > > If people are using benchmarks to improve file system, and a benchmark > > shows a problem, then trying to remedy the performance issue is a good > > thing to do, of course. Sometimes, though the case which is > > demonstrated by a poor benchmark is an extremely rare corner case that > > doesn't accurately reflect common real-life workloads --- and if > > addressing it results in a tradeoff which degrades much more common > > real-life situations, then that would be a bad thing. > > > > In situations where benchmarks are used competitively, it's rare that > > it's actually a *problem*. Instead it's much more common that a > > developer is trying to prove that their file system is *better* to > > gullible users who think that a single one-dimentional number is > > enough for them to chose file system X over file system Y. > > [ Look at all this email from my vacation...sorry for the delay ] > > It's important that people take benchmarks from filesystem developers > with a big grain of salt, which is one reason the boxacle.net results > are so nice. Steve more than willing to take patches and experiment to > improve a given FS results, but his business is a fair representation of > performance and it shows. Just looking at the results there, I notice that the RAID system XFS mailserver results dropped by an order of magnitude between 2.6.29-rc2 and 2.6.31. The single disk results are pretty much identical across the two kernels. IIRC, in 2.6.31 RAID0 started passing barriers through so I suspect this is the issue. However, seeing as dmesg is not collected by the scripts after the run and the output of the mounttab does not show default options, I cannot tell if this is the case. This might be worth checking by running XFS with the "nobarrier" mount option.... FWIW, is it possible to get these benchmarks run on each filesystem for each kernel release so ext/xfs/btrfs all get some regular basic performance regression test coverage? Cheers, Dave. -- Dave Chinner david@fromorbit.com From k@adamski.org Mon Jan 4 18:47:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, HTML_MESSAGE autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o050lXP9160693 for ; Mon, 4 Jan 2010 18:47:33 -0600 X-ASG-Debug-ID: 1262652503-5c14024a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from radon.netxsys.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DE8F7EC72D0 for ; Mon, 4 Jan 2010 16:48:23 -0800 (PST) Received: from radon.netxsys.com (radon.netxsys.com [204.16.202.162]) by cuda.sgi.com with ESMTP id PyfXqyV2LNNg9cbL for ; Mon, 04 Jan 2010 16:48:23 -0800 (PST) Received: from [205.233.151.7] (Oxygen.NetXSys.Com [205.233.151.7]) by radon.netxsys.com (Postfix) with ESMTP id 87F48C000091 for ; Mon, 4 Jan 2010 19:48:22 -0500 (EST) X-ASG-Orig-Subj: NFS export broke with change from ext3 to xfs Subject: NFS export broke with change from ext3 to xfs From: Krzysztof Adamski To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary="=-h5MnDdAbcldGztDVy+58" Date: Mon, 04 Jan 2010 19:48:20 -0500 Message-Id: <1262652500.24160.27.camel@oxygen.netxsys.com> Mime-Version: 1.0 X-Mailer: Evolution 2.22.3.1 X-Barracuda-Connect: radon.netxsys.com[204.16.202.162] X-Barracuda-Start-Time: 1262652503 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18976 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --=-h5MnDdAbcldGztDVy+58 Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi All, I just changed one filesystem on my mythbox from ext3 to xfs, and now I can't get a client machine to NFS mount from it. This is the export file on the server: /file-store/nfs-roots/f1/home f1(rw,no_root_squash,sync,no_subtree_check) /file-store/nfs-roots/f1/usr f1(rw,no_root_squash,sync,no_subtree_check) /file-store/nfs-roots/f1/var f1(rw,no_root_squash,sync,no_subtree_check) and on the client(f1) the three filesystems are mount on /home, /usr, and /var This worked fine when /file-store on the server was formatted with ext3, now that it is formatted with xfs I get this message on the client: mount.nfs: Stale NFS file handle I get this message 3 times. Nothing else changed, both systems are Debian Lenny with custom kernel. Server is 2.6.28, client is 2.6.29.6. NFS is version 3. The fstab on the server has this: /dev/mapper/big--raid-file--store /file-store xfs noatime,logbsize=256k,inode64 0 1 The reason for the change of the filesystem was an upgrade of the drives in the RAID, now the filesystem is 7T instead of 2.4T, nothing else was changed. Why did this work with ext3 and does not with XFS? What can I do to get this to work, short of reverting to ext3? K --=-h5MnDdAbcldGztDVy+58 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 7bit Hi All,

I just changed one filesystem on my mythbox from ext3 to xfs, and now I can't get a client machine to NFS mount from it.

This is the export file on the server:
/file-store/nfs-roots/f1/home   f1(rw,no_root_squash,sync,no_subtree_check)
/file-store/nfs-roots/f1/usr        f1(rw,no_root_squash,sync,no_subtree_check)
/file-store/nfs-roots/f1/var        f1(rw,no_root_squash,sync,no_subtree_check)

and on the client(f1) the three filesystems are mount on /home, /usr, and /var

This worked fine when /file-store on the server was formatted with ext3, now that it is formatted with xfs I get this message on the client:
mount.nfs: Stale NFS file handle
I get this message 3 times.
Nothing else changed, both systems are Debian Lenny with custom kernel.
Server is 2.6.28, client is 2.6.29.6. NFS is version 3.
The fstab on the server has this:
/dev/mapper/big--raid-file--store       /file-store     xfs     noatime,logbsize=256k,inode64   0       1

The reason for the change of the filesystem was an upgrade of the drives in the RAID, now the filesystem is 7T instead of 2.4T,
nothing else was changed. Why did this work with ext3 and does not with XFS? What can I do to get this to work, short of reverting to ext3?

K --=-h5MnDdAbcldGztDVy+58-- From airlied@redhat.com Mon Jan 4 18:50:53 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o050orCE160881 for ; Mon, 4 Jan 2010 18:50:53 -0600 X-ASG-Debug-ID: 1262652703-663f01390000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 61B371C2AD22 for ; Mon, 4 Jan 2010 16:51:43 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id UP4H0V4WRS0QqIlC for ; Mon, 04 Jan 2010 16:51:43 -0800 (PST) Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o050pQoV012556 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 4 Jan 2010 19:51:26 -0500 Received: from [10.64.0.222] (dhcp-0-222.bne.redhat.com [10.64.0.222]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o050pNG8011294; Mon, 4 Jan 2010 19:51:24 -0500 X-ASG-Orig-Subj: Re: [PATCH] sort: Introduce generic list_sort function Subject: Re: [PATCH] sort: Introduce generic list_sort function From: Dave Airlie To: Dave Chinner Cc: xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Artem Bityutskiy , Adrian Hunter In-Reply-To: <1262649295-28427-1-git-send-email-david@fromorbit.com> References: <1262649295-28427-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset="UTF-8" Date: Tue, 05 Jan 2010 10:48:26 +1000 Message-Id: <1262652506.25818.5.camel@localhost> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1262652704 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18977 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 2010-01-05 at 10:54 +1100, Dave Chinner wrote: > There are two copies of list_sort() in the tree already, one in the DRM code, > another in ubifs. Now XFS needs this as well. Create a generic list_sort() > function from the ubifs version and convert existing users to it so we > don't end up with yet another copy in the tree. Acked-by: Dave Airlie Meant to do this myself when we imported modesetting, but never got around to it, Thanks, Dave. From dedekind@infradead.org Tue Jan 5 00:23:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o056Nnl9182029 for ; Tue, 5 Jan 2010 00:23:49 -0600 X-ASG-Debug-ID: 1262672676-075302160000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mgw-mx03.nokia.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D705D13EBF6 for ; Mon, 4 Jan 2010 22:24:36 -0800 (PST) Received: from mgw-mx03.nokia.com (smtp.nokia.com [192.100.122.230]) by cuda.sgi.com with ESMTP id MKtFEZkwyjBfa34c for ; Mon, 04 Jan 2010 22:24:36 -0800 (PST) Received: from esebh105.NOE.Nokia.com (esebh105.ntc.nokia.com [172.21.138.211]) by mgw-mx03.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o056O1cK011755; Tue, 5 Jan 2010 08:24:08 +0200 Received: from vaebh104.NOE.Nokia.com ([10.160.244.30]) by esebh105.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.3959); Tue, 5 Jan 2010 08:24:02 +0200 Received: from mgw-sa02.ext.nokia.com ([147.243.1.48]) by vaebh104.NOE.Nokia.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.3959); Tue, 5 Jan 2010 08:24:01 +0200 Received: from [172.21.40.36] (esdhcp04036.research.nokia.com [172.21.40.36]) by mgw-sa02.ext.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o056NweA026491; Tue, 5 Jan 2010 08:23:59 +0200 X-ASG-Orig-Subj: Re: [PATCH] sort: Introduce generic list_sort function Subject: Re: [PATCH] sort: Introduce generic list_sort function From: Artem Bityutskiy Reply-To: dedekind@infradead.org To: Dave Chinner Cc: xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Dave Airlie , Adrian Hunter In-Reply-To: <1262649295-28427-1-git-send-email-david@fromorbit.com> References: <1262649295-28427-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset="UTF-8" Date: Tue, 05 Jan 2010 08:23:58 +0200 Message-Id: <1262672638.4512.48.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.26.3 (2.26.3-1.fc11) Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 05 Jan 2010 06:24:01.0712 (UTC) FILETIME=[AC033B00:01CA8DCF] X-Nokia-AV: Clean X-Barracuda-Connect: smtp.nokia.com[192.100.122.230] X-Barracuda-Start-Time: 1262672679 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18997 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 2010-01-05 at 10:54 +1100, Dave Chinner wrote: > There are two copies of list_sort() in the tree already, one in the DRM code, > another in ubifs. Now XFS needs this as well. Create a generic list_sort() > function from the ubifs version and convert existing users to it so we > don't end up with yet another copy in the tree. > > CC: Dave Airlie > CC: Artem Bityutskiy > CC: Adrian Hunter > > Signed-off-by: Dave Chinner Acked-by: Artem Bityutskiy Thanks, this has been in my TODO list for long time as well :-) -- Best Regards, Artem Bityutskiy (Đртём Битюцкий) From dedekind@infradead.org Tue Jan 5 00:25:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_44 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o056PYeq182176 for ; Tue, 5 Jan 2010 00:25:34 -0600 X-ASG-Debug-ID: 1262672783-529d019c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mgw-mx03.nokia.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4E7B21C2B9B3 for ; Mon, 4 Jan 2010 22:26:23 -0800 (PST) Received: from mgw-mx03.nokia.com (smtp.nokia.com [192.100.122.230]) by cuda.sgi.com with ESMTP id SpJOQfTUWfvtwrSr for ; Mon, 04 Jan 2010 22:26:23 -0800 (PST) Received: from esebh106.NOE.Nokia.com (esebh106.ntc.nokia.com [172.21.138.213]) by mgw-mx03.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o056Q5Hf014201; Tue, 5 Jan 2010 08:26:16 +0200 Received: from esebh102.NOE.Nokia.com ([172.21.138.183]) by esebh106.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.3959); Tue, 5 Jan 2010 08:26:13 +0200 Received: from mgw-sa01.ext.nokia.com ([147.243.1.47]) by esebh102.NOE.Nokia.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.3959); Tue, 5 Jan 2010 08:26:13 +0200 Received: from [172.21.40.36] (esdhcp04036.research.nokia.com [172.21.40.36]) by mgw-sa01.ext.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o056QBPE031665; Tue, 5 Jan 2010 08:26:12 +0200 X-ASG-Orig-Subj: Re: [PATCH] sort: Introduce generic list_sort function Subject: Re: [PATCH] sort: Introduce generic list_sort function From: Artem Bityutskiy Reply-To: dedekind@infradead.org To: Dave Chinner Cc: xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Dave Airlie , Adrian Hunter In-Reply-To: <1262649295-28427-1-git-send-email-david@fromorbit.com> References: <1262649295-28427-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset="UTF-8" Date: Tue, 05 Jan 2010 08:26:11 +0200 Message-Id: <1262672771.4512.50.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.26.3 (2.26.3-1.fc11) Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 05 Jan 2010 06:26:13.0886 (UTC) FILETIME=[FACB61E0:01CA8DCF] X-Nokia-AV: Clean X-Barracuda-Connect: smtp.nokia.com[192.100.122.230] X-Barracuda-Start-Time: 1262672785 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.18997 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, 2010-01-05 at 10:54 +1100, Dave Chinner wrote: > There are two copies of list_sort() in the tree already, one in the DRM code, > another in ubifs. Now XFS needs this as well. Create a generic list_sort() > function from the ubifs version and convert existing users to it so we > don't end up with yet another copy in the tree. > > CC: Dave Airlie > CC: Artem Bityutskiy > CC: Adrian Hunter > > Signed-off-by: Dave Chinner > --- > drivers/gpu/drm/drm_modes.c | 90 ++-------------------------------------- > fs/ubifs/gc.c | 95 ------------------------------------------ > include/linux/sort.h | 5 ++ > lib/sort.c | 97 +++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 106 insertions(+), 181 deletions(-) > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index 51f6772..3846ed4 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -1,9 +1,4 @@ > /* > - * The list_sort function is (presumably) licensed under the GPL (see the > - * top level "COPYING" file for details). > - * > - * The remainder of this file is: > - * > * Copyright © 1997-2003 by The XFree86 Project, Inc. > * Copyright © 2007 Dave Airlie > * Copyright © 2007-2008 Intel Corporation > @@ -36,6 +31,7 @@ > */ > > #include > +#include > #include "drmP.h" > #include "drm.h" > #include "drm_crtc.h" > @@ -829,6 +825,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid); > > /** > * drm_mode_compare - compare modes for favorability > + * @priv: unused > * @lh_a: list_head for first mode > * @lh_b: list_head for second mode > * > @@ -842,7 +839,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid); > * Negative if @lh_a is better than @lh_b, zero if they're equivalent, or > * positive if @lh_b is better than @lh_a. > */ > -static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b) > +static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head *lh_b) > { > struct drm_display_mode *a = list_entry(lh_a, struct drm_display_mode, head); > struct drm_display_mode *b = list_entry(lh_b, struct drm_display_mode, head); > @@ -859,85 +856,6 @@ static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b) > return diff; > } > > -/* FIXME: what we don't have a list sort function? */ > -/* list sort from Mark J Roberts (mjr@znex.org) */ > -void list_sort(struct list_head *head, > - int (*cmp)(struct list_head *a, struct list_head *b)) > -{ > - struct list_head *p, *q, *e, *list, *tail, *oldhead; > - int insize, nmerges, psize, qsize, i; > - > - list = head->next; > - list_del(head); > - insize = 1; > - for (;;) { > - p = oldhead = list; > - list = tail = NULL; > - nmerges = 0; > - > - while (p) { > - nmerges++; > - q = p; > - psize = 0; > - for (i = 0; i < insize; i++) { > - psize++; > - q = q->next == oldhead ? NULL : q->next; > - if (!q) > - break; > - } > - > - qsize = insize; > - while (psize > 0 || (qsize > 0 && q)) { > - if (!psize) { > - e = q; > - q = q->next; > - qsize--; > - if (q == oldhead) > - q = NULL; > - } else if (!qsize || !q) { > - e = p; > - p = p->next; > - psize--; > - if (p == oldhead) > - p = NULL; > - } else if (cmp(p, q) <= 0) { > - e = p; > - p = p->next; > - psize--; > - if (p == oldhead) > - p = NULL; > - } else { > - e = q; > - q = q->next; > - qsize--; > - if (q == oldhead) > - q = NULL; > - } > - if (tail) > - tail->next = e; > - else > - list = e; > - e->prev = tail; > - tail = e; > - } > - p = q; > - } > - > - tail->next = list; > - list->prev = tail; > - > - if (nmerges <= 1) > - break; > - > - insize *= 2; > - } > - > - head->next = list; > - head->prev = list->prev; > - list->prev->next = head; > - list->prev = head; > -} > - > /** > * drm_mode_sort - sort mode list > * @mode_list: list to sort > @@ -949,7 +867,7 @@ void list_sort(struct list_head *head, > */ > void drm_mode_sort(struct list_head *mode_list) > { > - list_sort(mode_list, drm_mode_compare); > + list_sort(NULL, mode_list, drm_mode_compare); > } > EXPORT_SYMBOL(drm_mode_sort); > > diff --git a/fs/ubifs/gc.c b/fs/ubifs/gc.c > index 618c270..4976e07 100644 > --- a/fs/ubifs/gc.c > +++ b/fs/ubifs/gc.c > @@ -108,101 +108,6 @@ static int switch_gc_head(struct ubifs_info *c) > } > > /** > - * list_sort - sort a list. > - * @priv: private data, passed to @cmp > - * @head: the list to sort > - * @cmp: the elements comparison function > - * > - * This function has been implemented by Mark J Roberts . It > - * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted > - * in ascending order. > - * > - * The comparison function @cmp is supposed to return a negative value if @a is > - * than @b, and a positive value if @a is greater than @b. If @a and @b are > - * equivalent, then it does not matter what this function returns. > - */ > -static void list_sort(void *priv, struct list_head *head, > - int (*cmp)(void *priv, struct list_head *a, > - struct list_head *b)) > -{ > - struct list_head *p, *q, *e, *list, *tail, *oldhead; > - int insize, nmerges, psize, qsize, i; > - > - if (list_empty(head)) > - return; > - > - list = head->next; > - list_del(head); > - insize = 1; > - for (;;) { > - p = oldhead = list; > - list = tail = NULL; > - nmerges = 0; > - > - while (p) { > - nmerges++; > - q = p; > - psize = 0; > - for (i = 0; i < insize; i++) { > - psize++; > - q = q->next == oldhead ? NULL : q->next; > - if (!q) > - break; > - } > - > - qsize = insize; > - while (psize > 0 || (qsize > 0 && q)) { > - if (!psize) { > - e = q; > - q = q->next; > - qsize--; > - if (q == oldhead) > - q = NULL; > - } else if (!qsize || !q) { > - e = p; > - p = p->next; > - psize--; > - if (p == oldhead) > - p = NULL; > - } else if (cmp(priv, p, q) <= 0) { > - e = p; > - p = p->next; > - psize--; > - if (p == oldhead) > - p = NULL; > - } else { > - e = q; > - q = q->next; > - qsize--; > - if (q == oldhead) > - q = NULL; > - } > - if (tail) > - tail->next = e; > - else > - list = e; > - e->prev = tail; > - tail = e; > - } > - p = q; > - } > - > - tail->next = list; > - list->prev = tail; > - > - if (nmerges <= 1) > - break; > - > - insize *= 2; > - } > - > - head->next = list; > - head->prev = list->prev; > - list->prev->next = head; > - list->prev = head; > -} > - > -/** > * data_nodes_cmp - compare 2 data nodes. > * @priv: UBIFS file-system description object > * @a: first data node > diff --git a/include/linux/sort.h b/include/linux/sort.h > index d534da2..99a2ed5 100644 > --- a/include/linux/sort.h > +++ b/include/linux/sort.h > @@ -3,8 +3,13 @@ > > #include > > +struct list_head; > + > void sort(void *base, size_t num, size_t size, > int (*cmp)(const void *, const void *), > void (*swap)(void *, void *, int)); > > +void list_sort(void *priv, struct list_head *head, > + int (*cmp)(void *priv, struct list_head *a, > + struct list_head *b)); > #endif > diff --git a/lib/sort.c b/lib/sort.c > index 926d004..1772c45 100644 > --- a/lib/sort.c > +++ b/lib/sort.c > @@ -8,6 +8,7 @@ > #include > #include > #include > +#include > > static void u32_swap(void *a, void *b, int size) > { > @@ -121,3 +122,99 @@ static int sort_test(void) > > module_init(sort_test); > #endif > + > +/** > + * list_sort - sort a list. > + * @priv: private data, passed to @cmp > + * @head: the list to sort > + * @cmp: the elements comparison function > + * > + * This function has been implemented by Mark J Roberts . It > + * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted > + * in ascending order. > + * > + * The comparison function @cmp is supposed to return a negative value if @a is > + * than @b, and a positive value if @a is greater than @b. If @a and @b are While you are on it, could you also please fix the typo: "if @a is less than @b". > + * equivalent, then it does not matter what this function returns. > + */ -- Best Regards, Artem Bityutskiy (Đртём Битюцкий) From SRS0+0kV4+34+fromorbit.com=david@internode.on.net Tue Jan 5 03:33:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_44 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o059Xn8J194288 for ; Tue, 5 Jan 2010 03:33:50 -0600 X-ASG-Debug-ID: 1262684077-419300c10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7473713FF28 for ; Tue, 5 Jan 2010 01:34:37 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id fSSnyeeLOkHQIrCx for ; Tue, 05 Jan 2010 01:34:37 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11101363-1927428 for multiple; Tue, 05 Jan 2010 20:04:09 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NS5nj-0006jq-2W; Tue, 05 Jan 2010 20:34:07 +1100 Date: Tue, 5 Jan 2010 20:34:07 +1100 From: Dave Chinner To: Artem Bityutskiy Cc: xfs@oss.sgi.com, linux-kernel@vger.kernel.org, Dave Airlie , Adrian Hunter X-ASG-Orig-Subj: Re: [PATCH] sort: Introduce generic list_sort function Subject: Re: [PATCH] sort: Introduce generic list_sort function Message-ID: <20100105093407.GQ13802@discord.disaster> References: <1262649295-28427-1-git-send-email-david@fromorbit.com> <1262672771.4512.50.camel@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1262672771.4512.50.camel@localhost> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1262684079 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19007 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 05, 2010 at 08:26:11AM +0200, Artem Bityutskiy wrote: > > + * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted > > + * in ascending order. > > + * > > + * The comparison function @cmp is supposed to return a negative value if @a is > > + * than @b, and a positive value if @a is greater than @b. If @a and @b are > > While you are on it, could you also please fix the typo: "if @a is less > than @b". Fixed. New patch below. Cheers, Dave. -- Dave Chinner david@fromorbit.com sort: Introduce generic list_sort function There are two copies of list_sort() in the tree already, one in the DRM code, another in ubifs. Now XFS needs this as well. Create a generic list_sort() function from the ubifs version and convert existing users to it so we don't end up with yet another copy in the tree. Signed-off-by: Dave Chinner Acked-by: Dave Airlie Acked-by: Artem Bityutskiy --- drivers/gpu/drm/drm_modes.c | 90 ++-------------------------------------- fs/ubifs/gc.c | 95 ------------------------------------------ include/linux/sort.h | 5 ++ lib/sort.c | 97 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 181 deletions(-) diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index 51f6772..3846ed4 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -1,9 +1,4 @@ /* - * The list_sort function is (presumably) licensed under the GPL (see the - * top level "COPYING" file for details). - * - * The remainder of this file is: - * * Copyright © 1997-2003 by The XFree86 Project, Inc. * Copyright © 2007 Dave Airlie * Copyright © 2007-2008 Intel Corporation @@ -36,6 +31,7 @@ */ #include +#include #include "drmP.h" #include "drm.h" #include "drm_crtc.h" @@ -829,6 +825,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid); /** * drm_mode_compare - compare modes for favorability + * @priv: unused * @lh_a: list_head for first mode * @lh_b: list_head for second mode * @@ -842,7 +839,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid); * Negative if @lh_a is better than @lh_b, zero if they're equivalent, or * positive if @lh_b is better than @lh_a. */ -static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b) +static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head *lh_b) { struct drm_display_mode *a = list_entry(lh_a, struct drm_display_mode, head); struct drm_display_mode *b = list_entry(lh_b, struct drm_display_mode, head); @@ -859,85 +856,6 @@ static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b) return diff; } -/* FIXME: what we don't have a list sort function? */ -/* list sort from Mark J Roberts (mjr@znex.org) */ -void list_sort(struct list_head *head, - int (*cmp)(struct list_head *a, struct list_head *b)) -{ - struct list_head *p, *q, *e, *list, *tail, *oldhead; - int insize, nmerges, psize, qsize, i; - - list = head->next; - list_del(head); - insize = 1; - for (;;) { - p = oldhead = list; - list = tail = NULL; - nmerges = 0; - - while (p) { - nmerges++; - q = p; - psize = 0; - for (i = 0; i < insize; i++) { - psize++; - q = q->next == oldhead ? NULL : q->next; - if (!q) - break; - } - - qsize = insize; - while (psize > 0 || (qsize > 0 && q)) { - if (!psize) { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } else if (!qsize || !q) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else if (cmp(p, q) <= 0) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } - if (tail) - tail->next = e; - else - list = e; - e->prev = tail; - tail = e; - } - p = q; - } - - tail->next = list; - list->prev = tail; - - if (nmerges <= 1) - break; - - insize *= 2; - } - - head->next = list; - head->prev = list->prev; - list->prev->next = head; - list->prev = head; -} - /** * drm_mode_sort - sort mode list * @mode_list: list to sort @@ -949,7 +867,7 @@ void list_sort(struct list_head *head, */ void drm_mode_sort(struct list_head *mode_list) { - list_sort(mode_list, drm_mode_compare); + list_sort(NULL, mode_list, drm_mode_compare); } EXPORT_SYMBOL(drm_mode_sort); diff --git a/fs/ubifs/gc.c b/fs/ubifs/gc.c index 618c270..4976e07 100644 --- a/fs/ubifs/gc.c +++ b/fs/ubifs/gc.c @@ -108,101 +108,6 @@ static int switch_gc_head(struct ubifs_info *c) } /** - * list_sort - sort a list. - * @priv: private data, passed to @cmp - * @head: the list to sort - * @cmp: the elements comparison function - * - * This function has been implemented by Mark J Roberts . It - * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted - * in ascending order. - * - * The comparison function @cmp is supposed to return a negative value if @a is - * than @b, and a positive value if @a is greater than @b. If @a and @b are - * equivalent, then it does not matter what this function returns. - */ -static void list_sort(void *priv, struct list_head *head, - int (*cmp)(void *priv, struct list_head *a, - struct list_head *b)) -{ - struct list_head *p, *q, *e, *list, *tail, *oldhead; - int insize, nmerges, psize, qsize, i; - - if (list_empty(head)) - return; - - list = head->next; - list_del(head); - insize = 1; - for (;;) { - p = oldhead = list; - list = tail = NULL; - nmerges = 0; - - while (p) { - nmerges++; - q = p; - psize = 0; - for (i = 0; i < insize; i++) { - psize++; - q = q->next == oldhead ? NULL : q->next; - if (!q) - break; - } - - qsize = insize; - while (psize > 0 || (qsize > 0 && q)) { - if (!psize) { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } else if (!qsize || !q) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else if (cmp(priv, p, q) <= 0) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } - if (tail) - tail->next = e; - else - list = e; - e->prev = tail; - tail = e; - } - p = q; - } - - tail->next = list; - list->prev = tail; - - if (nmerges <= 1) - break; - - insize *= 2; - } - - head->next = list; - head->prev = list->prev; - list->prev->next = head; - list->prev = head; -} - -/** * data_nodes_cmp - compare 2 data nodes. * @priv: UBIFS file-system description object * @a: first data node diff --git a/include/linux/sort.h b/include/linux/sort.h index d534da2..99a2ed5 100644 --- a/include/linux/sort.h +++ b/include/linux/sort.h @@ -3,8 +3,13 @@ #include +struct list_head; + void sort(void *base, size_t num, size_t size, int (*cmp)(const void *, const void *), void (*swap)(void *, void *, int)); +void list_sort(void *priv, struct list_head *head, + int (*cmp)(void *priv, struct list_head *a, + struct list_head *b)); #endif diff --git a/lib/sort.c b/lib/sort.c index 926d004..5bab8ff 100644 --- a/lib/sort.c +++ b/lib/sort.c @@ -8,6 +8,7 @@ #include #include #include +#include static void u32_swap(void *a, void *b, int size) { @@ -121,3 +122,99 @@ static int sort_test(void) module_init(sort_test); #endif + +/** + * list_sort - sort a list. + * @priv: private data, passed to @cmp + * @head: the list to sort + * @cmp: the elements comparison function + * + * This function has been implemented by Mark J Roberts . It + * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted + * in ascending order. + * + * The comparison function @cmp is supposed to return a negative value if @a is + * less than @b, and a positive value if @a is greater than @b. If @a and @b + * are equivalent, then it does not matter what this function returns. + */ +void list_sort(void *priv, struct list_head *head, + int (*cmp)(void *priv, struct list_head *a, + struct list_head *b)) +{ + struct list_head *p, *q, *e, *list, *tail, *oldhead; + int insize, nmerges, psize, qsize, i; + + if (list_empty(head)) + return; + + list = head->next; + list_del(head); + insize = 1; + for (;;) { + p = oldhead = list; + list = tail = NULL; + nmerges = 0; + + while (p) { + nmerges++; + q = p; + psize = 0; + for (i = 0; i < insize; i++) { + psize++; + q = q->next == oldhead ? NULL : q->next; + if (!q) + break; + } + + qsize = insize; + while (psize > 0 || (qsize > 0 && q)) { + if (!psize) { + e = q; + q = q->next; + qsize--; + if (q == oldhead) + q = NULL; + } else if (!qsize || !q) { + e = p; + p = p->next; + psize--; + if (p == oldhead) + p = NULL; + } else if (cmp(priv, p, q) <= 0) { + e = p; + p = p->next; + psize--; + if (p == oldhead) + p = NULL; + } else { + e = q; + q = q->next; + qsize--; + if (q == oldhead) + q = NULL; + } + if (tail) + tail->next = e; + else + list = e; + e->prev = tail; + tail = e; + } + p = q; + } + + tail->next = list; + list->prev = tail; + + if (nmerges <= 1) + break; + + insize *= 2; + } + + head->next = list; + head->prev = list->prev; + list->prev->next = head; + list->prev = head; +} + From andi@firstfloor.org Tue Jan 5 05:30:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.1 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,RCVD_IN_BRBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o05BUT71201567 for ; Tue, 5 Jan 2010 05:30:31 -0600 X-ASG-Debug-ID: 1262691078-553502870000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4953E1C2CE85 for ; Tue, 5 Jan 2010 03:31:18 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id 8KZTbL888lA7HldS for ; Tue, 05 Jan 2010 03:31:18 -0800 (PST) Received: from basil.firstfloor.org (p5B3CB3DB.dip0.t-ipconnect.de [91.60.179.219]) by one.firstfloor.org (Postfix) with ESMTP id 18F0D22C8036; Tue, 5 Jan 2010 12:31:16 +0100 (CET) Received: by basil.firstfloor.org (Postfix, from userid 1000) id 49B3FB17C2; Tue, 5 Jan 2010 12:31:15 +0100 (CET) To: Dave Chinner Cc: xfs@oss.sgi.com, Artem Bityutskiy , Dave Airlie , linux-kernel@vger.kernel.org, Adrian Hunter X-ASG-Orig-Subj: Re: [PATCH] sort: Introduce generic list_sort function Subject: Re: [PATCH] sort: Introduce generic list_sort function From: Andi Kleen References: <1262649295-28427-1-git-send-email-david__25057.2445955642$1262651404$gmane$org@fromorbit.com> Date: Tue, 05 Jan 2010 12:31:15 +0100 In-Reply-To: <1262649295-28427-1-git-send-email-david__25057.2445955642$1262651404$gmane$org@fromorbit.com> (Dave Chinner's message of "Tue, 5 Jan 2010 10:54:55 +1100") Message-ID: <87eim4dbzw.fsf@basil.nowhere.org> User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1262691079 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner writes: > + > +/** > + * list_sort - sort a list. > + * @priv: private data, passed to @cmp > + * @head: the list to sort > + * @cmp: the elements comparison function > + * > + * This function has been implemented by Mark J Roberts . It > + * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted > + * in ascending order. > + * > + * The comparison function @cmp is supposed to return a negative value if @a is > + * than @b, and a positive value if @a is greater than @b. If @a and @b are > + * equivalent, then it does not matter what this function returns. > + */ > +void list_sort(void *priv, struct list_head *head, > + int (*cmp)(void *priv, struct list_head *a, > + struct list_head *b)) No EXPORT_SYMBOL? Also it would seem cleaner to have it in a own file. -Andi -- ak@linux.intel.com -- Speaking for myself only. From SRS0+CcnX+34+fromorbit.com=david@internode.on.net Tue Jan 5 06:21:04 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_44 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o05CL4ca204513 for ; Tue, 5 Jan 2010 06:21:04 -0600 X-ASG-Debug-ID: 1262694112-0f5600520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A8F834CA814 for ; Tue, 5 Jan 2010 04:21:53 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id mSbtBfUsCePipXUG for ; Tue, 05 Jan 2010 04:21:53 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11073213-1927428 for multiple; Tue, 05 Jan 2010 22:51:03 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NS8PF-0006t2-5w; Tue, 05 Jan 2010 23:21:01 +1100 Date: Tue, 5 Jan 2010 23:21:01 +1100 From: Dave Chinner To: Andi Kleen Cc: xfs@oss.sgi.com, Artem Bityutskiy , Dave Airlie , linux-kernel@vger.kernel.org, Adrian Hunter X-ASG-Orig-Subj: [PATCH V3] sort: Introduce generic list_sort function Subject: [PATCH V3] sort: Introduce generic list_sort function Message-ID: <20100105122101.GR13802@discord.disaster> References: <1262649295-28427-1-git-send-email-david__25057.2445955642$1262651404$gmane$org@fromorbit.com> <87eim4dbzw.fsf@basil.nowhere.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87eim4dbzw.fsf@basil.nowhere.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1262694114 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19017 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 05, 2010 at 12:31:15PM +0100, Andi Kleen wrote: > Dave Chinner writes: > > + > > +/** > > + * list_sort - sort a list. > > + * @priv: private data, passed to @cmp > > + * @head: the list to sort > > + * @cmp: the elements comparison function > > + * > > + * This function has been implemented by Mark J Roberts . It > > + * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted > > + * in ascending order. > > + * > > + * The comparison function @cmp is supposed to return a negative value if @a is > > + * than @b, and a positive value if @a is greater than @b. If @a and @b are > > + * equivalent, then it does not matter what this function returns. > > + */ > > +void list_sort(void *priv, struct list_head *head, > > + int (*cmp)(void *priv, struct list_head *a, > > + struct list_head *b)) > > No EXPORT_SYMBOL? Bah, who uses modules? :P Fixed. Updated patch below. > Also it would seem cleaner to have it in a own file. That might make sense if we had a large number of generic sort functions and it was difficult to tell the code apart, but we've only got 2 right now.... Cheers, Dave. -- Dave Chinner david@fromorbit.com sort: Introduce generic list_sort function There are two copies of list_sort() in the tree already, one in the DRM code, another in ubifs. Now XFS needs this as well. Create a generic list_sort() function from the ubifs version and convert existing users to it so we don't end up with yet another copy in the tree. Signed-off-by: Dave Chinner Acked-by: Dave Airlie Acked-by: Artem Bityutskiy --- V3: Export list_sort() V2: fix a typo drivers/gpu/drm/drm_modes.c | 90 ++------------------------------------- fs/ubifs/gc.c | 95 ----------------------------------------- include/linux/sort.h | 5 ++ lib/sort.c | 98 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 181 deletions(-) diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index 51f6772..3846ed4 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -1,9 +1,4 @@ /* - * The list_sort function is (presumably) licensed under the GPL (see the - * top level "COPYING" file for details). - * - * The remainder of this file is: - * * Copyright © 1997-2003 by The XFree86 Project, Inc. * Copyright © 2007 Dave Airlie * Copyright © 2007-2008 Intel Corporation @@ -36,6 +31,7 @@ */ #include +#include #include "drmP.h" #include "drm.h" #include "drm_crtc.h" @@ -829,6 +825,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid); /** * drm_mode_compare - compare modes for favorability + * @priv: unused * @lh_a: list_head for first mode * @lh_b: list_head for second mode * @@ -842,7 +839,7 @@ EXPORT_SYMBOL(drm_mode_prune_invalid); * Negative if @lh_a is better than @lh_b, zero if they're equivalent, or * positive if @lh_b is better than @lh_a. */ -static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b) +static int drm_mode_compare(void *priv, struct list_head *lh_a, struct list_head *lh_b) { struct drm_display_mode *a = list_entry(lh_a, struct drm_display_mode, head); struct drm_display_mode *b = list_entry(lh_b, struct drm_display_mode, head); @@ -859,85 +856,6 @@ static int drm_mode_compare(struct list_head *lh_a, struct list_head *lh_b) return diff; } -/* FIXME: what we don't have a list sort function? */ -/* list sort from Mark J Roberts (mjr@znex.org) */ -void list_sort(struct list_head *head, - int (*cmp)(struct list_head *a, struct list_head *b)) -{ - struct list_head *p, *q, *e, *list, *tail, *oldhead; - int insize, nmerges, psize, qsize, i; - - list = head->next; - list_del(head); - insize = 1; - for (;;) { - p = oldhead = list; - list = tail = NULL; - nmerges = 0; - - while (p) { - nmerges++; - q = p; - psize = 0; - for (i = 0; i < insize; i++) { - psize++; - q = q->next == oldhead ? NULL : q->next; - if (!q) - break; - } - - qsize = insize; - while (psize > 0 || (qsize > 0 && q)) { - if (!psize) { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } else if (!qsize || !q) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else if (cmp(p, q) <= 0) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } - if (tail) - tail->next = e; - else - list = e; - e->prev = tail; - tail = e; - } - p = q; - } - - tail->next = list; - list->prev = tail; - - if (nmerges <= 1) - break; - - insize *= 2; - } - - head->next = list; - head->prev = list->prev; - list->prev->next = head; - list->prev = head; -} - /** * drm_mode_sort - sort mode list * @mode_list: list to sort @@ -949,7 +867,7 @@ void list_sort(struct list_head *head, */ void drm_mode_sort(struct list_head *mode_list) { - list_sort(mode_list, drm_mode_compare); + list_sort(NULL, mode_list, drm_mode_compare); } EXPORT_SYMBOL(drm_mode_sort); diff --git a/fs/ubifs/gc.c b/fs/ubifs/gc.c index 618c270..4976e07 100644 --- a/fs/ubifs/gc.c +++ b/fs/ubifs/gc.c @@ -108,101 +108,6 @@ static int switch_gc_head(struct ubifs_info *c) } /** - * list_sort - sort a list. - * @priv: private data, passed to @cmp - * @head: the list to sort - * @cmp: the elements comparison function - * - * This function has been implemented by Mark J Roberts . It - * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted - * in ascending order. - * - * The comparison function @cmp is supposed to return a negative value if @a is - * than @b, and a positive value if @a is greater than @b. If @a and @b are - * equivalent, then it does not matter what this function returns. - */ -static void list_sort(void *priv, struct list_head *head, - int (*cmp)(void *priv, struct list_head *a, - struct list_head *b)) -{ - struct list_head *p, *q, *e, *list, *tail, *oldhead; - int insize, nmerges, psize, qsize, i; - - if (list_empty(head)) - return; - - list = head->next; - list_del(head); - insize = 1; - for (;;) { - p = oldhead = list; - list = tail = NULL; - nmerges = 0; - - while (p) { - nmerges++; - q = p; - psize = 0; - for (i = 0; i < insize; i++) { - psize++; - q = q->next == oldhead ? NULL : q->next; - if (!q) - break; - } - - qsize = insize; - while (psize > 0 || (qsize > 0 && q)) { - if (!psize) { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } else if (!qsize || !q) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else if (cmp(priv, p, q) <= 0) { - e = p; - p = p->next; - psize--; - if (p == oldhead) - p = NULL; - } else { - e = q; - q = q->next; - qsize--; - if (q == oldhead) - q = NULL; - } - if (tail) - tail->next = e; - else - list = e; - e->prev = tail; - tail = e; - } - p = q; - } - - tail->next = list; - list->prev = tail; - - if (nmerges <= 1) - break; - - insize *= 2; - } - - head->next = list; - head->prev = list->prev; - list->prev->next = head; - list->prev = head; -} - -/** * data_nodes_cmp - compare 2 data nodes. * @priv: UBIFS file-system description object * @a: first data node diff --git a/include/linux/sort.h b/include/linux/sort.h index d534da2..99a2ed5 100644 --- a/include/linux/sort.h +++ b/include/linux/sort.h @@ -3,8 +3,13 @@ #include +struct list_head; + void sort(void *base, size_t num, size_t size, int (*cmp)(const void *, const void *), void (*swap)(void *, void *, int)); +void list_sort(void *priv, struct list_head *head, + int (*cmp)(void *priv, struct list_head *a, + struct list_head *b)); #endif diff --git a/lib/sort.c b/lib/sort.c index 926d004..a9ce544 100644 --- a/lib/sort.c +++ b/lib/sort.c @@ -8,6 +8,7 @@ #include #include #include +#include static void u32_swap(void *a, void *b, int size) { @@ -121,3 +122,100 @@ static int sort_test(void) module_init(sort_test); #endif + +/** + * list_sort - sort a list. + * @priv: private data, passed to @cmp + * @head: the list to sort + * @cmp: the elements comparison function + * + * This function has been implemented by Mark J Roberts . It + * implements "merge sort" which has O(nlog(n)) complexity. The list is sorted + * in ascending order. + * + * The comparison function @cmp is supposed to return a negative value if @a is + * less than @b, and a positive value if @a is greater than @b. If @a and @b + * are equivalent, then it does not matter what this function returns. + */ +void list_sort(void *priv, struct list_head *head, + int (*cmp)(void *priv, struct list_head *a, + struct list_head *b)) +{ + struct list_head *p, *q, *e, *list, *tail, *oldhead; + int insize, nmerges, psize, qsize, i; + + if (list_empty(head)) + return; + + list = head->next; + list_del(head); + insize = 1; + for (;;) { + p = oldhead = list; + list = tail = NULL; + nmerges = 0; + + while (p) { + nmerges++; + q = p; + psize = 0; + for (i = 0; i < insize; i++) { + psize++; + q = q->next == oldhead ? NULL : q->next; + if (!q) + break; + } + + qsize = insize; + while (psize > 0 || (qsize > 0 && q)) { + if (!psize) { + e = q; + q = q->next; + qsize--; + if (q == oldhead) + q = NULL; + } else if (!qsize || !q) { + e = p; + p = p->next; + psize--; + if (p == oldhead) + p = NULL; + } else if (cmp(priv, p, q) <= 0) { + e = p; + p = p->next; + psize--; + if (p == oldhead) + p = NULL; + } else { + e = q; + q = q->next; + qsize--; + if (q == oldhead) + q = NULL; + } + if (tail) + tail->next = e; + else + list = e; + e->prev = tail; + tail = e; + } + p = q; + } + + tail->next = list; + list->prev = tail; + + if (nmerges <= 1) + break; + + insize *= 2; + } + + head->next = list; + head->prev = list->prev; + list->prev->next = head; + list->prev = head; +} + +EXPORT_SYMBOL(list_sort); From andi@firstfloor.org Tue Jan 5 06:51:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, RCVD_IN_BRBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o05Cpmiu206334 for ; Tue, 5 Jan 2010 06:51:50 -0600 X-ASG-Debug-ID: 1262695958-744e02790000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B04451509E22 for ; Tue, 5 Jan 2010 04:52:38 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id FF4PG2BMOIJuhUmw for ; Tue, 05 Jan 2010 04:52:38 -0800 (PST) Received: from basil.firstfloor.org (p5B3CB3DB.dip0.t-ipconnect.de [91.60.179.219]) by one.firstfloor.org (Postfix) with ESMTP id A672D22C8036; Tue, 5 Jan 2010 13:52:37 +0100 (CET) Received: by basil.firstfloor.org (Postfix, from userid 1000) id 634ABB17C2; Tue, 5 Jan 2010 13:52:35 +0100 (CET) Date: Tue, 5 Jan 2010 13:52:35 +0100 From: Andi Kleen To: Dave Chinner Cc: Andi Kleen , xfs@oss.sgi.com, Artem Bityutskiy , Dave Airlie , linux-kernel@vger.kernel.org, Adrian Hunter X-ASG-Orig-Subj: Re: [PATCH V3] sort: Introduce generic list_sort function Subject: Re: [PATCH V3] sort: Introduce generic list_sort function Message-ID: <20100105125234.GD1778@basil.fritz.box> References: <1262649295-28427-1-git-send-email-david__25057.2445955642$1262651404$gmane$org@fromorbit.com> <87eim4dbzw.fsf@basil.nowhere.org> <20100105122101.GR13802@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100105122101.GR13802@discord.disaster> User-Agent: Mutt/1.5.17 (2007-11-01) X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1262695959 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19019 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > > Also it would seem cleaner to have it in a own file. > > That might make sense if we had a large number of generic sort > functions and it was difficult to tell the code apart, but we've > only got 2 right now.... I was more thinking of the case that it can be easily made a lib-y and then eliminated by the linker on non modular kernels if not needed (unfortunately that would require putting the EXPORT_SYMBOL somewhere else) -Andi From slpratt@austin.ibm.com Tue Jan 5 09:30:11 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o05FUAtj216458 for ; Tue, 5 Jan 2010 09:30:11 -0600 X-ASG-Debug-ID: 1262705460-111600b70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e6.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9B6901412D0 for ; Tue, 5 Jan 2010 07:31:00 -0800 (PST) Received: from e6.ny.us.ibm.com (e6.ny.us.ibm.com [32.97.182.146]) by cuda.sgi.com with ESMTP id Bq7tDsjieYDr1K9e for ; Tue, 05 Jan 2010 07:31:00 -0800 (PST) Received: from d01relay01.pok.ibm.com (d01relay01.pok.ibm.com [9.56.227.233]) by e6.ny.us.ibm.com (8.14.3/8.13.1) with ESMTP id o05FQufI013016 for ; Tue, 5 Jan 2010 10:26:56 -0500 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay01.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o05FUxG3103376 for ; Tue, 5 Jan 2010 10:30:59 -0500 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.3/8.13.1/NCO v10.0 AVout) with ESMTP id o05FUw75007194 for ; Tue, 5 Jan 2010 13:30:59 -0200 Received: from [9.41.46.217] (slpratt-laptop.austin.ibm.com [9.41.46.217]) by d01av02.pok.ibm.com (8.14.3/8.13.1/NCO v10.0 AVin) with ESMTP id o05FUueZ007124; Tue, 5 Jan 2010 13:30:56 -0200 Message-ID: <4B435B34.20003@austin.ibm.com> Date: Tue, 05 Jan 2010 09:31:00 -0600 From: Steven Pratt User-Agent: Thunderbird 2.0.0.23 (X11/20090817) MIME-Version: 1.0 To: Dave Chinner CC: Chris Mason , tytso@mit.edu, Evgeniy Polyakov , Peter Grandi , xfs@oss.sgi.com, reiserfs-devel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org, jfs-discussion@lists.sourceforge.net, ext-users , linux-nilfs@vger.kernel.org X-ASG-Orig-Subj: Re: [Jfs-discussion] benchmark results Subject: Re: [Jfs-discussion] benchmark results References: <19251.26403.762180.228181@tree.ty.sabi.co.uk> <20091224212756.GM21594@thunk.org> <20091224234631.GA1028@ioremap.net> <20091225161146.GC32757@thunk.org> <20100104162748.GA11932@think> <20100105004117.GP13802@discord.disaster> In-Reply-To: <20100105004117.GP13802@discord.disaster> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: e6.ny.us.ibm.com[32.97.182.146] X-Barracuda-Start-Time: 1262705461 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19030 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > On Mon, Jan 04, 2010 at 11:27:48AM -0500, Chris Mason wrote: > >> On Fri, Dec 25, 2009 at 11:11:46AM -0500, tytso@mit.edu wrote: >> >>> On Fri, Dec 25, 2009 at 02:46:31AM +0300, Evgeniy Polyakov wrote: >>> >>>>> [1] http://samba.org/ftp/tridge/dbench/README >>>>> >>>> Was not able to resist to write a small notice, what no matter what, but >>>> whatever benchmark is running, it _does_ show system behaviour in one >>>> or another condition. And when system behaves rather badly, it is quite >>>> a common comment, that benchmark was useless. But it did show that >>>> system has a problem, even if rarely triggered one :) >>>> >>> If people are using benchmarks to improve file system, and a benchmark >>> shows a problem, then trying to remedy the performance issue is a good >>> thing to do, of course. Sometimes, though the case which is >>> demonstrated by a poor benchmark is an extremely rare corner case that >>> doesn't accurately reflect common real-life workloads --- and if >>> addressing it results in a tradeoff which degrades much more common >>> real-life situations, then that would be a bad thing. >>> >>> In situations where benchmarks are used competitively, it's rare that >>> it's actually a *problem*. Instead it's much more common that a >>> developer is trying to prove that their file system is *better* to >>> gullible users who think that a single one-dimentional number is >>> enough for them to chose file system X over file system Y. >>> >> [ Look at all this email from my vacation...sorry for the delay ] >> >> It's important that people take benchmarks from filesystem developers >> with a big grain of salt, which is one reason the boxacle.net results >> are so nice. Steve more than willing to take patches and experiment to >> improve a given FS results, but his business is a fair representation of >> performance and it shows. >> > > Just looking at the results there, I notice that the RAID system XFS > mailserver results dropped by an order of magnitude between > 2.6.29-rc2 and 2.6.31. The single disk results are pretty > much identical across the two kernels. > > IIRC, in 2.6.31 RAID0 started passing barriers through so I suspect > this is the issue. However, seeing as dmesg is not collected by > the scripts after the run and the output of the mounttab does > not show default options, I cannot tell if this is the case. Well the dmesg collection is done by the actual benchmark run which occurs after the mount command is issued, so if you are looking for dmesg related to mounting the xfs volume, it should be in the dmesg we did collect. If dmesg actually formatted timestamps, this would be easier to see. It seems that nothing from xfs is ending up in dmesg since we are running xfs with different threads counts in order without reboot, so the dmesg for 16 thread xfs is run right after 1 thread xfs, but the dmesg show ext3 as the last thing, so safe to say no output from xfs is ending up in dmesg at all. > This > might be worth checking by running XFS with the "nobarrier" mount > option.... > I could give that a try for you. > FWIW, is it possible to get these benchmarks run on each filesystem for > each kernel release so ext/xfs/btrfs all get some regular basic > performance regression test coverage? > Possible yes. Just need to find the time to do the runs, and more importantly postprocess the data in some meaningful way. I'll see what I can do. Steve > Cheers, > > Dave. > From sandeen@sandeen.net Tue Jan 5 11:08:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o05H8WYQ222509 for ; Tue, 5 Jan 2010 11:08:32 -0600 X-ASG-Debug-ID: 1262711363-7bb103b00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F1C034CC549 for ; Tue, 5 Jan 2010 09:09:23 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ntyDZtfXgKcxDlIB for ; Tue, 05 Jan 2010 09:09:23 -0800 (PST) Received: from int-mx05.intmail.prod.int.phx2.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.18]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o05H9LrL027138 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 5 Jan 2010 12:09:21 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx05.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o05H9KaU001273; Tue, 5 Jan 2010 12:09:21 -0500 Message-ID: <4B437240.3030902@sandeen.net> Date: Tue, 05 Jan 2010 11:09:20 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Krzysztof Adamski CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: NFS export broke with change from ext3 to xfs Subject: Re: NFS export broke with change from ext3 to xfs References: <1262652500.24160.27.camel@oxygen.netxsys.com> In-Reply-To: <1262652500.24160.27.camel@oxygen.netxsys.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.18 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1262711363 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19036 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Krzysztof Adamski wrote: > Hi All, > > I just changed one filesystem on my mythbox from ext3 to xfs, and now I > can't get a client machine to NFS mount from it. > > This is the export file on the server: > /file-store/nfs-roots/f1/home f1(rw,no_root_squash,sync,no_subtree_check) > /file-store/nfs-roots/f1/usr > f1(rw,no_root_squash,sync,no_subtree_check) > /file-store/nfs-roots/f1/var > f1(rw,no_root_squash,sync,no_subtree_check) > > and on the client(f1) the three filesystems are mount on /home, /usr, > and /var > > This worked fine when /file-store on the server was formatted with ext3, > now that it is formatted with xfs I get this message on the client: > mount.nfs: Stale NFS file handle > I get this message 3 times. I dunno, this should work. Anything in either of the system logs? -Eric > Nothing else changed, both systems are Debian Lenny with custom kernel. > Server is 2.6.28, client is 2.6.29.6. NFS is version 3. > The fstab on the server has this: > /dev/mapper/big--raid-file--store /file-store xfs > noatime,logbsize=256k,inode64 0 1 > > The reason for the change of the filesystem was an upgrade of the drives > in the RAID, now the filesystem is 7T instead of 2.4T, > nothing else was changed. Why did this work with ext3 and does not with > XFS? What can I do to get this to work, short of reverting to ext3? > > K > From k@adamski.org Tue Jan 5 11:21:00 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o05HL0sn223501 for ; Tue, 5 Jan 2010 11:21:00 -0600 X-ASG-Debug-ID: 1262712109-50fd01a70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from radon.netxsys.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 665551C2EF2F for ; Tue, 5 Jan 2010 09:21:50 -0800 (PST) Received: from radon.netxsys.com (radon.netxsys.com [204.16.202.162]) by cuda.sgi.com with ESMTP id bt7HiNfcJJ7nDTFX for ; Tue, 05 Jan 2010 09:21:50 -0800 (PST) Received: by radon.netxsys.com (Postfix, from userid 33) id 63F2CC000091; Tue, 5 Jan 2010 12:21:49 -0500 (EST) Received: from 205.189.93.240 (SquirrelMail authenticated user k@adamski.org) by webmail.netxsys.com with HTTP; Tue, 5 Jan 2010 12:21:49 -0500 (EST) Message-ID: <43686.205.189.93.240.1262712109.squirrel@webmail.netxsys.com> In-Reply-To: <4B437240.3030902@sandeen.net> References: <1262652500.24160.27.camel@oxygen.netxsys.com> <4B437240.3030902@sandeen.net> Date: Tue, 5 Jan 2010 12:21:49 -0500 (EST) X-ASG-Orig-Subj: Re: NFS export broke with change from ext3 to xfs Subject: Re: NFS export broke with change from ext3 to xfs From: "Krzysztof Adamski" To: "Eric Sandeen" Cc: xfs@oss.sgi.com User-Agent: SquirrelMail/1.4.9a MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Barracuda-Connect: radon.netxsys.com[204.16.202.162] X-Barracuda-Start-Time: 1262712110 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19038 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > Krzysztof Adamski wrote: >> Hi All, >> >> I just changed one filesystem on my mythbox from ext3 to xfs, and now I >> can't get a client machine to NFS mount from it. >> >> This is the export file on the server: >> /file-store/nfs-roots/f1/home >> f1(rw,no_root_squash,sync,no_subtree_check) >> /file-store/nfs-roots/f1/usr >> f1(rw,no_root_squash,sync,no_subtree_check) >> /file-store/nfs-roots/f1/var >> f1(rw,no_root_squash,sync,no_subtree_check) >> >> and on the client(f1) the three filesystems are mount on /home, /usr, >> and /var >> >> This worked fine when /file-store on the server was formatted with ext3, >> now that it is formatted with xfs I get this message on the client: >> mount.nfs: Stale NFS file handle >> I get this message 3 times. > > I dunno, this should work. Anything in either of the system logs? On the server: Jan 4 19:27:03 Myth mountd[5342]: authenticated mount request from x.x.x.x:741 for /file-store/nfs-roots/f1/var (/file-store/nfs-roots/f1/var) Jan 4 19:27:03 Myth mountd[5342]: authenticated mount request from x.x.x.x:757 for /file-store/nfs-roots/f1/usr (/file-store/nfs-roots/f1/usr) Jan 4 19:27:03 Myth mountd[5342]: authenticated mount request from x.x.x.x:759 for /file-store/nfs-roots/f1/home (/file-store/nfs-roots/f1/home) but this is identical to when it worked. No logs on the client, /var is not yet mounted. Should I be asking on the NFS list? > -Eric > >> Nothing else changed, both systems are Debian Lenny with custom kernel. >> Server is 2.6.28, client is 2.6.29.6. NFS is version 3. >> The fstab on the server has this: >> /dev/mapper/big--raid-file--store /file-store xfs >> noatime,logbsize=256k,inode64 0 1 >> >> The reason for the change of the filesystem was an upgrade of the drives >> in the RAID, now the filesystem is 7T instead of 2.4T, >> nothing else was changed. Why did this work with ext3 and does not with >> XFS? What can I do to get this to work, short of reverting to ext3? >> >> K >> > From BATV+bb8bdaeaf028fa0ec3b7+2326+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 5 11:42:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o05HgfE8224987 for ; Tue, 5 Jan 2010 11:42:42 -0600 X-ASG-Debug-ID: 1262713412-50cb02630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DA76B1C2F06F for ; Tue, 5 Jan 2010 09:43:32 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id XswLCgH0LHjB9fqd for ; Tue, 05 Jan 2010 09:43:32 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSDRM-0003tM-AV; Tue, 05 Jan 2010 17:43:32 +0000 Date: Tue, 5 Jan 2010 12:43:32 -0500 From: Christoph Hellwig To: Krzysztof Adamski Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: NFS export broke with change from ext3 to xfs Subject: Re: NFS export broke with change from ext3 to xfs Message-ID: <20100105174332.GA14496@infradead.org> References: <1262652500.24160.27.camel@oxygen.netxsys.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262652500.24160.27.camel@oxygen.netxsys.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262713412 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Remove the inode64 mount option or move every export to a separate filesystem. The NFS code can't cope with 64 bit inode numbers when exporting a subtree of a filesystem. You'd see the same issue with e.g. ocfs2 or gfs2. From aelder@sgi.com Tue Jan 5 12:07:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o05I7Y66226665 for ; Tue, 5 Jan 2010 12:07:34 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7E41D8F8073; Tue, 5 Jan 2010 10:08:23 -0800 (PST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-MimeOLE: Produced By Microsoft Exchange V6.5 Subject: RE: [PATCH 7/6] XFS: Add trace points for per-ag refcount debugging. Date: Tue, 5 Jan 2010 12:08:22 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A690A@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20091220042813.GJ4850@discord.disaster> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 7/6] XFS: Add trace points for per-ag refcount debugging. Thread-Index: AcqBLSji2hP0g8pARuWY5fegAjor1gNBM/eQ From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > Uninline xfs_perag_{get,put} so that tracepoints can be inserted > into them to speed debugging of reference count problems. Looks good. > Signed-off-by: Dave Chinner Reviewed-by: Alex Elder > --- > fs/xfs/linux-2.6/xfs_trace.h | 27 +++++++++++++++++++++++++++ > fs/xfs/xfs_ag.h | 2 ++ > fs/xfs/xfs_mount.c | 34 = ++++++++++++++++++++++++++++++++++ > fs/xfs/xfs_mount.h | 25 ++----------------------- > 4 files changed, 65 insertions(+), 23 deletions(-) >=20 > diff --git a/fs/xfs/linux-2.6/xfs_trace.h = b/fs/xfs/linux-2.6/xfs_trace.h > index d4ded59..5ec1475 100644 > --- a/fs/xfs/linux-2.6/xfs_trace.h > +++ b/fs/xfs/linux-2.6/xfs_trace.h > @@ -33,6 +33,33 @@ struct xfs_dquot; > struct xlog_ticket; > struct log; >=20 > +#define DEFINE_PERAG_REF_EVENT(name) \ > +TRACE_EVENT(name, \ > + TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int refcount, \ > + unsigned long caller_ip), \ > + TP_ARGS(mp, agno, refcount, caller_ip), \ > + TP_STRUCT__entry( \ > + __field(dev_t, dev) \ > + __field(xfs_agnumber_t, agno) \ > + __field(int, refcount) \ > + __field(unsigned long, caller_ip) \ > + ), \ > + TP_fast_assign( \ > + __entry->dev =3D mp->m_super->s_dev; \ > + __entry->agno =3D agno; \ > + __entry->refcount =3D refcount; \ > + __entry->caller_ip =3D caller_ip; \ > + ), \ > + TP_printk("dev %d:%d agno %u refcount %d caller %pf", \ > + MAJOR(__entry->dev), MINOR(__entry->dev), \ > + __entry->agno, \ > + __entry->refcount, \ > + (char *)__entry->caller_ip) \ > +); > + > +DEFINE_PERAG_REF_EVENT(xfs_perag_get) > +DEFINE_PERAG_REF_EVENT(xfs_perag_put) > + > #define DEFINE_ATTR_LIST_EVENT(name) \ > TRACE_EVENT(name, \ > TP_PROTO(struct xfs_attr_list_context *ctx), \ > diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h > index 18ae43f..963bc27 100644 > --- a/fs/xfs/xfs_ag.h > +++ b/fs/xfs/xfs_ag.h > @@ -197,6 +197,8 @@ typedef struct xfs_perag_busy { > #endif >=20 > typedef struct xfs_perag { > + struct xfs_mount *pag_mount; /* owner filesystem */ > + xfs_agnumber_t pag_agno; /* AG this structure belongs to */ > atomic_t pag_ref; /* perag reference count */ > char pagf_init; /* this agf's entry is initialized */ > char pagi_init; /* this agi's entry is initialized */ > diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c > index 1d00f7f..223d9c3 100644 > --- a/fs/xfs/xfs_mount.c > +++ b/fs/xfs/xfs_mount.c > @@ -201,6 +201,38 @@ xfs_uuid_unmount( >=20 >=20 > /* > + * Reference counting access wrappers to the perag structures. > + */ > +struct xfs_perag * > +xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) > +{ > + struct xfs_perag *pag; > + int ref =3D 0; > + > + spin_lock(&mp->m_perag_lock); > + pag =3D radix_tree_lookup(&mp->m_perag_tree, agno); > + if (pag) { > + ASSERT(atomic_read(&pag->pag_ref) >=3D 0); > + /* catch leaks in the positive direction during testing */ > + ASSERT(atomic_read(&pag->pag_ref) < 1000); > + ref =3D atomic_inc_return(&pag->pag_ref); > + } > + spin_unlock(&mp->m_perag_lock); > + trace_xfs_perag_get(mp, agno, ref, _RET_IP_); > + return pag; > +} > + > +void > +xfs_perag_put(struct xfs_perag *pag) > +{ > + int ref; > + > + ASSERT(atomic_read(&pag->pag_ref) > 0); > + ref =3D atomic_dec_return(&pag->pag_ref); > + trace_xfs_perag_put(pag->pag_mount, pag->pag_agno, ref, _RET_IP_); > +} > + > +/* > * Free up the resources associated with a mount structure. Assume = that > * the structure was initially zeroed, so we can tell which fields = got > * initialized. > @@ -433,6 +465,8 @@ xfs_initialize_perag( > kmem_free(pag); > return -EEXIST; > } > + pag->pag_agno =3D index; > + pag->pag_mount =3D mp; > spin_unlock(&mp->m_perag_lock); > radix_tree_preload_end(); > } > diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h > index 16b2212..e62fd1c 100644 > --- a/fs/xfs/xfs_mount.h > +++ b/fs/xfs/xfs_mount.h > @@ -386,29 +386,8 @@ xfs_daddr_to_agbno(struct xfs_mount *mp, = xfs_daddr_t d) > /* > * perag get/put wrappers for ref counting > */ > -static inline struct xfs_perag * > -xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) > -{ > - struct xfs_perag *pag; > - > - spin_lock(&mp->m_perag_lock); > - pag =3D radix_tree_lookup(&mp->m_perag_tree, agno); > - if (pag) { > - ASSERT(atomic_read(&pag->pag_ref) >=3D 0); > - /* catch leaks in the positive direction during testing */ > - ASSERT(atomic_read(&pag->pag_ref) < 1000); > - atomic_inc(&pag->pag_ref); > - } > - spin_unlock(&mp->m_perag_lock); > - return pag; > -} > - > -static inline void > -xfs_perag_put(struct xfs_perag *pag) > -{ > - ASSERT(atomic_read(&pag->pag_ref) > 0); > - atomic_dec(&pag->pag_ref); > -} > +struct xfs_perag *xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t = agno); > +void xfs_perag_put(struct xfs_perag *pag); >=20 > /* > * Per-cpu superblock locking functions >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From eflorac@intellique.com Tue Jan 5 14:36:36 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o05KaZ1a236179 for ; Tue, 5 Jan 2010 14:36:35 -0600 X-ASG-Debug-ID: 1262723843-492102cb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp5-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 282F4ECF3EF for ; Tue, 5 Jan 2010 12:37:24 -0800 (PST) Received: from smtp5-g21.free.fr (smtp5-g21.free.fr [212.27.42.5]) by cuda.sgi.com with ESMTP id htfUZPAq9VCfeXAi for ; Tue, 05 Jan 2010 12:37:24 -0800 (PST) Received: from smtp5-g21.free.fr (localhost [127.0.0.1]) by smtp5-g21.free.fr (Postfix) with ESMTP id B6491D48084 for ; Tue, 5 Jan 2010 21:37:21 +0100 (CET) Received: from galadriel.home (pla78-1-82-235-234-79.fbx.proxad.net [82.235.234.79]) by smtp5-g21.free.fr (Postfix) with ESMTP id C1BDCD480F3 for ; Tue, 5 Jan 2010 21:37:18 +0100 (CET) Date: Tue, 5 Jan 2010 21:37:14 +0100 From: Emmanuel Florac To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: NFS export broke with change from ext3 to xfs Subject: Re: NFS export broke with change from ext3 to xfs Message-ID: <20100105213714.5b9b2a11@galadriel.home> In-Reply-To: <20100105174332.GA14496@infradead.org> References: <1262652500.24160.27.camel@oxygen.netxsys.com> <20100105174332.GA14496@infradead.org> Organization: Intellique X-Mailer: Claws Mail 3.0.2 (GTK+ 2.12.9; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp5-g21.free.fr[212.27.42.5] X-Barracuda-Start-Time: 1262723847 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19050 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Le Tue, 5 Jan 2010 12:43:32 -0500 vous =E9criviez: > Remove the inode64 mount option or move every export to a separate > filesystem. The NFS code can't cope with 64 bit inode numbers when > exporting a subtree of a filesystem. You'd see the same issue with > e.g. ocfs2 or gfs2. Does the kernel architecture (32 or 64 bits) have any influence there? --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From aelder@sgi.com Tue Jan 5 19:01:15 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0611EGn001143 for ; Tue, 5 Jan 2010 19:01:15 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4AA61AC01C; Tue, 5 Jan 2010 17:02:03 -0800 (PST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfs: fix timestamp handling in xfs_setattr X-MimeOLE: Produced By Microsoft Exchange V6.5 Date: Tue, 5 Jan 2010 19:02:02 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6913@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20091223160913.GA13039@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfs: fix timestamp handling in xfs_setattr Thread-Index: AcqD7Y2fACPQHSIeRKSMN70yNLczdgKfHoCg From: "Alex Elder" To: "Christoph Hellwig" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > We currently have some rather odd code in xfs_setattr for updating the > a/c/mtime timestampts: >=20 > - first we do a non-transaction update if all three are updated = together > - second we implicitly update the ctime for various changes instead = of > relying on the ATTR_CTIME flag > - third we set the timestamps to the current time instead of the = arguments > in the iattr structure in many cases. >=20 > This patch makes sure we update it in a consistant way: >=20 > - always transactional > - ctime is only updated if ATTR_CTIME is set or we do a size update, = which > is a special case > - always to the times passed in from the caller instead of the = current time >=20 > The only non-size caller of xfs_setattr that doesn't come from the VFS = is > updated to set ATTR_CTIME and pass in a valid ctime value. This looks good to me, although I acknowledge I haven't worked through it 100%. Another reviewer would be good. But even better, I really want to see the gnulib timestamp unit tests into xfstests to verify the behavior either way (which you indicated you'd work on...). In fact, if you've made any headway on it I'd like to run the tests against this patch before committing it. I'll run with this and will synch up with you on the timestamp tests, and hope for another review. Despite all that caveat crap... > Reported-by: Eric Blake > Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder =20 > Index: linux-2.6/fs/xfs/xfs_vnodeops.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- linux-2.6.orig/fs/xfs/xfs_vnodeops.c 2009-12-23 13:51:24.706170043 = +0100 > +++ linux-2.6/fs/xfs/xfs_vnodeops.c 2009-12-23 13:51:30.774170044 = +0100 > @@ -70,7 +70,6 @@ xfs_setattr( > uint commit_flags=3D0; > uid_t uid=3D0, iuid=3D0; > gid_t gid=3D0, igid=3D0; > - int timeflags =3D 0; > struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2; > int need_iolock =3D 1; >=20 > @@ -135,16 +134,13 @@ xfs_setattr( > if (flags & XFS_ATTR_NOLOCK) > need_iolock =3D 0; > if (!(mask & ATTR_SIZE)) { > - if ((mask !=3D (ATTR_CTIME|ATTR_ATIME|ATTR_MTIME)) || > - (mp->m_flags & XFS_MOUNT_WSYNC)) { > - tp =3D xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); > - commit_flags =3D 0; > - if ((code =3D xfs_trans_reserve(tp, 0, > - XFS_ICHANGE_LOG_RES(mp), 0, > - 0, 0))) { > - lock_flags =3D 0; > - goto error_return; > - } > + tp =3D xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE); > + commit_flags =3D 0; > + code =3D xfs_trans_reserve(tp, 0, XFS_ICHANGE_LOG_RES(mp), > + 0, 0, 0); > + if (code) { > + lock_flags =3D 0; > + goto error_return; > } > } else { > if (DM_EVENT_ENABLED(ip, DM_EVENT_TRUNCATE) && > @@ -295,15 +291,23 @@ xfs_setattr( > * or we are explicitly asked to change it. This handles > * the semantic difference between truncate() and ftruncate() > * as implemented in the VFS. > - */ > - if (iattr->ia_size !=3D ip->i_size || (mask & ATTR_CTIME)) > - timeflags |=3D XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG; > + * > + * The regular truncate() case without ATTR_CTIME and ATTR_MTIME > + * is a special case where we need to update the times despite > + * not having these flags set. For all other operations the > + * VFS set these flags explicitly if it wants a timestamp > + * update. > + */ > + if (iattr->ia_size !=3D ip->i_size && > + (!(mask & (ATTR_CTIME | ATTR_MTIME)))) { > + iattr->ia_ctime =3D iattr->ia_mtime =3D > + current_fs_time(inode->i_sb); > + mask |=3D ATTR_CTIME | ATTR_MTIME; > + } >=20 > if (iattr->ia_size > ip->i_size) { > ip->i_d.di_size =3D iattr->ia_size; > ip->i_size =3D iattr->ia_size; > - if (!(flags & XFS_ATTR_DMI)) > - xfs_ichgtime(ip, XFS_ICHGTIME_CHG); > xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > } else if (iattr->ia_size <=3D ip->i_size || > (iattr->ia_size =3D=3D 0 && ip->i_d.di_nextents)) { > @@ -374,9 +378,6 @@ xfs_setattr( > ip->i_d.di_gid =3D gid; > inode->i_gid =3D gid; > } > - > - xfs_trans_log_inode (tp, ip, XFS_ILOG_CORE); > - timeflags |=3D XFS_ICHGTIME_CHG; > } >=20 > /* > @@ -393,51 +394,37 @@ xfs_setattr( >=20 > inode->i_mode &=3D S_IFMT; > inode->i_mode |=3D mode & ~S_IFMT; > - > - xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > - timeflags |=3D XFS_ICHGTIME_CHG; > } >=20 > /* > * Change file access or modified times. > */ > - if (mask & (ATTR_ATIME|ATTR_MTIME)) { > - if (mask & ATTR_ATIME) { > - inode->i_atime =3D iattr->ia_atime; > - ip->i_d.di_atime.t_sec =3D iattr->ia_atime.tv_sec; > - ip->i_d.di_atime.t_nsec =3D iattr->ia_atime.tv_nsec; > - ip->i_update_core =3D 1; > - } > - if (mask & ATTR_MTIME) { > - inode->i_mtime =3D iattr->ia_mtime; > - ip->i_d.di_mtime.t_sec =3D iattr->ia_mtime.tv_sec; > - ip->i_d.di_mtime.t_nsec =3D iattr->ia_mtime.tv_nsec; > - timeflags &=3D ~XFS_ICHGTIME_MOD; > - timeflags |=3D XFS_ICHGTIME_CHG; > - } > - if (tp && (mask & (ATTR_MTIME_SET|ATTR_ATIME_SET))) > - xfs_trans_log_inode (tp, ip, XFS_ILOG_CORE); > + if (mask & ATTR_ATIME) { > + inode->i_atime =3D iattr->ia_atime; > + ip->i_d.di_atime.t_sec =3D iattr->ia_atime.tv_sec; > + ip->i_d.di_atime.t_nsec =3D iattr->ia_atime.tv_nsec; > + ip->i_update_core =3D 1; > } > - > - /* > - * Change file inode change time only if ATTR_CTIME set > - * AND we have been called by a DMI function. > - */ > - > - if ((flags & XFS_ATTR_DMI) && (mask & ATTR_CTIME)) { > + if (mask & ATTR_CTIME) { > inode->i_ctime =3D iattr->ia_ctime; > ip->i_d.di_ctime.t_sec =3D iattr->ia_ctime.tv_sec; > ip->i_d.di_ctime.t_nsec =3D iattr->ia_ctime.tv_nsec; > ip->i_update_core =3D 1; > - timeflags &=3D ~XFS_ICHGTIME_CHG; > + } > + if (mask & ATTR_MTIME) { > + inode->i_mtime =3D iattr->ia_mtime; > + ip->i_d.di_mtime.t_sec =3D iattr->ia_mtime.tv_sec; > + ip->i_d.di_mtime.t_nsec =3D iattr->ia_mtime.tv_nsec; > + ip->i_update_core =3D 1; > } >=20 > /* > - * Send out timestamp changes that need to be set to the > - * current time. Not done when called by a DMI function. > + * And finally, log the inode core if any attribute in it > + * has been changed. > */ > - if (timeflags && !(flags & XFS_ATTR_DMI)) > - xfs_ichgtime(ip, timeflags); > + if (mask & (ATTR_UID|ATTR_GID|ATTR_MODE| > + ATTR_ATIME|ATTR_CTIME|ATTR_MTIME)) > + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); >=20 > XFS_STATS_INC(xs_ig_attrchg); >=20 > @@ -452,12 +439,10 @@ xfs_setattr( > * mix so this probably isn't worth the trouble to optimize. > */ > code =3D 0; > - if (tp) { > - if (mp->m_flags & XFS_MOUNT_WSYNC) > - xfs_trans_set_sync(tp); > + if (mp->m_flags & XFS_MOUNT_WSYNC) > + xfs_trans_set_sync(tp); >=20 > - code =3D xfs_trans_commit(tp, commit_flags); > - } > + code =3D xfs_trans_commit(tp, commit_flags); >=20 > xfs_iunlock(ip, lock_flags); >=20 > Index: linux-2.6/fs/xfs/linux-2.6/xfs_acl.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_acl.c 2009-12-23 = 13:51:24.718170043 +0100 > +++ linux-2.6/fs/xfs/linux-2.6/xfs_acl.c 2009-12-23 13:51:30.775170044 = +0100 > @@ -251,8 +251,9 @@ xfs_set_mode(struct inode *inode, mode_t > if (mode !=3D inode->i_mode) { > struct iattr iattr; >=20 > - iattr.ia_valid =3D ATTR_MODE; > + iattr.ia_valid =3D ATTR_MODE | ATTR_CTIME; > iattr.ia_mode =3D mode; > + iattr.ia_ctime =3D current_fs_time(inode->i_sb); >=20 > error =3D -xfs_setattr(XFS_I(inode), &iattr, XFS_ATTR_NOACL); > } >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From xfs@bob.dscon.sk Wed Jan 6 03:02:04 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06923FM050775 for ; Wed, 6 Jan 2010 03:02:04 -0600 X-ASG-Debug-ID: 1262768574-159f01280000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bob.dscon.sk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5D158143F7F for ; Wed, 6 Jan 2010 01:02:54 -0800 (PST) Received: from bob.dscon.sk (bob.dscon.sk [88.86.113.10]) by cuda.sgi.com with ESMTP id LjTLs4chjxghFfP2 for ; Wed, 06 Jan 2010 01:02:54 -0800 (PST) Received: by bob.dscon.sk (Postfix, from userid 1007) id 41384DC3DC; Wed, 6 Jan 2010 10:02:53 +0100 (CET) Date: Wed, 6 Jan 2010 10:02:53 +0100 From: DS To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs 2.6.31.9 error - possibly SOLVED Subject: Re: xfs 2.6.31.9 error - possibly SOLVED Message-ID: <20100106090253.GA19339@bob.dscon.sk> References: <20091228151048.GA24031@bob.dscon.sk> <20091228232204.GB7613@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20091228232204.GB7613@discord.disaster> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bob.dscon.sk[88.86.113.10] X-Barracuda-Start-Time: 1262768575 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19098 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean There was something wrong with the old FS and the kernel 2.6.31.9 (unable to replay log) has not been of much help. All works fine with kernel 2.6.27.42 and new clear FS for a few days . Thanks. Dusan On Tue, Dec 29, 2009 at 10:22:04AM +1100, Dave Chinner wrote: > On Mon, Dec 28, 2009 at 04:10:48PM +0100, DS wrote: > > Hello, > > > > after upgrade from Debian etch -> Debian lenny with custom kernel > > 2.6.31.9 (before 2.6.28.1) I see this error and server is > > resetting sometimes.. > > > > Filesystem was creating far far away (about 4years ago). > > > > XFS internal error XFS_WANT_CORRUPTED_RETURN at line 366 of file fs/xfs/xfs_alloc.c. Caller 0xffffffff81169ae3 > > Any errors in the log before this (e.g. IO errors)? > > > Pid: 4022, comm: procmail Not tainted 2.6.31.9 #3 > > Call Trace: > > [] xfs_error_report+0x3e/0x40 > > [] xfs_alloc_fixup_trees+0x2ba/0x340 > > [] ? xfs_alloc_get_rec+0x29/0x60 > > [] xfs_alloc_ag_vextent_near+0x3f3/0x940 > > [] xfs_alloc_ag_vextent+0xd5/0x130 > > [] xfs_alloc_vextent+0x3a8/0x4f0 > ..... > > Looks like a corrupted free space tree - that could have happened a > long time ago and only now are you tripping over it. I'd run > xfs_repair on the filesystem to fix up the problem. If it happens > again then we'll have to look deeper. > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com From pcdataentry@freemail.lt Wed Jan 6 08:39:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.4 required=5.0 tests=AWL,BAYES_50,FH_DATE_PAST_20XX, MIME_8BIT_HEADER autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06EdNnC082334 for ; Wed, 6 Jan 2010 08:39:23 -0600 X-ASG-Debug-ID: 1262788814-75fb00780000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from zun-exch01.MILLERINT.COM (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0DFF014647F for ; Wed, 6 Jan 2010 06:40:14 -0800 (PST) Received: from zun-exch01.MILLERINT.COM (dragon.mii-rmcc.com [207.94.16.130]) by cuda.sgi.com with ESMTP id URTRCFpn4HY5qDpG for ; Wed, 06 Jan 2010 06:40:14 -0800 (PST) Received: from server2 ([65.38.188.153]) by zun-exch01.MILLERINT.COM with Microsoft SMTPSVC(6.0.3790.1830); Wed, 6 Jan 2010 07:40:13 -0700 thread-index: AcqO3hyxbRT9wslLRfSmMJdpjB5M0Q== Thread-Topic: =?iso-8859-1?Q?ROCKIES=AE_logo_lanyard_-_CinchStuff.com?= From: To: X-ASG-Orig-Subj: =?iso-8859-1?Q?ROCKIES=AE_logo_lanyard_-_CinchStuff.com?= Subject: =?iso-8859-1?Q?ROCKIES=AE_logo_lanyard_-_CinchStuff.com?= Date: Wed, 6 Jan 2010 07:39:54 -0700 Message-ID: <0867A53FAEA2451C98E3E1B612A447F3@server2> MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Mailer: Microsoft CDO for Windows 2000 Content-Class: urn:content-classes:message Importance: normal Priority: normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4133 X-OriginalArrivalTime: 06 Jan 2010 14:40:13.0815 (UTC) FILETIME=[27FB6070:01CA8EDE] X-Barracuda-Connect: dragon.mii-rmcc.com[207.94.16.130] X-Barracuda-Start-Time: 1262788815 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2454 1.0000 -0.5975 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.40 X-Barracuda-Spam-Status: No, SCORE=-0.40 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA161f, MAILTO_TO_SPAM_ADDR, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19117 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.00 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 0.20 BSF_SC5_SA161f Custom Rule SA161f X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dear xfs, Look at what I found at CinchStuff.com URGENT ATTENTION: PAID @ Home WORKS! $550 - $1,100 per week! http://fyad.org/106x8 Greetings! We work with multi-million and even multi-billion dollar companies that offer big payouts! Let us show you how to work less while making more money, 100% scam free! We have spent the last few years researching the most lucrative and unique ways for people of all ages 18 and above, to make money from home. The owner of the site has even worked for such infomercial legends as Don Lapre of the "TV Show Making Money", Susan Powter of "Stop The Insanity", and has even starred on the NEW Rich Jerk Infomercial! We know what it takes to make legitimate money from home and we believe we have now found it and want to help you every step of the way. Whether you want to do data entry part-time, full-time, or even stop and start again this is it! Pay checks sent to you every two weeks! GET EXCITED, you can start as early as today making as much as $550 - $1,100 per week! Visit here for more details: http://fyad.org/106x8 Warm regards, MR. Cashbomber enterdatajobworks2010@gmail.com P.S Due to high demand for this special offer, we now have limited membership spots available. Be sure to lock in your membership now before its too late! "We absolutely Guarantee our DataPcJobs program will help you Make Money from anywhere in the world on your computer. If youre not completely satisfied with our DataPcJobs program, simply let us know within 60 days and we will refund your money with no questions asked!" -------------- simply email here: datasourceassociates@e-mile.co.uk and add "remove" if not interested................... .. http://www.cinchstuff.com/shop/pc/viewprd.asp?idproduct=52 pcdataentryworks xfs From BATV+c85c17bc10db0e3ebba7+2327+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 6 10:39:05 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06Gd3ts094279 for ; Wed, 6 Jan 2010 10:39:05 -0600 X-ASG-Debug-ID: 1262795994-1fea01730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7B299ED7934 for ; Wed, 6 Jan 2010 08:39:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id npyqBMEqHt6lMGMm for ; Wed, 06 Jan 2010 08:39:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSYvJ-0007cq-Sw; Wed, 06 Jan 2010 16:39:53 +0000 Date: Wed, 6 Jan 2010 11:39:53 -0500 From: Christoph Hellwig To: Christian Kujau Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] use CFLAGS in src/Makefile Subject: Re: [PATCH] use CFLAGS in src/Makefile Message-ID: <20100106163953.GA4209@infradead.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262795995 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 02, 2010 at 02:16:08PM -0800, Christian Kujau wrote: > Hi, > > while compiling xfstests after configuring with a different CFLAGS value, > gcc fails in ./src: > > [...] > make[2]: Entering directory `/usr/local/src/xfstests-git/src' > gcc -g -O2 -DDEBUG -I../include -DVERSION=\"1.0.0\" -L/opt/xfsprogs/lib > -DREAD iopat.c -o preallo_rw_pattern_reader > iopat.c:21:21: error: xfs/xfs.h: No such file or directory > [...] > > Somehow CFLAGS isn't passed to gcc, but "GCFLAGS" is. I'm not too savvy > with the xfstests build system, but in include/builddefs.in we see: > > # Global, Platform, Local CFLAGS > CFLAGS += $(GCFLAGS) $(PCFLAGS) $(LCFLAGS) > > ...thus I'm proposing the following fix: This looks correct, or at least better than what we had before. But I really dislike how we defeat the abstraction used for compiling all the other tools. What might be better is to add a small preallo_rw_pattern_writer.c file that just contains: #define WRITE #include iopat.c and the same for the reader side and use the normal rules to compile the program. From BATV+c85c17bc10db0e3ebba7+2327+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 6 10:47:56 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06GltNi095037 for ; Wed, 6 Jan 2010 10:47:55 -0600 X-ASG-Debug-ID: 1262796527-594603060000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 018EA146023 for ; Wed, 6 Jan 2010 08:48:47 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id GTmrjpLEymOcSlVv for ; Wed, 06 Jan 2010 08:48:47 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSZ3s-0004mv-RM; Wed, 06 Jan 2010 16:48:44 +0000 Date: Wed, 6 Jan 2010 11:48:44 -0500 From: Christoph Hellwig To: Christian Kujau Cc: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] remove bashisms from xfstests Subject: Re: [PATCH] remove bashisms from xfstests Message-ID: <20100106164844.GB4209@infradead.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262796528 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Jan 03, 2010 at 02:30:05AM -0800, Christian Kujau wrote: > While trying to run xfstests, I encountered several errors due to the fact > that my /bin/sh is not linked to /bin/bash but to dash(1), which can be > made the default /bin/sh in Debian based systems. The patch below is > rather large and is touching many files, but it's pretty straightfoward: > > 1) convert brace expansions (e.g. "rm -f symlink_{0,1,2,3}") I'll comment on these in detail below. > 2) convert "let..." into something (hopefully) more portable Dave converted these away from expr due to performance reasons. I'd like too see a prove that performance hasn't regressed due to this change. > 3) replace 'a == b' with 'a = b' in bourne shell scripts This looks fine. If you want feel free to submit these as a separate first patch so that we have the large pile sorted out. > - rm -f symlink_{0,1,2,3}{0,1,2,3,4,5,6,7,8,9} symlink_self empty_file > + rm -f symlink_* empty_file This kind of replacement looks fine. > -for f in symlink_{0,1,2,3}{0,1,2,3,4,5,6,7,8,9} > +f=1 > +while [ $f -le 40 ] > do > - ln -s $o $f > + ln -s $o symlink_$f > o=$f > + o=symlink_$f > + f=$((f + 1)) > done I fear this might cause some overhead in the shell. What about the following instead: for i in `seq 0 39`; do ln -s $o symlink_$i o=symlink_$i done Same applies to similar subsitutions. > diff -Nrup xfstests.orig/032 xfstests/032 > --- xfstests.orig/032 2010-01-03 00:42:16.601617592 -0800 > +++ xfstests/032 2010-01-03 00:43:56.321617592 -0800 > @@ -66,6 +66,7 @@ do > [ $fs = ext3 ] && preargs="-F" > [ $fs = ext4 ] && preargs="-F" > [ $fs = ext4dev ] && preargs="-F" > + [ $fs = nilfs2 ] && preargs="-q" This hunk is unrelated. Please submit it with a trivial one-liner description and a signed-off-by line and I'll put it in. > -echo -e -n "\n\r*** XFS QA 044 - done\n\r\n\r" >/dev/console > +printf "\n\r*** XFS QA 044 - done\n\r\n\r" >/dev/console This looks okay, but should be mentioned in the patch description. > echo "=== Recursive change ACL ===" > rm -fr root > -mkdir root > -pushd root >/dev/null > # create an arbitrary little tree > for i in 1 2 3 4 5 6 7 8 9 0 > do > - mkdir -p a/$i > - mkdir -p b/c$i/$i > - touch a/$i/mumble > + mkdir -p root/a/$i > + mkdir -p root/b/c$i/$i > + touch root/a/$i/mumble > done > -popd >/dev/null Same here. From BATV+c85c17bc10db0e3ebba7+2327+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 6 10:48:54 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06GmrdX095149 for ; Wed, 6 Jan 2010 10:48:53 -0600 X-ASG-Debug-ID: 1262796585-1ecc02120000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B2E73ED8067 for ; Wed, 6 Jan 2010 08:49:45 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 4XbGzUuY1eSBmZE9 for ; Wed, 06 Jan 2010 08:49:45 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSZ4q-0006ZN-Uw; Wed, 06 Jan 2010 16:49:44 +0000 Date: Wed, 6 Jan 2010 11:49:44 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs mailing list , ext4 development , Theodore Tso X-ASG-Orig-Subj: Re: [PATCH] xfstests: add another fallocate test to 214 Subject: Re: [PATCH] xfstests: add another fallocate test to 214 Message-ID: <20100106164944.GA20137@infradead.org> References: <4B427731.9080801@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B427731.9080801@redhat.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262796585 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 04, 2010 at 05:18:09PM -0600, Eric Sandeen wrote: > ext4 had a regression where it double-accounted used blocks > if you fallocated on top of delalloc blocks. Ted sent a > c program to exploit it (see "fsstress-induced corruption reproduced" > on linux-ext4 on 12/31/2009) and it's trivial to do the same thing > within the xfstests framework using xfs_io. > > This also changes the handcrafted xfs_io tests to use the > _require_xfs_io_falloc helper, not sure how that got missed. Looks good, Reviewed-by: Christoph Hellwig From BATV+c85c17bc10db0e3ebba7+2327+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 6 10:53:37 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06GrbVO095545 for ; Wed, 6 Jan 2010 10:53:37 -0600 X-ASG-Debug-ID: 1262796869-3c9002770000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 90BDF1C34018; Wed, 6 Jan 2010 08:54:29 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id fFsdhprHkFWpdB0h; Wed, 06 Jan 2010 08:54:29 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSZ9Q-0001vb-6D; Wed, 06 Jan 2010 16:54:28 +0000 Date: Wed, 6 Jan 2010 11:54:28 -0500 From: Christoph Hellwig To: Alex Elder Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: fix timestamp handling in xfs_setattr Subject: Re: [PATCH] xfs: fix timestamp handling in xfs_setattr Message-ID: <20100106165427.GD25393@infradead.org> References: <20091223160913.GA13039@infradead.org> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6913@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6913@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262796869 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 05, 2010 at 07:02:02PM -0600, Alex Elder wrote: > This looks good to me, although I acknowledge I haven't worked through > it 100%. Another reviewer would be good. But even better, I really > want to see the gnulib timestamp unit tests into xfstests to verify > the behavior either way (which you indicated you'd work on...). In > fact, if you've made any headway on it I'd like to run the tests against > this patch before committing it. I already have the original testcase wired up for xfstests, I just need to send out the patch after fixing some more bits. I haven't looked at the whole gnulib timestamp tests yet. Note that we'd need to look for an older GPLv2 version to not create even more licencing mess. From BATV+c85c17bc10db0e3ebba7+2327+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 6 11:22:35 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06HMZN1098022 for ; Wed, 6 Jan 2010 11:22:35 -0600 X-ASG-Debug-ID: 1262798607-2e0f03da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CC1651DAF95C for ; Wed, 6 Jan 2010 09:23:27 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id jp9OQB49MWssVoow for ; Wed, 06 Jan 2010 09:23:27 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSZbL-0008Vv-Ic; Wed, 06 Jan 2010 17:23:19 +0000 Date: Wed, 6 Jan 2010 12:23:19 -0500 From: Christoph Hellwig To: Andi Kleen Cc: Dave Chinner , xfs@oss.sgi.com, Artem Bityutskiy , Dave Airlie , linux-kernel@vger.kernel.org, Adrian Hunter X-ASG-Orig-Subj: Re: [PATCH V3] sort: Introduce generic list_sort function Subject: Re: [PATCH V3] sort: Introduce generic list_sort function Message-ID: <20100106172319.GA25046@infradead.org> References: <1262649295-28427-1-git-send-email-david__25057.2445955642$1262651404$gmane$org@fromorbit.com> <87eim4dbzw.fsf@basil.nowhere.org> <20100105122101.GR13802@discord.disaster> <20100105125234.GD1778@basil.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100105125234.GD1778@basil.fritz.box> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262798607 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 05, 2010 at 01:52:35PM +0100, Andi Kleen wrote: > > > Also it would seem cleaner to have it in a own file. > > > > That might make sense if we had a large number of generic sort > > functions and it was difficult to tell the code apart, but we've > > only got 2 right now.... > > I was more thinking of the case that it can be easily made a lib-y > and then eliminated by the linker on non modular kernels if not needed > (unfortunately that would require putting the EXPORT_SYMBOL somewhere else) lib-y doesn't work together with EXPORT_SYMBOL, having the export outside would also always pull it in. These days the whole lib-y mess doesn't make sense anymore - if we really need an optional library symbol we can just pull it in through a Kconfig variable. From BATV+c85c17bc10db0e3ebba7+2327+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 6 11:35:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06HZdtR098993 for ; Wed, 6 Jan 2010 11:35:39 -0600 X-ASG-Debug-ID: 1262799391-2826022f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8D8BE146C2F for ; Wed, 6 Jan 2010 09:36:31 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id LOCfJSbhC8hAOG1i for ; Wed, 06 Jan 2010 09:36:31 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSZo5-0003r6-0u; Wed, 06 Jan 2010 17:36:29 +0000 Date: Wed, 6 Jan 2010 12:36:29 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christian Kujau , LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: lockdep: inconsistent lock state Subject: Re: lockdep: inconsistent lock state Message-ID: <20100106173628.GA14148@infradead.org> References: <20091227212700.GA7613@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20091227212700.GA7613@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262799391 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 28, 2009 at 08:27:00AM +1100, Dave Chinner wrote: > This is the usual false positive that is detected - XFS takes locks in > reclaim that it also takes in non-reclaim paths. The reclaim path > from kswapd inverts lock ordering and so we get this report. This > case has never been a deadlock case because an inode in reclaim > cannot be referenced by any other path, so once again it is a > false positive.... This should be gone in 2.6.33-rc as we now tell lockdep about resetting the dependency graph for the iolock once entering the inode reclaim path. From BATV+c85c17bc10db0e3ebba7+2327+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 6 11:40:16 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06HeEmE099335 for ; Wed, 6 Jan 2010 11:40:15 -0600 X-ASG-Debug-ID: 1262799666-2827027c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C20E9147047; Wed, 6 Jan 2010 09:41:06 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 5F5fTY3rJST0nrch; Wed, 06 Jan 2010 09:41:06 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSZsY-0004hn-CF; Wed, 06 Jan 2010 17:41:06 +0000 Date: Wed, 6 Jan 2010 12:41:06 -0500 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] add lpath_to_handle to libhandle Subject: Re: [PATCH 1/2] add lpath_to_handle to libhandle Message-ID: <20100106174106.GB14148@infradead.org> References: <4AE08DC7.7000200@sgi.com> <20091024133904.GB23125@infradead.org> <4B300B2F.7080305@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B300B2F.7080305@sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262799666 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean After talking to Alex I applied this now. I also wrote a short description for the changes. From BATV+c85c17bc10db0e3ebba7+2327+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 6 11:48:11 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06HmBOk099829 for ; Wed, 6 Jan 2010 11:48:11 -0600 X-ASG-Debug-ID: 1262800143-3bcb032d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 70B8EED7F06; Wed, 6 Jan 2010 09:49:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id XZ7ldaiBpyADBvxc; Wed, 06 Jan 2010 09:49:03 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSa0E-0006zz-RW; Wed, 06 Jan 2010 17:49:02 +0000 Date: Wed, 6 Jan 2010 12:49:02 -0500 From: Christoph Hellwig To: Bill Kendall Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] use time32_t consistently in xfsdump tree Subject: Re: [PATCH] use time32_t consistently in xfsdump tree Message-ID: <20100106174902.GA18167@infradead.org> References: <4B300389.7020905@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B300389.7020905@sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262800143 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean After discussion with Alex I've put both patches into the xfsdump-dev repository. I've taken the final version each, with the description of the initial posting. From BATV+c85c17bc10db0e3ebba7+2327+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 6 12:07:10 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06I7AGW101221 for ; Wed, 6 Jan 2010 12:07:10 -0600 X-ASG-Debug-ID: 1262801282-342b00d10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 694481C3439F for ; Wed, 6 Jan 2010 10:08:02 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id eGs322IInc1oDb7W for ; Wed, 06 Jan 2010 10:08:02 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSaIa-0002eL-Qd; Wed, 06 Jan 2010 18:08:00 +0000 Date: Wed, 6 Jan 2010 13:08:00 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/3] Kill async inode writeback V2 Subject: Re: [PATCH 0/3] Kill async inode writeback V2 Message-ID: <20100106180800.GA9613@infradead.org> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262649861-28530-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262801282 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Btw, after this series XFS_IFLUSH_DELWRI_ELSE_SYNC is also unused, might be worth to throw something like the patch below in to clean up xfs_iflush: I'm also not sure we do enough of the noblock calls either with or without your series. There seem to be a lot more non-blocking sync calls than iflush calls. Index: linux-2.6/fs/xfs/xfs_inode.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_inode.c 2010-01-04 16:51:27.885262385 +0100 +++ linux-2.6/fs/xfs/xfs_inode.c 2010-01-04 17:03:28.096003992 +0100 @@ -2827,8 +2827,6 @@ xfs_iflush( xfs_dinode_t *dip; xfs_mount_t *mp; int error; - int noblock = (flags == XFS_IFLUSH_DELWRI_NOBLOCK); - enum { INT_DELWRI = (1 << 0), INT_ASYNC = (1 << 1) }; XFS_STATS_INC(xs_iflush_count); @@ -2860,7 +2858,7 @@ xfs_iflush( * in the same cluster are dirty, they will probably write the inode * out for us if they occur after the log force completes. */ - if (noblock && xfs_ipincount(ip)) { + if ((flags & XFS_IFLUSH_NOBLOCK) && xfs_ipincount(ip)) { xfs_iunpin_nowait(ip); xfs_ifunlock(ip); return EAGAIN; @@ -2881,52 +2879,11 @@ xfs_iflush( } /* - * Decide how buffer will be flushed out. This is done before - * the call to xfs_iflush_int because this field is zeroed by it. - */ - if (iip != NULL && iip->ili_format.ilf_fields != 0) { - /* - * Flush out the inode buffer according to the directions - * of the caller. In the cases where the caller has given - * us a choice choose the non-delwri case. This is because - * the inode is in the AIL and we need to get it out soon. - */ - switch (flags) { - case XFS_IFLUSH_SYNC: - case XFS_IFLUSH_DELWRI_ELSE_SYNC: - flags = 0; - break; - case XFS_IFLUSH_DELWRI: - case XFS_IFLUSH_DELWRI_NOBLOCK: - flags = INT_DELWRI; - break; - default: - ASSERT(0); - flags = 0; - break; - } - } else { - switch (flags) { - case XFS_IFLUSH_DELWRI_NOBLOCK: - case XFS_IFLUSH_DELWRI_ELSE_SYNC: - case XFS_IFLUSH_DELWRI: - flags = INT_DELWRI; - break; - case XFS_IFLUSH_SYNC: - flags = 0; - break; - default: - ASSERT(0); - flags = 0; - break; - } - } - - /* * Get the buffer containing the on-disk inode. */ error = xfs_itobp(mp, NULL, ip, &dip, &bp, - noblock ? XFS_BUF_TRYLOCK : XFS_BUF_LOCK); + (flags & XFS_IFLUSH_NOBLOCK) ? + XFS_BUF_TRYLOCK : XFS_BUF_LOCK); if (error || !bp) { xfs_ifunlock(ip); return error; @@ -2954,10 +2911,10 @@ xfs_iflush( if (error) goto cluster_corrupt_out; - if (flags & INT_DELWRI) - xfs_bdwrite(mp, bp); - else + if (flags & XFS_IFLUSH_SYNC) error = xfs_bwrite(mp, bp); + else + xfs_bdwrite(mp, bp); return error; corrupt_out: Index: linux-2.6/fs/xfs/xfs_inode.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_inode.h 2010-01-04 16:59:53.765261226 +0100 +++ linux-2.6/fs/xfs/xfs_inode.h 2010-01-04 17:03:14.421006071 +0100 @@ -422,10 +422,8 @@ static inline void xfs_ifunlock(xfs_inod /* * Flags for xfs_iflush() */ -#define XFS_IFLUSH_DELWRI_ELSE_SYNC 1 -#define XFS_IFLUSH_SYNC 2 -#define XFS_IFLUSH_DELWRI 3 -#define XFS_IFLUSH_DELWRI_NOBLOCK 4 +#define XFS_IFLUSH_SYNC 1 +#define XFS_IFLUSH_NOBLOCK 2 /* * Flags for xfs_itruncate_start(). Index: linux-2.6/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_super.c 2010-01-04 17:01:27.788003888 +0100 +++ linux-2.6/fs/xfs/linux-2.6/xfs_super.c 2010-01-04 17:01:33.362004189 +0100 @@ -1075,7 +1075,7 @@ xfs_fs_write_inode( if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) goto out_unlock; - error = xfs_iflush(ip, XFS_IFLUSH_DELWRI_NOBLOCK); + error = xfs_iflush(ip, XFS_IFLUSH_NOBLOCK); } out_unlock: Index: linux-2.6/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_sync.c 2010-01-04 17:01:27.801255295 +0100 +++ linux-2.6/fs/xfs/linux-2.6/xfs_sync.c 2010-01-04 17:02:00.155005972 +0100 @@ -260,8 +260,7 @@ xfs_sync_inode_attr( goto out_unlock; } - error = xfs_iflush(ip, (flags & SYNC_WAIT) ? - XFS_IFLUSH_SYNC : XFS_IFLUSH_DELWRI); + error = xfs_iflush(ip, (flags & SYNC_WAIT) ? XFS_IFLUSH_SYNC : 0); out_unlock: xfs_iunlock(ip, XFS_ILOCK_SHARED); @@ -460,7 +459,7 @@ xfs_quiesce_fs( { int count = 0, pincount; - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); + xfs_reclaim_inodes(mp, 0); xfs_flush_buftarg(mp->m_ddev_targp, 0); /* @@ -585,7 +584,7 @@ xfs_sync_worker( if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); + xfs_reclaim_inodes(mp, 0); /* dgc: errors ignored here */ error = xfs_qm_sync(mp, SYNC_TRYLOCK); error = xfs_sync_fsdata(mp, SYNC_TRYLOCK); @@ -718,7 +717,7 @@ xfs_reclaim_inode( * xfs_iflush_done by locking and unlocking the flush lock. */ if (xfs_iflush(ip, sync_mode) == 0) { - if (sync_mode == XFS_IFLUSH_DELWRI) + if (sync_mode == 0) goto unlock_and_requeue; xfs_iflock(ip); xfs_ifunlock(ip); Index: linux-2.6/fs/xfs/xfs_inode_item.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_inode_item.c 2010-01-04 17:03:37.557003904 +0100 +++ linux-2.6/fs/xfs/xfs_inode_item.c 2010-01-04 17:03:42.356006322 +0100 @@ -806,7 +806,7 @@ xfs_inode_item_push( * will pull th einode from the AIL, mark it clean and unlock the flush * lock. */ - (void) xfs_iflush(ip, XFS_IFLUSH_DELWRI); + (void) xfs_iflush(ip, 0); xfs_iunlock(ip, XFS_ILOCK_SHARED); return; Index: linux-2.6/fs/xfs/xfs_mount.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_mount.c 2010-01-04 17:01:27.815003765 +0100 +++ linux-2.6/fs/xfs/xfs_mount.c 2010-01-04 17:02:16.218005804 +0100 @@ -1373,7 +1373,7 @@ xfs_unmountfs( * need to force the log first. */ xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); + xfs_reclaim_inodes(mp, 0); XFS_bflush(mp->m_ddev_targp); xfs_qm_unmount(mp); From BATV+c85c17bc10db0e3ebba7+2327+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 6 12:08:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06I8kgX101382 for ; Wed, 6 Jan 2010 12:08:46 -0600 X-ASG-Debug-ID: 1262801378-6ec202140000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C5334ED82F3 for ; Wed, 6 Jan 2010 10:09:38 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id hCE0XxyXlFk94DMR for ; Wed, 06 Jan 2010 10:09:38 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NSaKA-0002uG-2n; Wed, 06 Jan 2010 18:09:38 +0000 Date: Wed, 6 Jan 2010 13:09:38 -0500 From: Christoph Hellwig To: Emmanuel Florac Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: NFS export broke with change from ext3 to xfs Subject: Re: NFS export broke with change from ext3 to xfs Message-ID: <20100106180938.GB9613@infradead.org> References: <1262652500.24160.27.camel@oxygen.netxsys.com> <20100105174332.GA14496@infradead.org> <20100105213714.5b9b2a11@galadriel.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100105213714.5b9b2a11@galadriel.home> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262801378 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 05, 2010 at 09:37:14PM +0100, Emmanuel Florac wrote: > Le Tue, 5 Jan 2010 12:43:32 -0500 vous ?criviez: > > > Remove the inode64 mount option or move every export to a separate > > filesystem. The NFS code can't cope with 64 bit inode numbers when > > exporting a subtree of a filesystem. You'd see the same issue with > > e.g. ocfs2 or gfs2. > > Does the kernel architecture (32 or 64 bits) have any influence there? Unfortunately not. But if you specify a uuid in the /etc/exports file it should use a different filesystem handle format that has space for 8 byte inode numbers. I'm not entirely sure how nfsutils selects them - it's been a while since I dealt with that code. From lists@nerdbynature.de Wed Jan 6 13:24:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_33 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06JONE1105866 for ; Wed, 6 Jan 2010 13:24:24 -0600 X-ASG-Debug-ID: 1262805914-552e002b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from moutng.kundenserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BE84214717A for ; Wed, 6 Jan 2010 11:25:14 -0800 (PST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.17.8]) by cuda.sgi.com with ESMTP id 3hDd20r4ovz2lTG0 for ; Wed, 06 Jan 2010 11:25:14 -0800 (PST) Received: from bogon.housecafe.de (ppp-93-104-176-88.dynamic.mnet-online.de [93.104.176.88]) by mrelayeu.kundenserver.de (node=mrbap2) with ESMTP (Nemesis) id 0Lurx3-1Nt2Gw0QEL-00zv4D; Wed, 06 Jan 2010 20:24:12 +0100 Received: from localhost ([127.0.0.1]) by bogon.housecafe.de with esmtp (Exim 4.69) (envelope-from ) id 1NSbUI-0008I7-JI; Wed, 06 Jan 2010 20:24:10 +0100 Date: Wed, 6 Jan 2010 11:24:10 -0800 (PST) From: Christian Kujau To: Christoph Hellwig cc: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] remove bashisms from xfstests Subject: Re: [PATCH] remove bashisms from xfstests In-Reply-To: <20100106164844.GB4209@infradead.org> Message-ID: References: <20100106164844.GB4209@infradead.org> User-Agent: Alpine 2.01 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Provags-ID: V01U2FsdGVkX19jaLzs+3nzOh2HCWXvge/2jFz3p5BlXfcu8Hv 7yGddOUaLa5Ml+0cUZJkZ+VRzEi6nhOYQnfx4zp6nWPtnbZ1rt H6WM2EwcY9yr7cJK66wJg== X-Barracuda-Connect: moutng.kundenserver.de[212.227.17.8] X-Barracuda-Start-Time: 1262805915 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19134 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 6 Jan 2010 at 11:48, Christoph Hellwig wrote: > > 2) convert "let..." into something (hopefully) more portable > > Dave converted these away from expr due to performance reasons. I'd > like too see a prove that performance hasn't regressed due to this > change. That's why I hesitated to just change all scripts to /bin/bash, but didn't dare to say so, because of the inevitable "but today's computers are fast enough" reactions :-) > > 3) replace 'a == b' with 'a = b' in bourne shell scripts > > This looks fine. If you want feel free to submit these as a separate > first patch so that we have the large pile sorted out. OK, will do. > I fear this might cause some overhead in the shell. What about the > following instead: > > for i in `seq 0 39`; do > ln -s $o symlink_$i > o=symlink_$i > done I didn't go for seq(1), as I feared this wouldn't be available on every machine. Given that the xfstests scripts have a lot of "what if we're running on IRIX" conditions, I just wasn't sure if seq(1) would be available there. But yes, I'd much rather like to do this with seq(1) as well, if this is OK to everybody. > > --- xfstests.orig/032 2010-01-03 00:42:16.601617592 -0800 > > +++ xfstests/032 2010-01-03 00:43:56.321617592 -0800 > > @@ -66,6 +66,7 @@ do > > [ $fs = ext3 ] && preargs="-F" > > [ $fs = ext4 ] && preargs="-F" > > [ $fs = ext4dev ] && preargs="-F" > > + [ $fs = nilfs2 ] && preargs="-q" > > This hunk is unrelated. Please submit it with a trivial one-liner > description and a signed-off-by line and I'll put it in. OK, will do. > > -echo -e -n "\n\r*** XFS QA 044 - done\n\r\n\r" >/dev/console > > +printf "\n\r*** XFS QA 044 - done\n\r\n\r" >/dev/console > > This looks okay, but should be mentioned in the patch description. Will do. It's needed, because sh(1)'s echo builtin doesn't know about -e. > > done > > -popd >/dev/null > > Same here. Will do. Standard sh(1) doesn't know popd/pushd either. Thanks Christoph! Christian. -- BOFH excuse #398: Data for intranet got routed through the extranet and landed on the internet. From andi@firstfloor.org Wed Jan 6 13:32:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06JWOJ3106399 for ; Wed, 6 Jan 2010 13:32:25 -0600 X-ASG-Debug-ID: 1262806395-5c9900240000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D83661471E3 for ; Wed, 6 Jan 2010 11:33:15 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id 1iXfclKCjnur1CVH for ; Wed, 06 Jan 2010 11:33:15 -0800 (PST) Received: from basil.firstfloor.org (p5B3CB538.dip0.t-ipconnect.de [91.60.181.56]) by one.firstfloor.org (Postfix) with ESMTP id 4CAA91A98018; Wed, 6 Jan 2010 20:33:13 +0100 (CET) Received: by basil.firstfloor.org (Postfix, from userid 1000) id 95C60B17C2; Wed, 6 Jan 2010 20:33:12 +0100 (CET) Date: Wed, 6 Jan 2010 20:33:12 +0100 From: Andi Kleen To: Christoph Hellwig Cc: Andi Kleen , Dave Chinner , xfs@oss.sgi.com, Artem Bityutskiy , Dave Airlie , linux-kernel@vger.kernel.org, Adrian Hunter X-ASG-Orig-Subj: Re: [PATCH V3] sort: Introduce generic list_sort function Subject: Re: [PATCH V3] sort: Introduce generic list_sort function Message-ID: <20100106193312.GB31857@basil.fritz.box> References: <1262649295-28427-1-git-send-email-david__25057.2445955642$1262651404$gmane$org@fromorbit.com> <87eim4dbzw.fsf@basil.nowhere.org> <20100105122101.GR13802@discord.disaster> <20100105125234.GD1778@basil.fritz.box> <20100106172319.GA25046@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100106172319.GA25046@infradead.org> User-Agent: Mutt/1.5.17 (2007-11-01) X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1262806395 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19134 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > lib-y doesn't work together with EXPORT_SYMBOL, having the export > outside would also always pull it in. These days the whole lib-y mess > doesn't make sense anymore - if we really need an optional library > symbol we can just pull it in through a Kconfig variable. It works for non modular kernels with CONFIG_MODULES turned off. See also the other patch I posted yesterday to fix this for lib/* -Andi -- ak@linux.intel.com -- Speaking for myself only. From SRS0+mAyG+35+fromorbit.com=david@internode.on.net Wed Jan 6 16:35:44 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06MZipI117026 for ; Wed, 6 Jan 2010 16:35:44 -0600 X-ASG-Debug-ID: 1262817393-2466023b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EAD14148BC7 for ; Wed, 6 Jan 2010 14:36:34 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id okDQbSDsBzZ4GCH5 for ; Wed, 06 Jan 2010 14:36:34 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11181299-1927428 for multiple; Thu, 07 Jan 2010 09:06:33 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NSeUR-0000gl-9j; Thu, 07 Jan 2010 09:36:31 +1100 Date: Thu, 7 Jan 2010 09:36:31 +1100 From: Dave Chinner To: Christian Kujau Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] remove bashisms from xfstests Subject: Re: [PATCH] remove bashisms from xfstests Message-ID: <20100106223631.GV13802@discord.disaster> References: <20100106164844.GB4209@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1262817395 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19143 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 06, 2010 at 11:24:10AM -0800, Christian Kujau wrote: > On Wed, 6 Jan 2010 at 11:48, Christoph Hellwig wrote: > > > 2) convert "let..." into something (hopefully) more portable > > > > Dave converted these away from expr due to performance reasons. I'd > > like too see a prove that performance hasn't regressed due to this > > change. > > That's why I hesitated to just change all scripts to /bin/bash, but didn't > dare to say so, because of the inevitable "but today's computers are fast > enough" reactions :-) FYI - the problem I came across was to do with running xfsqa under UML, where forking a new process is an expensive operation (I measured it at about 300ms) and so using bash built-in expressions for incrementing variables is a major win in terms of test run time. IIRC, one test loops 100,000 times and the runtime went from half an hour to 10s just by using "let n=n+1" instead of expr... > > > > 3) replace 'a == b' with 'a = b' in bourne shell scripts > > > > This looks fine. If you want feel free to submit these as a separate > > first patch so that we have the large pile sorted out. > > OK, will do. > > > I fear this might cause some overhead in the shell. What about the > > following instead: > > > > for i in `seq 0 39`; do > > ln -s $o symlink_$i > > o=symlink_$i > > done > > I didn't go for seq(1), as I feared this wouldn't be available on every > machine. seq(1) is already used in several tests, so it is ok to use in more. :) Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+LiXy+35+fromorbit.com=david@internode.on.net Wed Jan 6 16:48:57 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06Mmvlf117975 for ; Wed, 6 Jan 2010 16:48:57 -0600 X-ASG-Debug-ID: 1262818186-303b03770000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7ECBAEDA0DF for ; Wed, 6 Jan 2010 14:49:47 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id FFkVPmG6pmOJTIQC for ; Wed, 06 Jan 2010 14:49:47 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11148643-1927428 for multiple; Thu, 07 Jan 2010 09:19:46 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NSehE-0000hb-Cr; Thu, 07 Jan 2010 09:49:44 +1100 Date: Thu, 7 Jan 2010 09:49:44 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/3] Kill async inode writeback V2 Subject: Re: [PATCH 0/3] Kill async inode writeback V2 Message-ID: <20100106224944.GW13802@discord.disaster> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> <20100106180800.GA9613@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100106180800.GA9613@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1262818189 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19143 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 06, 2010 at 01:08:00PM -0500, Christoph Hellwig wrote: > Btw, after this series XFS_IFLUSH_DELWRI_ELSE_SYNC is also unused, > might be worth to throw something like the patch below in to clean > up xfs_iflush: Yes, makes sense. I'll add the patch to my QA series after updating it for the slight changes to the unmount reclaim I ahd in the second posting of the patch. Can I get a signoff from you for this? > I'm also not sure we do enough of the noblock calls either with or > without your series. There seem to be a lot more non-blocking sync > calls than iflush calls. I don't quite follow - inode flushes from the bdi threads should be the majority of flushes (i.e. from xfs_fs_write_inode()) and they are non-blocking. the xfssyncd does delwri writeback (maybe that should be non-blocking and then we can get rid of that flag, too), so the only sync inode writeback path is from xfs_fs_write_inode() for sync flushing, as well as the unmount reclaim path.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+75kz+35+fromorbit.com=dave@internode.on.net Wed Jan 6 17:08:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06N8VIM120044 for ; Wed, 6 Jan 2010 17:08:32 -0600 X-ASG-Debug-ID: 1262819362-7eb001190000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C0C1FEDA2A1 for ; Wed, 6 Jan 2010 15:09:22 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id 2RTVPm9vqpVxm6B5 for ; Wed, 06 Jan 2010 15:09:22 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11070986-1927428 for ; Thu, 07 Jan 2010 09:39:21 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NSf0B-0000jR-8O for xfs@oss.sgi.com; Thu, 07 Jan 2010 10:09:19 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NSewS-00073q-SU for xfs@oss.sgi.com; Thu, 07 Jan 2010 10:05:28 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/2] Fix inode reclaim problems (hopefully) Subject: [PATCH 0/2] Fix inode reclaim problems (hopefully) Date: Thu, 7 Jan 2010 10:05:23 +1100 Message-Id: <1262819125-27083-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1262819363 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19143 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean These two patches seem to fix the inode reclaim issues I've been able to reproduce lately. The changes are still running xfsqa in a loop to confirm this, but the directory/small file stress test I've been running to trigger the problem has run for 10 hours with these fixes instead of dying after 20-30 minutes. The first patch is a rewrite of Christoph's reclaim under write lock fixes without all the code duplication, and the second avoids direct reclaim altogether because xfs_inode_clean() needs to be run when the flush lock is held to ensure the inode not under IO and really is reclaimable. From SRS0+75kz+35+fromorbit.com=dave@internode.on.net Wed Jan 6 17:08:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06N8V1h120045 for ; Wed, 6 Jan 2010 17:08:31 -0600 X-ASG-Debug-ID: 1262819361-7fc003bd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A1C411C35D04 for ; Wed, 6 Jan 2010 15:09:22 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id sWZ8JqoCf04na1dO for ; Wed, 06 Jan 2010 15:09:22 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11070984-1927428 for ; Thu, 07 Jan 2010 09:39:20 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NSf0B-0000jT-Bk for xfs@oss.sgi.com; Thu, 07 Jan 2010 10:09:19 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NSewT-00073u-0o for xfs@oss.sgi.com; Thu, 07 Jan 2010 10:05:29 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/2] xfs: reclaim all inodes by background tree walks Subject: [PATCH 2/2] xfs: reclaim all inodes by background tree walks Date: Thu, 7 Jan 2010 10:05:25 +1100 Message-Id: <1262819125-27083-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1262819125-27083-1-git-send-email-david@fromorbit.com> References: <1262819125-27083-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1262819363 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19143 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We cannot do direct inode reclaim without taking the flush lock to ensure that we do not reclaim an inode under IO. We check the inode is clean before doing direct reclaim, but this is not good enough because the inode flush code marks the inode clean once it has copied the in-core dirty state to the backing buffer. It is the flush lock that determines whether the inode is still under IO, even though it is marked clean, and the inode is still required at IO completion so we can't reclaim it even though it is clean in core. Hence the requirement that we need to take the flush lock even on clean inodes because this guarantees that the inode writeback IO has completed and it is safe to reclaim the inode. With delayed write inode flushing, we coul dend up waiting a long time on the flush lock even for a clean inode. The background reclaim already handles this efficiently, so avoid all the problems by killing the direct reclaim path altogether. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 14 ++++++-------- fs/xfs/linux-2.6/xfs_sync.c | 11 ++++++++++- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index f3dd67d..23768f4 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -953,16 +953,14 @@ xfs_fs_destroy_inode( ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_IRECLAIM)); /* - * If we have nothing to flush with this inode then complete the - * teardown now, otherwise delay the flush operation. + * we always use background reclaim here because even if the + * inode is clean, it still may be under IO and hence we have + * to take the flush lock. The background reclaim path handles + * this more efficiently than we can here, so simply let background + * reclaim tear down all inodes. */ - if (!xfs_inode_clean(ip)) { - xfs_inode_set_reclaim_tag(ip); - return; - } - out_reclaim: - xfs_ireclaim(ip); + xfs_inode_set_reclaim_tag(ip); } /* diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 6d1cd6e..a1d7876 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -700,6 +700,8 @@ xfs_reclaim_inode( /* * In the case of a forced shutdown we rely on xfs_iflush() to * wait for the inode to be unpinned before returning an error. + * Because we hold the flush lock, we know that the inode cannot + * be under IO, so if it reports clean it can be reclaimed. */ if (!is_bad_inode(VFS_I(ip)) && !xfs_inode_clean(ip)) { /* @@ -726,9 +728,16 @@ xfs_reclaim_inode( return 0; unlock_and_requeue: + /* + * We could return EAGAIN here to make reclaim rescan the inode tree in + * a short while. However, this just burns CPU time scanning the tree + * waiting for IO to complete and xfssyncd never goes back to the idle + * state. Instead, return 0 to let the next scheduled background reclaim + * attempt to reclaim the inode again. + */ xfs_iflags_clear(ip, XFS_IRECLAIM); xfs_iunlock(ip, XFS_ILOCK_EXCL); - return EAGAIN; + return 0; } void -- 1.6.5 From SRS0+PCbb+35+fromorbit.com=dave@internode.on.net Wed Jan 6 17:08:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o06N8VED120046 for ; Wed, 6 Jan 2010 17:08:31 -0600 X-ASG-Debug-ID: 1262819361-7f2203df0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BBEF91C35D07 for ; Wed, 6 Jan 2010 15:09:22 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id DtOyGSPqbPBtCJoT for ; Wed, 06 Jan 2010 15:09:22 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11267354-1927428 for ; Thu, 07 Jan 2010 09:39:20 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NSf0B-0000jS-9v for xfs@oss.sgi.com; Thu, 07 Jan 2010 10:09:19 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NSewS-00073s-U8 for xfs@oss.sgi.com; Thu, 07 Jan 2010 10:05:28 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/2] xfs: reclaim inodes under a write lock Subject: [PATCH 1/2] xfs: reclaim inodes under a write lock Date: Thu, 7 Jan 2010 10:05:24 +1100 Message-Id: <1262819125-27083-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1262819125-27083-1-git-send-email-david@fromorbit.com> References: <1262819125-27083-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1262819363 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19143 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Make the inode tree reclaim walk exclusive to avoid races with concurrent sync walkers and lookups. This is a version of a patch posted by Christoph Hellwig that avoids all the code duplication. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_sync.c | 90 +++++++++++++++++++-------------------- fs/xfs/linux-2.6/xfs_sync.h | 2 +- fs/xfs/quota/xfs_qm_syscalls.c | 2 +- 3 files changed, 46 insertions(+), 48 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index f974d1a..6d1cd6e 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -55,7 +55,8 @@ xfs_inode_ag_lookup( struct xfs_mount *mp, struct xfs_perag *pag, uint32_t *first_index, - int tag) + int tag, + int write_lock) { int nr_found; struct xfs_inode *ip; @@ -65,7 +66,10 @@ xfs_inode_ag_lookup( * as the tree is sparse and a gang lookup walks to find * the number of objects requested. */ - read_lock(&pag->pag_ici_lock); + if (write_lock) + write_lock(&pag->pag_ici_lock); + else + read_lock(&pag->pag_ici_lock); if (tag == XFS_ICI_NO_TAG) { nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, (void **)&ip, *first_index, 1); @@ -89,7 +93,10 @@ xfs_inode_ag_lookup( return ip; unlock: - read_unlock(&pag->pag_ici_lock); + if (write_lock) + write_unlock(&pag->pag_ici_lock); + else + read_unlock(&pag->pag_ici_lock); return NULL; } @@ -100,7 +107,8 @@ xfs_inode_ag_walk( int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), int flags, - int tag) + int tag, + int write_lock) { uint32_t first_index; int last_error = 0; @@ -113,7 +121,8 @@ restart: int error = 0; xfs_inode_t *ip; - ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag); + ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag, + write_lock); if (!ip) break; @@ -145,7 +154,8 @@ xfs_inode_ag_iterator( int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), int flags, - int tag) + int tag, + int write_lock) { int error = 0; int last_error = 0; @@ -159,7 +169,8 @@ xfs_inode_ag_iterator( xfs_perag_put(pag); continue; } - error = xfs_inode_ag_walk(mp, pag, execute, flags, tag); + error = xfs_inode_ag_walk(mp, pag, execute, flags, tag, + write_lock); xfs_perag_put(pag); if (error) { last_error = error; @@ -184,18 +195,20 @@ xfs_sync_inode_valid( return EFSCORRUPTED; } - /* - * If we can't get a reference on the inode, it must be in reclaim. - * Leave it for the reclaim code to flush. Also avoid inodes that - * haven't been fully initialised. - */ + /* avoid new or reclaimable inodes. Leave for reclaim code to flush */ + if (xfs_iflags_test(ip, XFS_INEW | XFS_IRECLAIMABLE | XFS_IRECLAIM)) { + read_unlock(&pag->pag_ici_lock); + return ENOENT; + } + + /* If we can't get a reference on the inode, it must be in reclaim. */ if (!igrab(inode)) { read_unlock(&pag->pag_ici_lock); return ENOENT; } read_unlock(&pag->pag_ici_lock); - if (is_bad_inode(inode) || xfs_iflags_test(ip, XFS_INEW)) { + if (is_bad_inode(inode)) { IRELE(ip); return ENOENT; } @@ -285,7 +298,7 @@ xfs_sync_data( ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT)) == 0); error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, - XFS_ICI_NO_TAG); + XFS_ICI_NO_TAG, 0); if (error) return XFS_ERROR(error); @@ -307,7 +320,7 @@ xfs_sync_attr( ASSERT((flags & ~SYNC_WAIT) == 0); return xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags, - XFS_ICI_NO_TAG); + XFS_ICI_NO_TAG, 0); } STATIC int @@ -669,33 +682,8 @@ xfs_reclaim_inode( xfs_inode_t *ip, int sync_mode) { - struct xfs_mount *mp = ip->i_mount; - struct xfs_perag *pag; - - /* - * The radix tree lock here protects a thread in xfs_iget_core from - * racing with us on linking the inode back with a vnode. - * Once we have the XFS_IRECLAIM flag set it will not touch - * us. - */ - pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); - write_lock(&pag->pag_ici_lock); - spin_lock(&ip->i_flags_lock); - if (__xfs_iflags_test(ip, XFS_IRECLAIM) || - !__xfs_iflags_test(ip, XFS_IRECLAIMABLE)) { - spin_unlock(&ip->i_flags_lock); - write_unlock(&pag->pag_ici_lock); - xfs_perag_put(pag); - return EAGAIN; - } - __xfs_iflags_set(ip, XFS_IRECLAIM); - spin_unlock(&ip->i_flags_lock); - write_unlock(&pag->pag_ici_lock); - xfs_perag_put(pag); - - /* - * The inode is flushed delayed write. That means the flush lock + * Inodes are flushed delayed write. That means the flush lock * may be held here and we will block for some time on it. Further, * if we hold the inode lock, we prevent the AIL from locking and * therefore being able to push the buffer. This means that we'll end @@ -791,12 +779,22 @@ xfs_reclaim_inode_now( struct xfs_perag *pag, int flags) { - /* ignore if already under reclaim */ - if (xfs_iflags_test(ip, XFS_IRECLAIM)) { - read_unlock(&pag->pag_ici_lock); + /* + * The radix tree lock here protects a thread in xfs_iget from racing + * with us starting reclaim on the inode. Once we have the + * XFS_IRECLAIM flag set it will not touch us. + */ + spin_lock(&ip->i_flags_lock); + ASSERT_ALWAYS(__xfs_iflags_test(ip, XFS_IRECLAIMABLE)); + if (__xfs_iflags_test(ip, XFS_IRECLAIM)) { + /* ignore as it is already under reclaim */ + spin_unlock(&ip->i_flags_lock); + write_unlock(&pag->pag_ici_lock); return 0; } - read_unlock(&pag->pag_ici_lock); + __xfs_iflags_set(ip, XFS_IRECLAIM); + spin_unlock(&ip->i_flags_lock); + write_unlock(&pag->pag_ici_lock); return xfs_reclaim_inode(ip, flags); } @@ -807,5 +805,5 @@ xfs_reclaim_inodes( int mode) { return xfs_inode_ag_iterator(mp, xfs_reclaim_inode_now, mode, - XFS_ICI_RECLAIM_TAG); + XFS_ICI_RECLAIM_TAG, 1); } diff --git a/fs/xfs/linux-2.6/xfs_sync.h b/fs/xfs/linux-2.6/xfs_sync.h index a500b4d..ea932b4 100644 --- a/fs/xfs/linux-2.6/xfs_sync.h +++ b/fs/xfs/linux-2.6/xfs_sync.h @@ -54,6 +54,6 @@ void __xfs_inode_clear_reclaim_tag(struct xfs_mount *mp, struct xfs_perag *pag, int xfs_sync_inode_valid(struct xfs_inode *ip, struct xfs_perag *pag); int xfs_inode_ag_iterator(struct xfs_mount *mp, int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), - int flags, int tag); + int flags, int tag, int write_lock); #endif diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c index 71af76f..873e07e 100644 --- a/fs/xfs/quota/xfs_qm_syscalls.c +++ b/fs/xfs/quota/xfs_qm_syscalls.c @@ -891,7 +891,7 @@ xfs_qm_dqrele_all_inodes( uint flags) { ASSERT(mp->m_quotainfo); - xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG); + xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG, 0); } /*------------------------------------------------------------------------*/ -- 1.6.5 From lemaja1@t-com.me Thu Jan 7 00:28:35 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.2 required=5.0 tests=BAYES_50,FH_DATE_PAST_20XX, TVD_PH_7 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o076SYZp150545 for ; Thu, 7 Jan 2010 00:28:35 -0600 X-ASG-Debug-ID: 1262845547-1980007a0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from t-com.me (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6796F1499BF for ; Wed, 6 Jan 2010 22:25:47 -0800 (PST) Received: from t-com.me (mail30.t-com.me [213.149.114.239]) by cuda.sgi.com with ESMTP id VCNrF9qj90CY5Eyj for ; Wed, 06 Jan 2010 22:25:47 -0800 (PST) Received: (qmail 32443 invoked by uid 8); 7 Jan 2010 06:25:45 -0000 Received: from mail23.t-com.me by mxnode-2-21 (envelope-from , uid 105) with qmail-scanner-2.06 (spamassassin: 3.2.5. Clear:RC:0(213.149.114.232):SA:0(-2.3/6.0):. Processed in 0.491369 secs); 07 Jan 2010 06:25:45 -0000 X-OpenMX-Version: 1.2 Received: from mail23.t-com.me (HELO webmax.t-com.me) (213.149.114.232) by t-com.me with SMTP; 7 Jan 2010 06:25:44 -0000 MIME-Version: 1.0 Date: Thu, 07 Jan 2010 07:25:41 +0100 From: UPGRADETEAM To: undisclosed-recipients:; X-ASG-Orig-Subj: Account User Subject: Account User Reply-To: upgradeteam@india.com Message-ID: <7e2036b0e7bd8287a686c0bcd8a11c81@t-com.me> X-Sender: lemaja1@t-com.me User-Agent: Webmail Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="UTF-8" X-Barracuda-Connect: mail30.t-com.me[213.149.114.239] X-Barracuda-Start-Time: 1262845549 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0197 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19165 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dear Account User Due to the congestion in all Webmail users and removal of all unused Webmail Accounts, We would be shutting down all unused Accounts, You will have to confirm your E-mail by filling out your Login Information below after clicking the reply button, or your account will be suspended within 24 hours for security reasons. please send detail of login via: * User name:......................... * Password: ........................ * Date of Birth: .................... * Country Or Territory: ...... After following the instructions in the sheet, your account will not be interrupted and will continue as normal. Thanks for your attention to this request. We apologize for any inconveniences. Warning!!! Account owner that refuses to update his/her account after two weeks of receiving this warning will lose his or her account permanently. Sincerely, The Webmail From raziebe@gmail.com Thu Jan 7 01:36:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.6 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, HEADER_ESQ autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o077ajaL155052 for ; Thu, 7 Jan 2010 01:36:45 -0600 X-ASG-Debug-ID: 1262849856-2c1402000000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f212.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3064B1C36D34 for ; Wed, 6 Jan 2010 23:37:37 -0800 (PST) Received: from mail-fx0-f212.google.com (mail-fx0-f212.google.com [209.85.220.212]) by cuda.sgi.com with ESMTP id NEUH1BxT84OEhuCO for ; Wed, 06 Jan 2010 23:37:37 -0800 (PST) Received: by fxm4 with SMTP id 4so14981151fxm.12 for ; Wed, 06 Jan 2010 23:37:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:from:date:message-id :subject:to:content-type; bh=rhSXaL8mj+vwo7WhObCrLmgZZ/AWf3mCPxt/JA3Y63Y=; b=r4lEDOl1VO2pt3EozSDUggznuDfAwOdtQnku5HkbpvA/RTh6bIXeYC//s5GFiXuFg3 H2qKPxlzChSQW8Gzwou/+bEyx5htRVOEpfCXjttgVSuzATpmGN25+6yZ/BwEsqJXgPVo aG/1ufJoVtN0cwfK51yeRHqcJo5sP4fB1IesQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=w5+YQ8VeIIL/3PFelxMnvbtiK4SvpAccsG6n5B1NCrePMN53E96MfP/SOUdTadfe5v nkYWai5u0skrAyqSjnJvRXSdcAdFgZo6BcVsqmnZn5oOzWbCG7DbTfSsPFFIRQcN6V3o LFKv5/NOUsSSStRRza5CdKsEzWk4bagHOVe6U= MIME-Version: 1.0 Received: by 10.239.193.72 with SMTP id h8mr365283hbi.102.1262849856120; Wed, 06 Jan 2010 23:37:36 -0800 (PST) From: Raz Date: Thu, 7 Jan 2010 09:37:16 +0200 Message-ID: <5d96567b1001062337w105194c8u8eff888444709925@mail.gmail.com> X-ASG-Orig-Subj: how does sectsz is determined ? Subject: how does sectsz is determined ? To: linux-xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-fx0-f212.google.com[209.85.220.212] X-Barracuda-Start-Time: 1262849858 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19169 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean How does sectsz determined to be 512 or 4096 ? I have an xfs file system over software raid , and sometimes I have 1/2K sector size and sometimes 4K . Problem is that direct io buffers are aligned to 1/2k and not 4K. kernel is 2.6.18-8.el5. thank you. raz meta-data=/dev/md5 isize=256 agcount=33, agsize=10992384 blks = sectsz=4096 attr=0 data = bsize=4096 blocks=351780864, imaxpct=25 = sunit=768 swidth=768 blks, unwritten=1 naming =version 2 bsize=4096 log =internal bsize=4096 blocks=32768, version=2 = sectsz=4096 sunit=1 blks realtime =none extsz=3145728 blocks=0, rtextents=0 From SRS0+8UbP+36+fromorbit.com=david@internode.on.net Thu Jan 7 04:48:37 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o07AmaCW168063 for ; Thu, 7 Jan 2010 04:48:36 -0600 X-ASG-Debug-ID: 1262861365-2bac01330000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3B257150F9CD for ; Thu, 7 Jan 2010 02:49:26 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id pckkSS1jELQc0Hgn for ; Thu, 07 Jan 2010 02:49:26 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11302954-1927428 for ; Thu, 07 Jan 2010 21:19:25 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NSpvf-0001RI-HQ for xfs@oss.sgi.com; Thu, 07 Jan 2010 21:49:23 +1100 Date: Thu, 7 Jan 2010 21:49:23 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/2] Fix inode reclaim problems (hopefully) Subject: Re: [PATCH 0/2] Fix inode reclaim problems (hopefully) Message-ID: <20100107104923.GZ13802@discord.disaster> References: <1262819125-27083-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262819125-27083-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1262861368 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19182 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 07, 2010 at 10:05:23AM +1100, Dave Chinner wrote: > These two patches seem to fix the inode reclaim issues I've been > able to reproduce lately. The changes are still running xfsqa in a > loop to confirm this, but the directory/small file stress test I've > been running to trigger the problem has run for 10 hours with these > fixes instead of dying after 20-30 minutes. Still running xfsqa 11 hours later without any problem, so it looks like this series fixes the problem I was seeing. Score another win for the new tracing code :) Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Thu Jan 7 10:34:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_25 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o07GYPk0192995 for ; Thu, 7 Jan 2010 10:34:25 -0600 X-ASG-Debug-ID: 1262882117-5ca101610000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 46FBA14B135 for ; Thu, 7 Jan 2010 08:35:17 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id vZyRGcAquGSk6k5R for ; Thu, 07 Jan 2010 08:35:17 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 48) id 361A3178B901; Thu, 7 Jan 2010 10:35:17 -0600 (CST) Received: from 66.187.233.202 (SquirrelMail authenticated user sandeen) by sandeen.net with HTTP; Thu, 7 Jan 2010 10:35:17 -0600 (CST) Message-ID: <26076.66.187.233.202.1262882117.squirrel@sandeen.net> In-Reply-To: <5d96567b1001062337w105194c8u8eff888444709925@mail.gmail.com> References: <5d96567b1001062337w105194c8u8eff888444709925@mail.gmail.com> Date: Thu, 7 Jan 2010 10:35:17 -0600 (CST) X-ASG-Orig-Subj: Re: how does sectsz is determined ? Subject: Re: how does sectsz is determined ? From: "Eric Sandeen" To: "Raz" Cc: linux-xfs@oss.sgi.com User-Agent: SquirrelMail/1.4.8-5.el5.centos.10 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1262882118 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19196 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Raz wrote: > How does sectsz determined to be 512 or 4096 ? > I have an xfs file system over software raid , and sometimes I have > 1/2K sector size > and sometimes 4K . Problem is that direct io buffers are aligned to > 1/2k and not 4K. > kernel is 2.6.18-8.el5. thank you. > raz > > > meta-data=/dev/md5 isize=256 agcount=33, agsize=10992384 > blks > = sectsz=4096 attr=0 > data = bsize=4096 blocks=351780864, imaxpct=25 > = sunit=768 swidth=768 blks, unwritten=1 > naming =version 2 bsize=4096 > log =internal bsize=4096 blocks=32768, version=2 > = sectsz=4096 sunit=1 blks > realtime =none extsz=3145728 blocks=0, rtextents=0 > for actual hardware sector size, see platform_findsizes(char *path, int fd, long long *sz, int *bsz) : if (ioctl(fd, BLKSSZGET, bsz) < 0) { fprintf(stderr, _("%s: warning - cannot get sector size " "from block device %s: %s\n"), progname, path, strerror(errno)); *bsz = BBSIZE; } but also for software raid, which is more relevant to your case: int md_get_subvol_stripe( char *dfile, sv_type_t type, int *sunit, int *swidth, int *sectalign, struct stat64 *sb) { ... *sectalign = (md.level == 4 || md.level == 5 || md.level == 6); ... } This sets ft->sectoralign, if (ft.sectoralign) { sectorsize = blocksize; sectorlog = libxfs_highbit32(sectorsize); if (loginternal) { lsectorsize = sectorsize; lsectorlog = sectorlog; } } IOW we set "sector size" to the block size to avoid md switching cache sizes... -Eric From BATV+46b1ae413952afea7e2e+2329+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 8 04:13:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08ADknQ028683 for ; Fri, 8 Jan 2010 04:13:49 -0600 X-ASG-Debug-ID: 1262945679-610a022b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 11FB21C3B430 for ; Fri, 8 Jan 2010 02:14:39 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 5M0rCwXsxpQAsq8y for ; Fri, 08 Jan 2010 02:14:39 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTBrZ-0004DP-J3; Fri, 08 Jan 2010 10:14:37 +0000 Date: Fri, 8 Jan 2010 05:14:37 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/3] Kill async inode writeback V2 Subject: Re: [PATCH 0/3] Kill async inode writeback V2 Message-ID: <20100108101437.GA19491@infradead.org> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> <20100106180800.GA9613@infradead.org> <20100106224944.GW13802@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100106224944.GW13802@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262945680 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 07, 2010 at 09:49:44AM +1100, Dave Chinner wrote: > On Wed, Jan 06, 2010 at 01:08:00PM -0500, Christoph Hellwig wrote: > > Btw, after this series XFS_IFLUSH_DELWRI_ELSE_SYNC is also unused, > > might be worth to throw something like the patch below in to clean > > up xfs_iflush: > > Yes, makes sense. I'll add the patch to my QA series after updating > it for the slight changes to the unmount reclaim I ahd in the > second posting of the patch. Can I get a signoff from you for this? Signed-off-by: Christoph Hellwig > > > I'm also not sure we do enough of the noblock calls either with or > > without your series. There seem to be a lot more non-blocking sync > > calls than iflush calls. > > I don't quite follow - inode flushes from the bdi threads should be > the majority of flushes (i.e. from xfs_fs_write_inode()) and they > are non-blocking. the xfssyncd does delwri writeback (maybe that > should be non-blocking and then we can get rid of that flag, too), > so the only sync inode writeback path is from xfs_fs_write_inode() > for sync flushing, as well as the unmount reclaim path.... Sorry, I mean non-blocking delwri calls above. xfs_sync_worker should certainly be non-blocking as the whole daemon is operating that way. And possibly xfs_sync_attr as well. From BATV+46b1ae413952afea7e2e+2329+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 8 04:19:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08AJnn4029267 for ; Fri, 8 Jan 2010 04:19:49 -0600 X-ASG-Debug-ID: 1262946042-1278002c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A1BDC1C3B563 for ; Fri, 8 Jan 2010 02:20:42 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id f6O1qTH1552SyWFA for ; Fri, 08 Jan 2010 02:20:42 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTBxS-0005vq-Bt; Fri, 08 Jan 2010 10:20:42 +0000 Date: Fri, 8 Jan 2010 05:20:42 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfs: reclaim inodes under a write lock Subject: Re: [PATCH 1/2] xfs: reclaim inodes under a write lock Message-ID: <20100108102042.GA16640@infradead.org> References: <1262819125-27083-1-git-send-email-david@fromorbit.com> <1262819125-27083-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262819125-27083-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262946042 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 07, 2010 at 10:05:24AM +1100, Dave Chinner wrote: > Make the inode tree reclaim walk exclusive to avoid races with > concurrent sync walkers and lookups. This is a version of > a patch posted by Christoph Hellwig that avoids all the code > duplication. I don't like the write_lock flag very much, but given that the other option is duplication we might have to live it. > - /* > - * If we can't get a reference on the inode, it must be in reclaim. > - * Leave it for the reclaim code to flush. Also avoid inodes that > - * haven't been fully initialised. > - */ > + /* avoid new or reclaimable inodes. Leave for reclaim code to flush */ > + if (xfs_iflags_test(ip, XFS_INEW | XFS_IRECLAIMABLE | XFS_IRECLAIM)) { > + read_unlock(&pag->pag_ici_lock); > + return ENOENT; > + } > + > + /* If we can't get a reference on the inode, it must be in reclaim. */ > if (!igrab(inode)) { > read_unlock(&pag->pag_ici_lock); > return ENOENT; > } > read_unlock(&pag->pag_ici_lock); > > - if (is_bad_inode(inode) || xfs_iflags_test(ip, XFS_INEW)) { > + if (is_bad_inode(inode)) { > IRELE(ip); > return ENOENT; That's an unrelated change and should be a separate patch. > @@ -791,12 +779,22 @@ xfs_reclaim_inode_now( > struct xfs_perag *pag, > int flags) > { > + /* > + * The radix tree lock here protects a thread in xfs_iget from racing > + * with us starting reclaim on the inode. Once we have the > + * XFS_IRECLAIM flag set it will not touch us. > + */ > + spin_lock(&ip->i_flags_lock); > + ASSERT_ALWAYS(__xfs_iflags_test(ip, XFS_IRECLAIMABLE)); > + if (__xfs_iflags_test(ip, XFS_IRECLAIM)) { > + /* ignore as it is already under reclaim */ > + spin_unlock(&ip->i_flags_lock); > + write_unlock(&pag->pag_ici_lock); > return 0; > } > + __xfs_iflags_set(ip, XFS_IRECLAIM); > + spin_unlock(&ip->i_flags_lock); > + write_unlock(&pag->pag_ici_lock); > > return xfs_reclaim_inode(ip, flags); Once you move things around please merge xfs_reclaim_inode_now and xfs_reclaim_inode into a single function. And yes, all this currently doesn't apply against the XFS tree or mainline, but you know that already. From BATV+46b1ae413952afea7e2e+2329+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 8 04:23:19 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08ANJK7029595 for ; Fri, 8 Jan 2010 04:23:19 -0600 X-ASG-Debug-ID: 1262946252-61cf01310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9DE7F151C9F for ; Fri, 8 Jan 2010 02:24:12 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id rDhnMslyIEURfvpg for ; Fri, 08 Jan 2010 02:24:12 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTC0m-00029G-Sw; Fri, 08 Jan 2010 10:24:09 +0000 Date: Fri, 8 Jan 2010 05:24:08 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfs: reclaim all inodes by background tree walks Subject: Re: [PATCH 2/2] xfs: reclaim all inodes by background tree walks Message-ID: <20100108102408.GB16640@infradead.org> References: <1262819125-27083-1-git-send-email-david@fromorbit.com> <1262819125-27083-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262819125-27083-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262946252 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks safe to me. I wonder whaimpact leaving the inodes around for longer has to memory usage for inode heavy workloads, though. > unlock_and_requeue: > + /* > + * We could return EAGAIN here to make reclaim rescan the inode tree in > + * a short while. However, this just burns CPU time scanning the tree > + * waiting for IO to complete and xfssyncd never goes back to the idle > + * state. Instead, return 0 to let the next scheduled background reclaim > + * attempt to reclaim the inode again. > + */ > xfs_iflags_clear(ip, XFS_IRECLAIM); > xfs_iunlock(ip, XFS_ILOCK_EXCL); > - return EAGAIN; > + return 0; This is an unrelated change and should be a patch of it's own. From BATV+46b1ae413952afea7e2e+2329+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 8 04:35:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08AZSai030808 for ; Fri, 8 Jan 2010 04:35:29 -0600 X-ASG-Debug-ID: 1262946981-792402250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 18793EE9A0E for ; Fri, 8 Jan 2010 02:36:21 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id vQvbdZrNbFxVHFfB for ; Fri, 08 Jan 2010 02:36:21 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTCCb-0004CZ-BI; Fri, 08 Jan 2010 10:36:21 +0000 Date: Fri, 8 Jan 2010 05:36:21 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: Use delayed write for inodes rather than async Subject: Re: [PATCH 1/3] xfs: Use delayed write for inodes rather than async Message-ID: <20100108103620.GA11769@infradead.org> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> <1262649861-28530-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262649861-28530-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262946982 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > +++ b/fs/xfs/linux-2.6/xfs_sync.c > @@ -460,8 +460,8 @@ xfs_quiesce_fs( > { > int count = 0, pincount; > > + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); > xfs_flush_buftarg(mp->m_ddev_targp, 0); > - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); Hmm. I think the current code here is simply wrong. We do need to flush all delwri buffers after the inode reclaim. Maybe we should get this hunk in for .33? > - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); > + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); > /* dgc: errors ignored here */ > error = xfs_qm_sync(mp, SYNC_TRYLOCK); > error = xfs_sync_fsdata(mp, SYNC_TRYLOCK); > @@ -687,7 +687,7 @@ xfs_reclaim_inode( > spin_unlock(&ip->i_flags_lock); > write_unlock(&pag->pag_ici_lock); > xfs_perag_put(pag); > - return -EAGAIN; > + return EAGAIN; Unrelated bug in the upsteam code. But your inode direct reclaim changes should sort this out already. > @@ -3012,16 +3001,6 @@ xfs_iflush_int( > iip = ip->i_itemp; > mp = ip->i_mount; > > - > - /* > - * If the inode isn't dirty, then just release the inode > - * flush lock and do nothing. > - */ > - if (xfs_inode_clean(ip)) { > - xfs_ifunlock(ip); > - return 0; > - } > - while we now have this check in xfs_reclaim_inode there still are various other callers. Did you audit them all to make sure we don't need the check here anymore? > index 223d9c3..16c4654 100644 > --- a/fs/xfs/xfs_mount.c > +++ b/fs/xfs/xfs_mount.c > @@ -1444,7 +1444,14 @@ xfs_unmountfs( > * need to force the log first. > */ > xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); > - xfs_reclaim_inodes(mp, XFS_IFLUSH_ASYNC); > + > + /* > + * flush the delwri buffers before the reclaim so that it doesn't > + * block for a long time waiting to reclaim inodes that are already > + * in the delwri state. > + */ > + XFS_bflush(mp->m_ddev_targp); > + xfs_reclaim_inodes(mp, XFS_IFLUSH_SYNC); Wouldn't it be more efficient to also write them out delwri and then flush out the delwri queue again? Either way the current code seems fishy to me with an async writeout here. From SRS0+vdeK+37+fromorbit.com=david@internode.on.net Fri Jan 8 04:43:01 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08Ah03H031558 for ; Fri, 8 Jan 2010 04:43:01 -0600 X-ASG-Debug-ID: 1262947431-6af0018d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B310F151F32 for ; Fri, 8 Jan 2010 02:43:52 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id PCBl54Wbcd8PkAV2 for ; Fri, 08 Jan 2010 02:43:52 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11239843-1927428 for multiple; Fri, 08 Jan 2010 21:13:50 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NTCJo-0002lA-Re; Fri, 08 Jan 2010 21:43:48 +1100 Date: Fri, 8 Jan 2010 21:43:48 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfs: reclaim all inodes by background tree walks Subject: Re: [PATCH 2/2] xfs: reclaim all inodes by background tree walks Message-ID: <20100108104348.GB8718@discord.disaster> References: <1262819125-27083-1-git-send-email-david@fromorbit.com> <1262819125-27083-3-git-send-email-david@fromorbit.com> <20100108102408.GB16640@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100108102408.GB16640@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1262947433 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19259 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 08, 2010 at 05:24:08AM -0500, Christoph Hellwig wrote: > > Looks safe to me. I wonder whaimpact leaving the inodes around for > longer has to memory usage for inode heavy workloads, though. In terms of wall time, nothing I can measure, but it seems to reduce system time slightly. My main concern is memory pressure - maybe it needs a shrinker registered to reclaim inodes immediately rather than waiting for the next xfsssyncd run... > > unlock_and_requeue: > > + /* > > + * We could return EAGAIN here to make reclaim rescan the inode tree in > > + * a short while. However, this just burns CPU time scanning the tree > > + * waiting for IO to complete and xfssyncd never goes back to the idle > > + * state. Instead, return 0 to let the next scheduled background reclaim > > + * attempt to reclaim the inode again. > > + */ > > xfs_iflags_clear(ip, XFS_IRECLAIM); > > xfs_iunlock(ip, XFS_ILOCK_EXCL); > > - return EAGAIN; > > + return 0; > > This is an unrelated change and should be a patch of it's own. Yup. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+vdeK+37+fromorbit.com=david@internode.on.net Fri Jan 8 05:04:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08B4d0m033659 for ; Fri, 8 Jan 2010 05:04:39 -0600 X-ASG-Debug-ID: 1262948727-754f03dc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 428E3EE74D9 for ; Fri, 8 Jan 2010 03:05:27 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id LQVRLVlG0Cn0590D for ; Fri, 08 Jan 2010 03:05:27 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11408712-1927428 for multiple; Fri, 08 Jan 2010 21:35:26 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NTCei-0002mM-Oc; Fri, 08 Jan 2010 22:05:24 +1100 Date: Fri, 8 Jan 2010 22:05:24 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: Use delayed write for inodes rather than async Subject: Re: [PATCH 1/3] xfs: Use delayed write for inodes rather than async Message-ID: <20100108110524.GC8718@discord.disaster> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> <1262649861-28530-2-git-send-email-david@fromorbit.com> <20100108103620.GA11769@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100108103620.GA11769@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1262948729 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19262 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 08, 2010 at 05:36:21AM -0500, Christoph Hellwig wrote: > > +++ b/fs/xfs/linux-2.6/xfs_sync.c > > @@ -460,8 +460,8 @@ xfs_quiesce_fs( > > { > > int count = 0, pincount; > > > > + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); > > xfs_flush_buftarg(mp->m_ddev_targp, 0); > > - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); > > Hmm. I think the current code here is simply wrong. We do need to > flush all delwri buffers after the inode reclaim. Maybe we should > get this hunk in for .33? I don't think it really matters for the existing code as we do the xfs_flush_buftarg(SYNC_WAIT) in the loop below which will push out inodes flushed during reclaim. Hmmm - given that xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI) can skip inodes, there probably should be a sync reclaim done in the flush loop to ensure we've caught them. > > - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); > > + xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); > > /* dgc: errors ignored here */ > > error = xfs_qm_sync(mp, SYNC_TRYLOCK); > > error = xfs_sync_fsdata(mp, SYNC_TRYLOCK); > > @@ -687,7 +687,7 @@ xfs_reclaim_inode( > > spin_unlock(&ip->i_flags_lock); > > write_unlock(&pag->pag_ici_lock); > > xfs_perag_put(pag); > > - return -EAGAIN; > > + return EAGAIN; > > Unrelated bug in the upsteam code. But your inode direct reclaim > changes should sort this out already. *nod* > > @@ -3012,16 +3001,6 @@ xfs_iflush_int( > > iip = ip->i_itemp; > > mp = ip->i_mount; > > > > - > > - /* > > - * If the inode isn't dirty, then just release the inode > > - * flush lock and do nothing. > > - */ > > - if (xfs_inode_clean(ip)) { > > - xfs_ifunlock(ip); > > - return 0; > > - } > > - > > while we now have this check in xfs_reclaim_inode there still are > various other callers. Did you audit them all to make sure we don't > need the check here anymore? Yes - xfs_iflush_int() gets called only from xfs_iflush() and xfs_iflush_cluster() and both check first. > > index 223d9c3..16c4654 100644 > > --- a/fs/xfs/xfs_mount.c > > +++ b/fs/xfs/xfs_mount.c > > @@ -1444,7 +1444,14 @@ xfs_unmountfs( > > * need to force the log first. > > */ > > xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); > > - xfs_reclaim_inodes(mp, XFS_IFLUSH_ASYNC); > > + > > + /* > > + * flush the delwri buffers before the reclaim so that it doesn't > > + * block for a long time waiting to reclaim inodes that are already > > + * in the delwri state. > > + */ > > + XFS_bflush(mp->m_ddev_targp); > > + xfs_reclaim_inodes(mp, XFS_IFLUSH_SYNC); > > Wouldn't it be more efficient to also write them out delwri and then > flush out the delwri queue again? The delayed write flush can skip inodes, so we need to do a sync flush to guarantee that we reclaim all dirty inodes. The flush is done first so the sync flush doesn't block on the flush locks for too long for inodes that are already locked for delwri flushing. Perhaps a: xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); XFS_bflush(mp->m_ddev_targp); xfs_reclaim_inodes(mp, XFS_IFLUSH_SYNC); sequence would be better here? > Either way the current code seems fishy to me with an async writeout > here. Agreed. Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+46b1ae413952afea7e2e+2329+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 8 05:06:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08B6QRK033840 for ; Fri, 8 Jan 2010 05:06:26 -0600 X-ASG-Debug-ID: 1262948839-127902cb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6F35A1C3B599 for ; Fri, 8 Jan 2010 03:07:19 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Sj5MumKviNvGbtd5 for ; Fri, 08 Jan 2010 03:07:19 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTCgZ-0007X2-55; Fri, 08 Jan 2010 11:07:19 +0000 Date: Fri, 8 Jan 2010 06:07:19 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/3] xfs: Don't issue buffer IO direct from AIL push Subject: Re: [PATCH 2/3] xfs: Don't issue buffer IO direct from AIL push Message-ID: <20100108110719.GA17442@infradead.org> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> <1262649861-28530-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262649861-28530-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262948839 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > +/* > + * If a delwri buffer needs to be pushed before it has aged out, then > + * promote it to the head of the delwri queue so that it will be flushed > + * on the next xfsbufd run. > + */ > +void > +xfs_buf_delwri_promote( > + xfs_buf_t *bp) > +{ > + struct list_head *dwq = &bp->b_target->bt_delwrite_queue; > + spinlock_t *dwlk = &bp->b_target->bt_delwrite_lock; > + long age = xfs_buf_age_centisecs * msecs_to_jiffies(10) + 1; > + > + spin_lock(dwlk); > + ASSERT(bp->b_flags & XBF_DELWRI); > + ASSERT(bp->b_flags & _XBF_DELWRI_Q); > + list_del(&bp->b_list); > + list_add(&bp->b_list, dwq); > + bp->b_queuetime = jiffies - age; > + spin_unlock(dwlk); Sorry for the nitpicking, but: a) can you use the struct types instead of the typedefs where possible? b) second the pointer to spinlock style used here like in some other buf code is rather odd. What about this instead: void xfs_buf_delwri_promote( struct xfs_buf *bp) { struct xfs_buftarg *target = bp->b_target; spin_lock(&target->bt_delwrite_lock); ASSERT(bp->b_flags & XBF_DELWRI); ASSERT(bp->b_flags & _XBF_DELWRI_Q); list_move(&bp->b_list, &target->bt_delwrite_queue); bp->b_queuetime = jiffies - xfs_buf_age_centisecs * msecs_to_jiffies(10) - 1; spin_unlock(&target->bt_delwrite_lock); } Also the queuetime calculation could use some comments. > extern void xfs_wait_buftarg(xfs_buftarg_t *); > extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int); > extern int xfs_flush_buftarg(xfs_buftarg_t *, int); > + > +/* > + * run the xfsbufd on demand to age buffers. Use in combination with > + * xfs_buf_delwri_promote() to flus delayed write buffers efficiently. > + */ > +static inline void xfs_flush_buftarg_delwri(xfs_buftarg_t *btp) > +{ > + wake_up_process(btp->bt_task); > +} The function name is extremly misleading. It's an xfsbufd wakeup, so it should be named like that. In doubt I'd just opencode the wake_up_process call instead. The changes to the various log items look good, especially as we bring some more commonality into the various items. You removed the only call to trace_xfs_inode_item_push, so you might aswell remove the trace point declaration, too. From BATV+46b1ae413952afea7e2e+2329+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 8 05:11:00 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08BAxc6034288 for ; Fri, 8 Jan 2010 05:11:00 -0600 X-ASG-Debug-ID: 1262949113-2b1c01640000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 402E81DAFE66 for ; Fri, 8 Jan 2010 03:11:53 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FVVkMJouuVg8z12r for ; Fri, 08 Jan 2010 03:11:53 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTCky-0000xt-UK; Fri, 08 Jan 2010 11:11:52 +0000 Date: Fri, 8 Jan 2010 06:11:52 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] xfs: Sort delayed write buffers before dispatch Subject: Re: [PATCH 3/3] xfs: Sort delayed write buffers before dispatch Message-ID: <20100108111152.GA29812@infradead.org> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> <1262649861-28530-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1262649861-28530-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262949113 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > +/* > + * Compare function is more complex than it needs to be because > + * the return value is only 32 bits and we are doing comparisons > + * on 64 bit values > + */ > +int > +xfs_buf_cmp( Should be marked static. > +void > +xfs_buf_delwri_sort( > + xfs_buftarg_t *target, > + struct list_head *list) > +{ > + list_sort(NULL, list, xfs_buf_cmp); > +} Same here. Not sure I would even bother with the wrapper. Also the first argument is entirely unused. > STATIC int > xfsbufd( > void *data) > { > + xfs_buftarg_t *target = (xfs_buftarg_t *)data; > > current->flags |= PF_MEMALLOC; > > @@ -1739,6 +1774,8 @@ xfsbufd( > do { > long age = xfs_buf_age_centisecs * msecs_to_jiffies(10); > long tout = age; > + int count = 0; > + struct list_head tmp; > > if (unlikely(freezing(current))) { > set_bit(XBT_FORCE_SLEEP, &target->bt_flags); > @@ -1753,11 +1790,10 @@ xfsbufd( > schedule_timeout_interruptible(tout); > > xfs_buf_delwri_split(target, &tmp, age); > + xfs_buf_delwri_sort(target, &tmp); > while (!list_empty(&tmp)) { > + struct xfs_buf *bp; > + bp = list_first_entry(&tmp, struct xfs_buf, b_list); > list_del_init(&bp->b_list); > xfs_buf_iostrategy(bp); > count++; > > > if (wait) > blk_run_address_space(target->bt_mapping); > > + /* Now wait for IO to complete if required. */ > + while (!list_empty(&wait_list)) { > + bp = list_first_entry(&wait_list, struct xfs_buf, b_list); > > list_del_init(&bp->b_list); > xfs_iowait(bp); As a tiny optimization you might want to move this into the if (wait) block From BATV+46b1ae413952afea7e2e+2329+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 8 05:13:39 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08BDdux034539 for ; Fri, 8 Jan 2010 05:13:39 -0600 X-ASG-Debug-ID: 1262949272-6b65032a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1081B152281 for ; Fri, 8 Jan 2010 03:14:32 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id fApTdMiMWtHb4IaB for ; Fri, 08 Jan 2010 03:14:32 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTCnY-0001cH-N2; Fri, 08 Jan 2010 11:14:32 +0000 Date: Fri, 8 Jan 2010 06:14:32 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: Use delayed write for inodes rather than async Subject: Re: [PATCH 1/3] xfs: Use delayed write for inodes rather than async Message-ID: <20100108111432.GA4685@infradead.org> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> <1262649861-28530-2-git-send-email-david@fromorbit.com> <20100108103620.GA11769@infradead.org> <20100108110524.GC8718@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100108110524.GC8718@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262949273 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 08, 2010 at 10:05:24PM +1100, Dave Chinner wrote: > I don't think it really matters for the existing code as we do the > xfs_flush_buftarg(SYNC_WAIT) in the loop below which will push out > inodes flushed during reclaim. True. > Hmmm - given that xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI) can skip > inodes, there probably should be a sync reclaim done in the flush > loop to ensure we've caught them. Indeed, the skipping behaviour is rather confusing and needs to be taken care off. > Yes - xfs_iflush_int() gets called only from xfs_iflush() and > xfs_iflush_cluster() and both check first. Ok. > The delayed write flush can skip inodes, so we need to do a sync > flush to guarantee that we reclaim all dirty inodes. The flush is done > first so the sync flush doesn't block on the flush locks for too > long for inodes that are already locked for delwri flushing. > Perhaps a: > > xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI); > XFS_bflush(mp->m_ddev_targp); > xfs_reclaim_inodes(mp, XFS_IFLUSH_SYNC); > > sequence would be better here? I guess that would be optimal. Maybe with a little comment explaining why we do it. From SRS0+vdeK+37+fromorbit.com=david@internode.on.net Fri Jan 8 05:14:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08BEOwE034629 for ; Fri, 8 Jan 2010 05:14:25 -0600 X-ASG-Debug-ID: 1262949316-2f3e01430000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E41CF1C37C8D for ; Fri, 8 Jan 2010 03:15:16 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id 8vS0rmbDnHGEgfbj for ; Fri, 08 Jan 2010 03:15:16 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11251599-1927428 for multiple; Fri, 08 Jan 2010 21:45:15 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NTCoD-0002n4-Mm; Fri, 08 Jan 2010 22:15:13 +1100 Date: Fri, 8 Jan 2010 22:15:13 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/3] xfs: Don't issue buffer IO direct from AIL push Subject: Re: [PATCH 2/3] xfs: Don't issue buffer IO direct from AIL push Message-ID: <20100108111513.GD8718@discord.disaster> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> <1262649861-28530-3-git-send-email-david@fromorbit.com> <20100108110719.GA17442@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100108110719.GA17442@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1262949317 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19259 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 08, 2010 at 06:07:19AM -0500, Christoph Hellwig wrote: > > +/* > > + * If a delwri buffer needs to be pushed before it has aged out, then > > + * promote it to the head of the delwri queue so that it will be flushed > > + * on the next xfsbufd run. > > + */ > > +void > > +xfs_buf_delwri_promote( > > + xfs_buf_t *bp) > > +{ > > + struct list_head *dwq = &bp->b_target->bt_delwrite_queue; > > + spinlock_t *dwlk = &bp->b_target->bt_delwrite_lock; > > + long age = xfs_buf_age_centisecs * msecs_to_jiffies(10) + 1; > > + > > + spin_lock(dwlk); > > + ASSERT(bp->b_flags & XBF_DELWRI); > > + ASSERT(bp->b_flags & _XBF_DELWRI_Q); > > + list_del(&bp->b_list); > > + list_add(&bp->b_list, dwq); > > + bp->b_queuetime = jiffies - age; > > + spin_unlock(dwlk); > > Sorry for the nitpicking, but: > > a) can you use the struct types instead of the typedefs where possible? Sure - I missed that one when I went back over this patch after a c'n'p to create the function. > b) second the pointer to spinlock style used here like in some other > buf code is rather odd. What about this instead: > > void > xfs_buf_delwri_promote( > struct xfs_buf *bp) > { > struct xfs_buftarg *target = bp->b_target; > > spin_lock(&target->bt_delwrite_lock); > ASSERT(bp->b_flags & XBF_DELWRI); > ASSERT(bp->b_flags & _XBF_DELWRI_Q); > > list_move(&bp->b_list, &target->bt_delwrite_queue); > bp->b_queuetime = jiffies - > xfs_buf_age_centisecs * msecs_to_jiffies(10) - 1; > spin_unlock(&target->bt_delwrite_lock); > } Yup, will change. > Also the queuetime calculation could use some comments. OK, will do. > > extern void xfs_wait_buftarg(xfs_buftarg_t *); > > extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int); > > extern int xfs_flush_buftarg(xfs_buftarg_t *, int); > > + > > +/* > > + * run the xfsbufd on demand to age buffers. Use in combination with > > + * xfs_buf_delwri_promote() to flus delayed write buffers efficiently. > > + */ > > +static inline void xfs_flush_buftarg_delwri(xfs_buftarg_t *btp) > > +{ > > + wake_up_process(btp->bt_task); > > +} > > The function name is extremly misleading. It's an xfsbufd wakeup, so it > should be named like that. In doubt I'd just opencode the > wake_up_process call instead. OK, I just didn't want to be digging deep into the buftarg structure in places that don't really know about it. > The changes to the various log items look good, especially as we bring > some more commonality into the various items. > > > You removed the only call to trace_xfs_inode_item_push, so you might > aswell remove the trace point declaration, too. Will do. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+/+/0+37+fromorbit.com=david@internode.on.net Fri Jan 8 05:16:55 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08BGtfK034898 for ; Fri, 8 Jan 2010 05:16:55 -0600 X-ASG-Debug-ID: 1262949467-2f3d01780000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8A5381DAFEE1 for ; Fri, 8 Jan 2010 03:17:47 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id r9tBuCIDh2IfUYRA for ; Fri, 08 Jan 2010 03:17:47 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11358111-1927428 for multiple; Fri, 08 Jan 2010 21:47:46 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NTCqf-0002nZ-0r; Fri, 08 Jan 2010 22:17:45 +1100 Date: Fri, 8 Jan 2010 22:17:44 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] xfs: Sort delayed write buffers before dispatch Subject: Re: [PATCH 3/3] xfs: Sort delayed write buffers before dispatch Message-ID: <20100108111744.GA10735@discord.disaster> References: <1262649861-28530-1-git-send-email-david@fromorbit.com> <1262649861-28530-4-git-send-email-david@fromorbit.com> <20100108111152.GA29812@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100108111152.GA29812@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1262949468 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19259 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 08, 2010 at 06:11:52AM -0500, Christoph Hellwig wrote: > > +/* > > + * Compare function is more complex than it needs to be because > > + * the return value is only 32 bits and we are doing comparisons > > + * on 64 bit values > > + */ > > +int > > +xfs_buf_cmp( > > Should be marked static. > > > +void > > +xfs_buf_delwri_sort( > > + xfs_buftarg_t *target, > > + struct list_head *list) > > +{ > > + list_sort(NULL, list, xfs_buf_cmp); > > +} > > Same here. Not sure I would even bother with the wrapper. Also the > first argument is entirely unused. > > > STATIC int > > xfsbufd( > > void *data) > > { > > + xfs_buftarg_t *target = (xfs_buftarg_t *)data; > > > > current->flags |= PF_MEMALLOC; > > > > @@ -1739,6 +1774,8 @@ xfsbufd( > > do { > > long age = xfs_buf_age_centisecs * msecs_to_jiffies(10); > > long tout = age; > > + int count = 0; > > + struct list_head tmp; > > > > if (unlikely(freezing(current))) { > > set_bit(XBT_FORCE_SLEEP, &target->bt_flags); > > @@ -1753,11 +1790,10 @@ xfsbufd( > > schedule_timeout_interruptible(tout); > > > > xfs_buf_delwri_split(target, &tmp, age); > > + xfs_buf_delwri_sort(target, &tmp); > > while (!list_empty(&tmp)) { > > + struct xfs_buf *bp; > > + bp = list_first_entry(&tmp, struct xfs_buf, b_list); > > list_del_init(&bp->b_list); > > xfs_buf_iostrategy(bp); > > count++; > > > > > > if (wait) > > blk_run_address_space(target->bt_mapping); > > > > + /* Now wait for IO to complete if required. */ > > + while (!list_empty(&wait_list)) { > > + bp = list_first_entry(&wait_list, struct xfs_buf, b_list); > > > > list_del_init(&bp->b_list); > > xfs_iowait(bp); > > As a tiny optimization you might want to move this into the if (wait) > block All makes sense, will update. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+vdeK+37+fromorbit.com=david@internode.on.net Fri Jan 8 05:30:28 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08BURjX036339 for ; Fri, 8 Jan 2010 05:30:28 -0600 X-ASG-Debug-ID: 1262950277-364500520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2100CEEB2D5 for ; Fri, 8 Jan 2010 03:31:17 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id CRqsybUXJkXs6gFh for ; Fri, 08 Jan 2010 03:31:17 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11252039-1927428 for multiple; Fri, 08 Jan 2010 22:01:16 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NTD3i-0002oK-8m; Fri, 08 Jan 2010 22:31:14 +1100 Date: Fri, 8 Jan 2010 22:31:14 +1100 From: Dave Chinner To: Patrick Schreurs Cc: Christoph Hellwig , Tommy van Leeuwen , xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] Inode reclaim fixes (was Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim) Subject: [PATCH] Inode reclaim fixes (was Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim) Message-ID: <20100108113114.GA8654@discord.disaster> References: <89c4f90c0910270341r7833f490g60810f2817eb0950@mail.gmail.com> <89c4f90c0910280519k759230c1r7b1586932ac792f7@mail.gmail.com> <20091030101601.GA11142@infradead.org> <4AF0422D.1070104@news-service.com> <20091114162126.GB17658@infradead.org> <4B0A8075.8080008@news-service.com> <20091211115932.GA20632@infradead.org> <4B3F9F88.9030307@news-service.com> <20100107110446.GA13802@discord.disaster> <4B45CFAC.4000607@news-service.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="ReaqsoxgOBHFXBhH" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4B45CFAC.4000607@news-service.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1262950280 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0033 1.0000 -1.9992 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.50 X-Barracuda-Spam-Status: No, SCORE=-1.50 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19262 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --ReaqsoxgOBHFXBhH Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Hi Patrick, I've attached two compendium patches that will hopefully fix the inode reclaim problems you've been seeing - one is for 2.6.31, the other is for 2.6.32. I've cc'd this to the XFS list Ń•o that anyone else who has been seeing crashes, assert failures and general nastiness around inode reclaim can test them as well. These are not final patches - there's a few changes that Christoph has picked up on during review - so there'll be another round of patches before checkins and -stable backports can be requested. I'm hoping that these patches fix your problem, because with them I can't make my machines fall over anymore.... Cheers, Dave. -- Dave Chinner david@fromorbit.com --ReaqsoxgOBHFXBhH Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="xfs-inode-reclaim-2.6.31" diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index a220d36..793f5d0 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -926,13 +926,37 @@ xfs_fs_alloc_inode( */ STATIC void xfs_fs_destroy_inode( - struct inode *inode) + struct inode *inode) { - xfs_inode_t *ip = XFS_I(inode); + struct xfs_inode *ip = XFS_I(inode); + + xfs_itrace_entry(ip); XFS_STATS_INC(vn_reclaim); - if (xfs_reclaim(ip)) - panic("%s: cannot reclaim 0x%p\n", __func__, inode); + + /* bad inode, get out here ASAP */ + if (is_bad_inode(inode)) + goto out_reclaim; + + xfs_ioend_wait(ip); + + ASSERT(XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0); + + /* + * We should never get here with one of the reclaim flags already set. + */ + ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_IRECLAIMABLE)); + ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_IRECLAIM)); + + /* + * we always use background reclaim here because even if the + * inode is clean, it still may be under IO and hence we have + * to take the flush lock. The background reclaim path handles + * this more efficiently than we can here, so simply let background + * reclaim tear down all inodes. + */ +out_reclaim: + xfs_inode_set_reclaim_tag(ip); } /* diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 98ef624..cfc2e70 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -54,7 +54,8 @@ xfs_inode_ag_lookup( struct xfs_mount *mp, struct xfs_perag *pag, uint32_t *first_index, - int tag) + int tag, + int write_lock) { int nr_found; struct xfs_inode *ip; @@ -64,7 +65,10 @@ xfs_inode_ag_lookup( * as the tree is sparse and a gang lookup walks to find * the number of objects requested. */ - read_lock(&pag->pag_ici_lock); + if (write_lock) + write_lock(&pag->pag_ici_lock); + else + read_lock(&pag->pag_ici_lock); if (tag == XFS_ICI_NO_TAG) { nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, (void **)&ip, *first_index, 1); @@ -88,7 +92,10 @@ xfs_inode_ag_lookup( return ip; unlock: - read_unlock(&pag->pag_ici_lock); + if (write_lock) + write_unlock(&pag->pag_ici_lock); + else + read_unlock(&pag->pag_ici_lock); return NULL; } @@ -99,7 +106,8 @@ xfs_inode_ag_walk( int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), int flags, - int tag) + int tag, + int write_lock) { struct xfs_perag *pag = &mp->m_perag[ag]; uint32_t first_index; @@ -113,7 +121,8 @@ restart: int error = 0; xfs_inode_t *ip; - ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag); + ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag, + write_lock); if (!ip) break; @@ -147,7 +156,8 @@ xfs_inode_ag_iterator( int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), int flags, - int tag) + int tag, + int write_lock) { int error = 0; int last_error = 0; @@ -156,7 +166,8 @@ xfs_inode_ag_iterator( for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { if (!mp->m_perag[ag].pag_ici_init) continue; - error = xfs_inode_ag_walk(mp, ag, execute, flags, tag); + error = xfs_inode_ag_walk(mp, ag, execute, flags, tag, + write_lock); if (error) { last_error = error; if (error == EFSCORRUPTED) @@ -180,18 +191,20 @@ xfs_sync_inode_valid( return EFSCORRUPTED; } - /* - * If we can't get a reference on the inode, it must be in reclaim. - * Leave it for the reclaim code to flush. Also avoid inodes that - * haven't been fully initialised. - */ + /* avoid new or reclaimable inodes. Leave for reclaim code to flush */ + if (xfs_iflags_test(ip, XFS_INEW | XFS_IRECLAIMABLE | XFS_IRECLAIM)) { + read_unlock(&pag->pag_ici_lock); + return ENOENT; + } + + /* If we can't get a reference on the inode, it must be in reclaim. */ if (!igrab(inode)) { read_unlock(&pag->pag_ici_lock); return ENOENT; } read_unlock(&pag->pag_ici_lock); - if (is_bad_inode(inode) || xfs_iflags_test(ip, XFS_INEW)) { + if (is_bad_inode(inode)) { IRELE(ip); return ENOENT; } @@ -281,7 +294,7 @@ xfs_sync_data( ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT)) == 0); error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, - XFS_ICI_NO_TAG); + XFS_ICI_NO_TAG, 0); if (error) return XFS_ERROR(error); @@ -303,7 +316,7 @@ xfs_sync_attr( ASSERT((flags & ~SYNC_WAIT) == 0); return xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags, - XFS_ICI_NO_TAG); + XFS_ICI_NO_TAG, 0); } STATIC int @@ -647,36 +660,11 @@ xfs_syncd_stop( kthread_stop(mp->m_sync_task); } -int +STATIC int xfs_reclaim_inode( xfs_inode_t *ip, - int locked, int sync_mode) { - xfs_perag_t *pag = xfs_get_perag(ip->i_mount, ip->i_ino); - - /* The hash lock here protects a thread in xfs_iget_core from - * racing with us on linking the inode back with a vnode. - * Once we have the XFS_IRECLAIM flag set it will not touch - * us. - */ - write_lock(&pag->pag_ici_lock); - spin_lock(&ip->i_flags_lock); - if (__xfs_iflags_test(ip, XFS_IRECLAIM) || - !__xfs_iflags_test(ip, XFS_IRECLAIMABLE)) { - spin_unlock(&ip->i_flags_lock); - write_unlock(&pag->pag_ici_lock); - if (locked) { - xfs_ifunlock(ip); - xfs_iunlock(ip, XFS_ILOCK_EXCL); - } - return -EAGAIN; - } - __xfs_iflags_set(ip, XFS_IRECLAIM); - spin_unlock(&ip->i_flags_lock); - write_unlock(&pag->pag_ici_lock); - xfs_put_perag(ip->i_mount, pag); - /* * If the inode is still dirty, then flush it out. If the inode * is not in the AIL, then it will be OK to flush it delwri as @@ -688,14 +676,14 @@ xfs_reclaim_inode( * We get the flush lock regardless, though, just to make sure * we don't free it while it is being flushed. */ - if (!locked) { - xfs_ilock(ip, XFS_ILOCK_EXCL); - xfs_iflock(ip); - } + xfs_ilock(ip, XFS_ILOCK_EXCL); + xfs_iflock(ip); /* * In the case of a forced shutdown we rely on xfs_iflush() to * wait for the inode to be unpinned before returning an error. + * Because we hold the flush lock, we know that the inode cannot + * be under IO, so if it reports clean it can be reclaimed. */ if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) { /* synchronize with xfs_iflush_done */ @@ -770,14 +758,24 @@ xfs_reclaim_inode_now( struct xfs_perag *pag, int flags) { - /* ignore if already under reclaim */ - if (xfs_iflags_test(ip, XFS_IRECLAIM)) { - read_unlock(&pag->pag_ici_lock); + /* + * The radix tree lock here protects a thread in xfs_iget from racing + * with us starting reclaim on the inode. Once we have the + * XFS_IRECLAIM flag set it will not touch us. + */ + spin_lock(&ip->i_flags_lock); + ASSERT_ALWAYS(__xfs_iflags_test(ip, XFS_IRECLAIMABLE)); + if (__xfs_iflags_test(ip, XFS_IRECLAIM)) { + /* ignore as it is already under reclaim */ + spin_unlock(&ip->i_flags_lock); + write_unlock(&pag->pag_ici_lock); return 0; } - read_unlock(&pag->pag_ici_lock); + __xfs_iflags_set(ip, XFS_IRECLAIM); + spin_unlock(&ip->i_flags_lock); + write_unlock(&pag->pag_ici_lock); - return xfs_reclaim_inode(ip, 0, flags); + return xfs_reclaim_inode(ip, flags); } int @@ -786,5 +784,5 @@ xfs_reclaim_inodes( int mode) { return xfs_inode_ag_iterator(mp, xfs_reclaim_inode_now, mode, - XFS_ICI_RECLAIM_TAG); + XFS_ICI_RECLAIM_TAG, 1); } diff --git a/fs/xfs/linux-2.6/xfs_sync.h b/fs/xfs/linux-2.6/xfs_sync.h index 5912060..0cef0b8 100644 --- a/fs/xfs/linux-2.6/xfs_sync.h +++ b/fs/xfs/linux-2.6/xfs_sync.h @@ -44,7 +44,6 @@ void xfs_quiesce_attr(struct xfs_mount *mp); void xfs_flush_inodes(struct xfs_inode *ip); -int xfs_reclaim_inode(struct xfs_inode *ip, int locked, int sync_mode); int xfs_reclaim_inodes(struct xfs_mount *mp, int mode); void xfs_inode_set_reclaim_tag(struct xfs_inode *ip); @@ -56,6 +55,6 @@ void __xfs_inode_clear_reclaim_tag(struct xfs_mount *mp, struct xfs_perag *pag, int xfs_sync_inode_valid(struct xfs_inode *ip, struct xfs_perag *pag); int xfs_inode_ag_iterator(struct xfs_mount *mp, int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), - int flags, int tag); + int flags, int tag, int write_lock); #endif diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c index 4e4276b..1024e4f 100644 --- a/fs/xfs/quota/xfs_qm_syscalls.c +++ b/fs/xfs/quota/xfs_qm_syscalls.c @@ -894,7 +894,7 @@ xfs_qm_dqrele_all_inodes( uint flags) { ASSERT(mp->m_quotainfo); - xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG); + xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG, 0); } /*------------------------------------------------------------------------*/ diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index ecbf8b4..883bca9 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c @@ -538,17 +538,21 @@ xfs_ireclaim( { struct xfs_mount *mp = ip->i_mount; struct xfs_perag *pag; + xfs_agino_t agino = XFS_INO_TO_AGINO(mp, ip->i_ino); XFS_STATS_INC(xs_ig_reclaims); /* - * Remove the inode from the per-AG radix tree. It doesn't matter - * if it was never added to it because radix_tree_delete can deal - * with that case just fine. + * Remove the inode from the per-AG radix tree. + * + * Because radix_tree_delete won't complain even if the item was never + * added to the tree assert that it's been there before to catch + * problems with the inode life time early on. */ pag = xfs_get_perag(mp, ip->i_ino); write_lock(&pag->pag_ici_lock); - radix_tree_delete(&pag->pag_ici_root, XFS_INO_TO_AGINO(mp, ip->i_ino)); + if (!radix_tree_delete(&pag->pag_ici_root, agino)) + ASSERT(0); write_unlock(&pag->pag_ici_lock); xfs_put_perag(mp, pag); diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index da428b3..64373bc 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2877,10 +2877,14 @@ xfs_iflush( mp = ip->i_mount; /* - * If the inode isn't dirty, then just release the inode - * flush lock and do nothing. + * If the inode isn't dirty, then just release the inode flush lock and + * do nothing. Treat stale inodes the same; we cannot rely on the + * backing buffer remaining stale in cache for the remaining life of + * the stale inode and so xfs_itobp() below may give us a buffer that + * no longer contains inodes below. Doing this stale check here also + * avoids forcing the log on pinned, stale inodes. */ - if (xfs_inode_clean(ip)) { + if (xfs_inode_clean(ip) || xfs_iflags_test(ip, XFS_ISTALE)) { xfs_ifunlock(ip); return 0; } diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 492d75b..15875e5 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -2461,52 +2461,6 @@ xfs_set_dmattrs( return error; } -int -xfs_reclaim( - xfs_inode_t *ip) -{ - - xfs_itrace_entry(ip); - - ASSERT(!VN_MAPPED(VFS_I(ip))); - - /* bad inode, get out here ASAP */ - if (is_bad_inode(VFS_I(ip))) { - xfs_ireclaim(ip); - return 0; - } - - xfs_ioend_wait(ip); - - ASSERT(XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0); - - /* - * Make sure the atime in the XFS inode is correct before freeing the - * Linux inode. - */ - xfs_synchronize_atime(ip); - - /* - * If we have nothing to flush with this inode then complete the - * teardown now, otherwise break the link between the xfs inode and the - * linux inode and clean up the xfs inode later. This avoids flushing - * the inode to disk during the delete operation itself. - * - * When breaking the link, we need to set the XFS_IRECLAIMABLE flag - * first to ensure that xfs_iunpin() will never see an xfs inode - * that has a linux inode being reclaimed. Synchronisation is provided - * by the i_flags_lock. - */ - if (!ip->i_update_core && (ip->i_itemp == NULL)) { - xfs_ilock(ip, XFS_ILOCK_EXCL); - xfs_iflock(ip); - xfs_iflags_set(ip, XFS_IRECLAIMABLE); - return xfs_reclaim_inode(ip, 1, XFS_IFLUSH_DELWRI_ELSE_SYNC); - } - xfs_inode_set_reclaim_tag(ip); - return 0; -} - /* * xfs_alloc_file_space() * This routine allocates disk space for the given file. diff --git a/fs/xfs/xfs_vnodeops.h b/fs/xfs/xfs_vnodeops.h index a9e102d..167a467 100644 --- a/fs/xfs/xfs_vnodeops.h +++ b/fs/xfs/xfs_vnodeops.h @@ -38,7 +38,6 @@ int xfs_symlink(struct xfs_inode *dp, struct xfs_name *link_name, const char *target_path, mode_t mode, struct xfs_inode **ipp, cred_t *credp); int xfs_set_dmattrs(struct xfs_inode *ip, u_int evmask, u_int16_t state); -int xfs_reclaim(struct xfs_inode *ip); int xfs_change_file_space(struct xfs_inode *ip, int cmd, xfs_flock64_t *bf, xfs_off_t offset, int attr_flags); int xfs_rename(struct xfs_inode *src_dp, struct xfs_name *src_name, --ReaqsoxgOBHFXBhH Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="xfs-inode-reclaim-2.6.32" diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 18a4b8e..f3c622a 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -930,13 +930,37 @@ xfs_fs_alloc_inode( */ STATIC void xfs_fs_destroy_inode( - struct inode *inode) + struct inode *inode) { - xfs_inode_t *ip = XFS_I(inode); + struct xfs_inode *ip = XFS_I(inode); + + xfs_itrace_entry(ip); XFS_STATS_INC(vn_reclaim); - if (xfs_reclaim(ip)) - panic("%s: cannot reclaim 0x%p\n", __func__, inode); + + /* bad inode, get out here ASAP */ + if (is_bad_inode(inode)) + goto out_reclaim; + + xfs_ioend_wait(ip); + + ASSERT(XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0); + + /* + * We should never get here with one of the reclaim flags already set. + */ + ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_IRECLAIMABLE)); + ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_IRECLAIM)); + + /* + * we always use background reclaim here because even if the + * inode is clean, it still may be under IO and hence we have + * to take the flush lock. The background reclaim path handles + * this more efficiently than we can here, so simply let background + * reclaim tear down all inodes. + */ +out_reclaim: + xfs_inode_set_reclaim_tag(ip); } /* diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 961df0a..897fcb5 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -54,7 +54,8 @@ xfs_inode_ag_lookup( struct xfs_mount *mp, struct xfs_perag *pag, uint32_t *first_index, - int tag) + int tag, + int write_lock) { int nr_found; struct xfs_inode *ip; @@ -64,7 +65,10 @@ xfs_inode_ag_lookup( * as the tree is sparse and a gang lookup walks to find * the number of objects requested. */ - read_lock(&pag->pag_ici_lock); + if (write_lock) + write_lock(&pag->pag_ici_lock); + else + read_lock(&pag->pag_ici_lock); if (tag == XFS_ICI_NO_TAG) { nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, (void **)&ip, *first_index, 1); @@ -88,7 +92,10 @@ xfs_inode_ag_lookup( return ip; unlock: - read_unlock(&pag->pag_ici_lock); + if (write_lock) + write_unlock(&pag->pag_ici_lock); + else + read_unlock(&pag->pag_ici_lock); return NULL; } @@ -99,7 +106,8 @@ xfs_inode_ag_walk( int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), int flags, - int tag) + int tag, + int write_lock) { struct xfs_perag *pag = &mp->m_perag[ag]; uint32_t first_index; @@ -113,7 +121,8 @@ restart: int error = 0; xfs_inode_t *ip; - ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag); + ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag, + write_lock); if (!ip) break; @@ -147,7 +156,8 @@ xfs_inode_ag_iterator( int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), int flags, - int tag) + int tag, + int write_lock) { int error = 0; int last_error = 0; @@ -156,7 +166,8 @@ xfs_inode_ag_iterator( for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { if (!mp->m_perag[ag].pag_ici_init) continue; - error = xfs_inode_ag_walk(mp, ag, execute, flags, tag); + error = xfs_inode_ag_walk(mp, ag, execute, flags, tag, + write_lock); if (error) { last_error = error; if (error == EFSCORRUPTED) @@ -180,18 +191,20 @@ xfs_sync_inode_valid( return EFSCORRUPTED; } - /* - * If we can't get a reference on the inode, it must be in reclaim. - * Leave it for the reclaim code to flush. Also avoid inodes that - * haven't been fully initialised. - */ + /* avoid new or reclaimable inodes. Leave for reclaim code to flush */ + if (xfs_iflags_test(ip, XFS_INEW | XFS_IRECLAIMABLE | XFS_IRECLAIM)) { + read_unlock(&pag->pag_ici_lock); + return ENOENT; + } + + /* If we can't get a reference on the inode, it must be in reclaim. */ if (!igrab(inode)) { read_unlock(&pag->pag_ici_lock); return ENOENT; } read_unlock(&pag->pag_ici_lock); - if (is_bad_inode(inode) || xfs_iflags_test(ip, XFS_INEW)) { + if (is_bad_inode(inode)) { IRELE(ip); return ENOENT; } @@ -281,7 +294,7 @@ xfs_sync_data( ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT)) == 0); error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, - XFS_ICI_NO_TAG); + XFS_ICI_NO_TAG, 0); if (error) return XFS_ERROR(error); @@ -303,7 +316,7 @@ xfs_sync_attr( ASSERT((flags & ~SYNC_WAIT) == 0); return xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags, - XFS_ICI_NO_TAG); + XFS_ICI_NO_TAG, 0); } STATIC int @@ -663,36 +676,11 @@ xfs_syncd_stop( kthread_stop(mp->m_sync_task); } -int +STATIC int xfs_reclaim_inode( xfs_inode_t *ip, - int locked, int sync_mode) { - xfs_perag_t *pag = xfs_get_perag(ip->i_mount, ip->i_ino); - - /* The hash lock here protects a thread in xfs_iget_core from - * racing with us on linking the inode back with a vnode. - * Once we have the XFS_IRECLAIM flag set it will not touch - * us. - */ - write_lock(&pag->pag_ici_lock); - spin_lock(&ip->i_flags_lock); - if (__xfs_iflags_test(ip, XFS_IRECLAIM) || - !__xfs_iflags_test(ip, XFS_IRECLAIMABLE)) { - spin_unlock(&ip->i_flags_lock); - write_unlock(&pag->pag_ici_lock); - if (locked) { - xfs_ifunlock(ip); - xfs_iunlock(ip, XFS_ILOCK_EXCL); - } - return -EAGAIN; - } - __xfs_iflags_set(ip, XFS_IRECLAIM); - spin_unlock(&ip->i_flags_lock); - write_unlock(&pag->pag_ici_lock); - xfs_put_perag(ip->i_mount, pag); - /* * If the inode is still dirty, then flush it out. If the inode * is not in the AIL, then it will be OK to flush it delwri as @@ -704,14 +692,14 @@ xfs_reclaim_inode( * We get the flush lock regardless, though, just to make sure * we don't free it while it is being flushed. */ - if (!locked) { - xfs_ilock(ip, XFS_ILOCK_EXCL); - xfs_iflock(ip); - } + xfs_ilock(ip, XFS_ILOCK_EXCL); + xfs_iflock(ip); /* * In the case of a forced shutdown we rely on xfs_iflush() to * wait for the inode to be unpinned before returning an error. + * Because we hold the flush lock, we know that the inode cannot + * be under IO, so if it reports clean it can be reclaimed. */ if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) { /* synchronize with xfs_iflush_done */ @@ -771,14 +759,24 @@ xfs_reclaim_inode_now( struct xfs_perag *pag, int flags) { - /* ignore if already under reclaim */ - if (xfs_iflags_test(ip, XFS_IRECLAIM)) { - read_unlock(&pag->pag_ici_lock); + /* + * The radix tree lock here protects a thread in xfs_iget from racing + * with us starting reclaim on the inode. Once we have the + * XFS_IRECLAIM flag set it will not touch us. + */ + spin_lock(&ip->i_flags_lock); + ASSERT_ALWAYS(__xfs_iflags_test(ip, XFS_IRECLAIMABLE)); + if (__xfs_iflags_test(ip, XFS_IRECLAIM)) { + /* ignore as it is already under reclaim */ + spin_unlock(&ip->i_flags_lock); + write_unlock(&pag->pag_ici_lock); return 0; } - read_unlock(&pag->pag_ici_lock); + __xfs_iflags_set(ip, XFS_IRECLAIM); + spin_unlock(&ip->i_flags_lock); + write_unlock(&pag->pag_ici_lock); - return xfs_reclaim_inode(ip, 0, flags); + return xfs_reclaim_inode(ip, flags); } int @@ -787,5 +785,5 @@ xfs_reclaim_inodes( int mode) { return xfs_inode_ag_iterator(mp, xfs_reclaim_inode_now, mode, - XFS_ICI_RECLAIM_TAG); + XFS_ICI_RECLAIM_TAG, 1); } diff --git a/fs/xfs/linux-2.6/xfs_sync.h b/fs/xfs/linux-2.6/xfs_sync.h index 27920eb..ea932b4 100644 --- a/fs/xfs/linux-2.6/xfs_sync.h +++ b/fs/xfs/linux-2.6/xfs_sync.h @@ -44,7 +44,6 @@ void xfs_quiesce_attr(struct xfs_mount *mp); void xfs_flush_inodes(struct xfs_inode *ip); -int xfs_reclaim_inode(struct xfs_inode *ip, int locked, int sync_mode); int xfs_reclaim_inodes(struct xfs_mount *mp, int mode); void xfs_inode_set_reclaim_tag(struct xfs_inode *ip); @@ -55,6 +54,6 @@ void __xfs_inode_clear_reclaim_tag(struct xfs_mount *mp, struct xfs_perag *pag, int xfs_sync_inode_valid(struct xfs_inode *ip, struct xfs_perag *pag); int xfs_inode_ag_iterator(struct xfs_mount *mp, int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), - int flags, int tag); + int flags, int tag, int write_lock); #endif diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c index 5d1a3b9..f99cfa4 100644 --- a/fs/xfs/quota/xfs_qm_syscalls.c +++ b/fs/xfs/quota/xfs_qm_syscalls.c @@ -893,7 +893,7 @@ xfs_qm_dqrele_all_inodes( uint flags) { ASSERT(mp->m_quotainfo); - xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG); + xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG, 0); } /*------------------------------------------------------------------------*/ diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index 80e5264..40e8775 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c @@ -511,17 +511,21 @@ xfs_ireclaim( { struct xfs_mount *mp = ip->i_mount; struct xfs_perag *pag; + xfs_agino_t agino = XFS_INO_TO_AGINO(mp, ip->i_ino); XFS_STATS_INC(xs_ig_reclaims); /* - * Remove the inode from the per-AG radix tree. It doesn't matter - * if it was never added to it because radix_tree_delete can deal - * with that case just fine. + * Remove the inode from the per-AG radix tree. + * + * Because radix_tree_delete won't complain even if the item was never + * added to the tree assert that it's been there before to catch + * problems with the inode life time early on. */ pag = xfs_get_perag(mp, ip->i_ino); write_lock(&pag->pag_ici_lock); - radix_tree_delete(&pag->pag_ici_root, XFS_INO_TO_AGINO(mp, ip->i_ino)); + if (!radix_tree_delete(&pag->pag_ici_root, agino)) + ASSERT(0); write_unlock(&pag->pag_ici_lock); xfs_put_perag(mp, pag); diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index b92a4fa..13d7d21 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2877,10 +2877,14 @@ xfs_iflush( mp = ip->i_mount; /* - * If the inode isn't dirty, then just release the inode - * flush lock and do nothing. + * If the inode isn't dirty, then just release the inode flush lock and + * do nothing. Treat stale inodes the same; we cannot rely on the + * backing buffer remaining stale in cache for the remaining life of + * the stale inode and so xfs_itobp() below may give us a buffer that + * no longer contains inodes below. Doing this stale check here also + * avoids forcing the log on pinned, stale inodes. */ - if (xfs_inode_clean(ip)) { + if (xfs_inode_clean(ip) || xfs_iflags_test(ip, XFS_ISTALE)) { xfs_ifunlock(ip); return 0; } diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index b572f7e..3fac146 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -2456,46 +2456,6 @@ xfs_set_dmattrs( return error; } -int -xfs_reclaim( - xfs_inode_t *ip) -{ - - xfs_itrace_entry(ip); - - ASSERT(!VN_MAPPED(VFS_I(ip))); - - /* bad inode, get out here ASAP */ - if (is_bad_inode(VFS_I(ip))) { - xfs_ireclaim(ip); - return 0; - } - - xfs_ioend_wait(ip); - - ASSERT(XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0); - - /* - * If we have nothing to flush with this inode then complete the - * teardown now, otherwise break the link between the xfs inode and the - * linux inode and clean up the xfs inode later. This avoids flushing - * the inode to disk during the delete operation itself. - * - * When breaking the link, we need to set the XFS_IRECLAIMABLE flag - * first to ensure that xfs_iunpin() will never see an xfs inode - * that has a linux inode being reclaimed. Synchronisation is provided - * by the i_flags_lock. - */ - if (!ip->i_update_core && (ip->i_itemp == NULL)) { - xfs_ilock(ip, XFS_ILOCK_EXCL); - xfs_iflock(ip); - xfs_iflags_set(ip, XFS_IRECLAIMABLE); - return xfs_reclaim_inode(ip, 1, XFS_IFLUSH_DELWRI_ELSE_SYNC); - } - xfs_inode_set_reclaim_tag(ip); - return 0; -} - /* * xfs_alloc_file_space() * This routine allocates disk space for the given file. diff --git a/fs/xfs/xfs_vnodeops.h b/fs/xfs/xfs_vnodeops.h index a9e102d..167a467 100644 --- a/fs/xfs/xfs_vnodeops.h +++ b/fs/xfs/xfs_vnodeops.h @@ -38,7 +38,6 @@ int xfs_symlink(struct xfs_inode *dp, struct xfs_name *link_name, const char *target_path, mode_t mode, struct xfs_inode **ipp, cred_t *credp); int xfs_set_dmattrs(struct xfs_inode *ip, u_int evmask, u_int16_t state); -int xfs_reclaim(struct xfs_inode *ip); int xfs_change_file_space(struct xfs_inode *ip, int cmd, xfs_flock64_t *bf, xfs_off_t offset, int attr_flags); int xfs_rename(struct xfs_inode *src_dp, struct xfs_name *src_name, --ReaqsoxgOBHFXBhH-- From BATV+46b1ae413952afea7e2e+2329+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 8 06:25:47 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43,J_CHICKENPOX_73 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08CPkFu040268 for ; Fri, 8 Jan 2010 06:25:47 -0600 X-ASG-Debug-ID: 1262953599-4d9c01e60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 029421C3B6E4 for ; Fri, 8 Jan 2010 04:26:39 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Zy2oU7sbXCC0mlAF for ; Fri, 08 Jan 2010 04:26:39 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTDvL-0004v6-Cu for xfs@oss.sgi.com; Fri, 08 Jan 2010 12:26:39 +0000 Date: Fri, 8 Jan 2010 07:26:39 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: bump version and update changelog Subject: [PATCH] xfsprogs: bump version and update changelog Message-ID: <20100108122639.GA17229@infradead.org> References: <20091223135718.GA29975@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20091223135718.GA29975@infradead.org> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262953600 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/VERSION =================================================================== --- xfsprogs-dev.orig/VERSION 2010-01-02 12:11:42.871003354 +0100 +++ xfsprogs-dev/VERSION 2010-01-06 18:49:38.221274008 +0100 @@ -2,6 +2,6 @@ # This file is used by configure to get version information # PKG_MAJOR=3 -PKG_MINOR=0 -PKG_REVISION=4 +PKG_MINOR=1 +PKG_REVISION=0 PKG_BUILD=1 Index: xfsprogs-dev/doc/CHANGES =================================================================== --- xfsprogs-dev.orig/doc/CHANGES 2010-01-02 12:11:42.873010034 +0100 +++ xfsprogs-dev/doc/CHANGES 2010-01-08 13:24:09.150268999 +0100 @@ -1,3 +1,23 @@ +xfsprogs-3.1.0 + - Reduce memory usage in xfs_repair by using better data structures. + - Add additional checks in xfs_repair to detect freespace btree + corruption instead of only rebuilding the btrees. Useful for the + no-modify mode. + - Fix libhandle to use the right path to issue by-handle ioctls for + symbolic links and special files. + - Use lazy superblock counters by default. At least kernel 2.6.22 is + needed for this feature. + - Add a German translation, thanks to Chris Leick. + - Enable the madvise and mincor commands in xfs_io. + - Fix unsafe temporary file creation in xfs_fsr. + - Add support for discarding unused space on SSDs or thing provionen + arrays in mkfs.xfs. + - Allow linking against libblkid for topology information. + - Add symbol versioning for libhandle. + - Remove the included RPM and binary tarball built infrastructure. + - Various build system improvements. + - Small fixes to xfs_db and xfs_io. + xfsprogs-3.0.4 (17 September 2009) - Fix a memory leak in xfsprogs. - Increase hash chain length in xfsprogs when running out of memory. Index: xfsprogs-dev/debian/changelog =================================================================== --- xfsprogs-dev.orig/debian/changelog 2010-01-02 12:11:42.872012141 +0100 +++ xfsprogs-dev/debian/changelog 2010-01-06 18:49:38.224273412 +0100 @@ -1,6 +1,6 @@ xfsprogs (3.1.0) unstable; urgency=low - * New bugfix release + * New upstream release * Merged German translation (closes: #521389) * Merged German translation update (closes: #557100) * Uptodate po file is provided now (closes: #538962) From aelder@oss.sgi.com Fri Jan 8 10:24:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08GOTHk054493 for ; Fri, 8 Jan 2010 10:24:29 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o08GOQjR054446; Fri, 8 Jan 2010 10:24:26 -0600 Date: Fri, 8 Jan 2010 10:24:26 -0600 Message-Id: <201001081624.o08GOQjR054446@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.30-rc4-34424-g74d2e4f X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 3fc98b1ac036675b95f6e3fafd5ef147b97d4d30 X-Git-Newrev: 74d2e4f8d79ae0c4b6ec027958d5b18058662eea This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated eaff807 kill I_LOCK bea4c89 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 1e431f5 cleanup blockdev_direct_IO locking 431547b sanitize xattr handler prototypes from 3fc98b1ac036675b95f6e3fafd5ef147b97d4d30 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit eaff8079d4f1016a12e34ab323737314f24127dd Author: Christoph Hellwig Date: Thu Dec 17 14:25:01 2009 +0100 kill I_LOCK After I_SYNC was split from I_LOCK the leftover is always used together with I_NEW and thus superflous. Signed-off-by: Christoph Hellwig Signed-off-by: Al Viro commit bea4c899f2b5fad80099aea979780ef19f9b1987 Merge: 73efc4681cb5e3c8807daf106f001e7f0798d8a0 3fc98b1ac036675b95f6e3fafd5ef147b97d4d30 Author: Linus Torvalds Date: Wed Dec 16 13:29:39 2009 -0800 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs * 'for-linus' of git://oss.sgi.com/xfs/xfs: XFS: Free buffer pages array unconditionally xfs: kill xfs_bmbt_rec_32/64 types xfs: improve metadata I/O merging in the elevator xfs: check for not fully initialized inodes in xfs_ireclaim commit 1e431f5ce78f3ae8254d725060288b78ff74f086 Author: Christoph Hellwig Date: Tue Nov 3 16:44:53 2009 +0100 cleanup blockdev_direct_IO locking Currently the locking in blockdev_direct_IO is a mess, we have three different locking types and very confusing checks for some of them. The most complicated one is DIO_OWN_LOCKING for reads, which happens to not actually be used. This patch gets rid of the DIO_OWN_LOCKING - as mentioned above the read case is unused anyway, and the write side is almost identical to DIO_NO_LOCKING. The difference is that DIO_NO_LOCKING always sets the create argument for the get_blocks callback to zero, but we can easily move that to the actual get_blocks callbacks. There are four users of the DIO_NO_LOCKING mode: gfs already ignores the create argument and thus is fine with the new version, ocfs2 only errors out if create were ever set, and we can remove this dead code now, the block device code only ever uses create for an error message if we are fully beyond the device which can never happen, and last but not least XFS will need the new behavour for writes. Now we can replace the lock_type variable with a flags one, where no flag means the DIO_NO_LOCKING behaviour and DIO_LOCKING is kept as the first flag. Separate out the check for not allowing to fill holes into a separate flag, although for now both flags always get set at the same time. Also revamp the documentation of the locking scheme to actually make sense. Signed-off-by: Christoph Hellwig Signed-off-by: Al Viro commit 431547b3c4533b8c7fd150ab36980b9a3147797b Author: Christoph Hellwig Date: Fri Nov 13 09:52:56 2009 +0000 sanitize xattr handler prototypes Add a flags argument to struct xattr_handler and pass it to all xattr handler methods. This allows using the same methods for multiple handlers, e.g. for the ACL methods which perform exactly the same action for the access and default ACLs, just using a different underlying attribute. With a little more groundwork it'll also allow sharing the methods for the regular user/trusted/secure handlers in extN, ocfs2 and jffs2 like it's already done for xfs in this patch. Also change the inode argument to the handlers to a dentry to allow using the handlers mechnism for filesystems that require it later, e.g. cifs. [with GFS2 bits updated by Steven Whitehouse ] Signed-off-by: Christoph Hellwig Reviewed-by: James Morris Acked-by: Joel Becker Signed-off-by: Al Viro ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_acl.c | 57 ++++++++++++---------------------- fs/xfs/linux-2.6/xfs_iops.c | 2 +- fs/xfs/linux-2.6/xfs_xattr.c | 71 +++++++++--------------------------------- fs/xfs/xfs_acl.h | 3 +- fs/xfs/xfs_iget.c | 4 +- 5 files changed, 40 insertions(+), 97 deletions(-) hooks/post-receive -- XFS development tree From sandeen@sandeen.net Fri Jan 8 10:45:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_210,J_CHICKENPOX_43,J_CHICKENPOX_45,J_CHICKENPOX_52 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08GjoeQ055771 for ; Fri, 8 Jan 2010 10:45:50 -0600 X-ASG-Debug-ID: 1262969202-3669030e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 28FF3153217 for ; Fri, 8 Jan 2010 08:46:42 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id 5vsCA9HztnsoM18O for ; Fri, 08 Jan 2010 08:46:42 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id C08C28E0507; Fri, 8 Jan 2010 10:46:41 -0600 (CST) Message-ID: <4B476171.4020701@sandeen.net> Date: Fri, 08 Jan 2010 10:46:41 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Eric Sandeen CC: xfs-oss , Christoph Hellwig X-ASG-Orig-Subj: [PATCH V2] mkfs: handle 4k sector devices more cleanly Subject: [PATCH V2] mkfs: handle 4k sector devices more cleanly References: <4B1E9A25.50108@redhat.com> In-Reply-To: <4B1E9A25.50108@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1262969203 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19282 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Trying to mkfs a 4k sector device today fails w/o manually specifying sector size: # modprobe scsi_debug sector_size=4096 dev_size_mb=32 # mkfs.xfs -f /dev/sdc mkfs.xfs: warning - cannot set blocksize on block device /dev/sdc: Invalid argument Warning: the data subvolume sector size 512 is less than the sector size reported by the device (4096). ... add sectorsize to the device topology info, and use that if present. Also check that explicitly requested sector sizes are not smaller than the hardware size. This already fails today, but with the more cryptic "cannot set blocksize" ioctl error above. Signed-off-by: Eric Sandeen --- diff --git a/libxfs/linux.c b/libxfs/linux.c index bc49903..2e07d54 100644 --- a/libxfs/linux.c +++ b/libxfs/linux.c @@ -112,9 +112,9 @@ platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fata if (major(device) != RAMDISK_MAJOR) { if ((error = ioctl(fd, BLKBSZSET, &blocksize)) < 0) { fprintf(stderr, _("%s: %s - cannot set blocksize " - "on block device %s: %s\n"), + "%d on block device %s: %s\n"), progname, fatal ? "error": "warning", - path, strerror(errno)); + blocksize, path, strerror(errno)); } } return error; diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index d3ed00a..356dcb4 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -33,6 +33,7 @@ struct fs_topology { int dsunit; /* stripe unit - data subvolume */ int dswidth; /* stripe width - data subvolume */ int rtswidth; /* stripe width - rt subvolume */ + int sectorsize; int sectoralign; }; @@ -320,7 +321,7 @@ out_free_probe: return ret; } -static void blkid_get_topology(const char *device, int *sunit, int *swidth) +static void blkid_get_topology(const char *device, int *sunit, int *swidth, int *sectorsize) { blkid_topology tp; blkid_probe pr; @@ -348,6 +349,8 @@ static void blkid_get_topology(const char *device, int *sunit, int *swidth) val = blkid_topology_get_optimal_io_size(tp) >> 9; if (val > 1) *swidth = val; + val = blkid_probe_get_sectorsize(pr); + *sectorsize = val; if (blkid_topology_get_alignment_offset(tp) != 0) { fprintf(stderr, @@ -370,13 +373,14 @@ static void get_topology(libxfs_init_t *xi, struct fs_topology *ft) if (!xi->disfile) { const char *dfile = xi->volname ? xi->volname : xi->dname; - blkid_get_topology(dfile, &ft->dsunit, &ft->dswidth); + blkid_get_topology(dfile, &ft->dsunit, &ft->dswidth, + &ft->sectorsize); } if (xi->rtname && !xi->risfile) { int dummy; - blkid_get_topology(xi->rtname, &dummy, &ft->rtswidth); + blkid_get_topology(xi->rtname, &dummy, &ft->rtswidth, &dummy); } } #else /* ENABLE_BLKID */ @@ -403,15 +407,29 @@ check_overwrite( return 0; } +extern void platform_findsizes (char *path, int fd, long long *sz, int *bsz); + static void get_topology(libxfs_init_t *xi, struct fs_topology *ft) { char *dfile = xi->volname ? xi->volname : xi->dname; + int bsz = BBSIZE; if (!xi->disfile) { + int fd; + long long dummy; + get_subvol_stripe_wrapper(dfile, SVTYPE_DATA, &ft->dsunit, &ft->dswidth, &ft->sectoralign); + fd = open(dfile, O_RDONLY); + /* If this fails we just fall back to BBSIZE */ + if (fd) { + platform_findsizes(dfile, fd, &dummy, &bsz); + close(fd); + } } + ft->sectorsize = bsz; + if (xi->rtname && !xi->risfile) { int dummy1; @@ -1543,8 +1561,15 @@ main( memset(&ft, 0, sizeof(ft)); get_topology(&xi, &ft); - if (ft.sectoralign) { - sectorsize = blocksize; + /* + * MD wants sector size set == block size to avoid switching. + * Otherwise, if not specfied via command, use device sectorsize + */ + if (ft.sectoralign || !ssflag) { + if (ft.sectoralign) + sectorsize = blocksize; + else + sectorsize = ft.sectorsize; sectorlog = libxfs_highbit32(sectorsize); if (loginternal) { lsectorsize = sectorsize; @@ -1556,6 +1581,11 @@ main( fprintf(stderr, _("illegal sector size %d\n"), sectorsize); usage(); } + if (sectorsize < ft.sectorsize) { + fprintf(stderr, _("illegal sector size %d; hw sector is %d\n"), + sectorsize, ft.sectorsize); + usage(); + } if (lsectorsize < XFS_MIN_SECTORSIZE || lsectorsize > XFS_MAX_SECTORSIZE || lsectorsize > blocksize) { fprintf(stderr, _("illegal log sector size %d\n"), lsectorsize); @@ -1751,8 +1781,6 @@ main( if (slflag || ssflag) xi.setblksize = sectorsize; - else - xi.setblksize = 1; /* * Initialize. This will open the log and rt devices as well. From BATV+46b1ae413952afea7e2e+2329+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 8 11:43:09 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_210 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08Hh8Ip059783 for ; Fri, 8 Jan 2010 11:43:08 -0600 X-ASG-Debug-ID: 1262972641-357101b70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0B0FF1535DE for ; Fri, 8 Jan 2010 09:44:01 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id HcoFDSh1QdTmbjip for ; Fri, 08 Jan 2010 09:44:01 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTIsS-0001Dn-8y; Fri, 08 Jan 2010 17:44:00 +0000 Date: Fri, 8 Jan 2010 12:44:00 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Eric Sandeen , Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [PATCH V2] mkfs: handle 4k sector devices more cleanly Subject: Re: [PATCH V2] mkfs: handle 4k sector devices more cleanly Message-ID: <20100108174400.GA17634@infradead.org> References: <4B1E9A25.50108@redhat.com> <4B476171.4020701@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B476171.4020701@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1262972642 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 08, 2010 at 10:46:41AM -0600, Eric Sandeen wrote: > +extern void platform_findsizes (char *path, int fd, long long *sz, int *bsz); Can you move the prototype from libxfs/init.h to include/libxfs.h instead of adding it to the .c file? > + /* > + * MD wants sector size set == block size to avoid switching. > + * Otherwise, if not specfied via command, use device sectorsize > + */ > + if (ft.sectoralign || !ssflag) { > + if (ft.sectoralign) > + sectorsize = blocksize; > + else > + sectorsize = ft.sectorsize; This still confuses the heck out of me. What do you think about the incremental patch at the end of the mail? > if (slflag || ssflag) > xi.setblksize = sectorsize; > - else > - xi.setblksize = 1; So for the defaul case we now never set the sector size in the libxfs init. This seems safe to me, but why did we do it before? Could a previous user have left it set to a wrong value? Maye we should just do the xi.setblksize = sectorsize unconditionally? Index: xfsprogs-dev/mkfs/xfs_mkfs.c =================================================================== --- xfsprogs-dev.orig/mkfs/xfs_mkfs.c 2010-01-08 18:33:53.619277529 +0100 +++ xfsprogs-dev/mkfs/xfs_mkfs.c 2010-01-08 18:39:37.758005711 +0100 @@ -1561,21 +1561,32 @@ main( memset(&ft, 0, sizeof(ft)); get_topology(&xi, &ft); - /* - * MD wants sector size set == block size to avoid switching. - * Otherwise, if not specfied via command, use device sectorsize - */ + if (ft.sectoralign) { + /* + * Older Linux software RAID versions want the sector size + * to match the block size to avoid switching I/O sizes. + * For the legacy libdisk case we thus set the sector size to + * match the block size. For systems using libblkid we assume + * that the kernel is recent enough to not require this and + * ft.sectoralign will never be set. + */ + sectorsize = blocksize; + } else if (!ssflag) { + /* + * Unless specified manually on the command line use the + * advertised sector size of the device. + */ + sectorsize = ft.sectorsize; + } + if (ft.sectoralign || !ssflag) { - if (ft.sectoralign) - sectorsize = blocksize; - else - sectorsize = ft.sectorsize; sectorlog = libxfs_highbit32(sectorsize); if (loginternal) { lsectorsize = sectorsize; lsectorlog = sectorlog; } } + if (sectorsize < XFS_MIN_SECTORSIZE || sectorsize > XFS_MAX_SECTORSIZE || sectorsize > blocksize) { fprintf(stderr, _("illegal sector size %d\n"), sectorsize); From randy.dunlap@oracle.com Fri Jan 8 11:44:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.1 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,UNPARSEABLE_RELAY autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08Hi6vI059871 for ; Fri, 8 Jan 2010 11:44:06 -0600 X-ASG-Debug-ID: 1262972699-38c001780000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rcsinet12.oracle.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CFCBE153605; Fri, 8 Jan 2010 09:44:59 -0800 (PST) Received: from rcsinet12.oracle.com (rcsinet12.oracle.com [148.87.113.124]) by cuda.sgi.com with ESMTP id tCrHAZGhh0F9EASH; Fri, 08 Jan 2010 09:44:59 -0800 (PST) Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by rcsinet12.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id o08HiaEX002108 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 8 Jan 2010 17:44:37 GMT Received: from acsmt355.oracle.com (acsmt355.oracle.com [141.146.40.155]) by acsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o08FjgRv013109; Fri, 8 Jan 2010 17:44:35 GMT Received: from abhmt015.oracle.com by acsmt355.oracle.com with ESMTP id 1304923431262972670; Fri, 08 Jan 2010 09:44:30 -0800 Received: from chimera.site (/141.144.226.40) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 08 Jan 2010 09:44:30 -0800 Date: Fri, 8 Jan 2010 09:44:28 -0800 From: Randy Dunlap To: "Alex Elder" Cc: "Dave Chinner" , , , , X-ASG-Orig-Subj: Re: [GIT PULL] XFS update for 2.6.33-rc1 Subject: Re: [GIT PULL] XFS update for 2.6.33-rc1 Message-Id: <20100108094428.ff03c720.randy.dunlap@oracle.com> In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A687F@cf--amer001e--3.americas.sgi.com> References: <20091217002007.GF4850@discord.disaster> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A687F@cf--amer001e--3.americas.sgi.com> Organization: Oracle Linux Eng. X-Mailer: Sylpheed 2.7.1 (GTK+ 2.12.0; x86_64-unknown-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Source-IP: acsmt355.oracle.com [141.146.40.155] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A0B0207.4B476F04.00D7:SCFMA4539814,ss=1,fgs=0 X-Barracuda-Connect: rcsinet12.oracle.com[148.87.113.124] X-Barracuda-Start-Time: 1262972699 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 16 Dec 2009 21:41:12 -0600 Alex Elder wrote: > Dave Chinner wrote: > > On Wed, Dec 16, 2009 at 01:55:12PM -0800, Randy Dunlap wrote: > >> On Wed, 16 Dec 2009 15:26:10 -0600 Alex Elder wrote: > >> > >>> One more XFS update for -rc1, now that the new XFS tracing code has > >>> been committed. > >> > >> Sorry if I have missed it, but have the printk format warnings > >> on i386 builds been fixed? > > > > I don't see any here w/ gcc 4.3.4 x86-64 compiling i386 kernels.... > > I didn't get them either when I built in my environment. > > Dave, your patch looks good to me, and Randy has acked it > so I'm going to pull it into our XFS top-of-tree. I'll > hold off sending yet another pull request to Linus for > now. Thanks for addressing it quickly. > > -Alex Hi Alex, Dave's patch is now needed in Linus's mainline kernel tree... > > /me hates gcc's warning inconsistencies with a passion. > > > >> e.g.: > >> > >> In file included from linux-next-20091216/include/trace/ftrace.h:398, > >> from linux-next-20091216/include/trace/define_trace.h:69, > >> from linux-next-20091216/fs/xfs/linux-2.6/xfs_trace.h:1369, > >> from linux-next-20091216/fs/xfs/linux-2.6/xfs_trace.c:75: > >> linux-next-20091216/fs/xfs/linux-2.6/./xfs_trace.h: In function > >> 'ftrace_raw_output_id_xfs_iomap_enter': linux-next-20091216/fs/xfs/linux-2.6/./xfs_trace.h:830: > >> warning: format '%llx' expects type 'long long unsigned int', but argument 12 has type > >> 'xfs_fsblock_t' > > > > Patch that should fix this below. > > > > Cheers, > > > > Dave. --- ~Randy From sandeen@sandeen.net Fri Jan 8 11:51:05 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_210 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08Hp4wF060322 for ; Fri, 8 Jan 2010 11:51:04 -0600 X-ASG-Debug-ID: 1262973117-23a900f70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D6F5E1C3C045 for ; Fri, 8 Jan 2010 09:51:57 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id ATg026AYv9KhUHTD for ; Fri, 08 Jan 2010 09:51:57 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 16B548E050C; Fri, 8 Jan 2010 11:51:57 -0600 (CST) Message-ID: <4B4770BC.4050306@sandeen.net> Date: Fri, 08 Jan 2010 11:51:56 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: Eric Sandeen , xfs-oss X-ASG-Orig-Subj: Re: [PATCH V2] mkfs: handle 4k sector devices more cleanly Subject: Re: [PATCH V2] mkfs: handle 4k sector devices more cleanly References: <4B1E9A25.50108@redhat.com> <4B476171.4020701@sandeen.net> <20100108174400.GA17634@infradead.org> In-Reply-To: <20100108174400.GA17634@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1262973117 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19287 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Fri, Jan 08, 2010 at 10:46:41AM -0600, Eric Sandeen wrote: >> +extern void platform_findsizes (char *path, int fd, long long *sz, int *bsz); > > Can you move the prototype from libxfs/init.h to include/libxfs.h > instead of adding it to the .c file? sure, heh, you know - I knew that was a bad idea ;) >> + /* >> + * MD wants sector size set == block size to avoid switching. >> + * Otherwise, if not specfied via command, use device sectorsize >> + */ >> + if (ft.sectoralign || !ssflag) { >> + if (ft.sectoralign) >> + sectorsize = blocksize; >> + else >> + sectorsize = ft.sectorsize; > > This still confuses the heck out of me. What do you think about the > incremental patch at the end of the mail? yeah, that seems good. >> if (slflag || ssflag) >> xi.setblksize = sectorsize; >> - else >> - xi.setblksize = 1; > > So for the defaul case we now never set the sector size in the libxfs > init. This seems safe to me, but why did we do it before? Could > a previous user have left it set to a wrong value? > > Maye we should just do the xi.setblksize = sectorsize unconditionally? ugh this stuff is messy. let me see what sectorsize's default is... If we take out the "1 is special" stuff I should probably chase it through all the code. Ok, will give this one more crack :) Thanks, -Eric > > Index: xfsprogs-dev/mkfs/xfs_mkfs.c > =================================================================== > --- xfsprogs-dev.orig/mkfs/xfs_mkfs.c 2010-01-08 18:33:53.619277529 +0100 > +++ xfsprogs-dev/mkfs/xfs_mkfs.c 2010-01-08 18:39:37.758005711 +0100 > @@ -1561,21 +1561,32 @@ main( > memset(&ft, 0, sizeof(ft)); > get_topology(&xi, &ft); > > - /* > - * MD wants sector size set == block size to avoid switching. > - * Otherwise, if not specfied via command, use device sectorsize > - */ > + if (ft.sectoralign) { > + /* > + * Older Linux software RAID versions want the sector size > + * to match the block size to avoid switching I/O sizes. > + * For the legacy libdisk case we thus set the sector size to > + * match the block size. For systems using libblkid we assume > + * that the kernel is recent enough to not require this and > + * ft.sectoralign will never be set. > + */ > + sectorsize = blocksize; > + } else if (!ssflag) { > + /* > + * Unless specified manually on the command line use the > + * advertised sector size of the device. > + */ > + sectorsize = ft.sectorsize; > + } > + > if (ft.sectoralign || !ssflag) { > - if (ft.sectoralign) > - sectorsize = blocksize; > - else > - sectorsize = ft.sectorsize; > sectorlog = libxfs_highbit32(sectorsize); > if (loginternal) { > lsectorsize = sectorsize; > lsectorlog = sectorlog; > } > } > + > if (sectorsize < XFS_MIN_SECTORSIZE || > sectorsize > XFS_MAX_SECTORSIZE || sectorsize > blocksize) { > fprintf(stderr, _("illegal sector size %d\n"), sectorsize); > From aelder@sgi.com Fri Jan 8 12:09:05 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08I94xe061541 for ; Fri, 8 Jan 2010 12:09:04 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id D79A58F80DA; Fri, 8 Jan 2010 10:09:54 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [GIT PULL] XFS update for 2.6.33-rc1 Date: Fri, 8 Jan 2010 12:09:54 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6931@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100108094428.ff03c720.randy.dunlap@oracle.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [GIT PULL] XFS update for 2.6.33-rc1 Thread-Index: AcqQik3BMM2tECHFQwGmeZGO+yJPIAAAs5Hw From: "Alex Elder" To: "Randy Dunlap" Cc: "Dave Chinner" , , , , X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Randy Dunlap wrote: > On Wed, 16 Dec 2009 21:41:12 -0600 Alex Elder wrote: >=20 >> Dave Chinner wrote: >>> On Wed, Dec 16, 2009 at 01:55:12PM -0800, Randy Dunlap wrote: >>>> On Wed, 16 Dec 2009 15:26:10 -0600 Alex Elder wrote: >>>>=20 >>>>> One more XFS update for -rc1, now that the new XFS tracing code = has >>>>> been committed. >>>>=20 >>>> Sorry if I have missed it, but have the printk format warnings >>>> on i386 builds been fixed? >>>=20 >>> I don't see any here w/ gcc 4.3.4 x86-64 compiling i386 kernels.... >>=20 >> I didn't get them either when I built in my environment. >>=20 >> Dave, your patch looks good to me, and Randy has acked it >> so I'm going to pull it into our XFS top-of-tree. I'll >> hold off sending yet another pull request to Linus for >> now. Thanks for addressing it quickly. >>=20 >> -Alex >=20 > Hi Alex, > Dave's patch is now needed in Linus's mainline kernel tree... Yes, I noticed that. I forgot I hadn't requested it get pulled. Sorry. Working on that today. -Alex >>> /me hates gcc's warning inconsistencies with a passion. >>>=20 >>>> e.g.: >>>>=20 >>>> In file included from = linux-next-20091216/include/trace/ftrace.h:398, >>>> from = linux-next-20091216/include/trace/define_trace.h:69, >>>> from = linux-next-20091216/fs/xfs/linux-2.6/xfs_trace.h:1369, >>>> from = linux-next-20091216/fs/xfs/linux-2.6/xfs_trace.c:75: >>>> linux-next-20091216/fs/xfs/linux-2.6/./xfs_trace.h: In function >>>> 'ftrace_raw_output_id_xfs_iomap_enter': >>>> linux-next-20091216/fs/xfs/linux-2.6/./xfs_trace.h:830: warning: = format '%llx' expects type >>>> 'long long unsigned int', but argument 12 has type 'xfs_fsblock_t' >>>=20 >>> Patch that should fix this below. >>>=20 >>> Cheers, >>>=20 >>> Dave. >=20 >=20 > --- > ~Randy From aelder@sgi.com Fri Jan 8 12:13:44 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08IDiWO061840 for ; Fri, 8 Jan 2010 12:13:44 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id D4B038F808E for ; Fri, 8 Jan 2010 10:14:37 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: xfstests: [PATCH 0/2] ignore duplicates reported by repquota Date: Fri, 8 Jan 2010 12:14:37 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6932@cf--amer001e--3.americas.sgi.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: xfstests: [PATCH 0/2] ignore duplicates reported by repquota Thread-Index: AcqQjnHs9Z3G/vQ+SOaiVt4AsJ2RVw== From: "Alex Elder" To: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean It is possible for the same numeric user id to be assigned to more than one user account. The repquota command, as well as the xfs_quota "repquota" command (if not given an upper bound user id to scan for) will scan the entire password file using getpwent() in order to report quota information for all users. As a result, any numeric id that is used more than once will also be reported more than once by "repquota". Multiply-used group and project id's would have the same behavior. The effect of this is that in some of the quota-related tests, output mismatches will be reported in the event an id used in testing is associated with multiple users/groups/projects. To get around this, arrange to ignore duplicate entries reported by requota and the "repquota" xfs_quota command. From aelder@sgi.com Fri Jan 8 12:13:52 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08IDq8a061864 for ; Fri, 8 Jan 2010 12:13:52 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 713B7AC033 for ; Fri, 8 Jan 2010 10:14:42 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: [PATCH 1/2] xfstests: 050: ignore duplicates reported by repquota Date: Fri, 8 Jan 2010 12:14:41 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6933@cf--amer001e--3.americas.sgi.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 1/2] xfstests: 050: ignore duplicates reported by repquota Thread-Index: AcqQjnSJNBfngVT/RBWOBPvfciuZbQ== From: "Alex Elder" To: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Arrange to ignore duplicate entries reported by the "repquota" xfs_quota command. This can happen if an id is used more than once (such as when two user names are assigned the same uid). Since we are already sorting the output we can accomplish this by adding the "-u" (unique) option to the sort command. Shorten some long lines while we're at it. Signed-off-by: Alex Elder --- 050 | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) Index: b/050 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- a/050 +++ b/050 @@ -118,7 +118,9 @@ =20 echo echo "*** report no quota settings" | tee -a $seq.full - xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -birnN = -$type" $SCRATCH_DEV | _filter_report | LC_COLLATE=3DPOSIX sort -r + xfs_quota -D $tmp.projects -P $tmp.projid -x \ + -c "repquota -birnN -$type" $SCRATCH_DEV | + _filter_report | LC_COLLATE=3DPOSIX sort -ru =20 echo echo "*** report initial settings" | tee -a $seq.full @@ -129,20 +131,26 @@ -c "limit -$type bsoft=3D${bsoft}k bhard=3D${bhard}k $id" \ -c "limit -$type isoft=3D$isoft ihard=3D$ihard $id" \ $SCRATCH_DEV - xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -birnN = -$type" $SCRATCH_DEV | _filter_report | LC_COLLATE=3DPOSIX sort -r + xfs_quota -D $tmp.projects -P $tmp.projid -x \ + -c "repquota -birnN -$type" $SCRATCH_DEV | + _filter_report | LC_COLLATE=3DPOSIX sort -ru =20 echo echo "*** push past the soft inode limit" | tee -a $seq.full _file_as_id $SCRATCH_MNT/softie1 $id $type 1024 0 _file_as_id $SCRATCH_MNT/softie2 $id $type 1024 0 _qmount - xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -birnN = -$type" $SCRATCH_DEV | _filter_report | LC_COLLATE=3DPOSIX sort -r + xfs_quota -D $tmp.projects -P $tmp.projid -x \ + -c "repquota -birnN -$type" $SCRATCH_DEV | + _filter_report | LC_COLLATE=3DPOSIX sort -ru =20 echo echo "*** push past the soft block limit" | tee -a $seq.full _file_as_id $SCRATCH_MNT/softie $id $type 1024 140 _qmount - xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -birnN = -$type" $SCRATCH_DEV | _filter_report | LC_COLLATE=3DPOSIX sort -r + xfs_quota -D $tmp.projects -P $tmp.projid -x \ + -c "repquota -birnN -$type" $SCRATCH_DEV | + _filter_report | LC_COLLATE=3DPOSIX sort -ru =20 echo # Note: for quota accounting (not enforcement), EDQUOT is not expected @@ -152,7 +160,9 @@ _file_as_id $SCRATCH_MNT/hard$i $id $type 1024 0 done _qmount - xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -birnN = -$type" $SCRATCH_DEV | _filter_report | LC_COLLATE=3DPOSIX sort -r + xfs_quota -D $tmp.projects -P $tmp.projid -x \ + -c "repquota -birnN -$type" $SCRATCH_DEV | + _filter_report | LC_COLLATE=3DPOSIX sort -ru =20 echo # Note: for quota accounting (not enforcement), EDQUOT is not expected @@ -161,7 +171,9 @@ echo "ls -l $SCRATCH_MNT" >>$seq.full ls -l $SCRATCH_MNT >>$seq.full _qmount - xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -birnN = -$type" $SCRATCH_DEV | _filter_and_check_blks | LC_COLLATE=3DPOSIX sort = -r + xfs_quota -D $tmp.projects -P $tmp.projid -x \ + -c "repquota -birnN -$type" $SCRATCH_DEV | + _filter_and_check_blks | LC_COLLATE=3DPOSIX sort -ru =20 echo echo "*** unmount" From aelder@oss.sgi.com Fri Jan 8 12:50:03 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08Io3tA064525 for ; Fri, 8 Jan 2010 12:50:03 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o08Io1Va064352; Fri, 8 Jan 2010 12:50:01 -0600 Date: Fri, 8 Jan 2010 12:50:01 -0600 Message-Id: <201001081850.o08Io1Va064352@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.30-rc4-34425-ga2b6311 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: f8c89a9e39a10448543c8dc720626d4cf7f2ec49 X-Git-Newrev: a2b63114daf490a68bc9a32dac99d1888c5de842 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated discards f8c89a9e39a10448543c8dc720626d4cf7f2ec49 (commit) discards 47e96ea6187f0ea7322d9beedc046a5409c4d45e (commit) discards 2402c0970562d7c815a23db92827af1c33a34fad (commit) discards 79c3f79f1cfc128410293a400921bef7ba42d37e (commit) discards 26d56b2f0597d0529f829629f6f1873356c4a9b2 (commit) discards d0c156230fa510e7e091e60d4c9c3ea7bd96edf6 (commit) discards b3460b3bf6a017a2cb0a67e4fe74c0b6dc25ddd7 (commit) discards febec432aeeaa5edead1c4a6db3b75e2402b0e9d (commit) a2b6311 xfs: kill some warnings on i386 builds eaff807 kill I_LOCK bea4c89 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 3fc98b1 XFS: Free buffer pages array unconditionally a5f9be5 xfs: kill xfs_bmbt_rec_32/64 types 2ee1aba xfs: improve metadata I/O merging in the elevator b44b112 xfs: check for not fully initialized inodes in xfs_ireclaim 1e431f5 cleanup blockdev_direct_IO locking 431547b sanitize xattr handler prototypes 5fe878a direct-io: cleanup blockdev_direct_IO locking d180ec5 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 03daa57 fs/xfs/xfs_log_recover.c: use %pU to print UUIDs 0b1b213 xfs: event tracing support 6ef3554 xfs: change the xfs_iext_insert / xfs_iext_remove 7574aa9 xfs: cleanup bmap extent state macros d031655 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 3126c13 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 f4d544e Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 6b2f3d1 vfs: Implement proper O_SYNC semantics 4ef58d4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 6035ccd Merge branch 'for-2.6.33' of git://git.kernel.dk/linux-2.6-block 1557d33 Merge git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6 d014d04 Merge branch 'for-next' into for-linus af901ca tree-wide: fix assorted typos all over the place 0d99519 writeback: remove unused nonblocking and congestion checks 6d45611 sysctl: Drop & in front of every proc_handler. ab09203 sysctl fs: Remove dead binary sysctl support 7a9e02d this_cpu: xfs_icsb_modify_counters does not need "cpu" variable from f8c89a9e39a10448543c8dc720626d4cf7f2ec49 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a2b63114daf490a68bc9a32dac99d1888c5de842 Author: Dave Chinner Date: Thu Dec 17 00:20:07 2009 +0000 xfs: kill some warnings on i386 builds Randy Dunlap Reported printk() format-related warnings reported on i386 builds in his environment. Dave Chinner provided this patch to eliminate them. Signed-off by: Dave Chinner Acked-by: Randy Dunlap Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_acl.c | 57 +++++++++++--------------------- fs/xfs/linux-2.6/xfs_aops.c | 29 +++++------------ fs/xfs/linux-2.6/xfs_iops.c | 2 +- fs/xfs/linux-2.6/xfs_lrw.c | 2 +- fs/xfs/linux-2.6/xfs_sysctl.c | 62 +++++++++--------------------------- fs/xfs/linux-2.6/xfs_xattr.c | 71 +++++++++-------------------------------- fs/xfs/quota/xfs_dquot.h | 2 +- fs/xfs/xfs_acl.h | 3 +- fs/xfs/xfs_iget.c | 4 +- fs/xfs/xfs_log_recover.c | 14 ++------ fs/xfs/xfs_mount.c | 12 +++--- 11 files changed, 75 insertions(+), 183 deletions(-) hooks/post-receive -- XFS development tree From aelder@sgi.com Fri Jan 8 13:24:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08JOLEQ066432 for ; Fri, 8 Jan 2010 13:24:22 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id A4D4D8F80D5 for ; Fri, 8 Jan 2010 11:25:12 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [XFS updates] XFS development tree branch, master,updated. v2.6.30-rc4-34425-ga2b6311 Date: Fri, 8 Jan 2010 13:25:09 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6935@cf--amer001e--3.americas.sgi.com> In-Reply-To: <201001081850.o08Io1Va064352@oss.sgi.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [XFS updates] XFS development tree branch, master,updated. v2.6.30-rc4-34425-ga2b6311 Thread-Index: AcqQlQJWWQyZGxPORFunFEjA5J5EIAAAfQrw From: "Alex Elder" To: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This update makes the XFS master branch be based on v2.6.33-rc3. I will probably be doing rebases to the -rcX branches more often than in the past. This is another forced update so in order to update your tree you will need to sort of rewind to an older commit (like v2.6.32) first. I.e., something like this: (first, stash any of your own work) git checkout master git reset --hard v2.6.32 git fetch git://oss.sgi.com/xfs/xfs.git master:master I hope to avoid this sort of thing in the future. Sorry for the inconvenience. -Alex xfs@oss.sgi.com wrote: > This is an automated email from the git hooks/post-receive script. It = was > generated because a ref change was pushed to the repository containing > the project "XFS development tree". >=20 > The branch, master has been updated > discards f8c89a9e39a10448543c8dc720626d4cf7f2ec49 (commit) > discards 47e96ea6187f0ea7322d9beedc046a5409c4d45e (commit) > discards 2402c0970562d7c815a23db92827af1c33a34fad (commit) > discards 79c3f79f1cfc128410293a400921bef7ba42d37e (commit) > discards 26d56b2f0597d0529f829629f6f1873356c4a9b2 (commit) > discards d0c156230fa510e7e091e60d4c9c3ea7bd96edf6 (commit) > discards b3460b3bf6a017a2cb0a67e4fe74c0b6dc25ddd7 (commit) > discards febec432aeeaa5edead1c4a6db3b75e2402b0e9d (commit) > a2b6311 xfs: kill some warnings on i386 builds > eaff807 kill I_LOCK > bea4c89 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs > 3fc98b1 XFS: Free buffer pages array unconditionally > a5f9be5 xfs: kill xfs_bmbt_rec_32/64 types > 2ee1aba xfs: improve metadata I/O merging in the elevator > b44b112 xfs: check for not fully initialized inodes in xfs_ireclaim > 1e431f5 cleanup blockdev_direct_IO locking > 431547b sanitize xattr handler prototypes > 5fe878a direct-io: cleanup blockdev_direct_IO locking > d180ec5 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs > 03daa57 fs/xfs/xfs_log_recover.c: use %pU to print UUIDs > 0b1b213 xfs: event tracing support > 6ef3554 xfs: change the xfs_iext_insert / xfs_iext_remove > 7574aa9 xfs: cleanup bmap extent state macros > d031655 Merge branch 'for-linus' of = git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu > 3126c13 Merge branch 'for_linus' of > git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 = f4d544e Merge branch > 'for-linus' of git://oss.sgi.com/xfs/xfs 6b2f3d1 vfs: Implement = proper O_SYNC semantics > 4ef58d4 Merge branch 'for-linus' of = git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial > 6035ccd Merge branch 'for-2.6.33' of = git://git.kernel.dk/linux-2.6-block > 1557d33 Merge = git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6 > d014d04 Merge branch 'for-next' into for-linus > af901ca tree-wide: fix assorted typos all over the place > 0d99519 writeback: remove unused nonblocking and congestion checks > 6d45611 sysctl: Drop & in front of every proc_handler. > ab09203 sysctl fs: Remove dead binary sysctl support > 7a9e02d this_cpu: xfs_icsb_modify_counters does not need "cpu" = variable > from f8c89a9e39a10448543c8dc720626d4cf7f2ec49 (commit) >=20 > Those revisions listed above that are new to this repository have > not appeared on any other notification email; so we list those > revisions in full, below. >=20 > - Log = ----------------------------------------------------------------- > commit a2b63114daf490a68bc9a32dac99d1888c5de842 > Author: Dave Chinner > Date: Thu Dec 17 00:20:07 2009 +0000 >=20 > xfs: kill some warnings on i386 builds >=20 > Randy Dunlap Reported printk() format-related warnings reported > on i386 builds in his environment. Dave Chinner provided this > patch to eliminate them. >=20 > Signed-off by: Dave Chinner > Acked-by: Randy Dunlap >=20 > Signed-off-by: Alex Elder >=20 > = ----------------------------------------------------------------------- >=20 > Summary of changes: > fs/xfs/linux-2.6/xfs_acl.c | 57 +++++++++++--------------------- > fs/xfs/linux-2.6/xfs_aops.c | 29 +++++------------ > fs/xfs/linux-2.6/xfs_iops.c | 2 +- > fs/xfs/linux-2.6/xfs_lrw.c | 2 +- > fs/xfs/linux-2.6/xfs_sysctl.c | 62 = +++++++++--------------------------- > fs/xfs/linux-2.6/xfs_xattr.c | 71 = +++++++++-------------------------------- > fs/xfs/quota/xfs_dquot.h | 2 +- > fs/xfs/xfs_acl.h | 3 +- > fs/xfs/xfs_iget.c | 4 +- > fs/xfs/xfs_log_recover.c | 14 ++------ > fs/xfs/xfs_mount.c | 12 +++--- > 11 files changed, 75 insertions(+), 183 deletions(-) >=20 >=20 > hooks/post-receive From aelder@oss.sgi.com Fri Jan 8 13:39:02 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08Jd1kA067554 for ; Fri, 8 Jan 2010 13:39:02 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o08Jd0MA067524; Fri, 8 Jan 2010 13:39:00 -0600 Date: Fri, 8 Jan 2010 13:39:00 -0600 Message-Id: <201001081939.o08Jd0MA067524@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.30-rc4-34425-ga539bd8 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 74d2e4f8d79ae0c4b6ec027958d5b18058662eea X-Git-Newrev: a539bd8c86549b545b4ed27a0cfaf53fe649054d This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated a539bd8 xfs: kill some warnings on i386 builds from 74d2e4f8d79ae0c4b6ec027958d5b18058662eea (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a539bd8c86549b545b4ed27a0cfaf53fe649054d Author: Dave Chinner Date: Thu Dec 17 00:20:07 2009 +0000 xfs: kill some warnings on i386 builds Randy Dunlap Reported printk() format-related warnings reported on i386 builds in his environment. Dave Chinner provided this patch to eliminate them. Signed-off by: Dave Chinner Acked-by: Randy Dunlap Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_trace.h | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) hooks/post-receive -- XFS development tree From aelder@sgi.com Fri Jan 8 13:46:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08Jk8WA068013 for ; Fri, 8 Jan 2010 13:46:08 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay1.corp.sgi.com (Postfix) with ESMTP id CB76B8F80E0; Fri, 8 Jan 2010 11:46:58 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.3/8.14.2) with ESMTP id o08JkubE018977; Fri, 8 Jan 2010 13:46:56 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.3/8.14.3/Submit) id o08JksvX018976; Fri, 8 Jan 2010 13:46:54 -0600 From: Alex Elder Message-Id: <201001081946.o08JksvX018976@stout.americas.sgi.com> Date: Fri, 08 Jan 2010 13:46:54 -0600 To: torvalds@linux-foundation.org Subject: [GIT PULL] XFS update 1 for 2.6.33-rc3 Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org User-Agent: Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I have a few other commits to send along but there's no sense in waiting for them. I forgot to send this one before; it eliminates some i386 build warnings in certain environments. -Alex The following changes since commit 74d2e4f8d79ae0c4b6ec027958d5b18058662eea: Linus Torvalds (1): Linux 2.6.33-rc3 are available in the git repository at: git://oss.sgi.com/xfs/xfs for-linus Dave Chinner (1): xfs: kill some warnings on i386 builds fs/xfs/linux-2.6/xfs_trace.h | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) From aelder@sgi.com Fri Jan 8 15:01:00 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08L10Hu072472 for ; Fri, 8 Jan 2010 15:01:00 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3C09D8F8073; Fri, 8 Jan 2010 13:01:50 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] XFS: Don't flush stale inodes Date: Fri, 8 Jan 2010 14:59:40 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6936@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1262399980-19277-1-git-send-email-david@fromorbit.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] XFS: Don't flush stale inodes Thread-Index: AcqLV7bI0nnFfSqfTh2fVEXLp9a9CwFTY/kg From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > Because inodes remain in cache much longer than inode buffers do > under memory pressure, we can get the situation where we have stale, > dirty inodes being reclaimed but the backing storage has been freed. > Hence we should never, ever flush XFS_ISTALE inodes to disk as > there is no guarantee that the backing buffer is in cache and > still marked stale when the flush occurs. Looks good. Seems like this could be the source of some pretty gnarly problems. > Signed-off-by: Dave Chinner Reviewed-by: Alex Elder > --- > fs/xfs/xfs_inode.c | 10 +++++++--- > 1 files changed, 7 insertions(+), 3 deletions(-) >=20 > diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c > index c2618db..e5c9953 100644 > --- a/fs/xfs/xfs_inode.c > +++ b/fs/xfs/xfs_inode.c > @@ -2846,10 +2846,14 @@ xfs_iflush( > mp =3D ip->i_mount; >=20 > /* > - * If the inode isn't dirty, then just release the inode > - * flush lock and do nothing. > + * If the inode isn't dirty, then just release the inode flush lock = and > + * do nothing. Treat stale inodes the same; we cannot rely on the > + * backing buffer remaining stale in cache for the remaining life of > + * the stale inode and so xfs_itobp() below may give us a buffer = that > + * no longer contains inodes below. Doing this stale check here also > + * avoids forcing the log on pinned, stale inodes. > */ > - if (xfs_inode_clean(ip)) { > + if (xfs_inode_clean(ip) || xfs_iflags_test(ip, XFS_ISTALE)) { > xfs_ifunlock(ip); > return 0; > } From aelder@sgi.com Fri Jan 8 15:29:57 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_12 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08LTaKG074950 for ; Fri, 8 Jan 2010 15:29:52 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6DCC88F8158; Fri, 8 Jan 2010 13:30:25 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: use DECLARE_EVENT_CLASS Date: Fri, 8 Jan 2010 15:30:16 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6937@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20091221140303.GA31919@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: use DECLARE_EVENT_CLASS Thread-Index: AcqCSh6Tqw0GWDzuSnmOouYHHiQcNwOXzb8g From: "Alex Elder" To: "Christoph Hellwig" , X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Using DECLARE_EVENT_CLASS allows us to to use trace event code instead = of > duplicating it in the binary. This was not avaible before 2.6.33 so = it > had to be done as a separate step once the prerequisite was merged. >=20 > This only requires changes to xfs_trace.h and the results are rather = impressive: >=20 > hch@brick:~/work/linux-2.6/obj-kvm$ size fs/xfs/xfs.o* > text data bss dec hex filename > 607732 41884 3616 653232 9f7b0 fs/xfs/xfs.o > 1026732 41884 3808 1072424 105d28 fs/xfs/xfs.o.old 40% reduction is quite nice. > Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder > Index: linux-2.6/fs/xfs/linux-2.6/xfs_trace.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_trace.h 2009-12-21 = 14:28:56.056990760 +0100 > +++ linux-2.6/fs/xfs/linux-2.6/xfs_trace.h 2009-12-21 = 14:42:56.788990761 +0100 > @@ -33,51 +33,55 @@ struct xfs_dquot; > struct xlog_ticket; > struct log; >=20 > +DECLARE_EVENT_CLASS(xfs_attr_list_class, > + TP_PROTO(struct xfs_attr_list_context *ctx), > + TP_ARGS(ctx), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __field(u32, hashval) > + __field(u32, blkno) > + __field(u32, offset) > + __field(void *, alist) > + __field(int, bufsize) > + __field(int, count) > + __field(int, firstu) > + __field(int, dupcnt) > + __field(int, flags) > + ), > + TP_fast_assign( > + __entry->dev =3D VFS_I(ctx->dp)->i_sb->s_dev; > + __entry->ino =3D ctx->dp->i_ino; > + __entry->hashval =3D ctx->cursor->hashval; > + __entry->blkno =3D ctx->cursor->blkno; > + __entry->offset =3D ctx->cursor->offset; > + __entry->alist =3D ctx->alist; > + __entry->bufsize =3D ctx->bufsize; > + __entry->count =3D ctx->count; > + __entry->firstu =3D ctx->firstu; > + __entry->flags =3D ctx->flags; > + ), > + TP_printk("dev %d:%d ino 0x%llx cursor h/b/o 0x%x/0x%x/%u dupcnt %u = " > + "alist 0x%p size %u count %u firstu %u flags %d %s", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __entry->hashval, > + __entry->blkno, > + __entry->offset, > + __entry->dupcnt, > + __entry->alist, > + __entry->bufsize, > + __entry->count, > + __entry->firstu, > + __entry->flags, > + __print_flags(__entry->flags, "|", XFS_ATTR_FLAGS) > + ) > +) > + > #define DEFINE_ATTR_LIST_EVENT(name) \ > -TRACE_EVENT(name, \ > +DEFINE_EVENT(xfs_attr_list_class, name, \ > TP_PROTO(struct xfs_attr_list_context *ctx), \ > - TP_ARGS(ctx), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __field(u32, hashval) \ > - __field(u32, blkno) \ > - __field(u32, offset) \ > - __field(void *, alist) \ > - __field(int, bufsize) \ > - __field(int, count) \ > - __field(int, firstu) \ > - __field(int, dupcnt) \ > - __field(int, flags) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D VFS_I(ctx->dp)->i_sb->s_dev; \ > - __entry->ino =3D ctx->dp->i_ino; \ > - __entry->hashval =3D ctx->cursor->hashval; \ > - __entry->blkno =3D ctx->cursor->blkno; \ > - __entry->offset =3D ctx->cursor->offset; \ > - __entry->alist =3D ctx->alist; \ > - __entry->bufsize =3D ctx->bufsize; \ > - __entry->count =3D ctx->count; \ > - __entry->firstu =3D ctx->firstu; \ > - __entry->flags =3D ctx->flags; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx cursor h/b/o 0x%x/0x%x/%u dupcnt %u = " \ > - "alist 0x%p size %u count %u firstu %u flags %d %s", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __entry->hashval, \ > - __entry->blkno, \ > - __entry->offset, \ > - __entry->dupcnt, \ > - __entry->alist, \ > - __entry->bufsize, \ > - __entry->count, \ > - __entry->firstu, \ > - __entry->flags, \ > - __print_flags(__entry->flags, "|", XFS_ATTR_FLAGS) \ > - ) \ > -) > + TP_ARGS(ctx)) > DEFINE_ATTR_LIST_EVENT(xfs_attr_list_sf); > DEFINE_ATTR_LIST_EVENT(xfs_attr_list_sf_all); > DEFINE_ATTR_LIST_EVENT(xfs_attr_list_leaf); > @@ -178,91 +182,99 @@ TRACE_EVENT(xfs_iext_insert, > (char *)__entry->caller_ip) > ); >=20 > +DECLARE_EVENT_CLASS(xfs_bmap_class, > + TP_PROTO(struct xfs_inode *ip, xfs_extnum_t idx, int state, > + unsigned long caller_ip), > + TP_ARGS(ip, idx, state, caller_ip), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __field(xfs_extnum_t, idx) > + __field(xfs_fileoff_t, startoff) > + __field(xfs_fsblock_t, startblock) > + __field(xfs_filblks_t, blockcount) > + __field(xfs_exntst_t, state) > + __field(int, bmap_state) > + __field(unsigned long, caller_ip) > + ), > + TP_fast_assign( > + struct xfs_ifork *ifp =3D (state & BMAP_ATTRFORK) ? > + ip->i_afp : &ip->i_df; > + struct xfs_bmbt_irec r; > + > + xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx), &r); > + __entry->dev =3D VFS_I(ip)->i_sb->s_dev; > + __entry->ino =3D ip->i_ino; > + __entry->idx =3D idx; > + __entry->startoff =3D r.br_startoff; > + __entry->startblock =3D r.br_startblock; > + __entry->blockcount =3D r.br_blockcount; > + __entry->state =3D r.br_state; > + __entry->bmap_state =3D state; > + __entry->caller_ip =3D caller_ip; > + ), > + TP_printk("dev %d:%d ino 0x%llx state %s idx %ld " > + "offset %lld block %s count %lld flag %d caller %pf", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS), > + (long)__entry->idx, > + __entry->startoff, > + xfs_fmtfsblock(__entry->startblock), > + __entry->blockcount, > + __entry->state, > + (char *)__entry->caller_ip) > +) > + > #define DEFINE_BMAP_EVENT(name) \ > -TRACE_EVENT(name, \ > +DEFINE_EVENT(xfs_bmap_class, name, \ > TP_PROTO(struct xfs_inode *ip, xfs_extnum_t idx, int state, \ > unsigned long caller_ip), \ > - TP_ARGS(ip, idx, state, caller_ip), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __field(xfs_extnum_t, idx) \ > - __field(xfs_fileoff_t, startoff) \ > - __field(xfs_fsblock_t, startblock) \ > - __field(xfs_filblks_t, blockcount) \ > - __field(xfs_exntst_t, state) \ > - __field(int, bmap_state) \ > - __field(unsigned long, caller_ip) \ > - ), \ > - TP_fast_assign( \ > - struct xfs_ifork *ifp =3D (state & BMAP_ATTRFORK) ? \ > - ip->i_afp : &ip->i_df; \ > - struct xfs_bmbt_irec r; \ > - \ > - xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx), &r); \ > - __entry->dev =3D VFS_I(ip)->i_sb->s_dev; \ > - __entry->ino =3D ip->i_ino; \ > - __entry->idx =3D idx; \ > - __entry->startoff =3D r.br_startoff; \ > - __entry->startblock =3D r.br_startblock; \ > - __entry->blockcount =3D r.br_blockcount; \ > - __entry->state =3D r.br_state; \ > - __entry->bmap_state =3D state; \ > - __entry->caller_ip =3D caller_ip; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx state %s idx %ld " \ > - "offset %lld block %s count %lld flag %d caller %pf", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS), \ > - (long)__entry->idx, \ > - __entry->startoff, \ > - xfs_fmtfsblock(__entry->startblock), \ > - __entry->blockcount, \ > - __entry->state, \ > - (char *)__entry->caller_ip) \ > -) > - > + TP_ARGS(ip, idx, state, caller_ip)) > DEFINE_BMAP_EVENT(xfs_iext_remove); > DEFINE_BMAP_EVENT(xfs_bmap_pre_update); > DEFINE_BMAP_EVENT(xfs_bmap_post_update); > DEFINE_BMAP_EVENT(xfs_extlist); >=20 > -#define DEFINE_BUF_EVENT(tname) \ > -TRACE_EVENT(tname, \ > - TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip), \ > - TP_ARGS(bp, caller_ip), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_daddr_t, bno) \ > - __field(size_t, buffer_length) \ > - __field(int, hold) \ > - __field(int, pincount) \ > - __field(unsigned, lockval) \ > - __field(unsigned, flags) \ > - __field(unsigned long, caller_ip) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D bp->b_target->bt_dev; \ > - __entry->bno =3D bp->b_bn; \ > - __entry->buffer_length =3D bp->b_buffer_length; \ > - __entry->hold =3D atomic_read(&bp->b_hold); \ > - __entry->pincount =3D atomic_read(&bp->b_pin_count); \ > - __entry->lockval =3D xfs_buf_lock_value(bp); \ > - __entry->flags =3D bp->b_flags; \ > - __entry->caller_ip =3D caller_ip; \ > - ), \ > - TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d " \ > - "lock %d flags %s caller %pf", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - (unsigned long long)__entry->bno, \ > - __entry->buffer_length, \ > - __entry->hold, \ > - __entry->pincount, \ > - __entry->lockval, \ > - __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), \ > - (void *)__entry->caller_ip) \ > +DECLARE_EVENT_CLASS(xfs_buf_class, > + TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip), > + TP_ARGS(bp, caller_ip), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_daddr_t, bno) > + __field(size_t, buffer_length) > + __field(int, hold) > + __field(int, pincount) > + __field(unsigned, lockval) > + __field(unsigned, flags) > + __field(unsigned long, caller_ip) > + ), > + TP_fast_assign( > + __entry->dev =3D bp->b_target->bt_dev; > + __entry->bno =3D bp->b_bn; > + __entry->buffer_length =3D bp->b_buffer_length; > + __entry->hold =3D atomic_read(&bp->b_hold); > + __entry->pincount =3D atomic_read(&bp->b_pin_count); > + __entry->lockval =3D xfs_buf_lock_value(bp); > + __entry->flags =3D bp->b_flags; > + __entry->caller_ip =3D caller_ip; > + ), > + TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d " > + "lock %d flags %s caller %pf", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + (unsigned long long)__entry->bno, > + __entry->buffer_length, > + __entry->hold, > + __entry->pincount, > + __entry->lockval, > + __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), > + (void *)__entry->caller_ip) > ) > + > +#define DEFINE_BUF_EVENT(name) \ > +DEFINE_EVENT(xfs_buf_class, name, \ > + TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip), \ > + TP_ARGS(bp, caller_ip)) > DEFINE_BUF_EVENT(xfs_buf_init); > DEFINE_BUF_EVENT(xfs_buf_free); > DEFINE_BUF_EVENT(xfs_buf_hold); > @@ -299,41 +311,45 @@ DEFINE_BUF_EVENT(xfs_reset_dqcounts); > DEFINE_BUF_EVENT(xfs_inode_item_push); >=20 > /* pass flags explicitly */ > -#define DEFINE_BUF_FLAGS_EVENT(tname) \ > -TRACE_EVENT(tname, \ > - TP_PROTO(struct xfs_buf *bp, unsigned flags, unsigned long = caller_ip), \ > - TP_ARGS(bp, flags, caller_ip), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_daddr_t, bno) \ > - __field(size_t, buffer_length) \ > - __field(int, hold) \ > - __field(int, pincount) \ > - __field(unsigned, lockval) \ > - __field(unsigned, flags) \ > - __field(unsigned long, caller_ip) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D bp->b_target->bt_dev; \ > - __entry->bno =3D bp->b_bn; \ > - __entry->buffer_length =3D bp->b_buffer_length; \ > - __entry->flags =3D flags; \ > - __entry->hold =3D atomic_read(&bp->b_hold); \ > - __entry->pincount =3D atomic_read(&bp->b_pin_count); \ > - __entry->lockval =3D xfs_buf_lock_value(bp); \ > - __entry->caller_ip =3D caller_ip; \ > - ), \ > - TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d " \ > - "lock %d flags %s caller %pf", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - (unsigned long long)__entry->bno, \ > - __entry->buffer_length, \ > - __entry->hold, \ > - __entry->pincount, \ > - __entry->lockval, \ > - __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), \ > - (void *)__entry->caller_ip) \ > +DECLARE_EVENT_CLASS(xfs_buf_flags_class, > + TP_PROTO(struct xfs_buf *bp, unsigned flags, unsigned long = caller_ip), > + TP_ARGS(bp, flags, caller_ip), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_daddr_t, bno) > + __field(size_t, buffer_length) > + __field(int, hold) > + __field(int, pincount) > + __field(unsigned, lockval) > + __field(unsigned, flags) > + __field(unsigned long, caller_ip) > + ), > + TP_fast_assign( > + __entry->dev =3D bp->b_target->bt_dev; > + __entry->bno =3D bp->b_bn; > + __entry->buffer_length =3D bp->b_buffer_length; > + __entry->flags =3D flags; > + __entry->hold =3D atomic_read(&bp->b_hold); > + __entry->pincount =3D atomic_read(&bp->b_pin_count); > + __entry->lockval =3D xfs_buf_lock_value(bp); > + __entry->caller_ip =3D caller_ip; > + ), > + TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d " > + "lock %d flags %s caller %pf", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + (unsigned long long)__entry->bno, > + __entry->buffer_length, > + __entry->hold, > + __entry->pincount, > + __entry->lockval, > + __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), > + (void *)__entry->caller_ip) > ) > + > +#define DEFINE_BUF_FLAGS_EVENT(name) \ > +DEFINE_EVENT(xfs_buf_flags_class, name, \ > + TP_PROTO(struct xfs_buf *bp, unsigned flags, unsigned long = caller_ip), \ > + TP_ARGS(bp, flags, caller_ip)) > DEFINE_BUF_FLAGS_EVENT(xfs_buf_find); > DEFINE_BUF_FLAGS_EVENT(xfs_buf_get); > DEFINE_BUF_FLAGS_EVENT(xfs_buf_read); > @@ -376,55 +392,58 @@ TRACE_EVENT(xfs_buf_ioerror, > (void *)__entry->caller_ip) > ); >=20 > -#define DEFINE_BUF_ITEM_EVENT(tname) \ > -TRACE_EVENT(tname, \ > - TP_PROTO(struct xfs_buf_log_item *bip), \ > - TP_ARGS(bip), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_daddr_t, buf_bno) \ > - __field(size_t, buf_len) \ > - __field(int, buf_hold) \ > - __field(int, buf_pincount) \ > - __field(int, buf_lockval) \ > - __field(unsigned, buf_flags) \ > - __field(unsigned, bli_recur) \ > - __field(int, bli_refcount) \ > - __field(unsigned, bli_flags) \ > - __field(void *, li_desc) \ > - __field(unsigned, li_flags) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D bip->bli_buf->b_target->bt_dev; \ > - __entry->bli_flags =3D bip->bli_flags; \ > - __entry->bli_recur =3D bip->bli_recur; \ > - __entry->bli_refcount =3D atomic_read(&bip->bli_refcount); \ > - __entry->buf_bno =3D bip->bli_buf->b_bn; \ > - __entry->buf_len =3D bip->bli_buf->b_buffer_length; \ > - __entry->buf_flags =3D bip->bli_buf->b_flags; \ > - __entry->buf_hold =3D atomic_read(&bip->bli_buf->b_hold); \ > - __entry->buf_pincount =3D \ > - atomic_read(&bip->bli_buf->b_pin_count); \ > - __entry->buf_lockval =3D xfs_buf_lock_value(bip->bli_buf); \ > - __entry->li_desc =3D bip->bli_item.li_desc; \ > - __entry->li_flags =3D bip->bli_item.li_flags; \ > - ), \ > - TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d " \ > - "lock %d flags %s recur %d refcount %d bliflags %s " \ > - "lidesc 0x%p liflags %s", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - (unsigned long long)__entry->buf_bno, \ > - __entry->buf_len, \ > - __entry->buf_hold, \ > - __entry->buf_pincount, \ > - __entry->buf_lockval, \ > - __print_flags(__entry->buf_flags, "|", XFS_BUF_FLAGS), \ > - __entry->bli_recur, \ > - __entry->bli_refcount, \ > - __print_flags(__entry->bli_flags, "|", XFS_BLI_FLAGS), \ > - __entry->li_desc, \ > - __print_flags(__entry->li_flags, "|", XFS_LI_FLAGS)) \ > +DECLARE_EVENT_CLASS(xfs_buf_item_class, > + TP_PROTO(struct xfs_buf_log_item *bip), > + TP_ARGS(bip), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_daddr_t, buf_bno) > + __field(size_t, buf_len) > + __field(int, buf_hold) > + __field(int, buf_pincount) > + __field(int, buf_lockval) > + __field(unsigned, buf_flags) > + __field(unsigned, bli_recur) > + __field(int, bli_refcount) > + __field(unsigned, bli_flags) > + __field(void *, li_desc) > + __field(unsigned, li_flags) > + ), > + TP_fast_assign( > + __entry->dev =3D bip->bli_buf->b_target->bt_dev; > + __entry->bli_flags =3D bip->bli_flags; > + __entry->bli_recur =3D bip->bli_recur; > + __entry->bli_refcount =3D atomic_read(&bip->bli_refcount); > + __entry->buf_bno =3D bip->bli_buf->b_bn; > + __entry->buf_len =3D bip->bli_buf->b_buffer_length; > + __entry->buf_flags =3D bip->bli_buf->b_flags; > + __entry->buf_hold =3D atomic_read(&bip->bli_buf->b_hold); > + __entry->buf_pincount =3D atomic_read(&bip->bli_buf->b_pin_count); > + __entry->buf_lockval =3D xfs_buf_lock_value(bip->bli_buf); > + __entry->li_desc =3D bip->bli_item.li_desc; > + __entry->li_flags =3D bip->bli_item.li_flags; > + ), > + TP_printk("dev %d:%d bno 0x%llx len 0x%zx hold %d pincount %d " > + "lock %d flags %s recur %d refcount %d bliflags %s " > + "lidesc 0x%p liflags %s", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + (unsigned long long)__entry->buf_bno, > + __entry->buf_len, > + __entry->buf_hold, > + __entry->buf_pincount, > + __entry->buf_lockval, > + __print_flags(__entry->buf_flags, "|", XFS_BUF_FLAGS), > + __entry->bli_recur, > + __entry->bli_refcount, > + __print_flags(__entry->bli_flags, "|", XFS_BLI_FLAGS), > + __entry->li_desc, > + __print_flags(__entry->li_flags, "|", XFS_LI_FLAGS)) > ) > + > +#define DEFINE_BUF_ITEM_EVENT(name) \ > +DEFINE_EVENT(xfs_buf_item_class, name, \ > + TP_PROTO(struct xfs_buf_log_item *bip), \ > + TP_ARGS(bip)) > DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size); > DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size_stale); > DEFINE_BUF_ITEM_EVENT(xfs_buf_item_format); > @@ -450,78 +469,90 @@ DEFINE_BUF_ITEM_EVENT(xfs_trans_bhold); > DEFINE_BUF_ITEM_EVENT(xfs_trans_bhold_release); > DEFINE_BUF_ITEM_EVENT(xfs_trans_binval); >=20 > +DECLARE_EVENT_CLASS(xfs_lock_class, > + TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, > + unsigned long caller_ip), > + TP_ARGS(ip, lock_flags, caller_ip), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __field(int, lock_flags) > + __field(unsigned long, caller_ip) > + ), > + TP_fast_assign( > + __entry->dev =3D VFS_I(ip)->i_sb->s_dev; > + __entry->ino =3D ip->i_ino; > + __entry->lock_flags =3D lock_flags; > + __entry->caller_ip =3D caller_ip; > + ), > + TP_printk("dev %d:%d ino 0x%llx flags %s caller %pf", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __print_flags(__entry->lock_flags, "|", XFS_LOCK_FLAGS), > + (void *)__entry->caller_ip) > +) > + > #define DEFINE_LOCK_EVENT(name) \ > -TRACE_EVENT(name, \ > +DEFINE_EVENT(xfs_lock_class, name, \ > TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, \ > unsigned long caller_ip), \ > - TP_ARGS(ip, lock_flags, caller_ip), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __field(int, lock_flags) \ > - __field(unsigned long, caller_ip) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D VFS_I(ip)->i_sb->s_dev; \ > - __entry->ino =3D ip->i_ino; \ > - __entry->lock_flags =3D lock_flags; \ > - __entry->caller_ip =3D caller_ip; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx flags %s caller %pf", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __print_flags(__entry->lock_flags, "|", XFS_LOCK_FLAGS), \ > - (void *)__entry->caller_ip) \ > -) > - > + TP_ARGS(ip, lock_flags, caller_ip)) > DEFINE_LOCK_EVENT(xfs_ilock); > DEFINE_LOCK_EVENT(xfs_ilock_nowait); > DEFINE_LOCK_EVENT(xfs_ilock_demote); > DEFINE_LOCK_EVENT(xfs_iunlock); >=20 > +DECLARE_EVENT_CLASS(xfs_iget_class, > + TP_PROTO(struct xfs_inode *ip), > + TP_ARGS(ip), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + ), > + TP_fast_assign( > + __entry->dev =3D VFS_I(ip)->i_sb->s_dev; > + __entry->ino =3D ip->i_ino; > + ), > + TP_printk("dev %d:%d ino 0x%llx", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino) > +) > + > #define DEFINE_IGET_EVENT(name) \ > -TRACE_EVENT(name, \ > +DEFINE_EVENT(xfs_iget_class, name, \ > TP_PROTO(struct xfs_inode *ip), \ > - TP_ARGS(ip), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D VFS_I(ip)->i_sb->s_dev; \ > - __entry->ino =3D ip->i_ino; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino) \ > -) > + TP_ARGS(ip)) > DEFINE_IGET_EVENT(xfs_iget_skip); > DEFINE_IGET_EVENT(xfs_iget_reclaim); > DEFINE_IGET_EVENT(xfs_iget_found); > DEFINE_IGET_EVENT(xfs_iget_alloc); >=20 > +DECLARE_EVENT_CLASS(xfs_inode_class, > + TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), > + TP_ARGS(ip, caller_ip), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __field(int, count) > + __field(unsigned long, caller_ip) > + ), > + TP_fast_assign( > + __entry->dev =3D VFS_I(ip)->i_sb->s_dev; > + __entry->ino =3D ip->i_ino; > + __entry->count =3D atomic_read(&VFS_I(ip)->i_count); > + __entry->caller_ip =3D caller_ip; > + ), > + TP_printk("dev %d:%d ino 0x%llx count %d caller %pf", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __entry->count, > + (char *)__entry->caller_ip) > +) > + > #define DEFINE_INODE_EVENT(name) \ > -TRACE_EVENT(name, \ > +DEFINE_EVENT(xfs_inode_class, name, \ > TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), \ > - TP_ARGS(ip, caller_ip), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __field(int, count) \ > - __field(unsigned long, caller_ip) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D VFS_I(ip)->i_sb->s_dev; \ > - __entry->ino =3D ip->i_ino; \ > - __entry->count =3D atomic_read(&VFS_I(ip)->i_count); \ > - __entry->caller_ip =3D caller_ip; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx count %d caller %pf", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __entry->count, \ > - (char *)__entry->caller_ip) \ > -) > + TP_ARGS(ip, caller_ip)) > DEFINE_INODE_EVENT(xfs_ihold); > DEFINE_INODE_EVENT(xfs_irele); > /* the old xfs_itrace_entry tracer - to be replaced by s.th. in the = VFS */ > @@ -529,55 +560,59 @@ DEFINE_INODE_EVENT(xfs_inode); > #define xfs_itrace_entry(ip) \ > trace_xfs_inode(ip, _THIS_IP_) >=20 > -#define DEFINE_DQUOT_EVENT(tname) \ > -TRACE_EVENT(tname, \ > - TP_PROTO(struct xfs_dquot *dqp), \ > - TP_ARGS(dqp), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(__be32, id) \ > - __field(unsigned, flags) \ > - __field(unsigned, nrefs) \ > - __field(unsigned long long, res_bcount) \ > - __field(unsigned long long, bcount) \ > - __field(unsigned long long, icount) \ > - __field(unsigned long long, blk_hardlimit) \ > - __field(unsigned long long, blk_softlimit) \ > - __field(unsigned long long, ino_hardlimit) \ > - __field(unsigned long long, ino_softlimit) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D dqp->q_mount->m_super->s_dev; \ > - __entry->id =3D dqp->q_core.d_id; \ > - __entry->flags =3D dqp->dq_flags; \ > - __entry->nrefs =3D dqp->q_nrefs; \ > - __entry->res_bcount =3D dqp->q_res_bcount; \ > - __entry->bcount =3D be64_to_cpu(dqp->q_core.d_bcount); \ > - __entry->icount =3D be64_to_cpu(dqp->q_core.d_icount); \ > - __entry->blk_hardlimit =3D \ > - be64_to_cpu(dqp->q_core.d_blk_hardlimit); \ > - __entry->blk_softlimit =3D \ > - be64_to_cpu(dqp->q_core.d_blk_softlimit); \ > - __entry->ino_hardlimit =3D \ > - be64_to_cpu(dqp->q_core.d_ino_hardlimit); \ > - __entry->ino_softlimit =3D \ > - be64_to_cpu(dqp->q_core.d_ino_softlimit); \ > +DECLARE_EVENT_CLASS(xfs_dquot_class, > + TP_PROTO(struct xfs_dquot *dqp), > + TP_ARGS(dqp), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(__be32, id) > + __field(unsigned, flags) > + __field(unsigned, nrefs) > + __field(unsigned long long, res_bcount) > + __field(unsigned long long, bcount) > + __field(unsigned long long, icount) > + __field(unsigned long long, blk_hardlimit) > + __field(unsigned long long, blk_softlimit) > + __field(unsigned long long, ino_hardlimit) > + __field(unsigned long long, ino_softlimit) > ), \ > - TP_printk("dev %d:%d id 0x%x flags %s nrefs %u res_bc 0x%llx " \ > - "bcnt 0x%llx [hard 0x%llx | soft 0x%llx] " \ > - "icnt 0x%llx [hard 0x%llx | soft 0x%llx]", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - be32_to_cpu(__entry->id), \ > - __print_flags(__entry->flags, "|", XFS_DQ_FLAGS), \ > - __entry->nrefs, \ > - __entry->res_bcount, \ > - __entry->bcount, \ > - __entry->blk_hardlimit, \ > - __entry->blk_softlimit, \ > - __entry->icount, \ > - __entry->ino_hardlimit, \ > - __entry->ino_softlimit) \ > + TP_fast_assign( > + __entry->dev =3D dqp->q_mount->m_super->s_dev; > + __entry->id =3D dqp->q_core.d_id; > + __entry->flags =3D dqp->dq_flags; > + __entry->nrefs =3D dqp->q_nrefs; > + __entry->res_bcount =3D dqp->q_res_bcount; > + __entry->bcount =3D be64_to_cpu(dqp->q_core.d_bcount); > + __entry->icount =3D be64_to_cpu(dqp->q_core.d_icount); > + __entry->blk_hardlimit =3D > + be64_to_cpu(dqp->q_core.d_blk_hardlimit); > + __entry->blk_softlimit =3D > + be64_to_cpu(dqp->q_core.d_blk_softlimit); > + __entry->ino_hardlimit =3D > + be64_to_cpu(dqp->q_core.d_ino_hardlimit); > + __entry->ino_softlimit =3D > + be64_to_cpu(dqp->q_core.d_ino_softlimit); > + ), > + TP_printk("dev %d:%d id 0x%x flags %s nrefs %u res_bc 0x%llx " > + "bcnt 0x%llx [hard 0x%llx | soft 0x%llx] " > + "icnt 0x%llx [hard 0x%llx | soft 0x%llx]", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + be32_to_cpu(__entry->id), > + __print_flags(__entry->flags, "|", XFS_DQ_FLAGS), > + __entry->nrefs, > + __entry->res_bcount, > + __entry->bcount, > + __entry->blk_hardlimit, > + __entry->blk_softlimit, > + __entry->icount, > + __entry->ino_hardlimit, > + __entry->ino_softlimit) > ) > + > +#define DEFINE_DQUOT_EVENT(name) \ > +DEFINE_EVENT(xfs_dquot_class, name, \ > + TP_PROTO(struct xfs_dquot *dqp), \ > + TP_ARGS(dqp)) > DEFINE_DQUOT_EVENT(xfs_dqadjust); > DEFINE_DQUOT_EVENT(xfs_dqshake_dirty); > DEFINE_DQUOT_EVENT(xfs_dqshake_unlink); > @@ -610,72 +645,75 @@ DEFINE_DQUOT_EVENT(xfs_dqflush_done); > DEFINE_IGET_EVENT(xfs_dquot_dqalloc); > DEFINE_IGET_EVENT(xfs_dquot_dqdetach); >=20 > +DECLARE_EVENT_CLASS(xfs_loggrant_class, > + TP_PROTO(struct log *log, struct xlog_ticket *tic), > + TP_ARGS(log, tic), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(unsigned, trans_type) > + __field(char, ocnt) > + __field(char, cnt) > + __field(int, curr_res) > + __field(int, unit_res) > + __field(unsigned int, flags) > + __field(void *, reserve_headq) > + __field(void *, write_headq) > + __field(int, grant_reserve_cycle) > + __field(int, grant_reserve_bytes) > + __field(int, grant_write_cycle) > + __field(int, grant_write_bytes) > + __field(int, curr_cycle) > + __field(int, curr_block) > + __field(xfs_lsn_t, tail_lsn) > + ), > + TP_fast_assign( > + __entry->dev =3D log->l_mp->m_super->s_dev; > + __entry->trans_type =3D tic->t_trans_type; > + __entry->ocnt =3D tic->t_ocnt; > + __entry->cnt =3D tic->t_cnt; > + __entry->curr_res =3D tic->t_curr_res; > + __entry->unit_res =3D tic->t_unit_res; > + __entry->flags =3D tic->t_flags; > + __entry->reserve_headq =3D log->l_reserve_headq; > + __entry->write_headq =3D log->l_write_headq; > + __entry->grant_reserve_cycle =3D log->l_grant_reserve_cycle; > + __entry->grant_reserve_bytes =3D log->l_grant_reserve_bytes; > + __entry->grant_write_cycle =3D log->l_grant_write_cycle; > + __entry->grant_write_bytes =3D log->l_grant_write_bytes; > + __entry->curr_cycle =3D log->l_curr_cycle; > + __entry->curr_block =3D log->l_curr_block; > + __entry->tail_lsn =3D log->l_tail_lsn; > + ), > + TP_printk("dev %d:%d type %s t_ocnt %u t_cnt %u t_curr_res %u " > + "t_unit_res %u t_flags %s reserve_headq 0x%p " > + "write_headq 0x%p grant_reserve_cycle %d " > + "grant_reserve_bytes %d grant_write_cycle %d " > + "grant_write_bytes %d curr_cycle %d curr_block %d " > + "tail_cycle %d tail_block %d", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __print_symbolic(__entry->trans_type, XFS_TRANS_TYPES), > + __entry->ocnt, > + __entry->cnt, > + __entry->curr_res, > + __entry->unit_res, > + __print_flags(__entry->flags, "|", XLOG_TIC_FLAGS), > + __entry->reserve_headq, > + __entry->write_headq, > + __entry->grant_reserve_cycle, > + __entry->grant_reserve_bytes, > + __entry->grant_write_cycle, > + __entry->grant_write_bytes, > + __entry->curr_cycle, > + __entry->curr_block, > + CYCLE_LSN(__entry->tail_lsn), > + BLOCK_LSN(__entry->tail_lsn) > + ) > +) >=20 > -#define DEFINE_LOGGRANT_EVENT(tname) \ > -TRACE_EVENT(tname, \ > +#define DEFINE_LOGGRANT_EVENT(name) \ > +DEFINE_EVENT(xfs_loggrant_class, name, \ > TP_PROTO(struct log *log, struct xlog_ticket *tic), \ > - TP_ARGS(log, tic), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(unsigned, trans_type) \ > - __field(char, ocnt) \ > - __field(char, cnt) \ > - __field(int, curr_res) \ > - __field(int, unit_res) \ > - __field(unsigned int, flags) \ > - __field(void *, reserve_headq) \ > - __field(void *, write_headq) \ > - __field(int, grant_reserve_cycle) \ > - __field(int, grant_reserve_bytes) \ > - __field(int, grant_write_cycle) \ > - __field(int, grant_write_bytes) \ > - __field(int, curr_cycle) \ > - __field(int, curr_block) \ > - __field(xfs_lsn_t, tail_lsn) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D log->l_mp->m_super->s_dev; \ > - __entry->trans_type =3D tic->t_trans_type; \ > - __entry->ocnt =3D tic->t_ocnt; \ > - __entry->cnt =3D tic->t_cnt; \ > - __entry->curr_res =3D tic->t_curr_res; \ > - __entry->unit_res =3D tic->t_unit_res; \ > - __entry->flags =3D tic->t_flags; \ > - __entry->reserve_headq =3D log->l_reserve_headq; \ > - __entry->write_headq =3D log->l_write_headq; \ > - __entry->grant_reserve_cycle =3D log->l_grant_reserve_cycle; \ > - __entry->grant_reserve_bytes =3D log->l_grant_reserve_bytes; \ > - __entry->grant_write_cycle =3D log->l_grant_write_cycle; \ > - __entry->grant_write_bytes =3D log->l_grant_write_bytes; \ > - __entry->curr_cycle =3D log->l_curr_cycle; \ > - __entry->curr_block =3D log->l_curr_block; \ > - __entry->tail_lsn =3D log->l_tail_lsn; \ > - ), \ > - TP_printk("dev %d:%d type %s t_ocnt %u t_cnt %u t_curr_res %u " \ > - "t_unit_res %u t_flags %s reserve_headq 0x%p " \ > - "write_headq 0x%p grant_reserve_cycle %d " \ > - "grant_reserve_bytes %d grant_write_cycle %d " \ > - "grant_write_bytes %d curr_cycle %d curr_block %d " \ > - "tail_cycle %d tail_block %d", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __print_symbolic(__entry->trans_type, XFS_TRANS_TYPES), \ > - __entry->ocnt, \ > - __entry->cnt, \ > - __entry->curr_res, \ > - __entry->unit_res, \ > - __print_flags(__entry->flags, "|", XLOG_TIC_FLAGS), \ > - __entry->reserve_headq, \ > - __entry->write_headq, \ > - __entry->grant_reserve_cycle, \ > - __entry->grant_reserve_bytes, \ > - __entry->grant_write_cycle, \ > - __entry->grant_write_bytes, \ > - __entry->curr_cycle, \ > - __entry->curr_block, \ > - CYCLE_LSN(__entry->tail_lsn), \ > - BLOCK_LSN(__entry->tail_lsn) \ > - ) \ > -) > + TP_ARGS(log, tic)) > DEFINE_LOGGRANT_EVENT(xfs_log_done_nonperm); > DEFINE_LOGGRANT_EVENT(xfs_log_done_perm); > DEFINE_LOGGRANT_EVENT(xfs_log_reserve); > @@ -701,169 +739,184 @@ DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_en > DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_exit); > DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_sub); >=20 > +DECLARE_EVENT_CLASS(xfs_rw_class, > + TP_PROTO(struct xfs_inode *ip, size_t count, loff_t offset, int = flags), > + TP_ARGS(ip, count, offset, flags), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __field(xfs_fsize_t, size) > + __field(xfs_fsize_t, new_size) > + __field(loff_t, offset) > + __field(size_t, count) > + __field(int, flags) > + ), > + TP_fast_assign( > + __entry->dev =3D VFS_I(ip)->i_sb->s_dev; > + __entry->ino =3D ip->i_ino; > + __entry->size =3D ip->i_d.di_size; > + __entry->new_size =3D ip->i_new_size; > + __entry->offset =3D offset; > + __entry->count =3D count; > + __entry->flags =3D flags; > + ), > + TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " > + "offset 0x%llx count 0x%zx ioflags %s", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __entry->size, > + __entry->new_size, > + __entry->offset, > + __entry->count, > + __print_flags(__entry->flags, "|", XFS_IO_FLAGS)) > +) > + > #define DEFINE_RW_EVENT(name) \ > -TRACE_EVENT(name, \ > +DEFINE_EVENT(xfs_rw_class, name, \ > TP_PROTO(struct xfs_inode *ip, size_t count, loff_t offset, int = flags), \ > - TP_ARGS(ip, count, offset, flags), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __field(xfs_fsize_t, size) \ > - __field(xfs_fsize_t, new_size) \ > - __field(loff_t, offset) \ > - __field(size_t, count) \ > - __field(int, flags) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D VFS_I(ip)->i_sb->s_dev; \ > - __entry->ino =3D ip->i_ino; \ > - __entry->size =3D ip->i_d.di_size; \ > - __entry->new_size =3D ip->i_new_size; \ > - __entry->offset =3D offset; \ > - __entry->count =3D count; \ > - __entry->flags =3D flags; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \ > - "offset 0x%llx count 0x%zx ioflags %s", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __entry->size, \ > - __entry->new_size, \ > - __entry->offset, \ > - __entry->count, \ > - __print_flags(__entry->flags, "|", XFS_IO_FLAGS)) \ > -) > + TP_ARGS(ip, count, offset, flags)) > DEFINE_RW_EVENT(xfs_file_read); > DEFINE_RW_EVENT(xfs_file_buffered_write); > DEFINE_RW_EVENT(xfs_file_direct_write); > DEFINE_RW_EVENT(xfs_file_splice_read); > DEFINE_RW_EVENT(xfs_file_splice_write); >=20 > +DECLARE_EVENT_CLASS(xfs_page_class, > + TP_PROTO(struct inode *inode, struct page *page, unsigned long off), > + TP_ARGS(inode, page, off), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __field(pgoff_t, pgoff) > + __field(loff_t, size) > + __field(unsigned long, offset) > + __field(int, delalloc) > + __field(int, unmapped) > + __field(int, unwritten) > + ), > + TP_fast_assign( > + int delalloc =3D -1, unmapped =3D -1, unwritten =3D -1; > + > + if (page_has_buffers(page)) > + xfs_count_page_state(page, &delalloc, > + &unmapped, &unwritten); > + __entry->dev =3D inode->i_sb->s_dev; > + __entry->ino =3D XFS_I(inode)->i_ino; > + __entry->pgoff =3D page_offset(page); > + __entry->size =3D i_size_read(inode); > + __entry->offset =3D off; > + __entry->delalloc =3D delalloc; > + __entry->unmapped =3D unmapped; > + __entry->unwritten =3D unwritten; > + ), > + TP_printk("dev %d:%d ino 0x%llx pgoff 0x%lx size 0x%llx offset %lx " > + "delalloc %d unmapped %d unwritten %d", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __entry->pgoff, > + __entry->size, > + __entry->offset, > + __entry->delalloc, > + __entry->unmapped, > + __entry->unwritten) > +) >=20 > #define DEFINE_PAGE_EVENT(name) \ > -TRACE_EVENT(name, \ > +DEFINE_EVENT(xfs_page_class, name, \ > TP_PROTO(struct inode *inode, struct page *page, unsigned long off), = \ > - TP_ARGS(inode, page, off), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __field(pgoff_t, pgoff) \ > - __field(loff_t, size) \ > - __field(unsigned long, offset) \ > - __field(int, delalloc) \ > - __field(int, unmapped) \ > - __field(int, unwritten) \ > - ), \ > - TP_fast_assign( \ > - int delalloc =3D -1, unmapped =3D -1, unwritten =3D -1; \ > - \ > - if (page_has_buffers(page)) \ > - xfs_count_page_state(page, &delalloc, \ > - &unmapped, &unwritten); \ > - __entry->dev =3D inode->i_sb->s_dev; \ > - __entry->ino =3D XFS_I(inode)->i_ino; \ > - __entry->pgoff =3D page_offset(page); \ > - __entry->size =3D i_size_read(inode); \ > - __entry->offset =3D off; \ > - __entry->delalloc =3D delalloc; \ > - __entry->unmapped =3D unmapped; \ > - __entry->unwritten =3D unwritten; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx pgoff 0x%lx size 0x%llx offset %lx " = \ > - "delalloc %d unmapped %d unwritten %d", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __entry->pgoff, \ > - __entry->size, \ > - __entry->offset, \ > - __entry->delalloc, \ > - __entry->unmapped, \ > - __entry->unwritten) \ > -) > + TP_ARGS(inode, page, off)) > DEFINE_PAGE_EVENT(xfs_writepage); > DEFINE_PAGE_EVENT(xfs_releasepage); > DEFINE_PAGE_EVENT(xfs_invalidatepage); >=20 > +DECLARE_EVENT_CLASS(xfs_iomap_class, > + TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, > + int flags, struct xfs_bmbt_irec *irec), > + TP_ARGS(ip, offset, count, flags, irec), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __field(loff_t, size) > + __field(loff_t, new_size) > + __field(loff_t, offset) > + __field(size_t, count) > + __field(int, flags) > + __field(xfs_fileoff_t, startoff) > + __field(xfs_fsblock_t, startblock) > + __field(xfs_filblks_t, blockcount) > + ), > + TP_fast_assign( > + __entry->dev =3D VFS_I(ip)->i_sb->s_dev; > + __entry->ino =3D ip->i_ino; > + __entry->size =3D ip->i_d.di_size; > + __entry->new_size =3D ip->i_new_size; > + __entry->offset =3D offset; > + __entry->count =3D count; > + __entry->flags =3D flags; > + __entry->startoff =3D irec ? irec->br_startoff : 0; > + __entry->startblock =3D irec ? irec->br_startblock : 0; > + __entry->blockcount =3D irec ? irec->br_blockcount : 0; > + ), > + TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " > + "offset 0x%llx count %zd flags %s " > + "startoff 0x%llx startblock 0x%llx blockcount 0x%llx", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __entry->size, > + __entry->new_size, > + __entry->offset, > + __entry->count, > + __print_flags(__entry->flags, "|", BMAPI_FLAGS), > + __entry->startoff, > + __entry->startblock, > + __entry->blockcount) > +) > + > #define DEFINE_IOMAP_EVENT(name) \ > -TRACE_EVENT(name, \ > +DEFINE_EVENT(xfs_iomap_class, name, \ > TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, \ > int flags, struct xfs_bmbt_irec *irec), \ > - TP_ARGS(ip, offset, count, flags, irec), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __field(loff_t, size) \ > - __field(loff_t, new_size) \ > - __field(loff_t, offset) \ > - __field(size_t, count) \ > - __field(int, flags) \ > - __field(xfs_fileoff_t, startoff) \ > - __field(xfs_fsblock_t, startblock) \ > - __field(xfs_filblks_t, blockcount) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D VFS_I(ip)->i_sb->s_dev; \ > - __entry->ino =3D ip->i_ino; \ > - __entry->size =3D ip->i_d.di_size; \ > - __entry->new_size =3D ip->i_new_size; \ > - __entry->offset =3D offset; \ > - __entry->count =3D count; \ > - __entry->flags =3D flags; \ > - __entry->startoff =3D irec ? irec->br_startoff : 0; \ > - __entry->startblock =3D irec ? irec->br_startblock : 0; \ > - __entry->blockcount =3D irec ? irec->br_blockcount : 0; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \ > - "offset 0x%llx count %zd flags %s " \ > - "startoff 0x%llx startblock 0x%llx blockcount 0x%llx", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __entry->size, \ > - __entry->new_size, \ > - __entry->offset, \ > - __entry->count, \ > - __print_flags(__entry->flags, "|", BMAPI_FLAGS), \ > - __entry->startoff, \ > - __entry->startblock, \ > - __entry->blockcount) \ > -) > + TP_ARGS(ip, offset, count, flags, irec)) > DEFINE_IOMAP_EVENT(xfs_iomap_enter); > DEFINE_IOMAP_EVENT(xfs_iomap_found); > DEFINE_IOMAP_EVENT(xfs_iomap_alloc); >=20 > +DECLARE_EVENT_CLASS(xfs_simple_io_class, > + TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), > + TP_ARGS(ip, offset, count), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __field(loff_t, size) > + __field(loff_t, new_size) > + __field(loff_t, offset) > + __field(size_t, count) > + ), > + TP_fast_assign( > + __entry->dev =3D VFS_I(ip)->i_sb->s_dev; > + __entry->ino =3D ip->i_ino; > + __entry->size =3D ip->i_d.di_size; > + __entry->new_size =3D ip->i_new_size; > + __entry->offset =3D offset; > + __entry->count =3D count; > + ), > + TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " > + "offset 0x%llx count %zd", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __entry->size, > + __entry->new_size, > + __entry->offset, > + __entry->count) > +); > + > #define DEFINE_SIMPLE_IO_EVENT(name) \ > -TRACE_EVENT(name, \ > +DEFINE_EVENT(xfs_simple_io_class, name, \ > TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), \ > - TP_ARGS(ip, offset, count), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __field(loff_t, size) \ > - __field(loff_t, new_size) \ > - __field(loff_t, offset) \ > - __field(size_t, count) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D VFS_I(ip)->i_sb->s_dev; \ > - __entry->ino =3D ip->i_ino; \ > - __entry->size =3D ip->i_d.di_size; \ > - __entry->new_size =3D ip->i_new_size; \ > - __entry->offset =3D offset; \ > - __entry->count =3D count; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \ > - "offset 0x%llx count %zd", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __entry->size, \ > - __entry->new_size, \ > - __entry->offset, \ > - __entry->count) \ > -); > + TP_ARGS(ip, offset, count)) > DEFINE_SIMPLE_IO_EVENT(xfs_delalloc_enospc); > DEFINE_SIMPLE_IO_EVENT(xfs_unwritten_convert); >=20 > - > TRACE_EVENT(xfs_itruncate_start, > TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size, int flag, > xfs_off_t toss_start, xfs_off_t toss_finish), > @@ -897,28 +950,32 @@ TRACE_EVENT(xfs_itruncate_start, > __entry->toss_finish) > ); >=20 > +DECLARE_EVENT_CLASS(xfs_itrunc_class, > + TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), > + TP_ARGS(ip, new_size), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __field(xfs_fsize_t, size) > + __field(xfs_fsize_t, new_size) > + ), > + TP_fast_assign( > + __entry->dev =3D VFS_I(ip)->i_sb->s_dev; > + __entry->ino =3D ip->i_ino; > + __entry->size =3D ip->i_d.di_size; > + __entry->new_size =3D new_size; > + ), > + TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __entry->size, > + __entry->new_size) > +) > + > #define DEFINE_ITRUNC_EVENT(name) \ > -TRACE_EVENT(name, \ > +DEFINE_EVENT(xfs_itrunc_class, name, \ > TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), \ > - TP_ARGS(ip, new_size), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __field(xfs_fsize_t, size) \ > - __field(xfs_fsize_t, new_size) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D VFS_I(ip)->i_sb->s_dev; \ > - __entry->ino =3D ip->i_ino; \ > - __entry->size =3D ip->i_d.di_size; \ > - __entry->new_size =3D new_size; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __entry->size, \ > - __entry->new_size) \ > -) > + TP_ARGS(ip, new_size)) > DEFINE_ITRUNC_EVENT(xfs_itruncate_finish_start); > DEFINE_ITRUNC_EVENT(xfs_itruncate_finish_end); >=20 > @@ -1152,77 +1209,80 @@ TRACE_EVENT(xfs_free_extent, >=20 > ); >=20 > -#define DEFINE_ALLOC_EVENT(name) \ > -TRACE_EVENT(name, \ > - TP_PROTO(struct xfs_alloc_arg *args), \ > - TP_ARGS(args), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_agnumber_t, agno) \ > - __field(xfs_agblock_t, agbno) \ > - __field(xfs_extlen_t, minlen) \ > - __field(xfs_extlen_t, maxlen) \ > - __field(xfs_extlen_t, mod) \ > - __field(xfs_extlen_t, prod) \ > - __field(xfs_extlen_t, minleft) \ > - __field(xfs_extlen_t, total) \ > - __field(xfs_extlen_t, alignment) \ > - __field(xfs_extlen_t, minalignslop) \ > - __field(xfs_extlen_t, len) \ > - __field(short, type) \ > - __field(short, otype) \ > - __field(char, wasdel) \ > - __field(char, wasfromfl) \ > - __field(char, isfl) \ > - __field(char, userdata) \ > - __field(xfs_fsblock_t, firstblock) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D args->mp->m_super->s_dev; \ > - __entry->agno =3D args->agno; \ > - __entry->agbno =3D args->agbno; \ > - __entry->minlen =3D args->minlen; \ > - __entry->maxlen =3D args->maxlen; \ > - __entry->mod =3D args->mod; \ > - __entry->prod =3D args->prod; \ > - __entry->minleft =3D args->minleft; \ > - __entry->total =3D args->total; \ > - __entry->alignment =3D args->alignment; \ > - __entry->minalignslop =3D args->minalignslop; \ > - __entry->len =3D args->len; \ > - __entry->type =3D args->type; \ > - __entry->otype =3D args->otype; \ > - __entry->wasdel =3D args->wasdel; \ > - __entry->wasfromfl =3D args->wasfromfl; \ > - __entry->isfl =3D args->isfl; \ > - __entry->userdata =3D args->userdata; \ > - __entry->firstblock =3D args->firstblock; \ > - ), \ > - TP_printk("dev %d:%d agno %u agbno %u minlen %u maxlen %u mod %u " \ > - "prod %u minleft %u total %u alignment %u minalignslop %u " \ > - "len %u type %s otype %s wasdel %d wasfromfl %d isfl %d " \ > - "userdata %d firstblock 0x%llx", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->agno, \ > - __entry->agbno, \ > - __entry->minlen, \ > - __entry->maxlen, \ > - __entry->mod, \ > - __entry->prod, \ > - __entry->minleft, \ > - __entry->total, \ > - __entry->alignment, \ > - __entry->minalignslop, \ > - __entry->len, \ > - __print_symbolic(__entry->type, XFS_ALLOC_TYPES), \ > - __print_symbolic(__entry->otype, XFS_ALLOC_TYPES), \ > - __entry->wasdel, \ > - __entry->wasfromfl, \ > - __entry->isfl, \ > - __entry->userdata, \ > - __entry->firstblock) \ > +DECLARE_EVENT_CLASS(xfs_alloc_class, > + TP_PROTO(struct xfs_alloc_arg *args), > + TP_ARGS(args), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_agnumber_t, agno) > + __field(xfs_agblock_t, agbno) > + __field(xfs_extlen_t, minlen) > + __field(xfs_extlen_t, maxlen) > + __field(xfs_extlen_t, mod) > + __field(xfs_extlen_t, prod) > + __field(xfs_extlen_t, minleft) > + __field(xfs_extlen_t, total) > + __field(xfs_extlen_t, alignment) > + __field(xfs_extlen_t, minalignslop) > + __field(xfs_extlen_t, len) > + __field(short, type) > + __field(short, otype) > + __field(char, wasdel) > + __field(char, wasfromfl) > + __field(char, isfl) > + __field(char, userdata) > + __field(xfs_fsblock_t, firstblock) > + ), > + TP_fast_assign( > + __entry->dev =3D args->mp->m_super->s_dev; > + __entry->agno =3D args->agno; > + __entry->agbno =3D args->agbno; > + __entry->minlen =3D args->minlen; > + __entry->maxlen =3D args->maxlen; > + __entry->mod =3D args->mod; > + __entry->prod =3D args->prod; > + __entry->minleft =3D args->minleft; > + __entry->total =3D args->total; > + __entry->alignment =3D args->alignment; > + __entry->minalignslop =3D args->minalignslop; > + __entry->len =3D args->len; > + __entry->type =3D args->type; > + __entry->otype =3D args->otype; > + __entry->wasdel =3D args->wasdel; > + __entry->wasfromfl =3D args->wasfromfl; > + __entry->isfl =3D args->isfl; > + __entry->userdata =3D args->userdata; > + __entry->firstblock =3D args->firstblock; > + ), > + TP_printk("dev %d:%d agno %u agbno %u minlen %u maxlen %u mod %u " > + "prod %u minleft %u total %u alignment %u minalignslop %u " > + "len %u type %s otype %s wasdel %d wasfromfl %d isfl %d " > + "userdata %d firstblock 0x%llx", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->agno, > + __entry->agbno, > + __entry->minlen, > + __entry->maxlen, > + __entry->mod, > + __entry->prod, > + __entry->minleft, > + __entry->total, > + __entry->alignment, > + __entry->minalignslop, > + __entry->len, > + __print_symbolic(__entry->type, XFS_ALLOC_TYPES), > + __print_symbolic(__entry->otype, XFS_ALLOC_TYPES), > + __entry->wasdel, > + __entry->wasfromfl, > + __entry->isfl, > + __entry->userdata, > + __entry->firstblock) > ) >=20 > +#define DEFINE_ALLOC_EVENT(name) \ > +DEFINE_EVENT(xfs_alloc_class, name, \ > + TP_PROTO(struct xfs_alloc_arg *args), \ > + TP_ARGS(args)) > DEFINE_ALLOC_EVENT(xfs_alloc_exact_done); > DEFINE_ALLOC_EVENT(xfs_alloc_exact_error); > DEFINE_ALLOC_EVENT(xfs_alloc_near_nominleft); > @@ -1245,92 +1305,100 @@ DEFINE_ALLOC_EVENT(xfs_alloc_vextent_noa > DEFINE_ALLOC_EVENT(xfs_alloc_vextent_loopfailed); > DEFINE_ALLOC_EVENT(xfs_alloc_vextent_allfailed); >=20 > -#define DEFINE_DIR2_TRACE(tname) \ > -TRACE_EVENT(tname, \ > +DECLARE_EVENT_CLASS(xfs_dir2_class, > + TP_PROTO(struct xfs_da_args *args), > + TP_ARGS(args), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __dynamic_array(char, name, args->namelen) > + __field(int, namelen) > + __field(xfs_dahash_t, hashval) > + __field(xfs_ino_t, inumber) > + __field(int, op_flags) > + ), > + TP_fast_assign( > + __entry->dev =3D VFS_I(args->dp)->i_sb->s_dev; > + __entry->ino =3D args->dp->i_ino; > + if (args->namelen) > + memcpy(__get_str(name), args->name, args->namelen); > + __entry->namelen =3D args->namelen; > + __entry->hashval =3D args->hashval; > + __entry->inumber =3D args->inumber; > + __entry->op_flags =3D args->op_flags; > + ), > + TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d hashval 0x%x " > + "inumber 0x%llx op_flags %s", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __entry->namelen, > + __entry->namelen ? __get_str(name) : NULL, > + __entry->namelen, > + __entry->hashval, > + __entry->inumber, > + __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS)) > +) > + > +#define DEFINE_DIR2_EVENT(name) \ > +DEFINE_EVENT(xfs_dir2_class, name, \ > TP_PROTO(struct xfs_da_args *args), \ > - TP_ARGS(args), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __dynamic_array(char, name, args->namelen) \ > - __field(int, namelen) \ > - __field(xfs_dahash_t, hashval) \ > - __field(xfs_ino_t, inumber) \ > - __field(int, op_flags) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D VFS_I(args->dp)->i_sb->s_dev; \ > - __entry->ino =3D args->dp->i_ino; \ > - if (args->namelen) \ > - memcpy(__get_str(name), args->name, args->namelen); \ > - __entry->namelen =3D args->namelen; \ > - __entry->hashval =3D args->hashval; \ > - __entry->inumber =3D args->inumber; \ > - __entry->op_flags =3D args->op_flags; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d hashval 0x%x " = \ > - "inumber 0x%llx op_flags %s", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __entry->namelen, \ > - __entry->namelen ? __get_str(name) : NULL, \ > - __entry->namelen, \ > - __entry->hashval, \ > - __entry->inumber, \ > - __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS)) \ > + TP_ARGS(args)) > +DEFINE_DIR2_EVENT(xfs_dir2_sf_addname); > +DEFINE_DIR2_EVENT(xfs_dir2_sf_create); > +DEFINE_DIR2_EVENT(xfs_dir2_sf_lookup); > +DEFINE_DIR2_EVENT(xfs_dir2_sf_replace); > +DEFINE_DIR2_EVENT(xfs_dir2_sf_removename); > +DEFINE_DIR2_EVENT(xfs_dir2_sf_toino4); > +DEFINE_DIR2_EVENT(xfs_dir2_sf_toino8); > +DEFINE_DIR2_EVENT(xfs_dir2_sf_to_block); > +DEFINE_DIR2_EVENT(xfs_dir2_block_addname); > +DEFINE_DIR2_EVENT(xfs_dir2_block_lookup); > +DEFINE_DIR2_EVENT(xfs_dir2_block_replace); > +DEFINE_DIR2_EVENT(xfs_dir2_block_removename); > +DEFINE_DIR2_EVENT(xfs_dir2_block_to_sf); > +DEFINE_DIR2_EVENT(xfs_dir2_block_to_leaf); > +DEFINE_DIR2_EVENT(xfs_dir2_leaf_addname); > +DEFINE_DIR2_EVENT(xfs_dir2_leaf_lookup); > +DEFINE_DIR2_EVENT(xfs_dir2_leaf_replace); > +DEFINE_DIR2_EVENT(xfs_dir2_leaf_removename); > +DEFINE_DIR2_EVENT(xfs_dir2_leaf_to_block); > +DEFINE_DIR2_EVENT(xfs_dir2_leaf_to_node); > +DEFINE_DIR2_EVENT(xfs_dir2_node_addname); > +DEFINE_DIR2_EVENT(xfs_dir2_node_lookup); > +DEFINE_DIR2_EVENT(xfs_dir2_node_replace); > +DEFINE_DIR2_EVENT(xfs_dir2_node_removename); > +DEFINE_DIR2_EVENT(xfs_dir2_node_to_leaf); > + > +DECLARE_EVENT_CLASS(xfs_dir2_space_class, > + TP_PROTO(struct xfs_da_args *args, int idx), > + TP_ARGS(args, idx), > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(xfs_ino_t, ino) > + __field(int, op_flags) > + __field(int, idx) > + ), > + TP_fast_assign( > + __entry->dev =3D VFS_I(args->dp)->i_sb->s_dev; > + __entry->ino =3D args->dp->i_ino; > + __entry->op_flags =3D args->op_flags; > + __entry->idx =3D idx; > + ), > + TP_printk("dev %d:%d ino 0x%llx op_flags %s index %d", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + __entry->ino, > + __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS), > + __entry->idx) > ) > -DEFINE_DIR2_TRACE(xfs_dir2_sf_addname); > -DEFINE_DIR2_TRACE(xfs_dir2_sf_create); > -DEFINE_DIR2_TRACE(xfs_dir2_sf_lookup); > -DEFINE_DIR2_TRACE(xfs_dir2_sf_replace); > -DEFINE_DIR2_TRACE(xfs_dir2_sf_removename); > -DEFINE_DIR2_TRACE(xfs_dir2_sf_toino4); > -DEFINE_DIR2_TRACE(xfs_dir2_sf_toino8); > -DEFINE_DIR2_TRACE(xfs_dir2_sf_to_block); > -DEFINE_DIR2_TRACE(xfs_dir2_block_addname); > -DEFINE_DIR2_TRACE(xfs_dir2_block_lookup); > -DEFINE_DIR2_TRACE(xfs_dir2_block_replace); > -DEFINE_DIR2_TRACE(xfs_dir2_block_removename); > -DEFINE_DIR2_TRACE(xfs_dir2_block_to_sf); > -DEFINE_DIR2_TRACE(xfs_dir2_block_to_leaf); > -DEFINE_DIR2_TRACE(xfs_dir2_leaf_addname); > -DEFINE_DIR2_TRACE(xfs_dir2_leaf_lookup); > -DEFINE_DIR2_TRACE(xfs_dir2_leaf_replace); > -DEFINE_DIR2_TRACE(xfs_dir2_leaf_removename); > -DEFINE_DIR2_TRACE(xfs_dir2_leaf_to_block); > -DEFINE_DIR2_TRACE(xfs_dir2_leaf_to_node); > -DEFINE_DIR2_TRACE(xfs_dir2_node_addname); > -DEFINE_DIR2_TRACE(xfs_dir2_node_lookup); > -DEFINE_DIR2_TRACE(xfs_dir2_node_replace); > -DEFINE_DIR2_TRACE(xfs_dir2_node_removename); > -DEFINE_DIR2_TRACE(xfs_dir2_node_to_leaf); >=20 > -#define DEFINE_DIR2_SPACE_TRACE(tname) \ > -TRACE_EVENT(tname, \ > +#define DEFINE_DIR2_SPACE_EVENT(name) \ > +DEFINE_EVENT(xfs_dir2_space_class, name, \ > TP_PROTO(struct xfs_da_args *args, int idx), \ > - TP_ARGS(args, idx), \ > - TP_STRUCT__entry( \ > - __field(dev_t, dev) \ > - __field(xfs_ino_t, ino) \ > - __field(int, op_flags) \ > - __field(int, idx) \ > - ), \ > - TP_fast_assign( \ > - __entry->dev =3D VFS_I(args->dp)->i_sb->s_dev; \ > - __entry->ino =3D args->dp->i_ino; \ > - __entry->op_flags =3D args->op_flags; \ > - __entry->idx =3D idx; \ > - ), \ > - TP_printk("dev %d:%d ino 0x%llx op_flags %s index %d", \ > - MAJOR(__entry->dev), MINOR(__entry->dev), \ > - __entry->ino, \ > - __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS), \ > - __entry->idx) \ > -) > -DEFINE_DIR2_SPACE_TRACE(xfs_dir2_leafn_add); > -DEFINE_DIR2_SPACE_TRACE(xfs_dir2_leafn_remove); > -DEFINE_DIR2_SPACE_TRACE(xfs_dir2_grow_inode); > -DEFINE_DIR2_SPACE_TRACE(xfs_dir2_shrink_inode); > + TP_ARGS(args, idx)) > +DEFINE_DIR2_SPACE_EVENT(xfs_dir2_leafn_add); > +DEFINE_DIR2_SPACE_EVENT(xfs_dir2_leafn_remove); > +DEFINE_DIR2_SPACE_EVENT(xfs_dir2_grow_inode); > +DEFINE_DIR2_SPACE_EVENT(xfs_dir2_shrink_inode); >=20 > TRACE_EVENT(xfs_dir2_leafn_moveents, > TP_PROTO(struct xfs_da_args *args, int src_idx, int dst_idx, int = count), >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Fri Jan 8 17:15:00 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o08NExgp082508 for ; Fri, 8 Jan 2010 17:14:59 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3217B304082; Fri, 8 Jan 2010 15:15:48 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: [PATCH v2] xfs: Don't flush stale inodes Date: Fri, 8 Jan 2010 17:14:25 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A693A@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1262399980-19277-1-git-send-email-david@fromorbit.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] XFS: Don't flush stale inodes Thread-Index: AcqLV7bI0nnFfSqfTh2fVEXLp9a9CwFXuZbQ From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > Because inodes remain in cache much longer than inode buffers do > under memory pressure, we can get the situation where we have stale, > dirty inodes being reclaimed but the backing storage has been freed. > Hence we should never, ever flush XFS_ISTALE inodes to disk as > there is no guarantee that the backing buffer is in cache and > still marked stale when the flush occurs. > > Signed-off-by: Dave Chinner Dave, I'm putting this patch in before your perag radix tree patch series, so I had to port it. I am submitting here on your behalf, but would like you to review it if possible. It builds fine, and I've run it through a quick test. I will retain all of your original commentary, etc. I did *not* implement Christoph's recommendation that you change the "for" loop in xfs_alloc_search_busy() to a more typical form. For reference, the original patch is here: http://patchwork.xfs.org/patch/382/ Signed-off-by: Alex Elder --- fs/xfs/linux-2.6/xfs_trace.h | 9 +++++--- fs/xfs/xfs_alloc.c | 44 = ++++++++++++++++++++----------------------- 2 files changed, 27 insertions(+), 26 deletions(-) Index: b/fs/xfs/linux-2.6/xfs_trace.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h @@ -1079,14 +1079,15 @@ TRACE_EVENT(xfs_alloc_unbusy, =20 TRACE_EVENT(xfs_alloc_busysearch, TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t = agbno, - xfs_extlen_t len, int found), - TP_ARGS(mp, agno, agbno, len, found), + xfs_extlen_t len, int found, xfs_lsn_t lsn), + TP_ARGS(mp, agno, agbno, len, found, lsn), TP_STRUCT__entry( __field(dev_t, dev) __field(xfs_agnumber_t, agno) __field(xfs_agblock_t, agbno) __field(xfs_extlen_t, len) __field(int, found) + __field(xfs_lsn_t, lsn) ), TP_fast_assign( __entry->dev =3D mp->m_super->s_dev; @@ -1094,12 +1095,14 @@ TRACE_EVENT(xfs_alloc_busysearch, __entry->agbno =3D agbno; __entry->len =3D len; __entry->found =3D found; + __entry->lsn =3D lsn; ), - TP_printk("dev %d:%d agno %u agbno %u len %u %s", + TP_printk("dev %d:%d agno %u agbno %u len %u force lsn 0x%llx %s", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno, __entry->agbno, __entry->len, + __entry->lsn, __print_symbolic(__entry->found, XFS_BUSY_STATES)) ); =20 Index: b/fs/xfs/xfs_alloc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -2563,7 +2563,7 @@ xfs_alloc_search_busy(xfs_trans_t *tp, xfs_mount_t *mp; xfs_perag_busy_t *bsy; xfs_agblock_t uend, bend; - xfs_lsn_t lsn; + xfs_lsn_t lsn =3D 0; int cnt; =20 mp =3D tp->t_mountp; @@ -2573,33 +2573,31 @@ xfs_alloc_search_busy(xfs_trans_t *tp, =20 uend =3D bno + len - 1; =20 - /* search pagb_list for this slot, skipping open slots */ - for (bsy =3D mp->m_perag[agno].pagb_list; cnt; bsy++) { - - /* - * (start1,length1) within (start2, length2) - */ - if (bsy->busy_tp !=3D NULL) { - bend =3D bsy->busy_start + bsy->busy_length - 1; - if ((bno > bend) || (uend < bsy->busy_start)) { - cnt--; - } else { - break; - } - } + /* + * search pagb_list for this slot, skipping open slots. We have to + * search the entire array as there may be multiple overlaps and + * we have to get the most recent LSN for the log force to push out + * all the transactions that span the range. + */ + for (bsy =3D mp->m_perag[agno].pagb_list; cnt; bsy++, cnt--) { + if (!bsy->busy_tp) + continue; + + bend =3D bsy->busy_start + bsy->busy_length - 1; + if ((bno > bend) || (uend < bsy->busy_start)) + continue; + + /* (start1,length1) within (start2, length2) */ + if (XFS_LSN_CMP(bsy->busy_tp->t_commit_lsn, lsn) > 0) + lsn =3D bsy->busy_tp->t_commit_lsn; } - - trace_xfs_alloc_busysearch(mp, agno, bno, len, !!cnt); + spin_unlock(&mp->m_perag[agno].pagb_lock); + trace_xfs_alloc_busysearch(tp->t_mountp, agno, bno, len, !!cnt, lsn); =20 /* * If a block was found, force the log through the LSN of the * transaction that freed the block */ - if (cnt) { - lsn =3D bsy->busy_tp->t_commit_lsn; - spin_unlock(&mp->m_perag[agno].pagb_lock); + if (lsn) xfs_log_force(mp, lsn, XFS_LOG_FORCE|XFS_LOG_SYNC); - } else { - spin_unlock(&mp->m_perag[agno].pagb_lock); - } } From SRS0+OI6W+38+fromorbit.com=david@internode.on.net Fri Jan 8 18:08:41 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0908d38085735 for ; Fri, 8 Jan 2010 18:08:40 -0600 X-ASG-Debug-ID: 1262995770-361f037d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 808E4EE3337 for ; Fri, 8 Jan 2010 16:09:31 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id gA0JtgCjSp4nCvfv for ; Fri, 08 Jan 2010 16:09:31 -0800 (PST) Received: from discord (unverified [121.44.238.220]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11140149-1927428 for multiple; Sat, 09 Jan 2010 10:39:29 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NTOtT-0003Vu-Og; Sat, 09 Jan 2010 11:09:27 +1100 Date: Sat, 9 Jan 2010 11:09:27 +1100 From: Dave Chinner To: Alex Elder Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH v2] xfs: Don't flush stale inodes Subject: Re: [PATCH v2] xfs: Don't flush stale inodes Message-ID: <20100109000927.GE8654@discord.disaster> References: <1262399980-19277-1-git-send-email-david@fromorbit.com> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A693A@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A693A@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1262995772 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19310 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 08, 2010 at 05:14:25PM -0600, Alex Elder wrote: > Dave Chinner wrote: > > Because inodes remain in cache much longer than inode buffers do > > under memory pressure, we can get the situation where we have stale, > > dirty inodes being reclaimed but the backing storage has been freed. > > Hence we should never, ever flush XFS_ISTALE inodes to disk as > > there is no guarantee that the backing buffer is in cache and > > still marked stale when the flush occurs. > > > > Signed-off-by: Dave Chinner > > Dave, I'm putting this patch in before your perag radix tree > patch series, so I had to port it. I am submitting here on > your behalf, but would like you to review it if possible. > It builds fine, and I've run it through a quick test. > I will retain all of your original commentary, etc. I did > *not* implement Christoph's recommendation that you change > the "for" loop in xfs_alloc_search_busy() to a more typical > form. > > For reference, the original patch is here: > http://patchwork.xfs.org/patch/382/ > > Signed-off-by: Alex Elder Ah, which patch are you talking about? The title says stale inodes, the patch is searching busy extents. Assuming you meant the busy extent search fix, you've ported the wrong version of the busy extent search fix. I posted an updated version after Christoph reviewed that one (in my response to Christoph's review). Because it was a new patch, patchwork doesn't add the email to the original thread - it starts a new one. It's a real PITA, IMO, but that is the way patchwork does stuff. The patch that should be checked in is this one: http://patchwork.xfs.org/patch/387/ Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Fri Jan 8 20:23:09 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_210 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o092N8Wo093905 for ; Fri, 8 Jan 2010 20:23:09 -0600 X-ASG-Debug-ID: 1263003840-147e02a10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 27985EE92DC for ; Fri, 8 Jan 2010 18:24:01 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id ss04ESdU94DNH2EW for ; Fri, 08 Jan 2010 18:24:01 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 76FB28E0505; Fri, 8 Jan 2010 20:24:00 -0600 (CST) Message-ID: <4B47E8C0.2040809@sandeen.net> Date: Fri, 08 Jan 2010 20:24:00 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: Eric Sandeen , xfs-oss X-ASG-Orig-Subj: Re: [PATCH V2] mkfs: handle 4k sector devices more cleanly Subject: Re: [PATCH V2] mkfs: handle 4k sector devices more cleanly References: <4B1E9A25.50108@redhat.com> <4B476171.4020701@sandeen.net> <20100108174400.GA17634@infradead.org> In-Reply-To: <20100108174400.GA17634@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263003842 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19317 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Fri, Jan 08, 2010 at 10:46:41AM -0600, Eric Sandeen wrote: >> +extern void platform_findsizes (char *path, int fd, long long *sz, int *bsz); > > Can you move the prototype from libxfs/init.h to include/libxfs.h > instead of adding it to the .c file? actually it seems a little out of place in libxfs/init.h; that probably works but there are no other platform_* functions there... Should this be more like an xfs_findsizes in libxfs, which calls platform_findsizes internally just for consistency? *shrug* >> + /* >> + * MD wants sector size set == block size to avoid switching. >> + * Otherwise, if not specfied via command, use device sectorsize >> + */ >> + if (ft.sectoralign || !ssflag) { >> + if (ft.sectoralign) >> + sectorsize = blocksize; >> + else >> + sectorsize = ft.sectorsize; > > This still confuses the heck out of me. What do you think about the > incremental patch at the end of the mail? > >> if (slflag || ssflag) >> xi.setblksize = sectorsize; >> - else >> - xi.setblksize = 1; > > So for the defaul case we now never set the sector size in the libxfs > init. This seems safe to me, but why did we do it before? Could > a previous user have left it set to a wrong value? ok so I read this wrong on my previous reply I guess. The only way this is used is: it's sent to libxfs_init and then from there only to libxfs_open which does: if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) { if (setblksize == 1) /* use the default blocksize */ (void)platform_set_blocksize(fd, path, statb.st_rdev, XFS_MIN_SECTORSIZE, 0); else { /* given an explicit blocksize to use */ if (platform_set_blocksize(fd, path, statb.st_rdev, setblksize, 1)) exit(1); } } so "1" seems to have the special meaning of "use XFS_MIN_SECTORSIZE" Hm, ok but in my patch setblksize is 0, so it's not getting set. I suppose this -might- mess up other utils ... > Maye we should just do the xi.setblksize = sectorsize unconditionally? I think that's best. It's already defaulted to XFS_MIN_SECTORSIZE so should be no functional change if it doesn't get otherwise set - although I think it -does- get set in all cases now - either from ft.sectoralign/blocksize, from the explicit -s setting, or the ft.sectorsize by default. What do you think about removing the "1" magic if so? At that point I think nothing relies on it. Thanks, -Eric From onur.yuksel@pashainternational.com Sat Jan 9 06:34:32 2010 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o09CYUG9147059 for ; Sat, 9 Jan 2010 06:34:32 -0600 X-ASG-Debug-ID: 1263040342-67b302df0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.pashainternational.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 44AB2155238 for ; Sat, 9 Jan 2010 04:32:23 -0800 (PST) Received: from mail.pashainternational.com (cpe-212-175-252-252.ari.net.tr [212.175.252.252]) by cuda.sgi.com with ESMTP id IjOCuU3lsLvVDFag for ; Sat, 09 Jan 2010 04:32:23 -0800 (PST) Received: from tel43d7a70afe3 ([212.175.49.14]) by mail.pashainternational.com (Pasha Gaming Mail Server) with ASMTP id RLC66222; Sat, 09 Jan 2010 11:45:22 +0100 From: "M. Onur Yuksel" To: X-ASG-Orig-Subj: Golden Tulip Nicosia Hotel & Casino Subject: Golden Tulip Nicosia Hotel & Casino Date: Sat, 9 Jan 2010 12:44:32 +0200 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_00D5_01CA9129.9BE8EAA0" X-Mailer: Microsoft Office Outlook, Build 11.0.5510 Thread-Index: Acp/AxzKR25mEcisQ1KDPAOUy5u8kgBmOm+AAAAIumAA/GE+IAAAE8QgAACevVAAAEr2sABeY+lgAsCrT6AAAVuggAABV7fA X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 Message-ID: 8dd91ef68a6d9b3f7e2093ab249c9baa X-Barracuda-Connect: cpe-212-175-252-252.ari.net.tr[212.175.252.252] X-Barracuda-Start-Time: 1263040524 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. ------=_NextPart_000_00D5_01CA9129.9BE8EAA0 Content-Type: multipart/related; boundary="----=_NextPart_001_00D6_01CA9129.9BE8EAA0" ------=_NextPart_001_00D6_01CA9129.9BE8EAA0 Content-Type: multipart/alternative; boundary="----=_NextPart_002_00D7_01CA9129.9BE8EAA0" ------=_NextPart_002_00D7_01CA9129.9BE8EAA0 Content-Type: text/plain; charset="iso-8859-9" Content-Transfer-Encoding: quoted-printable Sn. Yetkili ;=20 =20 =D6ncelikle Golden Tulip Nicosia Hotel olarak g=FCzel g=FCnler dileriz.=20 =20 Kuzey K=FDbr=FDs Lefko=FEa'n=FDn en prestijli caddesi Dereboyu'nda, = Lefko=FEa'n=FDn ilk uluslararas=FD zincir oteli olan Golden Tulip Nicosia, odalarda sabun- = =FEampuan Azzaro Paris, genel mekanlarda Thierry Mugler =FCr=FCnler, pe=E7eteler = Mank - Almanya , =C7ok =F6zel sofra aksesuarlar=FD, bak=FDml=FD, ho=FE = tav=FDrl=FD =E7al=FD=FEma ekibi ile size ve konuklar=FDn=FDza zevk ve konfor'u ya=FEatmaktan mutluluk = duyacakt=FDr. =20 Konaklama fiyatlar=FDm=FDz i=E7in l=FCtfen irtibata ge=E7iniz. =20 =20 =20 =20 =20 No virus found in this incoming message. Checked by AVG - www.avg.com Version: 8.5.430 / Virus Database: 270.14.118/2584 - Release Date: = 12/23/09 19:02:00 ------=_NextPart_002_00D7_01CA9129.9BE8EAA0 Content-Type: text/html; charset="iso-8859-9" Content-Transfer-Encoding: quoted-printable

Sn. = Yetkili  ;

&nbs= p;

=D6ncelikle Golden Tulip Nicosia Hotel = olarak g=FCzel g=FCnler dileriz.

 

Kuzey K=FDbr=FDs Lefko=FEa’n=FDn en prestijli = caddesi Dereboyu’nda, Lefko=FEa’n=FDn  ilk uluslararas=FD = zincir oteli olan Golden Tulip Nicosia, odalarda sabun- =FEampuan Azzaro Paris, genel = mekanlarda Thierry Mugler =FCr=FCnler, pe=E7eteler Mank – Almanya , =C7ok = =F6zel sofra aksesuarlar=FD, bak=FDml=FD, ho=FE tav=FDrl=FD =E7al=FD=FEma ekibi ile =  size ve konuklar=FDn=FDza zevk ve konfor’u ya=FEatmaktan mutluluk = duyacakt=FDr.

 

Konaklama fiyatlar=FDm=FDz i=E7in l=FCtfen = irtibata ge=E7iniz.  

 

 

 

 

No virus found in this incoming = message.
Checked by AVG - www.avg.com
Version: 8.5.430 / Virus Database: 270.14.118/2584 - Release Date: = 12/23/09 19:02:00

------=_NextPart_002_00D7_01CA9129.9BE8EAA0-- ------=_NextPart_001_00D6_01CA9129.9BE8EAA0 Content-Type: image/jpeg; name="image001.jpg" Content-Transfer-Encoding: base64 Content-ID: /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCACIAlgDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2Wiim o6PnY4bHXBzigB1FU3u38t5l8uOFCQZJOc444A965e+17UXv90U0cVtZOGmAyu9u0XfLHIzjpwOS eLjByJckjtKha7tkYq08QI6gsMiueEmrzg3GqWNyISuRDbXCKFH+1kqSfxxVyx1K5W1RI9EvN2Dj IjjBHbPzemO1NwsHMbKSJIoaNlZT3U5FOrGbUDYwyXdwkfmzyCKO1gbcWk54z/e9fQD2q5HHqJaK SWeJTn95EqZXHoD1z7/pUuNh3LtFNZlRSzEKoGSSelZsF/dalC1xYRxpb4/dSTg/vvcAdFPY/p6p K4XNSimRlyilwA2PmAOcGn0hhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRTFdWZlVgSn3gD0+tPo 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 Vqf/AEDIv/An/wCxrmtev/EUMGnPH9ojmNqHmit4Sd03HyhgrDPX5Tge9arahf2+sXsssFw9pDp6 SpGsecyZbcowOW6cc0cml9A5tTQ+1an/ANAyL/wJ/wDsaPtWp/8AQMi/8Cf/ALGsvwpe61Ktxa65 bypcLtmjdkABVhyoK8fKQR64xVXxHeeI4L7UF0pGaFLBXQ7DxJubOzCnc2McGhQ97l0Dn0ub32rU /wDoGRf+BP8A9jR9q1P/AKBkX/gT/wDY1ga/e6xDeOsUl9Cgsw9p9mt/ME0/OVf5Tjtxx1PpVnUY tYlvdG2Xd1bi4+W8SBVZIyELZyVOPmwOtHItNg5jW+06n/0DYv8AwK/+xo+1an/0DIv/AAJ/+xrA uLzVh42kgaW6SxEkPlqsbbGBX5uQhHXrlhWho+qXDarqFjfLc7/tb/Zy1uwTytoI+fGOu7vQ4WV7 Apa2L/2rU/8AoGRf+BP/ANjR9q1P/oGRf+BP/wBjWV4zvdXtLO2XSEm82SQlnij34AHC4weSSMdB xgkZra0+6e802G5MTxvJGGMcgwVPofxqWrRUrFX1sRfatT/6BkX/AIE//Y01pdQcgvpUDEdCbgHH /jtYvh+91OS7jOoS6gZykhu4XtQsEJB+UK2AenTG7PXik0PVddmv7s6hZ3MdvdRvNZ7oh+6wcBOO 5Xafmxzmq5LX20J59jd+1an/ANAyL/wJ/wDsaPtWp/8AQMi/8Cf/ALGuW0rUPEDabq3mm8lnjsy8 MjQ4/e4PygFAd3T5fmHvUusX/iW3aKSxjmlRdL3zRiLJMp4yOPvAkHb6A0/Za20Fz6XOrtZbuQsL m2SED7pWXfn9BVmuP1W81eMWgaW+giaw3h7W38xnuf7rDacD247810umPdSaZavfII7poVMyjoHx yPzrOUbK5ald2LdFFFQUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA f//Z ------=_NextPart_001_00D6_01CA9129.9BE8EAA0-- ------=_NextPart_000_00D5_01CA9129.9BE8EAA0 Content-Type: application/msword; name="Golden Tulip Nicosia Hotel-Fact Sheet.doc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Golden Tulip Nicosia Hotel-Fact Sheet.doc" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAAfgAAAAAAAAAA EAAAfAAAAAEAAAD+////AAAAAH8AAACAAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////s pcEAcWAfBAAA+BK/AAAAAAAAEAAAAAAABgAAbC0AAA4AYmpianFQcVAAAAAAAAAAAAAAAAAAAAAA AAAfBBYACnIAABM6AQATOgEAtgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAKQAAAAAAJIEAAAAAAAAkgQAAJIE AAAAAAAAkgQAAAAAAACSBAAAAAAAAJIEAAAAAAAAkgQAABQAAAAAAAAAAAAAAKYEAAAAAAAAjhgA AAAAAACOGAAAAAAAAI4YAAAAAAAAjhgAADQAAADCGAAAPAAAAKYEAAAAAAAAokcAAOIBAAAKGQAA TAAAAFYZAAAAAAAAVhkAAAAAAABWGQAAAAAAAFYZAAAAAAAA9xoAAAAAAAD3GgAAAAAAAPcaAAAA AAAA/UYAAAIAAAD/RgAAAAAAAP9GAAAAAAAA/0YAAAAAAAD/RgAAAAAAAP9GAAAAAAAA/0YAAAAA AACESQAAaAIAAOxLAABaAAAA/0YAAF0AAAAAAAAAAAAAAAAAAAAAAAAAkgQAAAAAAADLGwAAAAAA AAAAAAAAAAAAAAAAAAAAAADVGgAAIgAAAPcaAAAAAAAAyxsAAAAAAADLGwAAAAAAAP9GAAAAAAAA AAAAAAAAAACSBAAAAAAAAJIEAAAAAAAAVhkAAAAAAAAAAAAAAAAAAFYZAAB/AQAAXEcAABYAAAD9 IAAAAAAAAP0gAAAAAAAA/SAAAAAAAADLGwAAMAQAAJIEAAAAAAAAVhkAAAAAAACSBAAAAAAAAFYZ AAAAAAAA/UYAAAAAAAAAAAAAAAAAAP0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAyxsAAAAAAAD9RgAAAAAAAAAAAAAAAAAA/SAAAAAAAAD9IAAA UgEAAA1DAAD0AAAAkgQAAAAAAACSBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7UUAAAAAAABWGQAAAAAAAP4YAAAMAAAAQGhcm8UK ygEAAAAAAAAAAI4YAAAAAAAA+x8AALIAAAABRAAAHgAAAAAAAAAAAAAA4UYAABwAAAByRwAAMAAA AKJHAAAAAAAAH0QAAM4BAABGTAAAAAAAAK0gAABGAAAARkwAADwAAADtRQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAEZMAAAAAAAAAAAAAAAAAACSBAAAAAAAAO1FAAD0AAAA9xoAACIAAAAZGwAAGAAAAP0g AAAAAAAAMRsAABQAAABFGwAAhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9xoA AAAAAAD3GgAAAAAAAPcaAAAAAAAA/0YAAAAAAAD/RgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA8yAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPcaAAAA AAAA9xoAAAAAAAD3GgAAAAAAAKJHAAAAAAAAyxsAAAAAAADLGwAAAAAAAMsbAAAAAAAAyxsAAAAA AAAAAAAAAAAAAKYEAAAAAAAApgQAAAAAAACmBAAAJBMAAMoXAADEAAAApgQAAAAAAACmBAAAAAAA AKYEAAAAAAAAyhcAAAAAAACmBAAAAAAAAKYEAAAAAAAApgQAAAAAAACSBAAAAAAAAJIEAAAAAAAA kgQAAAAAAACSBAAAAAAAAJIEAAAAAAAAkgQAAAAAAAD/////AAAAAAIADAEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAIABT AEgAQQBQAEUAIAAgAFwAKgAgAE0ARQBSAEcARQBGAE8AUgBNAEEAVAAgABQACAABABUADQANAE8A ZABhACAAQgBpAGwAZwBpAGwAZQByAGkACQA6AA0AVABvAHAAbABhAG0AIABPAGQAYQAgAFMAYQB5 ADEBcwAxAQkAOgAxADMAOQANAEsAYQB0ACAAUwBhAHkAMQFzADEBCQAJADoAIAAxADAADQBTAHQA YQBuAGQAYQByAGQAIABPAGQAYQAgAFMAYQB5ADEBcwAxAQkAOgAgADEAMQAyAA0AUwB1AGkAdAAg AFMAYQB5ADEBcwAxAQkACQA6ACAANgANAEsA9gBfAWUAIABPAGQAYQBsAGEAcgAJAAkAOgAgADIA MAANAEsAcgBhAGwAIABEAGEAaQByAGUAcwBpADoACQAJADoAIAAxAA0ATwB0AGUAbABkAGUAbgAg AMcAMQFrADEBXwEgAFMAYQBhAHQAaQAJADoAIAAxADMAOgAwADAADQANAE8AdABlAGwAIABIAGkA egBtAGUAdABsAGUAcgBpADoAIAANAMcAYQBtAGEAXwExAXIAaABhAG4AZQAgAHYAZQAgAEsAdQBy AHUAIABUAGUAbQBpAHoAbABlAG0AZQAgAEgAaQB6AG0AZQB0AGkADQAyADQAIABzAGEAYQB0ACAA TwBkAGEAIABTAGUAcgB2AGkAcwBpAA0ASABhAHYAYQBsAGkAbQBhAG4AMQFuAGEAIABVAGwAYQBf ATEBbQAgACgAaQBzAHQAZQBrACAA/AB6AGUAcgBpAG4AZQApAA0ARABvAGsAdABvAHIAKABpAHMA dABlAGsAIAD8AHoAZQByAGkAbgBlACkADQBNAGUAcwBzAGUAbgBnAGUAcgAgAFMAZQByAHYAaQBj AGUADQBJAG4AdABlAHIAbgBlAHQADQBHAPwAbgBsAPwAawAgAEcAYQB6AGUAdABlAA0ATwBkAGEA bABhAHIAZABhACAAUwBhAB8BbAAxAWsAIABEAGEAbgAxAV8BbQBhACAASABhAHQAdAAxASAADQBC AHUAcwBpAG4AZQBzAHMAIABDAGUAbgB0AGUAcgANAEgAZQByACAAZwD8AG4AIAAxADcAOgAwADAA IAB5AGUAIABrAGEAZABhAHIAIABiAGkAcgAgAGcA9gBtAGwAZQBrACAAdgBlACAAcABhAG4AdABv AGwAbwBuACAA/AB0APwAIABzAGUAcgB2AGkAcwBpACAA/ABjAHIAZQB0AHMAaQB6AC4ADQANAFoA ZQB2AGsAIAB2AGUAIABLAG8AbgBmAG8AcgAJADoADQBQAGUA5wBlAHQAZQBsAGUAcgAgAC0AQQBs AG0AYQBuAHkAYQANAE8AZABhACAAcwBhAGIAdQBuACAAXwFhAG0AcAB1AGEAbgAsACAAQQB6AHoA YQByAG8AIAATICAAUABhAHIAaQBzACwADQBEAPwAbgB5AGEAYwBhACAA/ABuAGwA/AAgAEsAMQFi AHIAMQFzACAAcABhAHQAYQB0AGUAcwBpACwADQBPAHQAZQBsAGkAbQBpAHoAIABnAGUAbgBlAGwA aQBuAGQAZQAgAHQA/ABtACAAZAD8AG4AeQBhAGQAYQAgAHMAYQB5AGcAMQEgAGcA9gByAGUAbgAg AFQA/AByAGsAIAB0AGUAawBzAHQAaQBsAGkALAANAEQA/ABuAHkAYQBjAGEAIAD8AG4AbAD8ACAA 5wBhAHkAbABhAHIAIABsAG8AYgBiAHkAIAA1ACAA5wBhAHkAMQFuAGQAYQAsAA0AxwBvAGsAIAD2 AHoAZQBsACAAcwBvAGYAcgBhACAAYQBrAHMAZQBzAHUAYQByAGwAYQByADEBLAANAEYAaQBuAGUA IABkAGkAbgBpAG4AZwAgAHMAdQBsAGEAcgAgACgAUwBhAG4AIABQAGUAbABsAGUAZwByAGkAbgBv ACwAIABBAHEAdQBhACAAUABhAG4AbgBhACwAIABQAGUAcgByAGkAZQByACkADQANAEsAbwBuAHUA bQAJAAkAOgANAEwAZQBmAGsAbwBfAWEAGSBuADEBbgAgAGsAYQBsAGIAaQAgAGsAbwBuAHUAbQB1 AG4AZABhAGsAaQAgAGUAbgAgAGUAbABpAHQAIABjAGEAZABkAGUAcwBpACAARABlAHIAZQBiAG8A eQB1ABkgbgBkAGEAIABMAGUAZgBrAG8AXwFhAG4AMQFuACAAaQBfASwAIABmAGkAbgBhAG4AcwAs ACAAcwBhAG4AYQB0ACwAIABrAPwAbAB0APwAcgAsACAAZQAfAWwAZQBuAGMAZQAsACAAZABlAHYA bABlAHQAIABkAGEAaQByAGUAbABlAHIAaQAsACAAdgBlACAAYgBhAGsAYQBuAGwAMQFrAGwAYQBy AGEAIABzAGEAZABlAGMAZQAgAHkA/AByAPwAbQBlACAAbQBlAHMAYQBmAGUAcwBpAG4AZABlACwA IABoAGEAeQBhAHQAMQFuACAAdABhAG0AIABvAHIAdABhAHMAMQFuAGQAYQAuAA0ADQBVAGwAYQBf ATEBbQAJAAkACQA6AA0ARQByAGMAYQBuACAASABhAHYAYQBsAGkAbQBhAG4AMQFuAGEACQAxADUA IABkAGsADQBeAWUAaABpAHIAIABNAGUAcgBrAGUAegBpAAkACQB5APwAcgD8AG0AZQAgAG0AZQBz AGEAZgBlAHMAaQANAE8AdABvAGIA/ABzACAACQAJAHkA/AByAPwAbQBlACAAbQBlAHMAYQBmAGUA cwBpAA0ARwBpAHIAbgBlACAAXgFlAGgAaQByACAATQBlAHIAawBlAHoAaQAJADEANQAgAGQAawAN AEQAZQB2AGwAZQB0ACAASABhAHMAdABhAG4AZQBzAGkACQA1ACAAIAAgAGQAawANAEIAYQBrAGEA bgBsADEBawBsAGEAcgAJAAkANQAgACAAIABkAGsADQBPAHIAZwBhAG4AaQB6AGUAIABTAGEAbgBh AHkAaQAJADUAIAAgACAAZABrAA0AWQBhAGsAMQFuACAARABvAB8BdQAgANwAbgBpAC4ACQA1ACAA IAAgAGQAawANAA0ATwB0AGUAbAAgANYAegBlAGwAbABpAGsAbABlAHIAaQAJADoADQBLAHUAegBl AHkAIABLADEBYgByADEBcwAZIDEBbgAgAGkAbABrACAAHCBCAHUAcwBpAG4AZQBzAHMAIABGAHIA aQBlAG4AZABsAHkAIABPAHQAZQBsAB0gaQANAEEAbAAxAV8BdgBlAHIAaQBfASAATQBlAHIAawBl AHoAbABlAHIAaQBuAGkAbgAgAHQAYQBtACAAaQDnAGkAbgBkAGUADQBLAHUAegBlAHkAIABLADEB YgByADEBcwAxAW4AIABlAG4AIABwAHIAZQBzAHQAaQBqAGwAaQAgAGMAYQBkAGQAZQBzAGkAIABE AGUAcgBlAGIAbwB5AHUAbgBkAGEADQBUAG8AcABsAGEAbQAgADYAIABhAGQAZQB0ACAAVABvAHAA bABhAG4AdAAxASAAcwBhAGwAbwBuAHUADQAyADUAMAAgAG0AMgAgAGkAbABlACAATABlAGYAawBv AF8BYQAZIG4AMQFuACAAZQBuACAAYgD8AHkA/ABrACAAeQD8AHoAbQBlACAAaABhAHYAdQB6AHUA DQBMAGUAZgBrAG8AXwFhAG4AMQFuACAAZQBuACAAYgD8AHkA/ABrACAAegBpAHkAYQBmAGUAdAAg AGEAbABhAG4AMQEgACgAMQA1ADAAMAAgAGsAaQBfAWkAbABpAGsAIABLAG8AawB0AGUAeQBsACwA IAA4ADAAMAAgAGsAaQBfAWkAbABpAGsAIABnAGEAbABhACAAeQBlAG0AZQAfAWkAIABkAPwAegBl AG4AaQANAFMAcABhACwAIABGAGkAdABuAGUAcwBzACAAQwBlAG4AdABlAHIALAAgAE0AYQBzAGEA agAsACAAUwBhAHUAbgBhACwAIABQAHIAaQB2AGEAdABlACAASABhAG0AYQBtACAAKAAgADQAIABr AGkAXwFpAGwAaQBrACkADQBCAGEAeQAsACAAQgBhAHkAYQBuACAASwB1AGEAZgD2AHIA/AANAEwA ZQBmAGsAbwBfAWEAbgAxAW4AIABpAGwAawAgAFUAbAB1AHMAbABhAHIAIABhAHIAYQBzADEBIABP AHQAZQBsAGwAZQByACAAegBpAG4AYwBpAHIAaQAgAPwAeQBlAHMAaQAoAEcAbwBsAGQAZQBuACAA VAB1AGwAaQBwACAATgBpAGMAbwBzAGkAYQApAA0ADQBSAGUAcwB0AGEAdQByAGEAbgB0AHMACQAJ ADoADQBRAHUAZQBuAHQAZQAgAEIAUgBBAFMASQBMAEwASQBBAE4AIABSAGUAcwB0AGEAdQByAGEA bgB0ACAAMQAwADAAIABrAGkAXwFpAGwAaQBrACAARgB1AG4AIAByAGUAcwB0AGEAdQByAGEAbgB0 AA0ATQBhAGkAbgAgAFIAZQBzAHQAYQB1AHIAYQBuAHQALAAgADEANAAwACAAawBpAF8BaQBsAGkA awAgACAARwByAGUAbgBhAGQAYQAgAFIAZQBzAHQAYQB1AHIAYQBuAHQAIAANAC0AIABFAG4AZQBy AGcAaQBzAGkAbgBnACAAQgByAGUAYQBrAGYAYQBzAHQAIAANAC0AIABTAHAAAAYAAAIIAAAwCAAA MggAADQIAAA2CAAAOAgAADoIAAA8CAAAVggAAFoIAABcCAAAiAgAAKwIAADeCAAAIAkAACQJAACG CQAApAkAAKoJAADgCQAA5AkAAEYKAABkCgAAHgsAACALAABeCwAAYAsAAGILAABuCwAAxgsAAMgL AADKCwAAzAsAANwLAADsCwAA7gsAAAIMAAAEDAAABgwAABQMAAA8DAAAVgwAAFgMAABaDAAApg0A APwNAAD38/fl3ffZ1Mm+ybq2ura6tq7Jtqq2praitqK2oraitp6UjYZ/nn+ee557nnt3AAAAAAYW aH5eIwAABhZotyvoAAAMFWjaKjUAFmjaKjUAAAwWaNoqNQA1CIE+KgEADBZotyvoADUIgT4qAQAS FWjaKjUAFmjaKjUANQiBPioBAAYWaNoqNQAABhZoojluAAAGFmibWFsAAAYWaGs8JwAADxZoNEIJ ADUIgTsIgT4qAQYWaEgIKgAABhZocUOOAAAVFWg0QgkAFmg0QgkANQiBOwiBPioBFRVoNEIJABZo SAgqADUIgTsIgT4qAQkWaDRCCQA1CIEGFmg0QgkAAA8DagAAAAAWaB9GPABVCAEaA2oAAAAAFmje LGgAVQgBbUgABG5IAAR1CAEABhZo3ixoAAAPA2oAAAAAFmjeLGgAVQgBAC4ABgAAOggAADwIAABc CAAAiggAAKwIAADgCAAAAgkAACYJAABMCQAAhAkAAIYJAACqCQAA9gkAAB4KAABmCgAAkgoAALYK AADICgAA5AoAACILAABCCwAAygsAAMwLAADuCwAA9wAAAAAAAAAAAAAAAPIAAAAAAAAAAAAAAADq AAAAAAAAAAAAAAAA6gAAAAAAAAAAAAAAAOoAAAAAAAAAAAAAAADqAAAAAAAAAAAAAAAA6gAAAAAA AAAAAAAAAOoAAAAAAAAAAAAAAADqAAAAAAAAAAAAAAAA6gAAAAAAAAAAAAAAAOoAAAAAAAAAAAAA AADqAAAAAAAAAAAAAAAA3wAAAAAAAAAAAAAAAN8AAAAAAAAAAAAAAADfAAAAAAAAAAAAAAAA3wAA AAAAAAAAAAAAAN8AAAAAAAAAAAAAAADfAAAAAAAAAAAAAAAA3wAAAAAAAAAAAAAAAN8AAAAAAAAA AAAAAADfAAAAAAAAAAAAAAAA3wAAAAAAAAAAAAAAANcAAAAAAAAAAAAAAADXAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAcAABJkaAEBAGdk2io1AAsAAAomAAtGAQASZGgBAQBnZDRCCQAA BwAAEmRoAQEAZ2Q0QgkAAAQAAGdkczzAAAAHAAADJAFhJAFnZDRCCQAAGAAGAABsLQAA/QAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAQEB7gsAABQMAABaDAAAlgwA AAoNAABUDQAAjg0AAP4NAAAADgAAEg4AAI4PAACQDwAApg8AANgPAAAWEAAASBAAAHwQAACsEAAA 1BAAAAIRAAAwEQAAMhEAAFgRAAC0EQAA+hEAAPQAAAAAAAAAAAAAAAD0AAAAAAAAAAAAAAAA9AAA AAAAAAAAAAAAAPQAAAAAAAAAAAAAAAD0AAAAAAAAAAAAAAAA9AAAAAAAAAAAAAAAAPQAAAAAAAAA AAAAAADoAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAA 4AAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAOAAAAAA AAAAAAAAAADgAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAADgAAAAAAAAAAAA AAAA4AAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAADVAAAAAAAAAAAAAAAA1QAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAACwAACiYAC0YCABJkaAEBAGdkNEIJAAAHAAASZGgBAQBnZDRCCQAACwAAD4TQ AhJkaAEBAF6E0AJnZNoqNQALAAAKJgALRgwAEmRoAQEAZ2TaKjUAABj8DQAA/g0AAAAOAAASDgAA Xg4AAG4OAAB+DgAAhg4AAJAPAACgDwAAog8AAKYPAADYDwAAFBAAACYQAABGEAAAohAAAKYQAACs EAAA0hAAANQQAAAAEQAAAhEAADIRAABYEQAAshEAALQRAACUEgAAlhIAAHoTAACSEwAAChQAABgU AABCFAAA1BQAANYUAADeFAAA7BQAAPAUAAD0FAAAFhUAABgVAAAsFQAAThUAAGIVAABkFQAAbhUA AIIVAACmFQAAsBUAAMQVAADIFQAA4BUAAAAWAAAAIgAAXCIAAPz16ubi5uLm6trq5tbm1ubW5tbP 1ubWxMDWwLzAvMC8wLy1qp/aqrzAmMCQwLyQvMCQwLzAjsAAAAAAAANVCAEPFWibWFsAFmibWFsA PioBDBVoIHAbABZoIHAbAAAVFWg0QgkAFmibWFsANQiBOwiBPioBFRVoNEIJABZoIHAbADUIgTsI gT4qAQwWaNJROwA1CIE+KgEABhZom1hbAAAGFmggcBsAABUVaDRCCQAWaNR/PwA1CIE7CIE+KgEM FWhICCoAFmhICCoAAAYWaNR/PwAADxZoNEIJADUIgTsIgT4qAQYWaKI5bgAABhZoSAgqAAAVFWg0 QgkAFmhICCoANQiBOwiBPioBDBVo2io1ABZo2io1AAAGFmi3K+gAN/oRAABaEgAAlhIAAPASAACg EwAAHBQAAEIUAADUFAAA1hQAAPQUAABkFQAAyBUAAPgVAAAUIgAAXCIAANoiAADcIgAA8CIAAIgj AACyIwAA/iMAACYkAAD0AAAAAAAAAAAAAAAA9AAAAAAAAAAAAAAAAPQAAAAAAAAAAAAAAAD0AAAA AAAAAAAAAAAA9AAAAAAAAAAAAAAAAPQAAAAAAAAAAAAAAAD0AAAAAAAAAAAAAAAA7AAAAAAAAAAA AAAAAOwAAAAAAAAAAAAAAADhAAAAAAAAAAAAAAAA4QAAAAAAAAAAAAAAANEAAAAAAAAAAAAAAADR AAAAAAAAAAAAAAAAxQAAAAAAAAAAAAAAAMUAAAAAAAAAAAAAAADsAAAAAAAAAAAAAAAA7AAAAAAA AAAAAAAAALoAAAAAAAAAAAAAAAC6AAAAAAAAAAAAAAAAugAAAAAAAAAAAAAAALoAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAsAAAomAAtGBgASZGgBAQBnZDRCCQAACwAAD4RoARJkaAEBAF6EaAFnZDRC CQAADwAAD4RoARGEXAESZGgBAQBehGgBYIRcAWdkNEIJAAsAAAomAAtGAwASZGgBAQBnZDRCCQAA BwAAEmRoAQEAZ2Q0QgkACwAACiYAC0YCABJkaAEBAGdkNEIJAAAVbwByAHQAIABMAHUAbgBjAGgA DQAJAC0AIABNAPwAawBlAG0AbQBlAGwAIABTAGUAcgB2AGkAcwAgAGkAbABlACAAQQBrAF8BYQBt ACAAWQBlAG0AZQAfAWkADQAJAC0AIABQAG8AbABhAG4AYwBvACAAUABvAG8AbAAgAHIAZQBzAHQA YQB1AHIAYQBuAHQALAAgADgAMAAgAGsAaQBfAWkAbABpAGsAIABMAHUAbgBjAGgAIAAmACAARABp AG4AbgBlAHIAIAAoAEMAYQBzAHUAYQBsACkADQANAEIAQQBSAFMACQAJAAkACQA6AA0AUABhAHMA aQBsAGwAbwAgAEwAbwBiAGIAeQAgAEIAYQByACAAKABoAGUAcgAgAGcA/ABuACAAcwBhAGEAdAAg ADUAIADnAGEAeQAgAHMAYQBhAHQAaQAgAPYAegBlAGwAIABiAGkAcwBrAPwAdgBpAGwAZQByACwA IADnAGEAeQAgAG0A/AB6AGkAawBsAGUAcgBpACkADQBMAG8AYgBiAHkAGSBkAGUAIABjAGEAbgBs ADEBIABtAPwAegBpAGsADQBQAG8AbwBsACAAQgBhAHIAcwAsACAAbQBlAHkAdgBlACAAcwBlAHIA dgBpAHMAaQAgAGkAbABlACAAYgBlAHIAYQBiAGUAcgAgAA0AMgA0ACAAcwBhAGEAdAAgAFIAbwBv AG0AIABTAGUAcgB2AGkAcwANAA0AUwBQAE8AUgAgACYAIABFAB4BTABFAE4AQwBFAAkAOgANAEYA aQB0AG4AZQBzAHMAIABDAGUAbgB0AGUAcgAoAPwAeQBlAGwAZQByAGUAIAD2AHoAZQBsACkAIAD2 AHoAZQBsACAAZQAfAWkAdABtAGUAbgBsAGUAcgAgAGUAXwFsAGkAHwFpAG4AZABlAA0ASwBpAF8B aQB5AGUAIAD2AHoAZQBsACAASABhAG0AYQBtACgANAAgAGsAaQBfAWkAbABpAGsAKQAgADIAIABh AGQAZQB0AA0AUwBhAHUAbgBhAGwAYQByAA0AMgA1ADAAIABtADIAIABoAGEAdgB1AHoADQBNAGEA cwBhAGoAIABTAGEAbABvAG4AbABhAHIAMQENAFkAYQB6ACAAYQB5AGwAYQByADEBbgBkAGEAIAD8 AG4AbAD8ACAARABKABkgbABlAHIAbABlACAAXwFlAGgAcgBpAG4AIABlAG4AIABrAGEAcgBpAHoA bQBhAHQAaQBrACAAaABhAHYAdQB6ACAAYgBhAF8BMQEgAGEAawBfAWEAbQBsAGEAcgAxASgAMQAu ADAAMAAwACAAawBpAF8BaQApAA0AWQBhAHoAIABhAHkAbABhAHIAMQFuAGQAYQAgAGcA/ABuAGQA /AB6ACAAaABhAHYAdQB6ACAAYgBhAF8BMQEgAEIAZQBhAGMAaAAgAEMAbAB1AGIADQANAEwARQBG AEsATwBeAUEAGSBEAEEAIABHAEUAWgAwAUwARQBDAEUASwAgAFkARQBSAEwARQBSAA0AUwBlAGwA aQBtAGkAeQBlACAAQwBhAG0AaQANAEcAaQByAG4AZQAgAEsAYQBwADEBcwAxAQ0ASwB1AG0AYQBy AGMAMQFsAGEAcgAgAEgAYQBuADEBDQBCAPwAeQD8AGsAIABIAGEAbgANAFYAZQBuAGUAZABpAGsA IABTAPwAdAB1AG4AdQANAE0AZQB2AGwAZQB2AGkAIABNAPwAegBlAHMAaQANAEQAZQByAHYAaQBf ASAAUABhAF8BYQAgAEsAbwBuAGEAHwExAQ0ARQByAG0AZQBuAGkAIABLAGkAbABpAHMAZQBzAGkA DQBTAGEAYwBhAGsAbAAxASAARQB2AA0AQQByAGEAcAAgAEEAaABtAGUAdAAgAEMAYQBtAGkAcwBp AA0ADQDWAFoARQBMACAARwDcAE4ATABFAFIAIABWAEUAIABZAEUAUgBFAEwAIABFAFQASwAwAU4A TABFAFIAOgANADIAMAAgAFQAZQBtAG0AdQB6AA0AMQA1ACAASwBhAHMAMQFtACwAIABLAEsAVABD ACAAQwB1AG0AaAB1AHIAaQB5AGUAdAAgAEIAYQB5AHIAYQBtADEBDQBMAGUAZgBrAG8AXwFhACAA XgFlAGgAaQByACAARgBlAHMAdABpAHYAYQBsAGkADQBMAGUAZgBrAG8AXwFhACAAVABpAHkAYQB0 AHIAbwAgAEYAZQBzAHQAaQB2AGEAbABpACwADQBHAPYAbgB5AGUAbABpACAARgBlAHMAdABpAHYA YQBsAGkALgANAA0ADQANAA0ARABpAB8BZQByACAAUABhAHMAaABhACAARwByAG8AdQBwACAAXgFp AHIAawBlAHQAbABlAHIAaQAJADoADQBNAGkAcgBhAGcAZQAgAEgAbwB0AGUAbAAgACYAIABDAGEA cwBpAG4AbwAtACAAUwB1AHIAaQBuAGEAbQBlAA0AVAByAG8AcABpAGMAYQBuAGEAIABIAG8AdABl AGwAIAAmACAAQwBhAHMAaQBuAG8ALQBTAHUAcgBpAG4AYQBtAGUADQBTAGEAdgBhAG4AbgBhAGgA IABDAGEAcwBpAG4AbwAtACAAUwB1AHIAaQBuAGEAbQBlAA0AQQBjAGEAcAB1AGwAYwBvACAAQwBh AHMAaQBuAG8ALQAgAEsAMQFiAHIAMQFzACAADQBDAGEAcwBpAG4AbwAgAFMAaQBtAGIAYQAgAC0A VQBnAGEAbgBkAGEAIAANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQAN AA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ARABlAHIAZQBiAG8AeQB1ACwA IAB0AGgAZQAgAHAAcgBlAHMAdABpAGcAaQBvAHUAcwAgAFMAdAByAGUAZQB0ACwAIABOAGkAYwBv AHMAaQBhACwAIABOAG8AcgB0AGgAIABDAHkAcAByAHUAcwANAFQAOgAgACsAOQAwACAAMwA5ADIA IAA2ADEAMAAgADUAMAAgADUAMAAsACAARgA6ACAAKwA5ADAAIAAzADkAMgAgADYAMQAwACAANQAw ACAANgA0AA0AEwAgAEgAWQBQAEUAUgBMAEkATgBLACAAIgBtAGEAaQBsAHQAbwA6AGcAbwBsAGQA ZQBuAHQAdQBsAGkAcABuAGkAYwBvAHMAaQBhAC4AYwBvAG0AIgAgAAEAFABnAG8AbABkAGUAbgB0 AHUAbABpAHAAbgBpAGMAbwBzAGkAYQAuAGMAbwBtABUAIAAgACAAIAATACAASABZAFAARQBSAEwA SQBOAEsAIAAiAG0AYQBpAGwAdABvADoAaQBuAGYAbwBAAGcAbwBsAGQAZQBuAHQAdQBsAGkAcABu AGkAYwBvAHMAaQBhAC4AYwBvAG0AIgAgAAEAFABpAG4AZgBvAEAAZwBvAGwAZABlAG4AdAB1AGwA aQBwAG4AaQBjAG8AcwBpAGEALgBjAG8AbQAVACAAIAAgACAAEwAgAEgAWQBQAEUAUgBMAEkATgBL ACAAIgBtAGEAaQBsAHQAbwA6AHMAYQBsAGUAcwBAAGcAbwBsAGQAZQBuAHQAdQBsAGkAcABuAGkA YwBvAHMAaQBhAC4AYwBvAG0AIgAgAAEAFABzAGEAbABlAHMAQABnAG8AbABkAGUAbgB0AHUAbABp AHAAbgBpAGMAbwBzAGkAYQAuAGMAbwBtABUADQANAEkAbgB0AGUAcgBuAGEAdABpAG8AbgBhAGwA IABzAHQAYQBuAGQAYQByAGQAcwAsACAAbABvAGMAYQBsACAAZgBsAGEAdgBvAHUAcgBzAA0ADQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXCIAAHwiAACQIgAA2CIAANoiAADcIgAA 6iIAAOwiAADuIgAA8CIAAPQiAAD8IgAA/iIAADQjAACEIwAAJiQAACgkAABEJAAASCQAAEokAABm JAAAuCQAAM4kAAAAJQAAEiUAACwlAABIJgAAgCYAAJomAACcJgAApicAAKgnAADmJwAACigAADwo AAA+KAAAUCgAAFooAABcKAAAbigAAH4oAACOKAAAkCgAAKQoAAC2KAAAyCgAAMooAADSKAAA3CgA AN4oAAD89Pzw5tzV3M7Kw8q/yr+7tNW0v7DKsL+wv7Ssv6yl1ayhrLCssKywrLCssKydlo+FAAAA AAAAAAAAAAAAAAAAAAASFWjKGV0AFmjKGV0ANQiBPioBAAwWaEVk4wA1CIE+KgEADBZoL07jADUI gT4qAQAGFmhICCoAAAYWaGNrCwAADBZo1HdXADUIgT4qAQAGFmiEaJQAAAYWaOw1kwAADBZolHQG ADUIgT4qAQAGFmi+UUcAAAYWaJR0BgAADBVolHQGABZolHQGAAAGFmibWFsAAAwWaDw84QA1CIE+ KgEADBZohGiUADUIgT4qAQASFWg8POEAFmg8POEANQiBPioBABIVaJR0BgAWaDw84QA1CIE+KgEA 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 CUNKHgBhSh4AcGgAAIAAAB0VaLY0iwAWaN9V0QBCKglDSh4AYUoeAHBoAACAACAVaLY0iwAWaN9V 0QA1CIFCKglDSh4AYUoeAHBoAACAAAAaFmjfVdEANQiBQioJQ0oUAGFKFABwaAAAgAAALwIIgQNq kgIAAAYIARVotjSLABZo31XRADUIgUIqCUNKFABVCAFhShQAcGgAAIAALwIIgQNqhwEAAAYIARVo tjSLABZo31XRADUIgUIqCUNKFABVCAFhShQAcGgAAIAAIBVotjSLABZo31XRADUIgUIqCUNKFABh ShQAcGgAAIAAACQVaLY0iwAWaN9V0QAwShEANQiBQioJQ0oUAGFKFABwaAAAgAAAKQNqAAAAABVo tjSLABZo31XRADUIgUIqCUNKFABVCAFhShQAcGgAAIAALwIIgQNqkAAAAAYIARVotjSLABZo31XR ADUIgUIqCUNKFABVCAFhShQAcGgAAIAAABhqLQAAbC0AAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAGFmjfVdEAATIAMZBoATpwNEIJAB+wgi4gsMZBIbCJBSKwiQUjkM8C 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAA AABEAGQAAAAAAAAAAgAAAAAAAAAAAAAAAAA4E3AIFgMWAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAADwAE8EQAAACyBArwCAAAAAEEAAAACgAAMwAL8BIAAAB/AEABQAEAARAA//8BAfD/ AAATACLxBgAAAD8FAQABAAAAEPAEAAAAAAAAgPcAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDJ6nn5us4RjIIAqgBLqQsC AAAAFwAAABcAAABnAG8AbABkAGUAbgB0AHUAbABpAHAAbgBpAGMAbwBzAGkAYQAuAGMAbwBtAAAA 4Mnqefm6zhGMggCqAEupC1QAAABtAGEAaQBsAHQAbwA6AGcAbwBsAGQAZQBuAHQAdQBsAGkAcABu AGkAYwBvAHMAaQBhAC4AYwBvAG0AAAB5WIH0Ox1/SK8sgl3EhSdjAAAAAKWrAAALAQAARAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AADQyep5+brOEYyCAKoAS6kLAgAAABcAAAAcAAAAaQBuAGYAbwBAAGcAbwBsAGQAZQBuAHQAdQBs AGkAcABuAGkAYwBvAHMAaQBhAC4AYwBvAG0AAADgyep5+brOEYyCAKoAS6kLXgAAAG0AYQBpAGwA dABvADoAaQBuAGYAbwBAAGcAbwBsAGQAZQBuAHQAdQBsAGkAcABuAGkAYwBvAHMAaQBhAC4AYwBv AG0AAAB5WIH0Ox1/SK8sgl3EhSdjAAAAAKWrAAAPAQAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQyep5+brOEYyCAKoAS6kL AgAAABcAAAAdAAAAcwBhAGwAZQBzAEAAZwBvAGwAZABlAG4AdAB1AGwAaQBwAG4AaQBjAG8AcwBp AGEALgBjAG8AbQAAAODJ6nn5us4RjIIAqgBLqQtgAAAAbQBhAGkAbAB0AG8AOgBzAGEAbABlAHMA QABnAG8AbABkAGUAbgB0AHUAbABpAHAAbgBpAGMAbwBzAGkAYQAuAGMAbwBtAAAAeViB9Dsdf0iv LIJdxIUnYwAAAAClqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGAhIAEgABAJwA DwAEAAAAAAAAAAAABAAIAAAACAAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABAAABA8f8CAEAADBQAAAAAAAAAAAYATgBvAHIAbQBhAGwAAAACAAAAGABDShgA X0gBBGFKGABtSB8Ec0gfBHRIHwQAAAAAAAAAAAAAAAAAAAAAAABSAEFA8v+hAFIADAUAAAAAAAAA AB0AVgBhAHIAcwBhAHkAMQFsAGEAbgAgAFAAYQByAGEAZwByAGEAZgAgAFkAYQB6ADEBIABUAGkA cABpAAAAAABSAGkA8/+zAFIADAUAAAAAAAAAAAwATgBvAHIAbQBhAGwAIABUAGEAYgBsAG8AAAAc ABf2AwAANNYGAAEKA2wANNYGAAEFAwAAYfYDAAACAAsAAAAsAGsA9P/BACwAAAUAAAAAAAAAAAkA TABpAHMAdABlACAAWQBvAGsAAAACAAwAAAAAAGIA/k/x//IAYgAMAAAAwR+KAAAABwBEAGUAZgBh AHUAbAB0AAAACwAPADckADgkAEgkAAAtAEIqAUNKGABPSgQAUUoEAF5KBABfSAEEYUoYAG1IHwRw aAAAAABzSB8EdEgfBABGAJkAAQACAUYADAUAAJtYWwAAAAsAQgBhAGwAbwBuACAATQBlAHQAbgBp AAAAAgAQABQAQ0oQAE9KBQBRSgUAXkoFAGFKEAAuAFVAogARAS4ADAQAAN9V0QAAAAUASwD2AHAA cgD8AAAADAA+KgFCKgJwaAAA/wAAAAAAtgwAAAQAAD4AAAAA/////wAAAAAdAAAAHgAAAC4AAABF AAAAVgAAAHAAAACBAAAAkwAAAKYAAADCAAAAwwAAANUAAAD7AAAADwEAADMBAABJAQAAWwEAAGQB AAByAQAAkQEAAKEBAADlAQAA5gEAAPcBAAAKAgAALQIAAEsCAACFAgAAqgIAAMcCAAD/AgAAAAMA AAkDAADHAwAAyAMAANMDAADsAwAACwQAACQEAAA+BAAAVgQAAGoEAACBBAAAmAQAAJkEAACsBAAA 2gQAAP0EAAAtBQAASwUAAHgFAADQBQAADgYAACEGAABqBgAAawYAAHoGAACyBgAA5AYAAPwGAAAK BwAALgcAAG0HAABuBwAAeAcAAMQHAADZBwAA/wcAABMIAAAUCAAAJQgAAFwIAACACAAAiQgAAJYI AACmCAAA+AgAACMJAAAkCQAAQAkAAE4JAABbCQAAawkAAHUJAACECQAAkwkAAKYJAAC2CQAAwQkA ANMJAADUCQAA8wkAAP0JAAAfCgAANwoAAFIKAABlCgAAZgoAAGcKAABoCgAAaQoAAIgKAACoCgAA ygoAAOQKAAD9CgAAEwsAABQLAAAVCwAAFgsAABcLAAAYCwAAGQsAABoLAAAbCwAAHAsAAB0LAAAe CwAAHwsAACALAAAhCwAAIgsAACMLAAAkCwAAJQsAACYLAAAnCwAAKAsAACkLAAAqCwAAKwsAACwL AAAtCwAALgsAAC8LAAAwCwAAMQsAADILAAAzCwAANAsAADULAAA2CwAANwsAADgLAAA5CwAAOgsA ADsLAABzCwAAngsAAIwMAACNDAAAtQwAALgMAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAA mAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAACAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAgACY AAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAACAAJgA AAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAgACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAA AAAwAAAAAAAAAIAAAACAAAAAAAAAAACAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAgACYAAAA ADAAAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAACAAJgAAAAA MAAAAAAAAACAAAAAgAAAAAAAAAAAgACYAAEgADAAAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAABIAAw AQAAAAAAAIAAAACAAAAAAAAAAACAAJgAASAAMAIAAAAAAACAAAAAgAAAAAAAAAAAgACYAAEgADAD AAAAAAAAgAAAAIAAAAAAAAAAAIAAmAABIAAwBAAAAAAAAIAAAACAAAAAAAAAAACAAJgAASAAMAUA AAAAAACAAAAAgAAAAAAAAAAAgACYAAEgADAGAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAABIAAwBwAA AAAAAIAAAACAAAAAAAAAAACAAJgAASAAMAgAAAAAAACAAAAAgAAAAAAAAAAAgACYAAEgADAJAAAA AAAAgAAAAIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAACAAJgAAAAAMAAAAAAA AACAAAAAgAAAAAAAAAAAgACYAAwgADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAMIAAwAQAAAAAA AIAAAACAAAAAAAAAAACAAJgADCAAMAIAAAAAAACAAAAAgAAAAAAAAAAAgACYAAwgADADAAAAAAAA gAAAAIAAAAAAAAAAAIAAmAAMIAAwBAAAAAAAAIAAAACAAAAAAAAAAACAAJgADCAAMAUAAAAAAACA AAAAgAAAAAAAAAAAgACYAAwgADAGAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAA AACAAAAAAAAAAACAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAgACYAAAAADAAAAAAAAAAgAAA AIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAACAAJgAAAAAMAAAAAAAAACAAAAA gAAAAAAAAAAAgACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAAAACA AAAAAAAAAACAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAgACYAAAAADAAAAAAAAAAgAAAAIAA AAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAACAAJgAAAAAMAAAAAAAAACAAAAAgAAA AAAAAAAAgACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAAAACAAAAA AAAAAACAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAgACYAAAAADAAAAAAAAAAgAAAAIAAAAAA AAAAAIAAmAACIAAwAAAAAAAAAIAAAACAAAAAAAAAAACAAJgAAiAAMAEAAAAAAACAAAAAgAAAAAAA AAAAgACYAAIgADACAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAACIAAwAwAAAAAAAIAAAACAAAAAAAAA AACAAJgAAiAAMAQAAAAAAACAAAAAgAAAAAAAAAAAgACYAAIgADAFAAAAAAAAgAAAAIAAAAAAAAAA AIAAmAACIAAwBgAAAAAAAIAAAACAAAAAAAAAAACAAJgAAiAAMAcAAAAAAACAAAAAgAAAAAAAAAAA gACYAAIgADAIAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAACA AJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAgACYAAMgADAAAAAAAAAAgAAAAIAAAAAAAAAAAIAA mAADIAAwAQAAAAAAAIAAAACAAAAAAAAAAACAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAgACY AAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAACAAJgA AAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAgACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAA AAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgABiAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAYg ADABAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAGIAAwAgAAAAAAAIAAAACAAAAAAAAAAAAAAJgABiAA MAMAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAw AAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAByAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAcgADAB AAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAHIAAwAgAAAAAAAIAAAACAAAAAAAAAAAAAAJgAByAAMAMA AAAAAACAAAAAgAAAAAAAAAAAAACYAAcgADAEAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAHIAAwBQAA AAAAAIAAAACAAAAAAAAAAAAAAJgAByAAMAYAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAA AAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAByAAMAcAAAAA AACAAAAAgAAAAAAAAAAAAACYAAcgADAIAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAHIAAwCQAAAAAA AIAAAACAAAAAAAAAAAAAAJgAByAAMAoAAAAAAACAAAAAgAAAAAAAAAAAAACYAAcgADALAAAAAAAA gAAAAIAAAAAAAAAAAAAAmAAHIAAwDAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAByAAMA0AAAAAAACA AAAAgAAAAAAAAAAAAACYAAcgADAOAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAHIAAwDwAAAAAAAIAA AACAAAAAAAAAAAAAAJgAByAAMBAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAA AIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgACiAAMAAAAAAAAACAAAAA gAAAAAAAAAAAAACYAAogADABAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAKIAAwAgAAAAAAAIAAAACA AAAAAAAAAAAAAJgACiAAMAMAAAAAAACAAAAAgAAAAAAAAAAAAACYAAogADAEAAAAAAAAgAAAAIAA AAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAA AAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAA AAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAsgADAAAAAAAAAAgAAAAIAAAAAA AAAAAAAAmAALIAAwAQAAAAAAAIAAAACAAAAAAAAAAAAAAJgACyAAMAIAAAAAAACAAAAAgAAAAAAA AAAAAACYAAsgADADAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAALIAAwBAAAAAAAAIAAAACAAAAAAAAA AAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAA AAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAA AACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAA AJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAA mAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACY AAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgA AAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAA AAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAA ADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAA MAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAw AAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAA AAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAA AAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAA AAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAA AAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAA AACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAA AIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAA gAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACA AAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAA AACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAA AIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAA gAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACA AAAAAAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAAAAAOgsAAHMLAACeCwAAjQwA ALUMAAC4DAAAS8gAMAAQAAAAAAAAAQAAAAQAAAABAAAAAAAGB0vIADAAEAAAAAAAAAEAAAADAAAA AAAAAAAAAAdLyAAwABAAAAAAAAACAAAAAQAAAAAAAAAAAAAHAkAAAAAQAAAAAAAAAAAAAAAAAAAA AAAAAAAAB0vIADAAEAAAAAAAAAEAAAAAAAAAAAAAAAAAqQcKAAAAAAAAAAAAAAAAAAAAAAAGMHsB AAAAAAAHAAYAAPwNAABcIgAA3igAAJQrAABqLQAAbC0AAAsAAAAPAAAAFwAAABoAAAAdAAAAHgAA AAAGAADuCwAA+hEAACYkAAD6JwAAPCoAAHQqAABsLQAADAAAAA4AAAAQAAAAGAAAABkAAAAbAAAA HAAAAAAGAABsLQAADQAAAAAAAAAYAAAAGwAAAJ4LAADLCwAA4gsAAOcLAAAZDAAANQwAADoMAABt DAAAigwAALYMAACTXxT/FZwTWBT/FYQTWBT/FYQTWBT/FYQPAADwbAAAAAAABvAYAAAAAggAAAIA AAACAAAAAQAAAAEAAAADAAAAHwAB8CwAAABiAAfwJAAAAAYGRLdb4TtTRf5oYp/Umvd8if8A1jMA AAEAAAA0PgAAAAAAAEAAHvEQAAAA//8AAAAA/wCAgIAA9wAAEAAPAALwAgEAABAACPAIAAAAAgAA AAIEAAAPAAPwoAAAAA8ABPAoAAAAAQAJ8BAAAAAAAAAAAAAAAAAAAAAAAAAAAgAK8AgAAAAABAAA BQAAAA8ABPBoAAAAsgQK8AgAAAACBAAAAAoAADMAC/ASAAAAfwBAAUABBEEBAAAAvwMAACAAUwAi 8R4AAAC/AQAAYACQAwMAAACSAwMAAAC/AwACAAI/BQEAAQAAABDwBAAAAAAAAAAAABHwBAAAAAEA AAAPAATwQgAAABIACvAIAAAAAQQAAAAOAABTAAvwHgAAAL8BAAAQAMsBAAAAAP8BAAAIAAQDCQAA AD8DAQABAAAAEfAEAAAAAQAAABkAAAC2DAAAAgQAAAAAAAAAAAAAMQ8AAKsGAAB0gAAAAAD//wIA AAAGANciZAEIAAIAFP0iAAYA2CJkAQgAAgDU/CIASwUAAIkIAAC4DAAAAAAAAAEAAQAAAAEAUQUA AI8IAAC4DAAAAAAAAAEAAAABAAAAQwAAAAIAAAAqgHVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206 b2ZmaWNlOnNtYXJ0dGFncw+AbWV0cmljY29udmVydGVyAIAMAAAB9L7FDgIAAAAGgDI1MCBtMgmA UHJvZHVjdElEAgABAAAAAQAAAAAAAAACAAEAAAABAAAAAAAAAAAAAAAuAAAARAAAAEUAAABvAAAA cAAAAJIAAACTAAAAwgAAAMMAAADSAAAA1QAAAPIAAADzAAAAGwEAABwBAAAjAQAAJAEAADIBAAAz AQAAjwEAAJEBAACwAQAAsgEAALcBAAC8AQAA4wEAAOYBAAD0AQAA9wEAAPgBAAATAgAAGAIAAB0C AAAeAgAAJgIAACsCAAAtAgAASQIAAEsCAABhAgAAagIAAIQCAACFAgAAigIAAI0CAACYAgAAmQIA AJoCAACfAgAAoAIAAKECAACoAgAAqgIAALQCAAC5AgAAzQIAANMCAADYAgAA3gIAAOECAADqAgAA /gIAAAkDAAAUAwAAFQMAAD8DAABEAwAAxwMAAMgDAADOAwAA0wMAAAoEAAALBAAAEwQAABQEAAAj BAAAJAQAAFEEAABTBAAAaQQAAGoEAACABAAAgQQAAJgEAACZBAAA2QQAANoEAABKBQAASwUAAAwG AAAOBgAAagYAAGsGAAB2BgAAegYAAIsGAACMBgAAlgYAAJcGAACxBgAAsgYAAMEGAADDBgAA4gYA AOQGAADwBgAA8QYAAAoHAAALBwAALgcAAC8HAABIBwAASgcAAGwHAABuBwAAdQcAAHgHAAB/BwAA gAcAAMIHAADEBwAAEwgAABQIAAAiCAAAJQgAADMIAAA0CAAAZwgAAGgIAAAjCQAAJAkAAE0JAABO CQAA0wkAANQJAAAFCgAABwoAAB4KAAAfCgAAZAoAAG8KAAB0CgAAdQoAAHoKAACFCgAAiAoAAKcK AACoCgAA9AoAAPUKAAD7CgAA/QoAAAkLAAAKCwAAEQsAADsLAABDCwAARQsAAEgLAABJCwAAVAsA AFULAABbCwAAXQsAAGQLAABsCwAAcgsAAIULAACHCwAAjQwAAJoMAACbDAAApAwAAKYMAACrDAAA rAwAALQMAAC4DAAABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAH AAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcA BQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAF AAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUA BwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAHAAUABwAFAAcABQAH AAUABwAFAAcAHAAHABwABQAHAAUABwAFAAcABQAHAAUABwAFAAcAHAAHABwABwAcAAcAHAAHABwA BwAcAAcAGwAHABwABwAcAAcAHAAHABwABwAAAAAAvAAAAMEAAACpAQAArgEAAHoDAACEAwAATwQA AFUEAABjBAAAaQQAAHoEAACABAAAkQQAAJcEAAAPBQAAGAUAAL0FAADBBQAAxwYAANcGAADkBgAA 8AYAAPwGAAADBwAACwcAABUHAAAvBwAAOAcAALgMAAAHABoABwAaAAcAGgAHABoABwAaAAcAGgAH ABoABwAaAAcAGgAHABoABwAaAAcAGgAHABoABwAaAAcAAAAAABoAAAAbAAAAAQIAAAECAABlCgAA aQoAADMLAAAzCwAANwsAADcLAAC4DAAAAwAEAAMABAADAAQAAwAEAAMABAADAAAAAAC4DAAABwAM AH4A4TMOYyw4/w//D/8P/w//D/8P/w//D/8PEACwJVg1lIQsKP8P/w//D/8P/w//D/8P/w//DxAA Dmu7OTqy5rL/D/8P/w//D/8P/w//D/8P/w8QAFgOREzASiz9/w//D/8P/w//D/8P/w//D/8PEAD/ b+9OeN/SwP8P/w//D/8P/w//D/8P/w//DxAAImBsYPzPxIH/D/8P/w//D/8P/w//D/8P/w8QAKFP LmIQl8wz/w//D/8P/w//D/8P/w//D/8PEACaaUVwpDMU//8P/w//D/8P/w//D/8P/w//DxAA9zyS cc7q1Dn/D/8P/w//D/8P/w//D/8P/w8QAPholnRgFChw/w//D/8P/w//D/8P/w//D/8PEADNYcZ5 DvgYbv8P/w//D/8P/w//D/8P/w//DxAAjHrYfthyIqL/D/8P/w//D/8P/w//D/8P/w8QAAEAAAAX EAAAAAAAAAAAAABoAQAAAAAAABUYAAAPhNACEYSY/hXGBQAB0AIGXoTQAmCEmP5PSgEAUUoBAG8o AIdoAAAAAIhIAAABALfwAQAAABeQAAAAAAAAAAAAAGgBAAAAAAAAGRgAAA+EoAURhJj+FcYFAAGg BQZehKAFYISY/k9KBgBRSgYAXkoGAG8oAIdoAAAAAIhIAAABAG8AAQAAABeQAAAAAAAAAAAAAGgB AAAAAAAAFRgAAA+EcAgRhJj+FcYFAAFwCAZehHAIYISY/k9KBwBRSgcAbygAh2gAAAAAiEgAAAEA p/ABAAAAF5AAAAAAAAAAAAAAaAEAAAAAAAAVGAAAD4RACxGEmP4VxgUAAUALBl6EQAtghJj+T0oB AFFKAQBvKACHaAAAAACISAAAAQC38AEAAAAXkAAAAAAAAAAAAABoAQAAAAAAABkYAAAPhBAOEYSY /hXGBQABEA4GXoQQDmCEmP5PSgYAUUoGAF5KBgBvKACHaAAAAACISAAAAQBvAAEAAAAXkAAAAAAA AAAAAABoAQAAAAAAABUYAAAPhOAQEYSY/hXGBQAB4BAGXoTgEGCEmP5PSgcAUUoHAG8oAIdoAAAA AIhIAAABAKfwAQAAABeQAAAAAAAAAAAAAGgBAAAAAAAAFRgAAA+EsBMRhJj+FcYFAAGwEwZehLAT YISY/k9KAQBRSgEAbygAh2gAAAAAiEgAAAEAt/ABAAAAF5AAAAAAAAAAAAAAaAEAAAAAAAAZGAAA D4SAFhGEmP4VxgUAAYAWBl6EgBZghJj+T0oGAFFKBgBeSgYAbygAh2gAAAAAiEgAAAEAbwABAAAA F5AAAAAAAAAAAAAAaAEAAAAAAAAVGAAAD4RQGRGEmP4VxgUAAVAZBl6EUBlghJj+T0oHAFFKBwBv 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 AQC38AEAAAAXkAAAAAAAAAAAAABoAQAAAAAAABkYAAAPhBAOEYSY/hXGBQABEA4GXoQQDmCEmP5P SgYAUUoGAF5KBgBvKACHaAAAAACISAAAAQBvAAEAAAAXkAAAAAAAAAAAAABoAQAAAAAAABUYAAAP hOAQEYSY/hXGBQAB4BAGXoTgEGCEmP5PSgcAUUoHAG8oAIdoAAAAAIhIAAABAKfwAQAAABeQAAAA AAAAAAAAAGgBAAAAAAAAFRgAAA+EsBMRhJj+FcYFAAGwEwZehLATYISY/k9KAQBRSgEAbygAh2gA AAAAiEgAAAEAt/ABAAAAF5AAAAAAAAAAAAAAaAEAAAAAAAAZGAAAD4SAFhGEmP4VxgUAAYAWBl6E gBZghJj+T0oGAFFKBgBeSgYAbygAh2gAAAAAiEgAAAEAbwABAAAAF5AAAAAAAAAAAAAAaAEAAAAA AAAVGAAAD4RQGRGEmP4VxgUAAVAZBl6EUBlghJj+T0oHAFFKBwBvKACHaAAAAACISAAAAQCn8AwA AACMeth+AAAAAAAAAAAAAAAADmu7OQAAAAAAAAAAAAAAAJppRXAAAAAAAAAAAAAAAADNYcZ5AAAA AAAAAAAAAAAA+GiWdAAAAAAAAAAAAAAAAH4A4TMAAAAAAAAAAAAAAACwJVg1AAAAAAAAAAAAAAAA /2/vTgAAAAAAAAAAAAAAACJgbGAAAAAAAAAAAAAAAAChTy5iAAAAAAAAAAAAAAAA9zyScQAAAAAA AAAAAAAAAFgOREwAAAAAAAAAAAAAAAD///////////////////////////////////////////// /////////////////////wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wwAAAASAAEAHwQD AB8EBQAfBAEAHwQDAB8EBQAfBAEAHwQDAB8EBQAfBBIAAQAfBAMAHwQFAB8EAQAfBAMAHwQFAB8E AQAfBAMAHwQFAB8EEgABAB8EAwAfBAUAHwQBAB8EAwAfBAUAHwQBAB8EAwAfBAUAHwQSAAEACQQD AAkEBQAJBAEACQQDAAkEBQAJBAEACQQDAAkEBQAJBBIAAQAfBAMAHwQFAB8EAQAfBAMAHwQFAB8E AQAfBAMAHwQFAB8EEgABAB8EAwAfBAUAHwQBAB8EAwAfBAUAHwQBAB8EAwAfBAUAHwQSAAEAHwQD AB8EBQAfBAEAHwQDAB8EBQAfBAEAHwQDAB8EBQAfBBIAAQAfBAMAHwQFAB8EAQAfBAMAHwQFAB8E AQAfBAMAHwQFAB8EEgABAB8EAwAfBAUAHwQBAB8EAwAfBAUAHwQBAB8EAwAfBAUAHwQSAAEAHwQD AB8EBQAfBAEAHwQDAB8EBQAfBAEAHwQDAB8EBQAfBBIAAQAfBAMAHwQFAB8EAQAfBAMAHwQFAB8E AQAfBAMAHwQFAB8EEgABAB8EaMNeIgUAHwQBAB8EAwAfBAUAHwQBAB8EAwAfBAUAHwQ3AAAABAAA AAgAAADlAAAAAAAAADYAAACUdAYA4WIHAPU/CQA0QgkAY2sLAE52DADYbQ8A6z4TACBwGwCmbx8A fl4jAGs8JwBICCoA5VUqAANQLwA6NjEA2io1ANJROwBqOzwAH0Y8ANR/PwBvPEQAWAlGAL5RRwCm TVUA1HdXAJtYWwDKGV0A3ixoAK4uaQCiOW4AKlR0AKsBeADLTH8AwR+KAHFDjgDsNZMAhGiUAAwX mADXAasAJHyxAHM8wAD8H8EA7xDIAN9V0QDBFdQA3TjWADw84QAvTuMARWTjALcr6AA9SusA9EL4 AHIs+wDAE/0AAAAAAAECAAC1DAAAuAwAAAAAAAAPAAAAAAAAAP9AAlgAAAAAAAAAAAEAAAACAAAA AwAAAAQAAAAGAAAABwAAtgwAAEAAAAgAAAAAQAAACgAAAABAAAAMAAAAAEAAAA4AAAAAQAAAEAAA AABAAAAUAAAAAEAAACIAAAAA//8BAAAABwBVAG4AawBuAG8AdwBuAP//AQAIAAAAAAAAAAAAAAD/ /wEAAAAAAP//AAACAP//AAAAAP//AAACAP//AAAAAAgAAABHFpABogACAgYDBQQFAgMEh3oAIAAA AIAIAAAAAAAAAP8BAAAAAAAAVABpAG0AZQBzACAATgBlAHcAIABSAG8AbQBhAG4AAAA1FpABAgAF BQECAQcGAgUHAAAAAAAAABAAAAAAAAAAAAAAAIAAAAAAUwB5AG0AYgBvAGwAAAAzJpABogACCwYE AgICAgIEh3oAIAAAAIAIAAAAAAAAAP8BAAAAAAAAQQByAGkAYQBsAAAAQSaQAaIAAgsFBgICAgMC BIcCAAAAAAAAAAAAAAAAAACfAAAAAAAAAEEAcgBpAGEAbAAgAE4AYQByAHIAbwB3AAAANy6QAQAA Ag8FAgICBAMCBO8CAKB7IABAAAAAAAAAAACfAAAAAAAAAEMAYQBsAGkAYgByAGkAAAA1JpABogAC CwYEAwUEBAIEh3oAYQAAAIAIAAAAAAAAAP8BAQAAAAAAVABhAGgAbwBtAGEAAAA/NZABogACBwMJ AgIFAgQEh3oAIAAAAIAIAAAAAAAAAP8BAAAAAAAAQwBvAHUAcgBpAGUAcgAgAE4AZQB3AAAAOwaQ AQIABQAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAACAAAAAAFcAaQBuAGcAZABpAG4AZwBzAAAA IgAEAHEIiBgA8MQCAACpAQAAAADVk9Umy7PXZmtc18YgAL8AAADlAQAA0QoAAAEABgAAAAQAAxAX AAAA5QEAANEKAAABAAYAAAAXAAAAAAAAACEDAPAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AIkFzwK0ALQAgYEyNAAAAAAAAAAAAAAAAAAAsAwAALAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAADDKDUQDwEAAI APz9AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIWAAAAAAo8P8PAQABPwAA5gQAAP///3////9/ ////f////3////9/////f////3/BH4oAAAQAADIAAAAAAAAAAAAAAAAAAAAAAP//EgAAAAAAAAAO AE8AVABFAEwAIABCADABTABHADABTABFAFIAMAEAAAAAAAAGAE4AbwBOAGEAbQBlAAQAVQBzAGUA cgAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAGAAAADAAAAAAADAABAAwAAgAMAAMADAAEAAwABQAM AAYADAAHAAwACAAMAAkADAAKAAwACwAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAD+/wAABQECAAAAAAAAAAAAAAAAAAAAAAABAAAA4IWf8vlPaBCrkQgAKyez2TAAAAB0 AQAAEQAAAAEAAACQAAAAAgAAAJgAAAADAAAAsAAAAAQAAAC8AAAABQAAAMwAAAAHAAAA2AAAAAgA AADoAAAACQAAAPgAAAASAAAABAEAAAoAAAAkAQAACwAAADABAAAMAAAAPAEAAA0AAABIAQAADgAA AFQBAAAPAAAAXAEAABAAAABkAQAAEwAAAGwBAAACAAAA5gQAAB4AAAAQAAAAT1RFTCBC3UxH3UxF Ut0AAB4AAAAEAAAAAAAAAB4AAAAIAAAATm9OYW1lAAAeAAAABAAAAAAAAAAeAAAACAAAAE5vcm1h bAAAHgAAAAgAAABVc2VyAAAAAB4AAAAEAAAAMzIAAB4AAAAYAAAATWljcm9zb2Z0IE9mZmljZSBX b3JkAAAAQAAAAAA6sa4aAAAAQAAAAADyF+M1AsoBQAAAAACeeBqz18kBQAAAAACisXnFCsoBAwAA AAEAAAADAAAA5QEAAAMAAADRCgAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /v8AAAUBAgAAAAAAAAAAAAAAAAAAAAAAAgAAAALVzdWcLhsQk5cIACss+a5EAAAABdXN1ZwuGxCT lwgAKyz5rkQBAAAAAQAADAAAAAEAAABoAAAADwAAAHAAAAAFAAAAgAAAAAYAAACIAAAAEQAAAJAA AAAXAAAAmAAAAAsAAACgAAAAEAAAAKgAAAATAAAAsAAAABYAAAC4AAAADQAAAMAAAAAMAAAA2wAA AAIAAADmBAAAHgAAAAgAAABIT01FAAAAAAMAAAAXAAAAAwAAAAYAAAADAAAAsAwAAAMAAADmFQsA CwAAAAAAAAALAAAAAAAAAAsAAAAAAAAACwAAAAAAAAAeEAAAAQAAAA8AAABPVEVMIELdTEfdTEVS 3QAMEAAAAgAAAB4AAAANAAAAS29udSBCYf5s/fD9AAMAAAABAAAAtAEAAAMAAAAAAAAAIAAAAAEA AAA4AAAAAgAAAEAAAAABAAAAAgAAAAwAAABfUElEX0hMSU5LUwACAAAA5gQAAEEAAABsAQAAEgAA AAMAAAALACYAAwAAAAkAAAADAAAAAAAAAAMAAAAFAAAAHwAAACQAAABtAGEAaQBsAHQAbwA6AHMA YQBsAGUAcwBAAGcAbwBsAGQAZQBuAHQAdQBsAGkAcABuAGkAYwBvAHMAaQBhAC4AYwBvAG0AAAAf AAAAAQAAAAAAEQADAAAAYwBFAAMAAAAGAAAAAwAAAAAAAAADAAAABQAAAB8AAAAjAAAAbQBhAGkA bAB0AG8AOgBpAG4AZgBvAEAAZwBvAGwAZABlAG4AdAB1AGwAaQBwAG4AaQBjAG8AcwBpAGEALgBj AG8AbQAAAAAAHwAAAAEAAAAAABEAAwAAAE8ASgADAAAAAwAAAAMAAAAAAAAAAwAAAAUAAAAfAAAA HgAAAG0AYQBpAGwAdABvADoAZwBvAGwAZABlAG4AdAB1AGwAaQBwAG4AaQBjAG8AcwBpAGEALgBj AG8AbQAAAB8AAAABAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAA AwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAAR AAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8A AAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAA AC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAAP7///87AAAA PAAAAD0AAAA+AAAAPwAAAEAAAABBAAAA/v///0MAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABK AAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgA AABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAA AGcAAABoAAAA/v///2oAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAAD+////cgAAAHMAAAB0AAAA dQAAAHYAAAB3AAAAeAAAAP7////9////ewAAAP7////+/////v//////////////UgBvAG8AdAAg AEUAbgB0AHIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYA BQH//////////wMAAAAGCQIAAAAAAMAAAAAAAABGAAAAAAAAAAAAAAAAEOxxm8UKygF9AAAAgAAA AAAAAABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAACgACAf///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAADoAAAAAEAAAAAAAADEAVABhAGIAbABlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAIBAQAAAAYAAAD/////AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAQgAAAIJMAAAAAAAAVwBvAHIAZABEAG8AYwB1AG0AZQBuAHQA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAgECAAAABQAAAP////8A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACnIAAAAAAAAFAFMAdQBtAG0A YQByAHkASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAC Af///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAAAAAEAAA AAAAAAUARABvAGMAdQBtAGUAbgB0AFMAdQBtAG0AYQByAHkASQBuAGYAbwByAG0AYQB0AGkAbwBu AAAAAAAAAAAAAAA4AAIBBAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAcQAAAAAQAAAAAAAAAQBDAG8AbQBwAE8AYgBqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgD///////////////8AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD+//////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////AQD+/wMKAAD///// BgkCAAAAAADAAAAAAAAARh4AAABNaWNyb3NvZnQgT2ZmaWNlIFdvcmQgQmVsZ2VzaQAKAAAATVNX b3JkRG9jABAAAABXb3JkLkRvY3VtZW50LjgA9DmycQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSAG8AbwB0ACAARQBu AHQAcgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAFAf// ////////AwAAAAYJAgAAAAAAwAAAAAAAAEYAAAAAAAAAAAAAAADwkOscA3/KAX0AAACAAAAAAAAA AEQAYQB0AGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAKAAIB////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAOgAAAAAQAAAAAAAAMQBUAGEAYgBsAGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAgEBAAAABgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABCAAAAgkwAAAAAAABXAG8AcgBkAEQAbwBjAHUAbQBlAG4AdAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgACAQIAAAAFAAAA/////wAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcgAAAAAAAAEAAAACAAAAAwAAAAQA AAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAA ABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAA IQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAv AAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAAP7///87AAAAPAAAAD0A AAA+AAAAPwAAAEAAAABBAAAA/v///0MAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAA AEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAA WgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABo AAAA/v///2oAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAAD+//////////////////////////// ///////////////////////////////////+/////v///4kAAAD9/////f///4IAAACDAAAAhAAA AIUAAACGAAAAhwAAAIgAAAD+/////v////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////+/wAABQECAAAAAAAAAAAA AAAAAAAAAAACAAAAAtXN1ZwuGxCTlwgAKyz5rkQAAAAF1c3VnC4bEJOXCAArLPmuRAEAAAABAAAM AAAAAQAAAGgAAAAPAAAAcAAAAAUAAACAAAAABgAAAIgAAAARAAAAkAAAABcAAACYAAAACwAAAKAA AAAQAAAAqAAAABMAAACwAAAAFgAAALgAAAANAAAAwAAAAAwAAADbAAAAAgAAAOYEAAAeAAAACAAA AEhPTUUAAAAAAwAAABcAAAADAAAABgAAAAMAAACwDAAAAwAAAOYVCwALAAAAAAAAAAsAAAAAAAAA CwAAAAAAAAALAAAAAAAAAB4QAAABAAAADwAAAE9URUwgQt1MR91MRVLdAAwQAAACAAAAHgAAAA0A AABLb251IEJh/mz98P0AAwAAAAEAAAC0AQAAAwAAAAAAAAAgAAAAAQAAADgAAAACAAAAQAAAAAEA AAACAAAADAAAAF9QSURfSExJTktTAAIAAADmBAAAQQAAAGwBAAASAAAAAwAAAAsAJgADAAAACQAA AAMAAAAAAAAAAwAAAAUAAAAfAAAAJAAAAG0AYQBpAGwAdABvADoAcwBhAGwAZQBzAEAAZwBvAGwA ZABlAG4AdAB1AGwAaQBwAG4AaQBjAG8AcwBpAGEALgBjAG8AbQAAAB8AAAABAAAAAAARAAMAAABj AEUAAwAAAAYAAAADAAAAAAAAAAMAAAAFAAAAHwAAACMAAABtAGEAaQBsAHQAbwA6AGkAbgBmAG8A QABnAG8AbABkAGUAbgB0AHUAbABpAHAAbgBpAGMAbwBzAGkAYQAuAGMAbwBtAAAAAAAfAAAAAQAA AAAAEQADAAAATwBKAAMAAAADAAAAAwAAAAAAAAADAAAABQAAAB8AAAAeAAAAbQBhAGkAbAB0AG8A OgBnAG8AbABkAGUAbgB0AHUAbABpAHAAbgBpAGMAbwBzAGkAYQAuAGMAbwBtAAAAHwAAAAEAAAAA ABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQBTAHUAbQBtAGEAcgB5AEkAbgBmAG8A cgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAgH///////////////8A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpAAAAABAAAAAAAAAFAEQAbwBjAHUA bQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAOAAC AQQAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAEAAA AAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAASAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= ------=_NextPart_000_00D5_01CA9129.9BE8EAA0 Content-Type: image/jpeg; name="ODA RESIM.JPG" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ODA RESIM.JPG" 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 aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT 1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgsR AAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDTh JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJ ipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz 9PX29/j5+v/AABEIAHgAoAMBIQACEQEDEQH/2gAMAwEAAhEDEQA/APTPhxoSXN7bRCFSH46da+rf C2ip9htwYVyoKHI9CR/Sv89cnqr63WT7fqf3XmlP9zBnpVto0SJ/qU5/WpDZRLkBEHfpX0tKd3qe BURSktEIP7tM5/OqLWUeOUUfUV69BnLPcpPZJnhE9c4qvJZx9TGuc13rzMG76lU2cY3fIp5qpJax ZPyLnOenWplqF76ka2sXGUQ9+lfyg/8ABSWztz+0z8SfMSPZ/wAJHqBO7/dgrqyyTVVtG8IqUlc+ NNKsbCVcNHaPCcA5AI3duvevtD9jLSDH8evDkotyqJYXzE4wB+6x/WuTNsQ+SUZM+wpUF7OUkj+n jTpLe20Tw4Qkfy2kDfkoNfzZ6LBHO95dBF2zXdzPnHXdM7f1ryskXLSm/T9TwK+s7nVpaJj5kX8q 6jTtNiNnbnyweCf1r1FJ2ucVXc1YtNTk+UFH86lTTY1B+QflWcpMhO5+4Hwh0zzNW0zKjHmqT271 9COW0PV/EunsFjS21S5hGeAMOT/I1+UZFW5s2rUuvJf/AMmR9lm9O2FhN9/0Jf8AhI3YHyZklXuV O4fiRWS/jGxguY4b3U7G1dmwBJMqE/gTmv0fD0IJXv8AifKVea9rHWQ3UcucMDmpGMZ6YzXVC6ep yt31Kj+XknK465zVGZ0wcd67Itswe5nu6knOKquy85Oe+fWpncaYxSnqD6571+Rf7Tf/AAS81/8A aJ+KXif4h2vxx8M+EbLUdTuNQW0m0Oa4kiEgj+QuJFBI8s8jrmsIY10Z81rnZhrc3vXsfOur/wDB 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 5QKeGyxIGRwTgc45rXsEuBdSRxSR3u9QGkLBUXPXg/f9cnqPWvmk25XR7+6uVtWlh014neTTliaH y2aQ53NnHIAyGweh4Fc4moQG2a1lZJrVBxDwSydei8BcEtk46jHSqlKzaHG7VzLnM1zptxIqLp6M pkRFIYBACMsTyfTgk9favNpL/UI2jbfcW1huI3CMu4OO2O3LcZyOaUpbdDaLT3LMNwlwl7Jdahby 28e1JJyxQsP90/N6cdfavOdc1XSre0uZIriV7PP3E4wc4JB6jn0x0PNaJX1fUdPmctD/2f/bAEMA CAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9 ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAwoEDQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAA AAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGR oQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdo aWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJ Cgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVi ctEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqC g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl 5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIQKcBQBTwK8NntIAtSKtAHNPUVmykPRalC57U1B UwFQxkRWpYF+U/WginwD7wrSluRLYkC04LSgU4CtzMaFp22lApwFIY3bS7afilAoAYFpQvtTwKMU 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 ------=_NextPart_000_00D5_01CA9129.9BE8EAA0 Content-Type: image/jpeg; name="OTEL RESMI DIS CEPHE.JPG" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="OTEL RESMI DIS CEPHE.JPG" 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 h4c5XV0AAAABAAwj7NgMNYGXMIO22YoO6t4ELOdqXo0AoygTbFDsqZLkvnyIK3CvBXTqfgQ+57QA AAAAAAAAAAAAAAAAAAAAAAAAAIgZvp0wVrb3zbRWtg6cXkbYxX1lQJgAoyB2152+7GnpBdbqrAS2 Dj1emtgpfe0AAAAAAAAAAAAAAAAAAAAAAAAAAAIZRy/gqu8QOZ3Tk6ByoHKgcqByoHIAo4rait5w e3BDtli2WWlTad+IYoiyIMsAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAvXVUAPYzigDQv1oAvU9D AADypwDd2T0Ay81cAEVgnADDUS4AAICvAC/OFQAwKfQA1x95AC+OVgAAX9kIpQHMAYAImgh6AaAI EgguCOsBJgGdCMABsQAKAQEBXxvlAaQbOhuwCBUBOgFtCLwIUQgMASAITAHeG+wBMAH7CKEBxwjq CKpA9gjpG5JAFEBrCNtAXkBoCAEBOAHjCBsAqgB7AHsANQi6Ad0B0AhgG6AB+gEJGyABQgGSAVEB 1gAJADEAwQDf/9sAQwABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEB/9sAQwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB/8AAEQgBhQIGAwEiAAIRAQMRAf/EAB8A AAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUS ITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4 ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEA AAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKB CBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2Rl 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 J69n/wBw3/mKz7P73/8ALD+aTQrJ9VvfAGkKHKXzWcJ2ox2trGpWrTNn12TB409G98V8K/tI6v8A 238cfHuoqcxz6zN5eNqhY2ZplTv8ied5eO236V+lPhKx0zTvGvh9llu1HhuzutQPy2/l7vCtrq19 2feib9HjQf7tflD8TZ1l+I3ipifNiXU2XzSd0nyxRrmYJ0dPub07J+X8k837updOClUjZ9d38rX5 fxP6JpRbr0rS92Mas/8AwL2UIO3XXm/4HT6R8LwJF4M0BckFtNjdmDclpmaRDtx/00VNhPO72r07 R4VwJHCKEjyEGT/E33CEP93+vWvLrFYLXw/osXnpGqabpofeyqU3Qws25f4H+bjfn+Cu/wBNvbAj BuoztVVBRZmbayblZdif72PTrWWCceWcnLrHbzUb/wDD6JG+LTclb4rT9Lf5/wCZB4WBfxX45uc7 j52l22GG0jba7ivX5B8vbk7a9MtM5JxuBGfb+L3+T/J6V5d4Mu7dNR8cTXN3HFG+vRwwNPKsAeO3 jnVmjWZ4/wCNv3n6da9DttU04ZI1HT+Vbn7XCc/KwG75/wCPaPSv0PKZJZfSTv8Ab6f34n5zm6nL H1Hb7FF21/59Q6b7pfM6vRE3XF5IwG0rbosnrtaQSB277N3XPPat4F4pB8z7eufmPr978+OvORXN 6BqWn5u2N9abJJIxGTPHtdVh+by23/P87N8//PT9N8ajpm4A6hZZ+6B9oh+f8d/T5R9PWu+nON9X Z2l0W/OtdbLpoefOFW9NKm/gh1vf3YP/AINnb5WO78JNu1DUJW6iys1BySu3zrhvlX8ee/f0NeiR SqNrAsMnIyOQN3zD/PPNeW+GNQ0tJr+U6lYRI4s4oz9phG9ofO85V+fPyeYv3P73POa7ZNZ0c5C6 rpzYPzBbqHC7m+Vfnf8A3un+sz24ojOm7pTp6+X5v59LN9hSU04qz+CC+G9tuvT8r+Z0CyRh5Gds Dy1XH8J3yf8A2K46dKp3BUMBGkYJbqH6Lu+Zl/76/LsM1VW8s7gNJHeQSRhdpaA/aIw25sqzQJJs +63yP0+fBquLyxLEG8TcTlVEcuT6/L5Pufue3rXxeazi8fXtL+Xb0j+mttNdT7zKIyjl1BOPLpKe 9/tSt+K22X4HT2UXEah1Lv8Acz8wOG/i6cfN/wDX6V0kLyEvGrsAHVSA4XO2Nd3onT+vWuXsjbMq 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 XVrb38asTBeRooyCY5gpX5uPY16WC4lr4aS58JQq7fzRm3p/ifnsjgxWUU8SuV1q1LZv4J9tN4vz 19HrqfifH4R1+4tnuU06YpGqnawVJmVvustu/wA+fm79dvrXxc/7T3hfR/ij4v8Ahz4ytT4ak8O3 81pDcXUjJOv2Wz+1zSalby+Xs+0ptmt47OS4kjtpLWWWPyriSW3/AKbrnS9Lv42S+03Tr1GDB1u7 G1udysuWVmmhkf8A2MevTjOPknxX/wAE+/2MfGl1qmpav8APCFpqusadqGlajqvh678QeGr65tNU 8xrwsNH1i3s3uXeSR47x7OS4t/MfypY63xXGGaVPZfVI0KEo1uedlKanHkVqU4SXvc1vijKny7nE uGcJZp1Jzc4Lf+dW9/p53+J+ff8ALrwH8SvCfxB03T9R8L39te2+qx309hDcQ/ZLye30+4Wzvbhb Wb98IUmkQ788+Ygx6dZ4o8SWfg/w9qfiPWVK6Zodo2oai1rFvkhs4dvnTeWn30hRi8mf+Wae1fWH hj/glR+zx4C1bQdT+HPi74weFLbw3cahPpnh6+8T6T4t0KP+0reO3uYFXW9B/thEeGOP5/7Y8z5c eZXTfEH9ivxJq3hTxRo3hDxp4bv73VNE1bT9Pi8X6PfW1k91dWdxb28epyabNqGbN3kVLh4Y45I4 98sX72KurBcU1cRhJ/2jGjQxln7P2UKnsZyUYWk/elye99mT32Mo5HUoVIxpOc6S6uUU4XnG8Pe/ kh1b7Psfgv43+Nup+CvGuneBNX1jWPF+heOIZPHPhrXLCz1Lw/NJpom1qFdCt11K2+zX8dsY7KG4 vEuJLeT7O8tr5ctnJHH9xfDXxA3inTJrSWHUYtN0Ce3sNMu9SkW4vNSs1sLWZbxrhHk3/vriRYwk kn7uOGWWTzZJI4/hf49f8EzP29rO68F2dr8H7HxZovhL+1LuLxB8J/GWleJLtV1bUI/M8NzWeq6l p/idPD2jwtPeaVbWehyXHmXt/LFcRyySR1658P8AwF8dtDuNKufF9lq3ws0LwNqG/wAT2PiXSNa8 OwXOm21jD9skik1KHffw7NPh+0fvLOzk+2fav+Pqzkt5PlMjzzH4bOsRCdKdfDYiMZ0W+bmoznb2 tKNWq7KlCa9p70pNJOPw3idWMy9yoxvf3UnP4vfmrb8u6k72tDlj31PuiO5VoxAkYZVbEbHII/uh +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 Fmlhqqm3dPM/d280Xl+Vb8W/A3iHx74i1XXvAnxckh0XxRpnh7WdX8K+J9IjuLe1vrjwmscmseGf EFq/9n3NhcpbtI/2m5t4Li3vGtpZY5LC4uJI/ra9XBYqUaTnVpqjDknNcnJzRSuvhl7zf2un5eLS p4nDUINQpTcqkpz92TnNVq9T4pc8eT2al7NRjJKMYRtqf0e/HL9rP9k/4r/CgeAfAXgjxx4E8X6D 4j+HPjq48QaB8FPDOjNouqaXFfTQ3FzNc3+nu8N+8N8kX+st7yOz/wBX9l/eV4N4p/ah/Z3Xwf8A F3SfEnwf1sPr3xB0vxJ4N1myfwXp1xp02pXH2HXLjUt2tyarbWWvafDDYR+HtNs9c0azkW5uorjz bg3En4yeGfjR4I8NtquleIbi117VdYg0/TdP8SytqV7d+GIFut9xNby21/Z2d+ZrNpraOw1W8ks7 eO6murWK3uo/Mk9K8XeF7DR9H+G+s6X4z8GfFRviF4atddj8MIF0Gw8JOL7bbeF/HE0PiufxDDqy Wbf2lHNolt+72fZZc+Z5kfh0+H8uxDlhoPF4zGVXOeDjRnzwnrCShVq+xjSoS3japWjDZ+7rb3a2 YOFPB1cNhoYXC0cNRhjJ4zWdLExk41ZYeEcRKdehy1I1Ifu3WjKUqcotNyl0fi3/AIVD8W9cih0q 18WaX4u8O6DrQ8XeJZNS0nV/DWpaLoNrazQ65cWf2lNRsIdN3NbW+q3Mflx28kFrLb281v5knz98 avEk2nyaz8QfEDatqVj8VdN8Iw6T4Z1rWZLTWtd03w7ptnpc/jKSGwTZ4Y0/xJNpNrc6HZi3+2Xl nG8ssdnayWf2h+ueE/H1zqFy8fiv4HeBNAupLOQeDNLl12Vb+3W3tI9S02+urbVdQ8VXOm3727vq EM2oR+ZcTvLFb2/7uOPD8ffCnUPiVr2oeMfFvxq+HWl61dvDNEl3JZ6BoGn2tnDHb2Ol6LDquvf2 qmj6VYW9rZ6fbTaVJcR28KWsskkv7yT2Ms4Fw9XEU8VmmVypzw8FCFKrVhPkfNSqSjeVSUZx9pTj JSp3i+WPK0nFmGJ4odLCywmV4udSNbTGzjh6/LieRuNGdJSp80OWnVqRqfDKXNHljdSv88aZ8U9K 8Fazd3/hz4b+C4r6e2eyubjU9X8Z6lMsMk0NxNbHdq2nWquJreEu0MABMWIv3Ropvif4VaJaTR3M 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 vh98SR8erH9ovwR4Mt/GafAjxToOow6Vf+LpPBmn6hrF3HfQ/wBkzahH4V8WTXMM2lNfPcW1tb6f JH51nKLzyv8AR3/ob8Bf8Fv/AI8+LfiL8SPhV4a/ZK+GWmeKvCs+vaIzar8VPiJrY+0+FvEWnx3k zWPhv4aSX7/6lnjdLc2/mK/m+XmLzPzx/wCCFvw2+DHjj4f/ABqn+JvinWdJhl8cWNxoHhn4f/Ev xR4N8Q29jNZ3WnzeIvEepWE0mmvYJNarZ+H7DUtHs9YuY7e/v/tElrHHb1+ug/ZT/wCCdHwv8WeK /iZoi+JNJ+IWsvrE51HW/wBoLxE8F3qGtQtLdX101zqWjb3e8kV5IbySSzuJIUlure4/eeZy16+H VWXtYV5VI8kFBRb2tbk5HLZ3T9271T6FYKlX5HOnR56k5q85xjyRjGUo/bstPdl/Vj8SLf4R/tFa R4TTxV8adDv/AI4eLrHxvHrEvhbQvA3i7T9LHge48Jr4Nj8SaTpL+CfDfiHW7nw9bafHpWuXtleS W+h6fcWd1YSWeoW9xJcYWs+G5PGnxK0u68EfAu9+HNh4j0S60LxPc+ILbxIng3XLW51q31iTVrW4 8Yabp9/Z3Kaqtjf6p4bubO98i4hMtpJHDJJJJ+t9zrHwZ0hLjWJfEum3fieLSNQ0S21XUf2idNuY 7TR9YuNPvNQ023t7bWLeFInvNPd7e8z9st47q58qT/V+X85/EPxr8H9QuhqV54t0fV7nTreO003S b/45WN9o9stuzNbst1f3Oqaq9yjs2bm9nuLiT/XSySS18tn+XZvn1OcKFPHYaVO31X2MsRClWhJr mlVjSgpxlFX5bc0eW27Uj0VNwwVfD1KGFnXq1IT9tVpUnWh7OSl7s3zRhS5n8K5er5XdRPnD9mz4 x+O/gX8SfiDo3w68X6J4Kvn0f/hFNTvNO8O6Xrq6npOj6otxp9xb6hrE15pv9safc3Nr/aj/ANh2 7xx3HlRSSWr19W+Kv2jfHf7THw38U/B/4pa3P8WfDMWq6Tq9x4et7HTbLT5tQtTI1tqUh0q58J3K PpszGa3hg1S3ji3ebLHceZJHH8di8/Y90nxjq/jLXdIt7u617U2vtcsPC3xC8RanPL9qt47O9/su 6tra3trbzoQryQvcSRyTwwyj/VxmuO8b/HP4D6cL2y+F3wz1eW2kvEuo7jxf4v1SeRprUyR2M0y2 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 7ZPjIRpq/wAXfHaw4aWOKfVkghVd3mKsapZ27oibcf8ALT7qD3rxe6+Jvxo8TTzx6h8TvH87yTSS zyy+J9WMRaZWZvLZJo84G75JpP3f/LKLNefS8KsJTnGrHB4ClLSfuYf3+ZW356UFttp5PQ9WfiDm dSkqVTNsyqw0WuIqfBp8fLW5r+Turrqz+mnw38TPh78NfCmkeDNLi1Se00K3msLCXxn8Q5Nd8Tix t28yN77XNQvLy5uYYUk+x6ej/vLeytYdPit44o7fF/8A4X9pkqSHT7S3Zk8tzLDrt5frLDJ5m6Qf ZrL5HR1VPL/5abv+WdfyT+JrDV1aW6vvEk19eTbYy93rNxdXckf3ZVZneR08jIffNJXnkuveKNPj ki07xF4ggAm5itNY1KJXWNV2yK0N4Yf+ubp69PX0KnA86MdK8LaaKHp05unbTpt08ynxBQru7jOU p/HUnefPe3vz5/z113P69JfjleDfO1m+VVpFiBmD7f4mkkvJo9kKcLxHGfMb8a5K++NWsW8knnXB CyCR/Kt5tPXyVkXFvukd7h9/8fXyz84zJ0j/AJJX8W+JixL+JtdjKjJWXXNSdysx8zazfbJP49z/ AD/6yRuxNZh17XJV/e69rk4kXAxqd/HlWXaqyNJNj+98/wC7+9WP+qrj7vtqf/gO+2vxa9fuN1m1 HT3Z9Or8v73m/u8z+tq4+OF7Zgag7q8EEVqrW82saWIyt1azSNJMlhZ+ciIm196XEflyEdJunMx/ tL3SMIobPTpndGC3N9e314PLVSWaOFHjtneYSN5XnRyRxxhMf6uv5S4tZ1Ri6XGpat1zKp1S63FV +Xa5ExT50qUazfyF/s17qCptOGuNTuAjrvJ/v9I/lH+rprhbS3t7Pp+6+5aPb8QeZ01Z8nNHS9uT fTfa2/4edj+ryH466zeLDcwS+GYlS5jiWRrO1ku/Okj3RwQyXkPnp52zZIiGX92r9vMqe2+Kuws0 eoaLHfef8hs7PSLeODavlttuoUjm3/Nsj2Rn97/y09P5QP8AhJdZikTbfXroJMKsOo3kbH/nntk3 y5RJA3zvH1/66VYHibxKMf8AE+1O2kgXygo1O8eNGb+KJoZv7n+s2f6zb61D4Xle3ttdf+XO34rT /hhxzOk9XTnb/tzy8vN+enpf+qa6+N1lYTuknjfRoBOsscccmsaXFN+68uObdC9zG6PvjeGPZ+9H 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 6UUUVwy3fq/zOhtt3Z//2Q== ------=_NextPart_000_00D5_01CA9129.9BE8EAA0 Content-Type: image/jpeg; name="MAIN GRENADA DINING ROOM.JPG" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="MAIN GRENADA DINING ROOM.JPG" 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 ABEIAHgAoAMBIQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMC BAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYn KCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeY mZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5 +gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEG EkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpT VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4 ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APjKigAo oAKKACigAooAKKACigAooAKKACigD6NBZtoIAwoUYUDgf196nizXixdj12i1Ea19F1nVdJk36dqE 9t8wYqjnax916H8RVtKSs9hK61R2+h/FPXbUxrfwwXyLnc2PKkb05HyjH+7/AI16L4c+MmmSqqXk 01o4AytwhkUk9gy8/niuVUp0Jc9F/I1co1Vy1F8z0LSPF2k6nEWiminQEKzwSrIoPvjp9KlvtE8P 63GytFE+8HIXGSPcVs5UMavZ1lyy/rb/ACMOSrhXz0neP9bnE+IPg9ptxuk0+UwMecKcD6Y6V5r4 i+HXiLSGJFv9ojz95OD/AIfrWMnWwelb3o9/8/6+81hKniPg0l2/yOQnimgfy54nifrtdSp/I1AS N27AzjGa61JSV1qiXFp2Y1mqKRgoBJAHuelJsaRHkEZByPamHNJjO58H/EnVdJH2fUnlvLbBHmBs zD2yT8w+vPPXjFekwS3XiqES6IsdxBgbnjJO0n1z0Psea8PE4VxqKVNXT6LudlOsuX3nYtWvwzv7 ht15PHEO4zk/pW7Z/DzQbBPNvZi4XqWIRa6aeW1ZLmrPlX4/5I56mNgny0ldnFHxj8KvFkdxJrdh os8kh2zXEii3mIxxhnCv+Iamal8JPhzqnmyaZe3+jSuMRR7/ADYkOOpDAsR7bx+FaQxUF7tdcr7r Yl0akdab5l2e5zWq/APWo1eXQtcsNViRCdrZhkZh/CB8y/mw/CuP1f4ceONIYC78N3jAqWLW6eeo A65Me4D8a71FuPNHVeWpj7SN7S0fmc0EdX+bcMdsVMrEdaSdzRontriWCZJoJXilQ7kdGIKn1BHS ur0b4ieKNNwpvFvEVdoW5Tdz67hhifqe9RUpwqq0kOMpQeh6L4a+NUZ2R6raTQkkAup81PcnowHs M16JoXjfw5rybILqKUkcoD82BwSUOGA/CpjiKlBclb34fj/wSJ4eFXWn7svwM7xhovhO9tS8ixq7 cgBNwJ+leUX/AMPnu5iNJgnHptQsp/OvPlWhRrfuHeL6HVTjOdP98tV1MbU/hv4ysofPOiz3EXAz Au9s/wC7978cYqtp3w98YalJ5MPhy8Ujn/SIvJX83wK9OEnNLRp+aOaThHqjorL4MeJZIke+vNN0 5z1inuSXUZx0UFf1res/g74et5d2p+KZrmMLzHbWwjbPsxLDH4UVJ06X8SSXlu/wFHmn8EW/wRYX RPhDoitFcIt9cRPuY3l/hx042oQD9Cveh/iv4N8P28h0HTrO0WYqjC1s/LY9dpJO0HrgZzyfrWKx M3/Ap/OX+X+RUqS/5ey+S/zOc1j463LuBawXMsWcblfyznJGPkU9PrxXGap8UfFN7K8UcccLthhM qhiTnp8zNk/8BqHhqld3rzb8ug1VhS0pRsZN98LvHlhGkj+G7m5RiQGsit0Affyi2PxxWRCNe0C+ lhU32l3ajbKg3wyDocEcH0NNr3bvZ/d9+xomm9N/xOl0f4j+L9OeEHUftMcQx5dxGG3cY+Zhhj65 z2rt9D+O2sQqqahYrM28CR4psYX2Vg3OP9oZ9qyjTdOXNRlyv8PuKk4zVqiudYvxZ8C66C3iHRoJ PK4j+2WIkPPXbgP/AEpH8KfB/wAQL5WmytZzgeafsd5vYj0KsXwMkdh2rp+s/wDP+Fn3j+pz+xlH +FK67P8AQ5bUfg7qEreZ4eupbuFm+U3EIjGP94E559hWTefCfx3buF/sfz13BFaO4jYHJ9N2QMnk kADk9KVGVSqruDt3/r/glzcIOzkrl7TPhH4nkLi/m07TGU/cuLtSx6dk3Vt/8Kt0OztFn1jxjHEo 4lEdvtUH0DswH6U5zpwdpySfZau/y/zBc0l7kW/wX4nQaVrPgLwjLHLH4ovdSjC7ViuLhJ0TjAI2 ISMAeuP0p158dPDiOw0+N7yNTt3wx7hn05IP6dqmnWlTbdCna/WX+S/zJnSVS3tZbdF/wTltU+O9 2baeWGwdIlztaWVYiB6kFRj1+9XOH4veIdWtN1tNAEYnayHzWXBGR95lJ6A/Wm6NWv8AxZN+S0Dm p0dYRSKj+IfG2syCCLVpVCtyUAjORkYymCevTn/DHvLbVb/W4IL7WJp5DCXO5944IBB3DORu6A44 rohhIU9lY554rn63K8OhubyZfPKbRmXeT12nG0ZPZeenUD3q7Jo+jrIJftUpTeEwcEuxbaBkAYyf qenSur2ai7bnK60mtDI8BNpN5pN5PqsqyzxTOAWQgFMbRgZyME//AKzWz4gubeNJbOG1kjjjJCqp GxuMEk4ABA9AabnGGiJtKWrZJ4YvfiJItwPDus3l/wCQpuJY7mSKR1UY+4XG5ug+VcnPQZNdHH8T PiVp1sP7c8OPcWKKFmNxZyqr47ktlByAfu49MV8nhJxlDn5uWXk9/VH0+Jp2ny2uv66ldPiB4D1R BHr3w9tYVjOUaxAjZs9clPL9Bjr1PTu+aD4JapBJcJf6pokrL8lthpURscE/IxPPbd2/GvTTqR+K Kfpo/u2+6xwNfyv79fx3/MzZ9Q+DWk38UbPrmo9QN7qkLnH+6h/DOePzvQ+PPh/p13u0XwHb3CtH y95N5g554VzIOw547/jcfbzSskvx/wAl99yZShF6v9P8/wBCf/hemsSP/Z3h/TLCztbchWhVWBQt 8wChQo55Nc54n+LPi0uJp751BBfykhV8KMdNxyOuc5ro+rVKqtVk35bL7kc/1inDWC/V/ezOudc8 TTyTSy6vdtDs8x1Fw2znkcAcDj17+1crNquq/wBpfZgsWwq7IVUljgHP8XsO3erVCnSWhm685svp DKslyI12srAA7VUn5v8ACn6DphuZr15Z5JUFwxQO5bapAIA/A1liakadO8VubYVSqVGpPZC67o8T wFCuRkVa+Flq3/CMK9vbhzHcS5JbaQo+VsH6t/nFPCVeaWo8ZDlhodxFp76aYmhlWQKFHyDkpzyf c7fT3rNvI57TXbG3gtFeYRyO+Wz9/axPPpjPFei3fU8tK2hqultd6/bKqlfPBJccYOVHIHbDDrzW PdCL+2ntiTHEjRyIx6HDkN/6DmociorWxxekW39n6dqYZGeRYmXezfeJCt19ev51d1e4kSVkV9oK ISN31HPt0NcrleRulpYparPeQWW+xu5oH3Yby2IyDxzjqOvBzWfd21xFbzLLKrPHKYzgAgYO3I/H FeZlEYLDtta3/wAj1czlNVkk+i/Upzw/6Mstu8kcUcfmvsYjIx6fiKksdPje/uPM3OVVBySfU5/W u7EytBuJx4a8qiT/AK0M7xDpkP8AaunnaFDSbSa62G2h8uKSVlWIpGFOD95dysOD0+cUYapeN2GL haSsaUlhaw6rY3Onqojd1mmJPBAabaD/AMBMf5UmvWVo9rc3cV9Gbj9/GYDIANoDg4HqcY98Cu1z 1OFRM+0lSXwvPcvexRyXsR8hPMGUA6Djp1xg+lZ0l5aFyFmRpGDRxMOeepPH0/SuaUrm6ja5r2l1 p8ivLI0jb5N3yxNzyPb0/lWl4WEbLctDkRmQbflxjCKDx9Qa4MV8C9Tvwmk36FnV4x5Z46Vl+AdW vNM8JSPDYwMsdxJE5eUhnWSYg4AU/wB5evtV4N8ruGNXNFI6bR9aujoFvqM9xaxSIkabJIWOMkYz gjn5f1pt/e6pcaxpxea0zG8jF44GT5VXnqxzwvHA79a9FSueY4pIjlzYXsMV94gjheC0nUOXgBjY AAA5Xkkp9f1rlriHU9S1G4vLXVjdqtnHFNNbhSqtgHbwOOrfl60ne1kXZc1yG4tbmCJJ7pbqWC6L AcOofCEA/LyRx2965zWZrVr2CN57xJXhPyyRSLg5HHIHHB5qeWXYOaPM1c6fRdF1DxJdf2fptxFD MELs02cbcbTjAPPzfzpviTwfq+kaLPez6xa3EFvOYJWhGSrbeTyozhhzjuD9a83K6Up4dtPr+iPR zOrGNZRa6fqzkJJrxbLVmikllhjhEbElPvMPkGMHqIzW/wCG5kvZbqdZHfdt++BkDBAHHsBXTioO NBt/1qc+GkpYhW/rQg8VWE15NYwW8bu7XCABODy6jr261PqVpY2GnWcNxLJ/pSCRSZN7DczDcAD/ AHl78jIz1FRhIynB27/ojXGNRmr9v1Oi8PaPcXCj+z9BmuopxEgkhRWKcA8jIYAh1xnr61ZNk1le 39rqS21heQ2rypDK3mNcR7m3IvlhwrE5GDtPBzgYNdyjJI4p2SUrnPa3rbWdtHoJ062d9MdbJpEm O2QoPmIyuTnb6Vk2WoxHT4FW18u6tp2lIPb7y9ccn5umO1S6bc+VkqrG10aaaxsSFJoFFpNLuR0O RnIXoQMd+OeoroPBL+Zpvm7SvmEPhjk8gH+tefil+7+Z6OFuqtn2v+RoaqMwOfRTVXW7iwsptRsr WCGOC3soEYYBDSOiv0IJJzGDn/GtsCk1K/b9THMG0o27/oc/rf2NYNv2eGVGhEoaSJWZWWQYHK4x zyO9a/hzxLN4XvH1KwtkjuooZjH5WEKyMItpyuAQpfO08HkEYJz209JNnkc8nFJs720+K98utaVH qEB1Cy0eRpERZPKZmEZRdxAOcBgcHPPOfSv4l+LWu6pNLFN9khQXCSRwJCrBZEK8nOd2cHhs9fpj eM3yk32OB8W6xd6hcWMuoPHM88k7TM23aSGmPBHGM5wBxwMVyGsCG+1CJoFS3UnaD5YXPAIyMccZ H4DrWjfMvkgpv3pep0vg7Vv7J1dbppJArxvAfKBLMXUqoGATkuVA9yK1dY03WtT0m7glsnis4726 vFnaZfL+WVpFwd4Jyhc7tp6jkAE142Ut+xlBLrf8ke1mjUayb6q35s4/Q9NgubPUraG1F4klxbxy 7LpIhuKTANlhgKPlznpznHaxbeGLxdRtpra6jm/fqo8hjJ5So2CrEADcUBGBzgHjJwenMKkI07df +Cc2AjJVHN7L/K3/AAS54hk+zwXQwfMW2fbtwfnDIV/UCud1uwvoIbaF9NfyrMoIpwh2zEqVYh8Y I3R5xjILnr1OOB5lBpd1+R0Y9r2kbvo/zOj8O+LdS0fw6YrRooHMrrDKlziTYMSFAyoSMtjPzLn6 VyWm6pqQtZJJQYmlc2yvuOdrsQcgdeGPUe9d81ZJs8t8re5qeMQyeLbmW5sZSZ7yWbybY+ZI0jM2 2MKQCDlgOmfYkYNK3aSWeCK1gEsq3BnYA4Lxq27kAccKfWsKU51pqdrJ9Ot79S3GEY2uQQySXDTW YAWNJgsYBPHylh+orvvAEp/sYBl2MrlCuc4K8f0rjxqtBLz/AEZ6WBfNUb8v1Rt6gwNpMQeiH+Vc V4ruj9pdlt3kF1cKkrfwR+WnDMeMcNwvOfmPG3DLD8/K1D+v6+ZWMSaVyC/m/d3EImZ9irGpjGQM sTgZI7rUU85aS9aJTJ/o6D7xG390hz3zyP516ygr3PF0Nc22uCJL37KrwXUDTKVY8DauQflPPyue /A+tQanZ6qdS1GYWBW2T96zruKKuFOc7O5I59qwpVKcr8rvbcqVPla31XYpeJLmNIPD0Mlrsja2m ZSjhiVLy5/h4wePwpks+g6dCL2+inzFEk42SAmQ+UD12jk/gME88DPVPmUXyrWxFNR5rX6kdslhq 0kSzTLLAHDGSKbGCBnG5Tlc9Dgg4J6ZrL/trxLpZnfwt4SjtLm8tpIlWwmnurq0VkAL+ap9X4yx2 shBAK4rx8vTpKUZvk/P730PfxqU2pRXMeaXWoeJby2mjmudQmj80vcuzOdzf7Z74wevTJ9TXRWni a7t9M0+xv7S5d4/9OtrqSdkR40UjCoAO8ZUOGyCDjHSvZr06dePKnqjyqcpU91ozctNe8GanZFNV t/FN1NDApZraePbEqqFPBGMZxzgdu+c9F4n1zw/ZfDG5uvD8PlSXPlva/aUQujZjjYlRkFikZznI JZzxnFFONanBUtOW/QqbozfNre3U8/HiHUbnwrp1sl8RdNfztJ5e2MhEjjMfIA7yS/8A18DHeeH/ AAh5dhZa/wCJ/HAtDf26yW6ysDtUopX5ndc4HBUYxwQa2rz9jTbirt6fgY0qaqzs3ZIu+EP+EasH tr7xNrVnLIt2WMFvdxpGm1yUYIB8yMAG/g4YegFYvxT8bRaLrAsPCmm2NmkkRke7MZa5+berRk7t gUgk7Qoxu4rhwqqcyUk7LudNaFOKumm/I4Lxh4g1WLWr7T4L0xxW0pg3RIELsnyl8jkFiC2M8biB xXR+A9T8Y3JTStPuJJL+XMqpK6F5QyeYCWk4GV56j867pYehUVqq0Wv3L7zmhVqUn+73eh6bpXw+ 8YX+pPJq3iaOzi8qOSPZdBlLljuRlDADAxnAIwQBnnHbXPg7w2lwbbVJpbtr0RsLqzk3Czk43DB2 gqQPvHJH90HmuWpVw3MlQjZLTzf9eZ0KlXlF+1d2/wACvq+geE7KKW7a++zwRu080iW5lARRI3Vi CgG4Dhn4UZ5Oa8QHxBtr/ULOzgslsrO4lWOW4nbIjQJGhfaOOApbv+nPbTpc26OGSUdmbi+IbDTt ei0+5122W1WOaC41CO0ciYFV2OqDBDEYTaSR8rHkMM37j4jaiLu6t9CzpsNxJGs0SIMPuKqrODnp sJOffjpjhwNFVqr0913btf7r79vkVWfs4rleuy7HS3xtNftLHVruK0tBKs8USXDBvLZ5roIo6Fuq 9BzjtRp3ww1XVY1uIIVurWOCJWj3KwfbGocEE/MBtI25zhgcc4rsnyRqumntoTCMnTVRre54p8LN WSLwn4m0aTVIrBrmJWt2aZYWL4bgPkHGVQEZxjPqa1vg94kfTYdUgkE80IgF2YotzszIQrBUHUkN knsEz0GRzTpKXtLrezv6f8Md0anLya9zO+IUq6pZXniODTbq3ge9hhc3aMrs7RMSE7bR5ZJGf4l4 Fc4/imd2tFXT7MRWZY28LQCSNNxJIIfdvHJ+/uq6FOnKGjvbttsTWqTjLVff6np3hefw7c/B3VPE 154btH1S3lNk7wxCNWViArMoIXjzR91QTtGT3FjUdD0DxJ4S0vWNP0GwtTbwvb3EMTOvmyKoKE7S CT1bJydpAJOM1z1KVeEZTjJ6PRfLzNoSpScYyittfvOOHheXUvFWj6FDb2ttLexs6xwSYAUFhy7K DnKtjOcDHJr2P4qeBbrxOljomlPAt1ppV3j8zhIZGKqQCOfuNznjaQfUTUqOlOm272u2yoQU4zSV r20OG1n4S3uneI7Zb/VdHgsiU8v7fObdbmKMRqTgNxnJyA4PytgjjMPib4baTfa00w8daMSUwsUd 2uzCKmMSvK2C2XPPccAA8bvFTmk6UG/y/L/IyWHjHSpKxzOj6Po1rqbS6jo1xq6KxaRVvVw7YDFR Iqsp5yOAc5zUXiW8iXxDcanpdm2kxSBXhto5Xb7OgG1U3Nz8oAGe/t0E0alSVflqf5fgVUpwjS5o f18z334cy37eB9Il1O8N5dTW4maZz8xD/MoJ7kAgfhXnHib4xatDNe6Xa6FawsrNBKZpXkOQSDjA XHIrOlSjUxEltZ/qXUqOFFN63/yOR1j4k+JNU0qXTZjbQR3EflTyRRHe6EEEHcSOcnoAfep/Cnwy 8T6hpNj4gmsPsekXsos7W6unSOOSUgngMQSMA8/d+Vskba9SpUjQjeR5dnNpHa698PNEtdMv7vVN YtV1a007UhPB9utlJuIQ4VtofO4sQAvVsAoGClhwug6dqmqw7rdVhSWzXddSnau/HHPf+Lp0zzVZ bypvk202d+v+RnjLuN5f8Poe/RL9gjjtIZCEtxtTIHGO+PXOT9Saoav8U4PD94NOvtfa3mVA+37O XwCeOinB4rw71K1Vyi9Xqe4owpUlGS0R886fpuiWireW8U7hpfKU3cyBVOOG6ADlh1zj9RJp2k67 o+qveWwgtFO9YXmnjAaNwV+7z1U9Md/WmsU4/wC8dbqyv5f5hLDL/lzunfU6zxFpl8PgNJLe3EEr Jqi3cZRicx8Q4GQM/MT+FePDGa9DCOLg3BWVzixKkppSd3Y9R+EWt27eGdY8LajsgsLtZGNyULmO RlVVwoBzjbuH+7WDodmuoWjtJdzW5gAX5I1bI5PIJGMU51vZ+0cNWraf15DhR9pyKWid9Tq/hpo+ nr450ueTWVnmadYkjmjWLknjoxDZ+7j/AGvavqKaaMvvMEO9Tnd5QJB+uK4dcTPmqwtbb+tDqklh 48tOVz4Xv7qZb2dUkKoJGCgE8DNVmupmHzSsfxr6NTkklc8WyZ6/p9rDp3wf8Ka+iR+e+oXIcmP5 nO87SW9hERj/AGj754Lxbdvc6xdzkAebg/oBXDGCcnNd2dUpe6o+R9IfBLwneN4f0b7a15IkyF7m 2nEyQpbHJiMMqttEgOxypADKdpZQDnW8Kfs76Vda14nutU1BdStdYsnOmSSw7ZreSR9xcrgfMhMY z8pO5gyLkrXz7xErVFSdp239Xf8Ar8rajxFR8zp9F+mhe8EfszeGf+FXzw+J7SOTxLNBIY762nm2 wEk7DtLAMf8AgIGABjOSfcb/AEHw7baDpAvYcWfhqRLu2QE4R44nRSe7ECQn/ewa0linOpzVfhaf 3P8A4CElyvQ+dfEngxPFNsJNW1LUri3eSa6gsY0ijKGWTcxwx+6dxJGQTxznr50/wm0qHXPL2QmG GXdJGkbyTrGApyUWUjlmUdTgMCf7pypyqRsoy5baP089GeryU1Hlcb9jq9U1CCG+limmCESBcyEo CWLYGWxk5Vvyr518dakdU8W6ndl0dTOURkPBRflUj8FFd+Ci1O77GGKknDTuXrMILSONlDJHKXGO 5IA/pV+9nEkzRIQQmFUhs52gAfyzXkTk5St/XQ91U4w1NHw5rb/YbvR7y2S7tZYnkMM43plFLjjt yv8AniohqWhJpf2iXQtKinaMNGv9mB1ZumD8wIGQeefpW0LyqcvPJK3R+v8AkcVZJJyUU35/Ibd3 tm2k2MsWnw2v2qMyMLNBCu5WZOEwSenr+XSqGjeE/EF9B/aKpbW1tKzbZrmYKp5PYZPb0rsw9anh XKVRt307tnJXpTrRSgl+SOz+FPg91+IWlvqOq2kv2acTrFaq7hyilxlyoAwQvr6cGvdb+a7bT530 5Y5LwwM1usmdhkwQobHbIFdHt/byTSsvM5/Y+yjZvU+Jbw/6TLgcbj/OovYivaueZY+gdK06PVv2 XrWIYEtks93G23JBSaUnv3XI/GuH+G8Fnql3dWV7ZRXty9sXtFlVSzSIQSoLdym/CjJZtoAya4Wp SoVoRdmru/8AXodacY1KcpK62/r7z6h+Ft3rFn4L03WoWhW1jIsJ3Ck7dhRcMTuIyigggY7fL95f Rb7UopLfz7ey854D5scSna28DKlOeATgHrjLryGyfkVONFqnUb/ebenXX+vxIxcbVZPzZr6p4htL Hw1bXk92tvGQjyySH7oHJB/EHrXM6/q8viGwW0BEFrO26dpQdu1mCrvx0UZXOepNYupKdWNOX2Vq /Rv/ADsOk02pPpqVpLPRNJsiYrn+0p4YsNJGc5GADnbkKPqT9K8x1PXbTS7C7vPEGr2sPmTv5TRq 6qi5OxBgBnO0ZPPXOMCunC0atavOTba2S9ep0U6rlJzk7eRzt18Tfh1cQtFf/Z7gK4ZVNo8q5A6/ Mg5BJH0+pA8Y8dQ/DW5jkm8NPf2Nz/BEcyQtweu/5hk453HH92voMPhcVRlrsFatQqKxmaPe2V0u 1HAb+4/B/wDr1euF5GxRvJ4AH9a+eqQnSqcsj6inUhXhzQH2MDQXRuFj8w+VIm3djJZCvX8azjBt j2nJUdfSrp1Pe5vT9SZ0k9C2s3madZ2+3b9nR0VgfvAuX/rWzf3ggns444sCKziU9erLvJ/NzV35 pXMpRSjYfo/iG/0nWYNTs5FSaAnbuUFSCCCCPcEj8eOeateL9ca+urSZ5ppbOfa6I7ZKDJDBQxwv zKe4/KuuEr6HDUjazKvizwt4G0i8L3U+qvPN+++z2xTaqljwMqMAEEcnP1p1tpnw78glNJvLqXa7 KJJmX7q7uSGHXnselbrF4uVK6aX5/qcjw9BT1uzqtPu7bTPDWp+HdKgENlfWx8uKR2byHkjXOCeS MHOPXn1B8m8O6hLpuqW93EzLJDIGVlOCO2QexHWvTwV60ZRm73Vn+JxYm1KUXFbP/I+s/gL4r1UJ dE+HZra21WAtdx3Ns0VrJMV+S5iIXb5bkhZI+Au4Op8tXEXLP408U6N8Q7zTda0+bS7S2T9zHKpJ wSOdzAZGQSMDjBxnGa8DG4aPsrTs3C7TXft89dPkLEThVTnH+vz/AK1Ib/xjd69e2tignkH2h/s5 mTakS5PzgcFiQSBkHhexxnubfThe37XU7yS6ezlljkkIEy5ypKA7enHOT1xwTnzoRqOlKMnrO7+e v+cfuOGE7xdzN8c+OzZl/DGkae8SQqFnZAFRE2g7RjjoRwOxIzjNeH/HnUz/AGFpdqCP38jzMDnI 2gAcf8Db8q9TI6Dw8XCWr3v09P67+Rukoxt3PGnmfu1RGV/WvqHJkJIt2KMJ1NdHYy6xaaxFp8to 80k6LIkbD5ijKGUg+m0g/T0rwsRCFW8Zdj2MPUnRtKPc6JHGTA6NFMRkpIu1se3t9KzZ0CuQcBe5 NeBFOLsfSRkqi5kT6fbecTxgk5qTVfNS6LSyA5VFHHZVAH6CtVO07EShcqxyNt6E9zxReQq1mm1Q pPzEgd66YTsznnTvYt+NJZtQl0q7kJeR7Ab245IlkBPpVGyWVACCVC5GRxxjBrSE0oW9fzOd0ru5 3M4kuBpaquWeziGV69x/Suj+DnwRh8U+OmW+vlh0e2k+1SwBGy8AYZj35G0nIGck4yeCMVrgsasP X5X10t53/wCHPMzKMVTXds+qvihaR2FlBqFrFFDCB5bsgC8/wjBIHPPPGMda+WfG99KnmxzSTOiy 7XMqbtpbOTn7vLcg9OB1xXDmlOzSh+B4Va6dibwrok+vWllo+jxwyarcbmlMhRfkwwJySOq44B6A 16P8RdR8SeENNjvb7wfevAQqvcW00MkCN0wW3ZAzgAsFzkdCcVNGlOalNbf02KlFtNs8Z8QeM5ry Izl7S01GUH93JMXijHG3dKg25wcEZ+Ug5xXjnjLX7zXrqGe+jgSSGLyQIc7SAzHPU5Pzfyr6DL58 0XF/ZOlX5bHOscnmkJAr0mBmUViUFFABRQAUUAFFABRQAUUAFFABRQAUUAf/2f/bAEMACAYGBwYF CAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0 Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMv/AABEIAwoEhwMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQID BAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHB FVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna 4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1 EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ0 4SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeI iYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery 8/T19vf4+fr/2gAMAwEAAhEDEQA/AOcg0y8uLMXMMlq6n+HzDkH0PHB9qfe6Vf2M7I1q8iKiOzxD dgMoYcDnvVFV2vvjZo3/ALyNg1e/tjVBKJVv3VxGsedi8hQAOo6gAc+1eZaaWh3OzKSSJIu5DkU+ o9jNM0skhd3YsxI6k9TUlaJu2omgpaBS0xBS0gpaYC0tJS0ALSikFLTEKKWminUALRR3ooAUUopK WgApaKBQAtLSUtAC0optLQMnt7qe1ffbzSQt6xuVz+XWt2z8Zapb4E5iuk7+Yu1v++l/wNc5S5qZ QjLdAm1sehWfjXTp8C5Sa1b1I3r+a8/pW9a3ttepvtbiKZe5jYHH19K8hBpyMUkDoxVx0ZTgj8RW UsPHoWqkkeyZpc15nZ+KdXtMD7T56D+Gdd368H9a3rPxzbvgXlpJCe7xHev5cH+dYyoyRoqq6nX5 paz7LV9P1DAtbuKRv7mcN/3yeavZrJprctNPYdmnA0wGlBpFD81JHNJEco7L9DUNLmjbYVr7mjFq kq4Eiq49ehq7FqNvJwWKH0asEGnZreGJqR63MpYeEvI6YEMMggj1FLXORzPEco7KfY1ci1SVeJFD j16GuqGMi/iVjnlhpLbU16KqxahBJ1bYfRqsggjIII9RXVCcZ/CznlFx3QtFFFWIKKKKACkxS0Ur ANIppQEcipKSolBMdypLZxv2waozWDDkcitikK1y1MJF7GsK0onNSWxHaq7w+1dS8COPmUVTl09T 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 ------=_NextPart_000_00D5_01CA9129.9BE8EAA0-- From BATV+8af43e356b7547cacc14+2330+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 9 08:33:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o09EXRW4163518 for ; Sat, 9 Jan 2010 08:33:30 -0600 X-ASG-Debug-ID: 1263047661-467a03380000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8086F155476; Sat, 9 Jan 2010 06:34:21 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 9R9VE6V6ZYw6SPrN; Sat, 09 Jan 2010 06:34:21 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTcOR-0002XB-Ks; Sat, 09 Jan 2010 14:34:19 +0000 Date: Sat, 9 Jan 2010 09:34:19 -0500 From: Christoph Hellwig To: Alex Elder Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfstests: 050: ignore duplicates reported by repquota Subject: Re: [PATCH 1/2] xfstests: 050: ignore duplicates reported by repquota Message-ID: <20100109143419.GA9688@infradead.org> References: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6933@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6933@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263047661 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 08, 2010 at 12:14:41PM -0600, Alex Elder wrote: > Arrange to ignore duplicate entries reported by the "repquota" > xfs_quota command. This can happen if an id is used more than once > (such as when two user names are assigned the same uid). > > Since we are already sorting the output we can accomplish this by > adding the "-u" (unique) option to the sort command. Shorten some > long lines while we're at it. Looks good, Reviewed-by: Christoph Hellwig Btw, where is patch 2 of the series? From BATV+8af43e356b7547cacc14+2330+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 9 08:42:37 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_210 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o09Egamr164326 for ; Sat, 9 Jan 2010 08:42:37 -0600 X-ASG-Debug-ID: 1263048209-2bca00f50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C82A013577A4 for ; Sat, 9 Jan 2010 06:43:30 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id CO7AEEaMoUbJWUSE for ; Sat, 09 Jan 2010 06:43:30 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTcXI-0004Jd-0q; Sat, 09 Jan 2010 14:43:28 +0000 Date: Sat, 9 Jan 2010 09:43:28 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , Eric Sandeen , xfs-oss X-ASG-Orig-Subj: Re: [PATCH V2] mkfs: handle 4k sector devices more cleanly Subject: Re: [PATCH V2] mkfs: handle 4k sector devices more cleanly Message-ID: <20100109144327.GB9688@infradead.org> References: <4B1E9A25.50108@redhat.com> <4B476171.4020701@sandeen.net> <20100108174400.GA17634@infradead.org> <4B47E8C0.2040809@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B47E8C0.2040809@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263048210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 08, 2010 at 08:24:00PM -0600, Eric Sandeen wrote: > Christoph Hellwig wrote: > > On Fri, Jan 08, 2010 at 10:46:41AM -0600, Eric Sandeen wrote: > >> +extern void platform_findsizes (char *path, int fd, long long *sz, int *bsz); > > > > Can you move the prototype from libxfs/init.h to include/libxfs.h > > instead of adding it to the .c file? > > actually it seems a little out of place in libxfs/init.h; that probably > works but there are no other platform_* functions there... > > Should this be more like an xfs_findsizes in libxfs, which > calls platform_findsizes internally just for consistency? *shrug* I'd just move the header around to keep it simple for now. > The only way this is used is: it's sent to libxfs_init and then from there > only to libxfs_open which does: > > if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) { > if (setblksize == 1) > /* use the default blocksize */ > (void)platform_set_blocksize(fd, path, statb.st_rdev, XFS_MIN_SECTORSIZE, 0); > else { > /* given an explicit blocksize to use */ > if (platform_set_blocksize(fd, path, statb.st_rdev, setblksize, 1)) > exit(1); > } > } > > so "1" seems to have the special meaning of "use XFS_MIN_SECTORSIZE" > > Hm, ok but in my patch setblksize is 0, so it's not getting set. > I suppose this -might- mess up other utils ... Yes, now we do not set any size, while previously we always set XFS_MIN_SECTORSIZE. I don't think this actually changes anything - the kernel doesn't make use of this blocksize information outside of filesystems, and we already reset it on mount. > > Maye we should just do the xi.setblksize = sectorsize unconditionally? > > I think that's best. It's already defaulted to XFS_MIN_SECTORSIZE > so should be no functional change if it doesn't get otherwise set - although > I think it -does- get set in all cases now - either from ft.sectoralign/blocksize, > from the explicit -s setting, or the ft.sectorsize by default. > > What do you think about removing the "1" magic if so? At that point I think > nothing relies on it. repair uses it in a weird way. From aelder@sgi.com Sat Jan 9 10:32:07 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o09GW6c0173818 for ; Sat, 9 Jan 2010 10:32:07 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 41ECB8F8115; Sat, 9 Jan 2010 08:32:57 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: Re: [PATCH v2] xfs: Don't flush stale inodes Date: Sat, 9 Jan 2010 10:22:14 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A693B@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100109000927.GE8654@discord.disaster> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Re: [PATCH v2] xfs: Don't flush stale inodes Thread-Index: AcqQwAgZZLZCMdZSQ2OMGkB+bav6cQAhhQ1A From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > On Fri, Jan 08, 2010 at 05:14:25PM -0600, Alex Elder wrote: >> Dave Chinner wrote: >>> Because inodes remain in cache much longer than inode buffers do >>> under memory pressure, we can get the situation where we have stale, >>> dirty inodes being reclaimed but the backing storage has been freed. >>> Hence we should never, ever flush XFS_ISTALE inodes to disk as >>> there is no guarantee that the backing buffer is in cache and >>> still marked stale when the flush occurs. >>>=20 >>> Signed-off-by: Dave Chinner >>=20 >> Dave, I'm putting this patch in before your perag radix tree >> patch series, so I had to port it. I am submitting here on >> your behalf, but would like you to review it if possible. >> It builds fine, and I've run it through a quick test. >> I will retain all of your original commentary, etc. I did >> *not* implement Christoph's recommendation that you change >> the "for" loop in xfs_alloc_search_busy() to a more typical form. >>=20 >> For reference, the original patch is here: >> http://patchwork.xfs.org/patch/382/ >>=20 >> Signed-off-by: Alex Elder >=20 > Ah, which patch are you talking about? The title says stale inodes, > the patch is searching busy extents. Oops. I blame my Left-handed mouse clicking skills, which are improving but are still unreliable. I'm working mostly without my Right hand this week because of an injury... > Assuming you meant the busy extent search fix, you've ported the > wrong version of the busy extent search fix. I posted an updated > version after Christoph reviewed that one (in my response to > Christoph's review). Yes, I see that now. I had marked your older one "Reviewed" and didn't look further. I will re-do the port and will re-submit. BTW I also plan to port the perag radix tree patch(es) over this for you after I get this one published. > Because it was a new patch, patchwork doesn't add the email to the > original thread - it starts a new one. It's a real PITA, IMO, but > that is the way patchwork does stuff. The patch that should be > checked in is this one: >=20 > http://patchwork.xfs.org/patch/387/ Yes, I agree. I find it helpful when updates are flagged with something like "[PATCH v2]" because it somehow catches my eye better *and* makes it explicit that the message contains a patch that obsoletes a previous one. -Alex From aelder@sgi.com Sat Jan 9 12:19:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o09IJogJ182713 for ; Sat, 9 Jan 2010 12:19:50 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id C64E9304124; Sat, 9 Jan 2010 10:20:41 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: [PATCH, updated] xfs: Ensure we force all busy extents in range to disk Date: Sat, 9 Jan 2010 12:10:02 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A693C@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100109000927.GE8654@discord.disaster> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Re: [PATCH v2] xfs: Don't flush stale inodes Thread-Index: AcqQwAgZZLZCMdZSQ2OMGkB+bav6cQAkPeTg From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Port of this patch to the current XFS master top-of-tree, which does not yet have the perag radix-tree changes. http://patchwork.xfs.org/patch/387/ -Alex When we search for and find a busy extent during allocation we force the log out to ensure the extent free transaction is on disk before the allocation transaction. The current implementation has a subtle bug in it--it does not handle multiple overlapping ranges. That is, if we free lots of little extents into a single contiguous extent, then allocate the contiguous extent, the busy search code stops searching at the first extent it finds that overlaps the allocated range. It then uses the commit LSN of the transaction to force the log out to. Unfortunately, the other busy ranges might have more recent commit LSNs than the first busy extent that is found, and this results in xfs_alloc_search_busy() returning before all the extent free transactions are on disk for the range being allocated. This can lead to potential metadata corruption or stale data exposure after a crash because log replay won't replay all the extent free transactions that cover the allocation range. Signed-off-by: Dave Chinner Signed-off-by: Alex Elder --- fs/xfs/linux-2.6/xfs_trace.h | 9 +++++--- fs/xfs/xfs_alloc.c | 46 = ++++++++++++++++++++----------------------- 2 files changed, 28 insertions(+), 27 deletions(-) Index: b/fs/xfs/linux-2.6/xfs_trace.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h @@ -1079,14 +1079,15 @@ TRACE_EVENT(xfs_alloc_unbusy, =20 TRACE_EVENT(xfs_alloc_busysearch, TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t = agbno, - xfs_extlen_t len, int found), - TP_ARGS(mp, agno, agbno, len, found), + xfs_extlen_t len, int found, xfs_lsn_t lsn), + TP_ARGS(mp, agno, agbno, len, found, lsn), TP_STRUCT__entry( __field(dev_t, dev) __field(xfs_agnumber_t, agno) __field(xfs_agblock_t, agbno) __field(xfs_extlen_t, len) __field(int, found) + __field(xfs_lsn_t, lsn) ), TP_fast_assign( __entry->dev =3D mp->m_super->s_dev; @@ -1094,12 +1095,14 @@ TRACE_EVENT(xfs_alloc_busysearch, __entry->agbno =3D agbno; __entry->len =3D len; __entry->found =3D found; + __entry->lsn =3D lsn; ), - TP_printk("dev %d:%d agno %u agbno %u len %u %s", + TP_printk("dev %d:%d agno %u agbno %u len %u force lsn 0x%llx %s", MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno, __entry->agbno, __entry->len, + __entry->lsn, __print_symbolic(__entry->found, XFS_BUSY_STATES)) ); =20 Index: b/fs/xfs/xfs_alloc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -2563,43 +2563,41 @@ xfs_alloc_search_busy(xfs_trans_t *tp, xfs_mount_t *mp; xfs_perag_busy_t *bsy; xfs_agblock_t uend, bend; - xfs_lsn_t lsn; + xfs_lsn_t lsn =3D 0; int cnt; =20 mp =3D tp->t_mountp; =20 spin_lock(&mp->m_perag[agno].pagb_lock); - cnt =3D mp->m_perag[agno].pagb_count; =20 uend =3D bno + len - 1; =20 - /* search pagb_list for this slot, skipping open slots */ - for (bsy =3D mp->m_perag[agno].pagb_list; cnt; bsy++) { - - /* - * (start1,length1) within (start2, length2) - */ - if (bsy->busy_tp !=3D NULL) { - bend =3D bsy->busy_start + bsy->busy_length - 1; - if ((bno > bend) || (uend < bsy->busy_start)) { - cnt--; - } else { - break; - } - } + /* + * search pagb_list for this slot, skipping open slots. We have to + * search the entire array as there may be multiple overlaps and + * we have to get the most recent LSN for the log force to push out + * all the transactions that span the range. + */ + for (cnt =3D 0; cnt < mp->m_perag[agno].pagb_count; cnt++) { + bsy =3D &mp->m_perag[agno].pagb_list[cnt]; + if (!bsy->busy_tp) + continue; + + bend =3D bsy->busy_start + bsy->busy_length - 1; + if (bno > bend || uend < bsy->busy_start) + continue; + + /* (start1,length1) within (start2, length2) */ + if (XFS_LSN_CMP(bsy->busy_tp->t_commit_lsn, lsn) > 0) + lsn =3D bsy->busy_tp->t_commit_lsn; } - - trace_xfs_alloc_busysearch(mp, agno, bno, len, !!cnt); + spin_unlock(&mp->m_perag[agno].pagb_lock); + trace_xfs_alloc_busysearch(tp->t_mountp, agno, bno, len, !!cnt, lsn); =20 /* * If a block was found, force the log through the LSN of the * transaction that freed the block */ - if (cnt) { - lsn =3D bsy->busy_tp->t_commit_lsn; - spin_unlock(&mp->m_perag[agno].pagb_lock); + if (lsn) xfs_log_force(mp, lsn, XFS_LOG_FORCE|XFS_LOG_SYNC); - } else { - spin_unlock(&mp->m_perag[agno].pagb_lock); - } } From BATV+8af43e356b7547cacc14+2330+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 9 13:34:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o09JYmSe190328 for ; Sat, 9 Jan 2010 13:34:50 -0600 X-ASG-Debug-ID: 1263065716-05f100560000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6F14FEEC9EC; Sat, 9 Jan 2010 11:35:16 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id JnwipLe1FB9FXzyf; Sat, 09 Jan 2010 11:35:16 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NTh5e-0007Zr-4l; Sat, 09 Jan 2010 19:35:14 +0000 Date: Sat, 9 Jan 2010 14:35:14 -0500 From: Christoph Hellwig To: Alex Elder Cc: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH, updated] xfs: Ensure we force all busy extents in range to disk Subject: Re: [PATCH, updated] xfs: Ensure we force all busy extents in range to disk Message-ID: <20100109193514.GA12372@infradead.org> References: <20100109000927.GE8654@discord.disaster> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A693C@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A693C@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263065716 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig > TRACE_EVENT(xfs_alloc_busysearch, > TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno, > - xfs_extlen_t len, int found), > - TP_ARGS(mp, agno, agbno, len, found), > + xfs_extlen_t len, int found, xfs_lsn_t lsn), > + TP_ARGS(mp, agno, agbno, len, found, lsn), The found argument to this tracepoint can be dropped - with the new loop style it doesn't work anymore, and a non-zero lsn provides the same information. From bjacke@sernet.de Sat Jan 9 16:02:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, MIME_8BIT_HEADER autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o09M25Sa204916 for ; Sat, 9 Jan 2010 16:02:05 -0600 X-ASG-Debug-ID: 1263074577-10a501750000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.SerNet.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8577E1C3EA0E for ; Sat, 9 Jan 2010 14:02:57 -0800 (PST) Received: from mail.SerNet.de (mail.SerNet.de [193.175.80.2]) by cuda.sgi.com with ESMTP id JOYbyyVb4pIHtjlh for ; Sat, 09 Jan 2010 14:02:57 -0800 (PST) Received: from intern.SerNet.DE by mail.SerNet.DE with esmtp (Exim 4.63 #1) for xfs@oss.sgi.com id 1NTjOZ-00045W-Sm; Sat, 09 Jan 2010 23:02:55 +0100 Received: by intern.SerNet.DE id 1NTjOZ-001wx2-Iz; Sat, 09 Jan 2010 23:02:55 +0100 Received: by intern.SerNet.DE id 1NTjOZ-001wwo-AF; Sat, 09 Jan 2010 23:02:55 +0100 Received: from bjacke by pell.sernet.de with local (Exim 4.69) (envelope-from ) id 1NTjOV-0004oI-H9 for xfs@oss.sgi.com; Sat, 09 Jan 2010 23:02:51 +0100 Date: Sat, 9 Jan 2010 23:02:51 +0100 From: =?iso-8859-1?Q?Bj=F6rn?= JACKE To: xfs@oss.sgi.com X-ASG-Orig-Subj: library to speed up posix_fallocate for XFS Subject: library to speed up posix_fallocate for XFS MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-ripemd160; protocol="application/pgp-signature"; boundary="82I3+IH0IqGh5yIs" Content-Disposition: inline X-Q: Sprechen und Hoeren ist Befruchten und Empfangen. (Novalis) Message-Id: Organization: SerNet GmbH, Goettingen, Germany X-Barracuda-Connect: mail.SerNet.de[193.175.80.2] X-Barracuda-Start-Time: 1263074578 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19393 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --82I3+IH0IqGh5yIs Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, some of you might be interested in this little LD_PRELOAD'able library, whi= ch makes posix_fallocate() use XFS' unwritten extents via xfsctl: http://repo.or.cz/w/libposix_fallocate_xfs.git You won't need this if you have Kernel 2.6.25 and glibc 2.10 - in that case kernel, glibc and filesystem work well together. If you don't have such an up-to-date system libposix_fallocate_xfs can help you to improve this call.= It works exactly like posix_fallocate() should do but it maps that funktion to much more efficient code adapted for XFS. Cheers Bj=F6rn --82I3+IH0IqGh5yIs Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.13 (GNU/Linux) iEYEAREDAAYFAktI/QsACgkQdoo0s+hIejls/QCg21flioD5LfJWNneF5KkXoHRh m2gAnizx3zHhxstyIknBOhyGJx2aeVGX =pheo -----END PGP SIGNATURE----- --82I3+IH0IqGh5yIs-- From SRS0+OI6W+38+fromorbit.com=david@internode.on.net Sat Jan 9 16:38:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o09McVwV207880 for ; Sat, 9 Jan 2010 16:38:32 -0600 X-ASG-Debug-ID: 1263076763-10a602920000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7D2741C3EA99 for ; Sat, 9 Jan 2010 14:39:24 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id 71HkZ37tMwTn2LEX for ; Sat, 09 Jan 2010 14:39:24 -0800 (PST) Received: from discord (unverified [121.44.149.201]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11170829-1927428 for multiple; Sun, 10 Jan 2010 09:09:22 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NTjxo-0001dA-SV; Sun, 10 Jan 2010 09:39:20 +1100 Date: Sun, 10 Jan 2010 09:39:20 +1100 From: Dave Chinner To: Alex Elder Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Re: [PATCH v2] xfs: Don't flush stale inodes Subject: Re: Re: [PATCH v2] xfs: Don't flush stale inodes Message-ID: <20100109223920.GA4019@discord.disaster> References: <20100109000927.GE8654@discord.disaster> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A693B@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A693B@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263076765 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19394 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 09, 2010 at 10:22:14AM -0600, Alex Elder wrote: > Yes, I see that now. I had marked your older one "Reviewed" and > didn't look further. I will re-do the port and will re-submit. > BTW I also plan to port the perag radix tree patch(es) over this > for you after I get this one published. Don't make extra work for yourself that slows down the rate at which you can merge stuff. When the tree is updated with these patches, I'll fix any conflicts in my patches and retest them, then send them to the list again. As a maintainer, manually munging a bunch patches around to fit, then asking if they are correct, then finally merging them doesn't scale - push that work back out to the patch authors where it does scale and who have probably already done the work.... ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From bfusk@168.com Sun Jan 10 05:31:10 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.5 required=5.0 tests=BAYES_50,MIME_8BIT_HEADER, TVD_SPACE_RATIO autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ABVAA4004986 for ; Sun, 10 Jan 2010 05:31:10 -0600 X-ASG-Debug-ID: 1263123116-2b95019d0001-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 168.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1935C15646D for ; Sun, 10 Jan 2010 03:31:58 -0800 (PST) Received: from 168.com ([113.85.9.91]) by cuda.sgi.com with ESMTP id 6CI7R8YAon6mOENu for ; Sun, 10 Jan 2010 03:31:58 -0800 (PST) Received: from MINGYANG-BA6C11[169.254.170.199] by 168.com with SMTP id 3FF61AEC; Sun, 13 Jan 2002 19:26:31 +0800 From: bfusk@168.com X-ASG-Orig-Subj: =?GB2312?B?vajW/tauz+c=?= Subject: =?GB2312?B?vajW/tauz+c=?= To: "linux-xfs" Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit Reply-To: hdts5h@163.com.cn Date: Sun, 13 Jan 2002 19:26:36 +0800 X-Mailer: Foxmail 5.0 beta2 [cn] X-Barracuda-Connect: UNKNOWN[113.85.9.91] X-Barracuda-Start-Time: 1263123123 Message-Id: <20100110113158.1935C15646D@cuda.sgi.com> X-Barracuda-Bayes: INNOCENT GLOBAL 0.4077 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19435 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean [ÖöĄ]¸÷ŔĎ×ܡ¤Łˇ ×ÉŃŻ·¶Î§ÓĐŁşĆŐͨÉĚĆ·ˇ˘ąă¸ćˇ˘ÔËĘ䡢µŔ·˝»Í¨ˇ˘×ÉŃŻˇ˘˝¨Öţˇ˘·ţÎńˇ˘ ˛ÍŇűˇ˘×ˇËޡ˘×âÁޡ˘»ú¶ŻłµĎúĘ۵ȡŁ137*1459*6568 ϵČËŁşĐ»Đˇ˝ă From aelder@sgi.com Sun Jan 10 10:45:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0AGj727024524 for ; Sun, 10 Jan 2010 10:45:07 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8090D304071; Sun, 10 Jan 2010 08:45:59 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: Re: [PATCH v2] xfs: Don't flush stale inodes Date: Sun, 10 Jan 2010 10:43:56 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6940@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100109223920.GA4019@discord.disaster> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Re: [PATCH v2] xfs: Don't flush stale inodes Thread-Index: AcqRfJrwhjCy6jt6R/iBSrFCNxFdugAl2TAA From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > On Sat, Jan 09, 2010 at 10:22:14AM -0600, Alex Elder wrote: >> Yes, I see that now. I had marked your older one "Reviewed" and >> didn't look further. I will re-do the port and will re-submit. >> BTW I also plan to port the perag radix tree patch(es) over this >> for you after I get this one published. >=20 > Don't make extra work for yourself that slows down the rate at which > you can merge stuff. When the tree is updated with these patches, > I'll fix any conflicts in my patches and retest them, then send them > to the list again. You are right. And I do very much want to keep improving the turnaround for merges. > As a maintainer, manually munging a bunch patches around to fit, > then asking if they are correct, then finally merging them doesn't > scale - push that work back out to the patch authors where it does > scale and who have probably already done the work.... ;) Right again, and I will gladly do this from here forward. Remind me if I stray off course again... Thanks a lot Dave. -Alex From aelder@oss.sgi.com Sun Jan 10 12:10:54 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0AIArjD032099 for ; Sun, 10 Jan 2010 12:10:53 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0AIAl8c032047; Sun, 10 Jan 2010 12:10:47 -0600 Date: Sun, 10 Jan 2010 12:10:47 -0600 Message-Id: <201001101810.o0AIAl8c032047@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.30-rc4-34429-g153f0ca X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: a2b63114daf490a68bc9a32dac99d1888c5de842 X-Git-Newrev: 153f0ca7b70ebf5a9726250a98d3651b6296c131 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 153f0ca xfs: Ensure we force all busy extents in range to disk 6701069 xfs: Don't flush stale inodes 996c3bc xfs: fix timestamp handling in xfs_setattr f00fbad xfs: use DECLARE_EVENT_CLASS from a2b63114daf490a68bc9a32dac99d1888c5de842 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 153f0ca7b70ebf5a9726250a98d3651b6296c131 Author: Dave Chinner Date: Sat Jan 2 02:38:56 2010 +0000 xfs: Ensure we force all busy extents in range to disk When we search for and find a busy extent during allocation we force the log out to ensure the extent free transaction is on disk before the allocation transaction. The current implementation has a subtle bug in it--it does not handle multiple overlapping ranges. That is, if we free lots of little extents into a single contiguous extent, then allocate the contiguous extent, the busy search code stops searching at the first extent it finds that overlaps the allocated range. It then uses the commit LSN of the transaction to force the log out to. Unfortunately, the other busy ranges might have more recent commit LSNs than the first busy extent that is found, and this results in xfs_alloc_search_busy() returning before all the extent free transactions are on disk for the range being allocated. This can lead to potential metadata corruption or stale data exposure after a crash because log replay won't replay all the extent free transactions that cover the allocation range. Modified-by: Alex Elder (Dropped the "found" argument from the xfs_alloc_busysearch trace event.) Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 67010697af7f00dd038322bdec108e7ffd0567e8 Author: Dave Chinner Date: Sat Jan 2 02:39:40 2010 +0000 xfs: Don't flush stale inodes Because inodes remain in cache much longer than inode buffers do under memory pressure, we can get the situation where we have stale, dirty inodes being reclaimed but the backing storage has been freed. Hence we should never, ever flush XFS_ISTALE inodes to disk as there is no guarantee that the backing buffer is in cache and still marked stale when the flush occurs. Signed-off-by: Dave Chinner Signed-off-by: Alex Elder commit 996c3bc089b09d1cbf15da156100210ca34f2eab Author: Christoph Hellwig Date: Wed Dec 23 16:09:13 2009 +0000 xfs: fix timestamp handling in xfs_setattr We currently have some rather odd code in xfs_setattr for updating the a/c/mtime timestamps: - first we do a non-transaction update if all three are updated together - second we implicitly update the ctime for various changes instead of relying on the ATTR_CTIME flag - third we set the timestamps to the current time instead of the arguments in the iattr structure in many cases. This patch makes sure we update it in a consistent way: - always transactional - ctime is only updated if ATTR_CTIME is set or we do a size update, which is a special case - always to the times passed in from the caller instead of the current time The only non-size caller of xfs_setattr that doesn't come from the VFS is updated to set ATTR_CTIME and pass in a valid ctime value. Reported-by: Eric Blake Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit f00fbad6d00afffef9e4e9ae78494dff70923897 Author: Christoph Hellwig Date: Mon Dec 21 14:03:03 2009 +0000 xfs: use DECLARE_EVENT_CLASS Using DECLARE_EVENT_CLASS allows us to to use trace event code instead of duplicating it in the binary. This was not available before 2.6.33 so it had to be done as a separate step once the prerequisite was merged. This only requires changes to xfs_trace.h and the results are rather impressive: hch@brick:~/work/linux-2.6/obj-kvm$ size fs/xfs/xfs.o* text data bss dec hex filename 607732 41884 3616 653232 9f7b0 fs/xfs/xfs.o 1026732 41884 3808 1072424 105d28 fs/xfs/xfs.o.old Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_acl.c | 3 +- fs/xfs/linux-2.6/xfs_trace.h | 1141 ++++++++++++++++++++++-------------------- fs/xfs/xfs_alloc.c | 44 +- fs/xfs/xfs_inode.c | 10 +- fs/xfs/xfs_vnodeops.c | 93 ++-- 5 files changed, 666 insertions(+), 625 deletions(-) hooks/post-receive -- XFS development tree From aelder@sgi.com Sun Jan 10 12:32:37 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0AIWa5s034371 for ; Sun, 10 Jan 2010 12:32:37 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id 143CD304070; Sun, 10 Jan 2010 10:33:28 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH, updated] xfs: Ensure we force all busy extents inrange to disk Date: Sun, 10 Jan 2010 12:28:08 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6941@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100109193514.GA12372@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH, updated] xfs: Ensure we force all busy extents inrange to disk Thread-Index: AcqRYu8jG7bNmp6bSoOMFdFy2teLDQAr7Z3w From: "Alex Elder" To: "Christoph Hellwig" Cc: "Dave Chinner" , X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Looks good, Thanks, I will publish this today. > Reviewed-by: Christoph Hellwig >=20 >> TRACE_EVENT(xfs_alloc_busysearch, >> TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t = agbno, >> - xfs_extlen_t len, int found), >> - TP_ARGS(mp, agno, agbno, len, found), >> + xfs_extlen_t len, int found, xfs_lsn_t lsn), >> + TP_ARGS(mp, agno, agbno, len, found, lsn), >=20 > The found argument to this tracepoint can be dropped - with the new = loop > style it doesn't work anymore, and a non-zero lsn provides the same > information. I agree with that, and have now removed that argument from the tracepoint, with the net effect that the lsn argument simply replaces it. -Alex From aelder@oss.sgi.com Sun Jan 10 13:16:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0AJGNGI038532 for ; Sun, 10 Jan 2010 13:16:23 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0AJGIJZ038480; Sun, 10 Jan 2010 13:16:18 -0600 Date: Sun, 10 Jan 2010 13:16:18 -0600 Message-Id: <201001101916.o0AJGIJZ038480@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.30-rc4-34575-gfd45e478 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: a539bd8c86549b545b4ed27a0cfaf53fe649054d X-Git-Newrev: fd45e4784164d1017521086524e3442318c67370 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated fd45e478 xfs: Ensure we force all busy extents in range to disk 44e08c4 xfs: Don't flush stale inodes d6d59ba xfs: fix timestamp handling in xfs_setattr ea9a488 xfs: use DECLARE_EVENT_CLASS from a539bd8c86549b545b4ed27a0cfaf53fe649054d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit fd45e4784164d1017521086524e3442318c67370 Author: Dave Chinner Date: Sat Jan 2 02:38:56 2010 +0000 xfs: Ensure we force all busy extents in range to disk When we search for and find a busy extent during allocation we force the log out to ensure the extent free transaction is on disk before the allocation transaction. The current implementation has a subtle bug in it--it does not handle multiple overlapping ranges. That is, if we free lots of little extents into a single contiguous extent, then allocate the contiguous extent, the busy search code stops searching at the first extent it finds that overlaps the allocated range. It then uses the commit LSN of the transaction to force the log out to. Unfortunately, the other busy ranges might have more recent commit LSNs than the first busy extent that is found, and this results in xfs_alloc_search_busy() returning before all the extent free transactions are on disk for the range being allocated. This can lead to potential metadata corruption or stale data exposure after a crash because log replay won't replay all the extent free transactions that cover the allocation range. Modified-by: Alex Elder (Dropped the "found" argument from the xfs_alloc_busysearch trace event.) Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 44e08c45cc14e6190a424be8d450070c8e508fad Author: Dave Chinner Date: Sat Jan 2 02:39:40 2010 +0000 xfs: Don't flush stale inodes Because inodes remain in cache much longer than inode buffers do under memory pressure, we can get the situation where we have stale, dirty inodes being reclaimed but the backing storage has been freed. Hence we should never, ever flush XFS_ISTALE inodes to disk as there is no guarantee that the backing buffer is in cache and still marked stale when the flush occurs. Signed-off-by: Dave Chinner Signed-off-by: Alex Elder commit d6d59bada372bcf8bd36c3bbc71c485c29dd2a4b Author: Christoph Hellwig Date: Wed Dec 23 16:09:13 2009 +0000 xfs: fix timestamp handling in xfs_setattr We currently have some rather odd code in xfs_setattr for updating the a/c/mtime timestamps: - first we do a non-transaction update if all three are updated together - second we implicitly update the ctime for various changes instead of relying on the ATTR_CTIME flag - third we set the timestamps to the current time instead of the arguments in the iattr structure in many cases. This patch makes sure we update it in a consistent way: - always transactional - ctime is only updated if ATTR_CTIME is set or we do a size update, which is a special case - always to the times passed in from the caller instead of the current time The only non-size caller of xfs_setattr that doesn't come from the VFS is updated to set ATTR_CTIME and pass in a valid ctime value. Reported-by: Eric Blake Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit ea9a48881e093a41a79305fb1545ca0794b203dc Author: Christoph Hellwig Date: Mon Dec 21 14:03:03 2009 +0000 xfs: use DECLARE_EVENT_CLASS Using DECLARE_EVENT_CLASS allows us to to use trace event code instead of duplicating it in the binary. This was not available before 2.6.33 so it had to be done as a separate step once the prerequisite was merged. This only requires changes to xfs_trace.h and the results are rather impressive: hch@brick:~/work/linux-2.6/obj-kvm$ size fs/xfs/xfs.o* text data bss dec hex filename 607732 41884 3616 653232 9f7b0 fs/xfs/xfs.o 1026732 41884 3808 1072424 105d28 fs/xfs/xfs.o.old Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_acl.c | 3 +- fs/xfs/linux-2.6/xfs_trace.h | 1141 ++++++++++++++++++++++-------------------- fs/xfs/xfs_alloc.c | 44 +- fs/xfs/xfs_inode.c | 10 +- fs/xfs/xfs_vnodeops.c | 93 ++-- 5 files changed, 666 insertions(+), 625 deletions(-) hooks/post-receive -- XFS development tree From aelder@sgi.com Sun Jan 10 13:25:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0AJPen8039469 for ; Sun, 10 Jan 2010 13:25:40 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id C3CB730405F for ; Sun, 10 Jan 2010 11:26:32 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: [PATCH 2/2] xfstests: 219: ignore duplicates reported by repquota Date: Sun, 10 Jan 2010 13:26:32 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6942@cf--amer001e--3.americas.sgi.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 2/2] xfstests: 219: ignore duplicates reported by repquota Thread-Index: AcqSKtETz0bH2Sl3SJSXwj2RlO60bw== From: "Alex Elder" To: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean (Re-sending; I misaddressed it the first time.) Arrange to ignore duplicate entries reported by the repquota command. This can happen if an id is used more than once (such as when two user names are assigned the same uid). Do this here by simply dropping any reported entries whose id number has already been seen in the output. Signed-off-by: Alex Elder --- 219 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Index: b/219 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- a/219 +++ b/219 @@ -85,7 +85,8 @@ test_accounting() $here/src/lstat64 $file | head -3 | filter_scratch done =20 - repquota -$type -s -n $SCRATCH_MNT | grep -v "^#0" | filter_scratch + repquota -$type -s -n $SCRATCH_MNT | grep -v "^#0" | filter_scratch | + awk '/^#/ { if (! seen[$1]) { seen[$1]++; next; } } { print }' } =20 # real QA test starts here From BATV+68f73abdf7e5cde0b8ba+2331+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 10 15:17:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ALHRKa049088 for ; Sun, 10 Jan 2010 15:17:29 -0600 X-ASG-Debug-ID: 1263158301-7f1802480000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E760D1C4003C; Sun, 10 Jan 2010 13:18:21 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Wf66J2VOx4sbytjE; Sun, 10 Jan 2010 13:18:21 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NU5Az-0007LX-6S; Sun, 10 Jan 2010 21:18:21 +0000 Date: Sun, 10 Jan 2010 16:18:21 -0500 From: Christoph Hellwig To: Alex Elder Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: 219: ignore duplicates reported by repquota Subject: Re: [PATCH 2/2] xfstests: 219: ignore duplicates reported by repquota Message-ID: <20100110211821.GA28166@infradead.org> References: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6942@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6942@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263158301 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Jan 10, 2010 at 01:26:32PM -0600, Alex Elder wrote: > (Re-sending; I misaddressed it the first time.) > > Arrange to ignore duplicate entries reported by the repquota command. > This can happen if an id is used more than once (such as when two user > names are assigned the same uid). > > Do this here by simply dropping any reported entries whose id number > has already been seen in the output. > > Signed-off-by: Alex Elder > > --- > 219 | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > Index: b/219 > =================================================================== > --- a/219 > +++ b/219 > @@ -85,7 +85,8 @@ test_accounting() > $here/src/lstat64 $file | head -3 | filter_scratch > done > > - repquota -$type -s -n $SCRATCH_MNT | grep -v "^#0" | filter_scratch > + repquota -$type -s -n $SCRATCH_MNT | grep -v "^#0" | filter_scratch | > + awk '/^#/ { if (! seen[$1]) { seen[$1]++; next; } } { print }' Looks good, Reviewed-by: Christoph Hellwig From BATV+68f73abdf7e5cde0b8ba+2331+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 10 15:25:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ALPPq9049564 for ; Sun, 10 Jan 2010 15:25:26 -0600 X-ASG-Debug-ID: 1263158779-1eda015a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9130DEF0A45 for ; Sun, 10 Jan 2010 13:26:19 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id uO2MbiPRRKBaSFjK for ; Sun, 10 Jan 2010 13:26:19 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NU5Ih-00009x-Al for xfs@oss.sgi.com; Sun, 10 Jan 2010 21:26:19 +0000 Date: Sun, 10 Jan 2010 16:26:19 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH, RFC] xfstests: test quota log replay in 087 Subject: [PATCH, RFC] xfstests: test quota log replay in 087 Message-ID: <20100110212619.GA30907@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263158780 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean By mounting the filesystem with quotas enabled in 087 we exercise the replay of the quota log items in this tests, which we otherwise don't test in xfstests. OSS bugzilla #855 is an example of something caught by this. Does this look okay, or should I add a duplicate of 087 with quotas enabled instead? Signed-off-by: Christoph Hellwig Index: xfstests-dev/087 =================================================================== --- xfstests-dev.orig/087 2010-01-10 21:14:27.000000000 +0000 +++ xfstests-dev/087 2010-01-10 21:15:45.000000000 +0000 @@ -38,6 +38,7 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 . ./common.rc . ./common.filter . ./common.log +. ./common.quota _do_meta() { @@ -59,6 +60,7 @@ _supported_os IRIX Linux rm -f $seq.full $tmp.* _require_scratch _require_v2log +_require_xfs_quota echo "*** init FS" umount $SCRATCH_DEV >/dev/null 2>&1 @@ -98,7 +100,7 @@ do # mount the FS _echofull "mount" - if ! _scratch_mount >>$seq.full 2>&1; then + if ! _scratch_mount -o uquota >>$seq.full 2>&1; then _echofull "mount failed: $MOUNT_OPTIONS" continue fi @@ -124,7 +126,7 @@ do _scratch_xfs_logprint -n >>$seq.full 2>&1 _echofull "mount with replay" - _scratch_mount >>$seq.full 2>&1 \ + _scratch_mount -o uquota >>$seq.full 2>&1 \ || _fail "mount failed: $MOUNT_OPTIONS" # check on what FS looks like after log recovery Index: xfstests-dev/group =================================================================== --- xfstests-dev.orig/group 2010-01-10 21:21:18.000000000 +0000 +++ xfstests-dev/group 2010-01-10 21:21:24.000000000 +0000 @@ -193,7 +193,7 @@ prealloc 084 ioctl rw auto 085 log auto quick 086 log v2log auto -087 log v2log auto +087 log v2log auto quota 088 perms auto quick 089 metadata auto 090 rw auto From BATV+68f73abdf7e5cde0b8ba+2331+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 10 15:51:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_52,J_CHICKENPOX_82,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ALpXEC052788 for ; Sun, 10 Jan 2010 15:51:33 -0600 X-ASG-Debug-ID: 1263160348-7f1a038c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 39A371C3FEC6 for ; Sun, 10 Jan 2010 13:52:28 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 8S56g2ecwPNZiYpi for ; Sun, 10 Jan 2010 13:52:28 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NU5hz-00043v-2B; Sun, 10 Jan 2010 21:52:27 +0000 Date: Sun, 10 Jan 2010 16:52:27 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Eric Blake X-ASG-Orig-Subj: [PATCH] xfstests: add test for ctimes updates in futimens Subject: [PATCH] xfstests: add test for ctimes updates in futimens Message-ID: <20100110215227.GA15354@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263160348 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This adds Erik's testcase for the ctime update in futimes that I fixed a while ago. Erik, can you double check the attribution and licensing for your testcase? Index: xfstests-dev/src/Makefile =================================================================== --- xfstests-dev.orig/src/Makefile 2010-01-10 21:44:41.000000000 +0000 +++ xfstests-dev/src/Makefile 2010-01-10 21:44:44.000000000 +0000 @@ -15,7 +15,8 @@ TARGETS = dirstress fill fill2 getpagesi LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize \ preallo_rw_pattern_reader preallo_rw_pattern_writer ftrunc trunc \ fs_perms testx looptest locktest unwritten_mmap \ - bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset + bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ + t_futimens ifeq ($(HAVE_XLOG_ASSIGN_LSN), true) LINUX_TARGETS += loggen Index: xfstests-dev/src/t_futimens.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests-dev/src/t_futimens.c 2010-01-10 21:44:44.000000000 +0000 @@ -0,0 +1,32 @@ +/* + * Check ctime updates when calling futimens without UTIME_OMIT for the + * mtime entry. + * + * Copyright (c) 2009 Eric Blake + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + */ +#include +#include +#include +#include + +int +main(int argc, char **argv) +{ + int fd = creat ("file", 0600); + struct stat st1, st2; + struct timespec t[2] = { { 1000000000, 0 }, { 0, UTIME_OMIT } }; + + fstat(fd, &st1); + sleep(1); + futimens(fd, t); + fstat(fd, &st2); + + if (st1.st_ctime == st2.st_ctime) + printf("failed to update ctime!\n"); + return 0; +} Index: xfstests-dev/221 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests-dev/221 2010-01-10 21:44:44.000000000 +0000 @@ -0,0 +1,49 @@ +#! /bin/sh +# FS QA Test No. 221 +# +# Check ctime updates when calling futimens without UTIME_OMIT for the +# mtime entry. +# +# Based on a bug report and testcase from Eric Blake . +# +#----------------------------------------------------------------------- +# Copyright (c) 2010 Christoph Hellwig. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=hch@lst.de + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +# get standard environment, filters and checks +. ./common.rc + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +echo "Silence is golden." + +(cd $TEST_DIR && $here/src/t_futimens) + +status=0 +exit $status Index: xfstests-dev/221.out =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests-dev/221.out 2010-01-10 21:44:44.000000000 +0000 @@ -0,0 +1,2 @@ +QA output created by 221 +Silence is golden. Index: xfstests-dev/group =================================================================== --- xfstests-dev.orig/group 2010-01-10 21:44:41.000000000 +0000 +++ xfstests-dev/group 2010-01-10 21:44:44.000000000 +0000 @@ -330,3 +330,4 @@ prealloc 218 auto fsr quick 219 auto quota quick 220 auto quota quick +221 auto metadata quick From SRS0+0MLQ+39+fromorbit.com=dave@internode.on.net Sun Jan 10 17:55:13 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ANtCuo064706 for ; Sun, 10 Jan 2010 17:55:12 -0600 X-ASG-Debug-ID: 1263167764-655303a10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9EB43EF1ABB for ; Sun, 10 Jan 2010 15:56:05 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id FEirSPANuzJxzQE9 for ; Sun, 10 Jan 2010 15:56:05 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11502689-1927428 for ; Mon, 11 Jan 2010 10:26:04 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NU7da-0002qW-MI for xfs@oss.sgi.com; Mon, 11 Jan 2010 10:56:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NU7ZY-0007Yx-NK for xfs@oss.sgi.com; Mon, 11 Jan 2010 10:51:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/4] xfs: Remove inode iolock held check during allocation Subject: [PATCH 4/4] xfs: Remove inode iolock held check during allocation Date: Mon, 11 Jan 2010 10:51:48 +1100 Message-Id: <1263167508-9346-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263167508-9346-1-git-send-email-david@fromorbit.com> References: <1263167508-9346-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263167766 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19473 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean lockdep complains about a the lock not being initialised as we do an ASSERT based check that the lock is not held before we initialise it to catch inodes freed with the lock held. lockdep does this check for us in the lock initialisation code, so remove the ASSERT to stop the lockdep warning. Signed-off-by: Dave Chinner --- fs/xfs/xfs_iget.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index fa402a6..155e798 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c @@ -73,7 +73,6 @@ xfs_inode_alloc( ASSERT(atomic_read(&ip->i_pincount) == 0); ASSERT(!spin_is_locked(&ip->i_flags_lock)); ASSERT(completion_done(&ip->i_flush)); - ASSERT(!rwsem_is_locked(&ip->i_iolock.mr_lock)); mrlock_init(&ip->i_iolock, MRLOCK_BARRIER, "xfsio", ip->i_ino); -- 1.6.5 From SRS0+0x7c+39+fromorbit.com=dave@internode.on.net Sun Jan 10 17:55:13 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ANtCYh064711 for ; Sun, 10 Jan 2010 17:55:13 -0600 X-ASG-Debug-ID: 1263167765-4e6800fe0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 65D581576DA for ; Sun, 10 Jan 2010 15:56:05 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id evx4QI6G3KkYxAJH for ; Sun, 10 Jan 2010 15:56:05 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11365178-1927428 for ; Mon, 11 Jan 2010 10:26:04 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NU7da-0002qS-H6 for xfs@oss.sgi.com; Mon, 11 Jan 2010 10:56:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NU7ZY-0007Yj-Er for xfs@oss.sgi.com; Mon, 11 Jan 2010 10:51:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/4] 2.6.33-rcX candidate fixes Subject: [PATCH 0/4] 2.6.33-rcX candidate fixes Date: Mon, 11 Jan 2010 10:51:44 +1100 Message-Id: <1263167508-9346-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263167767 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19474 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The first three of these patches are the respun inode reclaim fixes adressing all of Christoph's concerns. These should be OK for merge now, and once merged canbe backported to .31/.32. The last patch is a fix for a new lockdep warning since 2.6.32 that occurs during mount of an XFS filesystem. The ASSERT for the rwsem being held is redundant now that lockdep checks for the lock already being held/in use during lock initialisation that happens directly after the ASSERT in XFS. From SRS0+Kyn2+39+fromorbit.com=dave@internode.on.net Sun Jan 10 17:55:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ANtIhS064747 for ; Sun, 10 Jan 2010 17:55:18 -0600 X-ASG-Debug-ID: 1263167770-318b03a80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9ED9C1C3D4A1 for ; Sun, 10 Jan 2010 15:56:10 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id KWn2xu4cpBXlhlK3 for ; Sun, 10 Jan 2010 15:56:10 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11450533-1927428 for ; Mon, 11 Jan 2010 10:26:09 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NU7da-0002qT-H8 for xfs@oss.sgi.com; Mon, 11 Jan 2010 10:56:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NU7ZY-0007Yn-Gk for xfs@oss.sgi.com; Mon, 11 Jan 2010 10:51:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/4] xfs: reclaim inodes under a write lock Subject: [PATCH 1/4] xfs: reclaim inodes under a write lock Date: Mon, 11 Jan 2010 10:51:45 +1100 Message-Id: <1263167508-9346-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263167508-9346-1-git-send-email-david@fromorbit.com> References: <1263167508-9346-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263167772 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19474 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Make the inode tree reclaim walk exclusive to avoid races with concurrent sync walkers and lookups. This is a version of a patch posted by Christoph Hellwig that avoids all the code duplication. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_sync.c | 150 ++++++++++++++++++---------------------- fs/xfs/linux-2.6/xfs_sync.h | 2 +- fs/xfs/quota/xfs_qm_syscalls.c | 2 +- 3 files changed, 69 insertions(+), 85 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 6fed97a..2ee1265 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -65,7 +65,6 @@ xfs_inode_ag_lookup( * as the tree is sparse and a gang lookup walks to find * the number of objects requested. */ - read_lock(&pag->pag_ici_lock); if (tag == XFS_ICI_NO_TAG) { nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, (void **)&ip, *first_index, 1); @@ -74,7 +73,7 @@ xfs_inode_ag_lookup( (void **)&ip, *first_index, 1, tag); } if (!nr_found) - goto unlock; + return NULL; /* * Update the index for the next lookup. Catch overflows @@ -84,13 +83,8 @@ xfs_inode_ag_lookup( */ *first_index = XFS_INO_TO_AGINO(mp, ip->i_ino + 1); if (*first_index < XFS_INO_TO_AGINO(mp, ip->i_ino)) - goto unlock; - + return NULL; return ip; - -unlock: - read_unlock(&pag->pag_ici_lock); - return NULL; } STATIC int @@ -100,7 +94,8 @@ xfs_inode_ag_walk( int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), int flags, - int tag) + int tag, + int exclusive) { struct xfs_perag *pag = &mp->m_perag[ag]; uint32_t first_index; @@ -114,10 +109,20 @@ restart: int error = 0; xfs_inode_t *ip; + if (exclusive) + write_lock(&pag->pag_ici_lock); + else + read_lock(&pag->pag_ici_lock); ip = xfs_inode_ag_lookup(mp, pag, &first_index, tag); - if (!ip) + if (!ip) { + if (exclusive) + write_unlock(&pag->pag_ici_lock); + else + read_unlock(&pag->pag_ici_lock); break; + } + /* execute releases pag->pag_ici_lock */ error = execute(ip, pag, flags); if (error == EAGAIN) { skipped++; @@ -125,9 +130,8 @@ restart: } if (error) last_error = error; - /* - * bail out if the filesystem is corrupted. - */ + + /* bail out if the filesystem is corrupted. */ if (error == EFSCORRUPTED) break; @@ -148,7 +152,8 @@ xfs_inode_ag_iterator( int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), int flags, - int tag) + int tag, + int exclusive) { int error = 0; int last_error = 0; @@ -157,7 +162,8 @@ xfs_inode_ag_iterator( for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { if (!mp->m_perag[ag].pag_ici_init) continue; - error = xfs_inode_ag_walk(mp, ag, execute, flags, tag); + error = xfs_inode_ag_walk(mp, ag, execute, flags, tag, + exclusive); if (error) { last_error = error; if (error == EFSCORRUPTED) @@ -181,11 +187,7 @@ xfs_sync_inode_valid( return EFSCORRUPTED; } - /* - * If we can't get a reference on the inode, it must be in reclaim. - * Leave it for the reclaim code to flush. Also avoid inodes that - * haven't been fully initialised. - */ + /* If we can't get a reference on the inode, it must be in reclaim. */ if (!igrab(inode)) { read_unlock(&pag->pag_ici_lock); return ENOENT; @@ -282,7 +284,7 @@ xfs_sync_data( ASSERT((flags & ~(SYNC_TRYLOCK|SYNC_WAIT)) == 0); error = xfs_inode_ag_iterator(mp, xfs_sync_inode_data, flags, - XFS_ICI_NO_TAG); + XFS_ICI_NO_TAG, 0); if (error) return XFS_ERROR(error); @@ -304,7 +306,7 @@ xfs_sync_attr( ASSERT((flags & ~SYNC_WAIT) == 0); return xfs_inode_ag_iterator(mp, xfs_sync_inode_attr, flags, - XFS_ICI_NO_TAG); + XFS_ICI_NO_TAG, 0); } STATIC int @@ -664,60 +666,6 @@ xfs_syncd_stop( kthread_stop(mp->m_sync_task); } -STATIC int -xfs_reclaim_inode( - xfs_inode_t *ip, - int sync_mode) -{ - xfs_perag_t *pag = xfs_get_perag(ip->i_mount, ip->i_ino); - - /* The hash lock here protects a thread in xfs_iget_core from - * racing with us on linking the inode back with a vnode. - * Once we have the XFS_IRECLAIM flag set it will not touch - * us. - */ - write_lock(&pag->pag_ici_lock); - spin_lock(&ip->i_flags_lock); - if (__xfs_iflags_test(ip, XFS_IRECLAIM) || - !__xfs_iflags_test(ip, XFS_IRECLAIMABLE)) { - spin_unlock(&ip->i_flags_lock); - write_unlock(&pag->pag_ici_lock); - return -EAGAIN; - } - __xfs_iflags_set(ip, XFS_IRECLAIM); - spin_unlock(&ip->i_flags_lock); - write_unlock(&pag->pag_ici_lock); - xfs_put_perag(ip->i_mount, pag); - - /* - * If the inode is still dirty, then flush it out. If the inode - * is not in the AIL, then it will be OK to flush it delwri as - * long as xfs_iflush() does not keep any references to the inode. - * We leave that decision up to xfs_iflush() since it has the - * knowledge of whether it's OK to simply do a delwri flush of - * the inode or whether we need to wait until the inode is - * pulled from the AIL. - * We get the flush lock regardless, though, just to make sure - * we don't free it while it is being flushed. - */ - xfs_ilock(ip, XFS_ILOCK_EXCL); - xfs_iflock(ip); - - /* - * In the case of a forced shutdown we rely on xfs_iflush() to - * wait for the inode to be unpinned before returning an error. - */ - if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) { - /* synchronize with xfs_iflush_done */ - xfs_iflock(ip); - xfs_ifunlock(ip); - } - - xfs_iunlock(ip, XFS_ILOCK_EXCL); - xfs_ireclaim(ip); - return 0; -} - void __xfs_inode_set_reclaim_tag( struct xfs_perag *pag, @@ -763,16 +711,52 @@ STATIC int xfs_reclaim_inode_now( struct xfs_inode *ip, struct xfs_perag *pag, - int flags) + int sync_mode) { - /* ignore if already under reclaim */ - if (xfs_iflags_test(ip, XFS_IRECLAIM)) { - read_unlock(&pag->pag_ici_lock); + /* + * The radix tree lock here protects a thread in xfs_iget from racing + * with us starting reclaim on the inode. Once we have the + * XFS_IRECLAIM flag set it will not touch us. + */ + spin_lock(&ip->i_flags_lock); + ASSERT_ALWAYS(__xfs_iflags_test(ip, XFS_IRECLAIMABLE)); + if (__xfs_iflags_test(ip, XFS_IRECLAIM)) { + /* ignore as it is already under reclaim */ + spin_unlock(&ip->i_flags_lock); + write_unlock(&pag->pag_ici_lock); return 0; } - read_unlock(&pag->pag_ici_lock); + __xfs_iflags_set(ip, XFS_IRECLAIM); + spin_unlock(&ip->i_flags_lock); + write_unlock(&pag->pag_ici_lock); - return xfs_reclaim_inode(ip, flags); + /* + * If the inode is still dirty, then flush it out. If the inode + * is not in the AIL, then it will be OK to flush it delwri as + * long as xfs_iflush() does not keep any references to the inode. + * We leave that decision up to xfs_iflush() since it has the + * knowledge of whether it's OK to simply do a delwri flush of + * the inode or whether we need to wait until the inode is + * pulled from the AIL. + * We get the flush lock regardless, though, just to make sure + * we don't free it while it is being flushed. + */ + xfs_ilock(ip, XFS_ILOCK_EXCL); + xfs_iflock(ip); + + /* + * In the case of a forced shutdown we rely on xfs_iflush() to + * wait for the inode to be unpinned before returning an error. + */ + if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) { + /* synchronize with xfs_iflush_done */ + xfs_iflock(ip); + xfs_ifunlock(ip); + } + + xfs_iunlock(ip, XFS_ILOCK_EXCL); + xfs_ireclaim(ip); + return 0; } int @@ -781,5 +765,5 @@ xfs_reclaim_inodes( int mode) { return xfs_inode_ag_iterator(mp, xfs_reclaim_inode_now, mode, - XFS_ICI_RECLAIM_TAG); + XFS_ICI_RECLAIM_TAG, 1); } diff --git a/fs/xfs/linux-2.6/xfs_sync.h b/fs/xfs/linux-2.6/xfs_sync.h index a500b4d..ea932b4 100644 --- a/fs/xfs/linux-2.6/xfs_sync.h +++ b/fs/xfs/linux-2.6/xfs_sync.h @@ -54,6 +54,6 @@ void __xfs_inode_clear_reclaim_tag(struct xfs_mount *mp, struct xfs_perag *pag, int xfs_sync_inode_valid(struct xfs_inode *ip, struct xfs_perag *pag); int xfs_inode_ag_iterator(struct xfs_mount *mp, int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), - int flags, int tag); + int flags, int tag, int write_lock); #endif diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c index 71af76f..873e07e 100644 --- a/fs/xfs/quota/xfs_qm_syscalls.c +++ b/fs/xfs/quota/xfs_qm_syscalls.c @@ -891,7 +891,7 @@ xfs_qm_dqrele_all_inodes( uint flags) { ASSERT(mp->m_quotainfo); - xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG); + xfs_inode_ag_iterator(mp, xfs_dqrele_inode, flags, XFS_ICI_NO_TAG, 0); } /*------------------------------------------------------------------------*/ -- 1.6.5 From SRS0+0MLQ+39+fromorbit.com=dave@internode.on.net Sun Jan 10 17:55:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ANtLXi064765 for ; Sun, 10 Jan 2010 17:55:21 -0600 X-ASG-Debug-ID: 1263167774-1d2b039d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8FC74157A13 for ; Sun, 10 Jan 2010 15:56:15 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id CxotBOOVSD6v95Dp for ; Sun, 10 Jan 2010 15:56:15 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11344157-1927428 for ; Mon, 11 Jan 2010 10:26:14 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NU7da-0002qV-Kg for xfs@oss.sgi.com; Mon, 11 Jan 2010 10:56:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NU7ZY-0007Yt-LV for xfs@oss.sgi.com; Mon, 11 Jan 2010 10:51:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/4] xfs: reclaim all inodes by background tree walks Subject: [PATCH 3/4] xfs: reclaim all inodes by background tree walks Date: Mon, 11 Jan 2010 10:51:47 +1100 Message-Id: <1263167508-9346-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263167508-9346-1-git-send-email-david@fromorbit.com> References: <1263167508-9346-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263167776 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19474 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We cannot do direct inode reclaim without taking the flush lock to ensure that we do not reclaim an inode under IO. We check the inode is clean before doing direct reclaim, but this is not good enough because the inode flush code marks the inode clean once it has copied the in-core dirty state to the backing buffer. It is the flush lock that determines whether the inode is still under IO, even though it is marked clean, and the inode is still required at IO completion so we can't reclaim it even though it is clean in core. Hence the requirement that we need to take the flush lock even on clean inodes because this guarantees that the inode writeback IO has completed and it is safe to reclaim the inode. With delayed write inode flushing, we coul dend up waiting a long time on the flush lock even for a clean inode. The background reclaim already handles this efficiently, so avoid all the problems by killing the direct reclaim path altogether. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 14 ++++++-------- 1 files changed, 6 insertions(+), 8 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 09783cc..384bd96 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -954,16 +954,14 @@ xfs_fs_destroy_inode( ASSERT_ALWAYS(!xfs_iflags_test(ip, XFS_IRECLAIM)); /* - * If we have nothing to flush with this inode then complete the - * teardown now, otherwise delay the flush operation. + * we always use background reclaim here because even if the + * inode is clean, it still may be under IO and hence we have + * to take the flush lock. The background reclaim path handles + * this more efficiently than we can here, so simply let background + * reclaim tear down all inodes. */ - if (!xfs_inode_clean(ip)) { - xfs_inode_set_reclaim_tag(ip); - return; - } - out_reclaim: - xfs_ireclaim(ip); + xfs_inode_set_reclaim_tag(ip); } /* -- 1.6.5 From SRS0+0MLQ+39+fromorbit.com=dave@internode.on.net Sun Jan 10 17:55:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ANtNr8064783 for ; Sun, 10 Jan 2010 17:55:23 -0600 X-ASG-Debug-ID: 1263167776-60a003a00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 04C5CEF1ABD for ; Sun, 10 Jan 2010 15:56:16 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id y6tmZpL8OHlU4uxA for ; Sun, 10 Jan 2010 15:56:16 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11344159-1927428 for ; Mon, 11 Jan 2010 10:26:14 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NU7dk-0002qU-Hn for xfs@oss.sgi.com; Mon, 11 Jan 2010 10:56:12 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NU7ZY-0007Yq-Jp for xfs@oss.sgi.com; Mon, 11 Jan 2010 10:51:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/4] xfs: Avoid inodes in reclaim when flushing from inode cache Subject: [PATCH 2/4] xfs: Avoid inodes in reclaim when flushing from inode cache Date: Mon, 11 Jan 2010 10:51:46 +1100 Message-Id: <1263167508-9346-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263167508-9346-1-git-send-email-david@fromorbit.com> References: <1263167508-9346-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263167778 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19473 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean THe reclaim code will handle flushing of dirty inodes before reclaim occurs, so avoid them when determining whether an inode is a candidate for flushing to disk when walking the radix trees. This is based on a test patch from Christoph Hellwig. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_sync.c | 31 ++++++++++++++++++------------- 1 files changed, 18 insertions(+), 13 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 2ee1265..6946978 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -180,26 +180,31 @@ xfs_sync_inode_valid( struct xfs_perag *pag) { struct inode *inode = VFS_I(ip); + int error = EFSCORRUPTED; /* nothing to sync during shutdown */ - if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { - read_unlock(&pag->pag_ici_lock); - return EFSCORRUPTED; - } + if (XFS_FORCED_SHUTDOWN(ip->i_mount)) + goto out_unlock; - /* If we can't get a reference on the inode, it must be in reclaim. */ - if (!igrab(inode)) { - read_unlock(&pag->pag_ici_lock); - return ENOENT; - } - read_unlock(&pag->pag_ici_lock); + /* avoid new or reclaimable inodes. Leave for reclaim code to flush */ + error = ENOENT; + if (xfs_iflags_test(ip, XFS_INEW | XFS_IRECLAIMABLE | XFS_IRECLAIM)) + goto out_unlock; - if (is_bad_inode(inode) || xfs_iflags_test(ip, XFS_INEW)) { + /* If we can't grab the inode, it must on it's way to reclaim. */ + if (!igrab(inode)) + goto out_unlock; + + if (is_bad_inode(inode)) { IRELE(ip); - return ENOENT; + goto out_unlock; } - return 0; + /* inode is valid */ + error = 0; +out_unlock: + read_unlock(&pag->pag_ici_lock); + return error; } STATIC int -- 1.6.5 From lm@bitmover.com Sun Jan 10 19:31:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0B1VxUO075090 for ; Sun, 10 Jan 2010 19:31:59 -0600 X-ASG-Debug-ID: 1263173572-0c8a00980000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.bitmover.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A3A031577FA for ; Sun, 10 Jan 2010 17:32:52 -0800 (PST) Received: from mail.bitmover.com (ipcop.bitmover.com [192.132.92.15]) by cuda.sgi.com with ESMTP id h1W3VuOGQ0U9Bvsw for ; Sun, 10 Jan 2010 17:32:52 -0800 (PST) Received: from work.bitmover.com (work.bitmover.com [10.3.9.1]) by mail.bitmover.com (Postfix) with ESMTP id 846A530C98; Sun, 10 Jan 2010 17:32:51 -0800 (PST) Received: by work.bitmover.com (Postfix, from userid 3546) id 7B78086AAB; Sun, 10 Jan 2010 17:32:51 -0800 (PST) Date: Sun, 10 Jan 2010 17:32:51 -0800 From: Larry McVoy To: Casey Allen Shobe Cc: Larry McVoy , tytso@mit.edu, jfs-discussion@lists.sourceforge.net, linux-nilfs@vger.kernel.org, Christian Kujau , linux-ext4@vger.kernel.org, Peter Grandi , reiserfs-devel@vger.kernel.org, ext-users , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org X-ASG-Orig-Subj: Re: [Jfs-discussion] benchmark results Subject: Re: [Jfs-discussion] benchmark results Message-ID: <20100111013251.GA8233@bitmover.com> Mail-Followup-To: Larry McVoy , Casey Allen Shobe , tytso@mit.edu, jfs-discussion@lists.sourceforge.net, linux-nilfs@vger.kernel.org, Christian Kujau , linux-ext4@vger.kernel.org, Peter Grandi , reiserfs-devel@vger.kernel.org, ext-users , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org References: <19251.26403.762180.228181@tree.ty.sabi.co.uk> <20091224212756.GM21594@thunk.org> <20091225161453.GD32757@thunk.org> <20091225162238.GB19303@bitmover.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: ipcop.bitmover.com[192.132.92.15] X-Barracuda-Start-Time: 1263173572 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19480 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Jan 10, 2010 at 08:03:04PM -0500, Casey Allen Shobe wrote: > On Dec 25, 2009, at 11:22 AM, Larry McVoy wrote: >> Dudes, sync() doesn't flush the fs cache, you have to unmount for >> that. >> Once upon a time Linux had an ioctl() to flush the fs buffers, I used >> it in lmbench. > > > You do not need to unmount - 2.6.16+ have a mechanism in /proc to flush > caches. See http://linux-mm.org/Drop_Caches Cool, but I tend to come at problems from a cross platform point of view. Aix no hable /proc :) -- --- Larry McVoy lm at bitmover.com http://www.bitkeeper.com From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 04:17:45 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BAHhNH129660 for ; Mon, 11 Jan 2010 04:17:45 -0600 X-ASG-Debug-ID: 1263205118-178b01630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6D69D1C40EAF for ; Mon, 11 Jan 2010 02:18:38 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Ggsp201BtEwUYBCo for ; Mon, 11 Jan 2010 02:18:38 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUHM4-0002Yg-Eo; Mon, 11 Jan 2010 10:18:36 +0000 Date: Mon, 11 Jan 2010 05:18:36 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/4] xfs: reclaim inodes under a write lock Subject: Re: [PATCH 1/4] xfs: reclaim inodes under a write lock Message-ID: <20100111101836.GA26465@infradead.org> References: <1263167508-9346-1-git-send-email-david@fromorbit.com> <1263167508-9346-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263167508-9346-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263205118 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 11, 2010 at 10:51:45AM +1100, Dave Chinner wrote: > Make the inode tree reclaim walk exclusive to avoid races with > concurrent sync walkers and lookups. This is a version of > a patch posted by Christoph Hellwig that avoids all the code > duplication. looks good, Reviewed-by: Christoph Hellwig FYI: I would rename xfs_reclaim_inode_now to just xfs_reclaim_inode, but unless Alex wants to edit it let's just get the patch in for now. From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 04:18:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BAIKVW129715 for ; Mon, 11 Jan 2010 04:18:20 -0600 X-ASG-Debug-ID: 1263205154-484a01a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6D4E01357D4F for ; Mon, 11 Jan 2010 02:19:14 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 9bL63aD9D2DQQeHv for ; Mon, 11 Jan 2010 02:19:14 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUHMg-0003Wf-38; Mon, 11 Jan 2010 10:19:14 +0000 Date: Mon, 11 Jan 2010 05:19:14 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/4] xfs: Avoid inodes in reclaim when flushing from inode cache Subject: Re: [PATCH 2/4] xfs: Avoid inodes in reclaim when flushing from inode cache Message-ID: <20100111101914.GB26465@infradead.org> References: <1263167508-9346-1-git-send-email-david@fromorbit.com> <1263167508-9346-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263167508-9346-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263205155 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 11, 2010 at 10:51:46AM +1100, Dave Chinner wrote: > THe reclaim code will handle flushing of dirty inodes before > reclaim occurs, so avoid them when determining whether an inode is > a candidate for flushing to disk when walking the radix trees. > This is based on a test patch from Christoph Hellwig. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 04:18:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BAIx3X129798 for ; Mon, 11 Jan 2010 04:18:59 -0600 X-ASG-Debug-ID: 1263205194-17a701390000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8B2171C40DDB for ; Mon, 11 Jan 2010 02:19:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id yPdWtCRmfeFQFKl9 for ; Mon, 11 Jan 2010 02:19:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUHNK-0004Sg-0A; Mon, 11 Jan 2010 10:19:54 +0000 Date: Mon, 11 Jan 2010 05:19:53 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/4] xfs: reclaim all inodes by background tree walks Subject: Re: [PATCH 3/4] xfs: reclaim all inodes by background tree walks Message-ID: <20100111101953.GC26465@infradead.org> References: <1263167508-9346-1-git-send-email-david@fromorbit.com> <1263167508-9346-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263167508-9346-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263205194 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 11, 2010 at 10:51:47AM +1100, Dave Chinner wrote: > We cannot do direct inode reclaim without taking the flush lock to > ensure that we do not reclaim an inode under IO. We check the inode > is clean before doing direct reclaim, but this is not good enough > because the inode flush code marks the inode clean once it has > copied the in-core dirty state to the backing buffer. > > It is the flush lock that determines whether the inode is still > under IO, even though it is marked clean, and the inode is still > required at IO completion so we can't reclaim it even though it is > clean in core. Hence the requirement that we need to take the > flush lock even on clean inodes because this guarantees that the > inode writeback IO has completed and it is safe to reclaim the > inode. > > With delayed write inode flushing, we coul dend up waiting a long > time on the flush lock even for a clean inode. The background > reclaim already handles this efficiently, so avoid all the problems > by killing the direct reclaim path altogether. Looks good, Reviewed-by: Christoph Hellwig From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 04:20:01 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BAK0Mp129943 for ; Mon, 11 Jan 2010 04:20:01 -0600 X-ASG-Debug-ID: 1263205255-484801a50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0A8111357D68 for ; Mon, 11 Jan 2010 02:20:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 0RPMs6hOQqfknogI for ; Mon, 11 Jan 2010 02:20:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUHOJ-0006hF-Gq; Mon, 11 Jan 2010 10:20:55 +0000 Date: Mon, 11 Jan 2010 05:20:55 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/4] xfs: Remove inode iolock held check during allocation Subject: Re: [PATCH 4/4] xfs: Remove inode iolock held check during allocation Message-ID: <20100111102055.GD26465@infradead.org> References: <1263167508-9346-1-git-send-email-david@fromorbit.com> <1263167508-9346-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263167508-9346-5-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263205256 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 11, 2010 at 10:51:48AM +1100, Dave Chinner wrote: > lockdep complains about a the lock not being initialised as we do > an ASSERT based check that the lock is not held before we initialise > it to catch inodes freed with the lock held. > > lockdep does this check for us in the lock initialisation code, so > remove the ASSERT to stop the lockdep warning. Yes, checking things on the lock before it's initialized is always a bad idea. I think this is my fault because I moved the iolock initialization from the inode_init_always path into the inode_init_once path. Reviewed-by: Christoph Hellwig From SRS0+IW4C+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:48:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBmf31137521 for ; Mon, 11 Jan 2010 05:48:42 -0600 X-ASG-Debug-ID: 1263210574-3013026a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2F63C1588B1 for ; Mon, 11 Jan 2010 03:49:34 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id 1XATouC7JlFibX1R for ; Mon, 11 Jan 2010 03:49:34 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11367060-1927428 for ; Mon, 11 Jan 2010 22:19:33 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIm3-0003eX-IW for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:49:31 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIi1-0005VH-AO for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:45:21 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: fix stale inode flush avoidance Subject: [PATCH] xfs: fix stale inode flush avoidance Date: Mon, 11 Jan 2010 22:45:21 +1100 Message-Id: <1263210321-21068-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263210576 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19511 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When reclaiming stale inodes, we need to guarantee that inodes are unpinned before returning with a "clean" status. If we don't we can reclaim inodes that are pinned, leading to use after free in the transaction subsystem as transactions complete. Signed-off-by: Dave Chinner --- fs/xfs/xfs_inode.c | 21 +++++++++++++++------ 1 files changed, 15 insertions(+), 6 deletions(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 391d36b..ef77fd8 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2842,13 +2842,9 @@ xfs_iflush( /* * If the inode isn't dirty, then just release the inode flush lock and - * do nothing. Treat stale inodes the same; we cannot rely on the - * backing buffer remaining stale in cache for the remaining life of - * the stale inode and so xfs_itobp() below may give us a buffer that - * no longer contains inodes below. Doing this stale check here also - * avoids forcing the log on pinned, stale inodes. + * do nothing. */ - if (xfs_inode_clean(ip) || xfs_iflags_test(ip, XFS_ISTALE)) { + if (xfs_inode_clean(ip)) { xfs_ifunlock(ip); return 0; } @@ -2872,6 +2868,19 @@ xfs_iflush( xfs_iunpin_wait(ip); /* + * For stale inodes we cannot rely on the backing buffer remaining + * stale in cache for the remaining life of the stale inode and so + * xfs_itobp() below may give us a buffer that no longer contains + * inodes below. We have to check this after ensuring the inode is + * unpinned so that it is safe to reclaim the stale inode after the + * flush call. + */ + if (xfs_iflags_test(ip, XFS_ISTALE)) { + xfs_ifunlock(ip); + return 0; + } + + /* * This may have been unpinned because the filesystem is shutting * down forcibly. If that's the case we must not write this inode * to disk, because the log record didn't make it to disk! -- 1.6.5 From SRS0+IW4C+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:12 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpCxx137760 for ; Mon, 11 Jan 2010 05:51:12 -0600 X-ASG-Debug-ID: 1263210725-2ff602aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3C6BB15885E for ; Mon, 11 Jan 2010 03:52:06 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id 4m3OHQH5D286UCOe for ; Mon, 11 Jan 2010 03:52:06 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11537983-1927428 for ; Mon, 11 Jan 2010 22:22:05 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIoU-0003ej-ON for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkS-0006Fn-H1 for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/10] Perag lookup rework Subject: [PATCH 0/10] Perag lookup rework Date: Mon, 11 Jan 2010 22:47:39 +1100 Message-Id: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263210727 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0207 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is the previous set of patches all put together in the one series for the current xfs-dev tree. Patch 10 is a new patch - it embeds the busy extent list into the perag structure rather than leaving as a separate allocation. From SRS0+IW4C+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:12 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_42 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpBnm137757 for ; Mon, 11 Jan 2010 05:51:11 -0600 X-ASG-Debug-ID: 1263210724-3012028d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 99EF315885C for ; Mon, 11 Jan 2010 03:52:05 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id aNaijZecsHxPNMdy for ; Mon, 11 Jan 2010 03:52:05 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11537981-1927428 for ; Mon, 11 Jan 2010 22:22:04 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIoU-0003ep-VO for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkS-0006G0-PG for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 04/10] XFS: convert remaining direct references to m_perag Subject: [PATCH 04/10] XFS: convert remaining direct references to m_perag Date: Mon, 11 Jan 2010 22:47:43 +1100 Message-Id: <1263210469-22171-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263210726 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Convert the remaining direct lookups of the per ag structures to use get/put accesses. Ensure that the loops across AGs and prior users of the interface balance gets and puts correctly. Signed-off-by: Dave Chinner --- fs/xfs/xfs_bmap.c | 8 +++++++- fs/xfs/xfs_ialloc.c | 35 +++++++++++++++++++++++++---------- fs/xfs/xfs_inode.c | 5 ++++- fs/xfs/xfs_mount.c | 9 ++++++--- 4 files changed, 42 insertions(+), 15 deletions(-) diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 98251cd..a9b95d9 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -2630,11 +2630,12 @@ xfs_bmap_btalloc( startag = ag = 0; notinit = 0; down_read(&mp->m_peraglock); + pag = xfs_perag_get(mp, ag); while (blen < ap->alen) { - pag = &mp->m_perag[ag]; if (!pag->pagf_init && (error = xfs_alloc_pagf_init(mp, args.tp, ag, XFS_ALLOC_FLAG_TRYLOCK))) { + xfs_perag_put(pag); up_read(&mp->m_peraglock); return error; } @@ -2667,6 +2668,7 @@ xfs_bmap_btalloc( break; error = xfs_filestream_new_ag(ap, &ag); + xfs_perag_put(pag); if (error) { up_read(&mp->m_peraglock); return error; @@ -2674,6 +2676,7 @@ xfs_bmap_btalloc( /* loop again to set 'blen'*/ startag = NULLAGNUMBER; + pag = xfs_perag_get(mp, ag); continue; } } @@ -2681,7 +2684,10 @@ xfs_bmap_btalloc( ag = 0; if (ag == startag) break; + xfs_perag_put(pag); + pag = xfs_perag_get(mp, ag); } + xfs_perag_put(pag); up_read(&mp->m_peraglock); /* * Since the above loop did a BUF_TRYLOCK, it is diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index cb907ba..884ee13 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -253,6 +253,7 @@ xfs_ialloc_ag_alloc( xfs_agino_t thisino; /* current inode number, for loop */ int isaligned = 0; /* inode allocation at stripe unit */ /* boundary */ + struct xfs_perag *pag; args.tp = tp; args.mp = tp->t_mountp; @@ -383,7 +384,9 @@ xfs_ialloc_ag_alloc( be32_add_cpu(&agi->agi_count, newlen); be32_add_cpu(&agi->agi_freecount, newlen); down_read(&args.mp->m_peraglock); - args.mp->m_perag[agno].pagi_freecount += newlen; + pag = xfs_perag_get(args.mp, agno); + pag->pagi_freecount += newlen; + xfs_perag_put(pag); up_read(&args.mp->m_peraglock); agi->agi_newino = cpu_to_be32(newino); @@ -488,7 +491,7 @@ xfs_ialloc_ag_select( flags = XFS_ALLOC_FLAG_TRYLOCK; down_read(&mp->m_peraglock); for (;;) { - pag = &mp->m_perag[agno]; + pag = xfs_perag_get(mp, agno); if (!pag->pagi_init) { if (xfs_ialloc_read_agi(mp, tp, agno, &agbp)) { agbp = NULL; @@ -527,6 +530,7 @@ xfs_ialloc_ag_select( agbp = NULL; goto nextag; } + xfs_perag_put(pag); up_read(&mp->m_peraglock); return agbp; } @@ -535,6 +539,7 @@ unlock_nextag: if (agbp) xfs_trans_brelse(tp, agbp); nextag: + xfs_perag_put(pag); /* * No point in iterating over the rest, if we're shutting * down. @@ -672,6 +677,7 @@ xfs_dialloc( xfs_agnumber_t tagno; /* testing allocation group number */ xfs_btree_cur_t *tcur; /* temp cursor */ xfs_inobt_rec_incore_t trec; /* temp inode allocation record */ + struct xfs_perag *pag; if (*IO_agbp == NULL) { @@ -772,11 +778,14 @@ nextag: return noroom ? ENOSPC : 0; } down_read(&mp->m_peraglock); - if (mp->m_perag[tagno].pagi_inodeok == 0) { + pag = xfs_perag_get(mp, tagno); + if (pag->pagi_inodeok == 0) { + xfs_perag_put(pag); up_read(&mp->m_peraglock); goto nextag; } error = xfs_ialloc_read_agi(mp, tp, tagno, &agbp); + xfs_perag_put(pag); up_read(&mp->m_peraglock); if (error) goto nextag; @@ -790,6 +799,7 @@ nextag: */ agno = tagno; *IO_agbp = NULL; + pag = xfs_perag_get(mp, agno); restart_pagno: cur = xfs_inobt_init_cursor(mp, tp, agbp, be32_to_cpu(agi->agi_seqno)); @@ -808,7 +818,6 @@ nextag: * If in the same AG as the parent, try to get near the parent. */ if (pagno == agno) { - xfs_perag_t *pag = &mp->m_perag[agno]; int doneleft; /* done, to the left */ int doneright; /* done, to the right */ int searchdistance = 10; @@ -1007,7 +1016,7 @@ alloc_inode: be32_add_cpu(&agi->agi_freecount, -1); xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); down_read(&mp->m_peraglock); - mp->m_perag[tagno].pagi_freecount--; + pag->pagi_freecount--; up_read(&mp->m_peraglock); error = xfs_check_agi_freecount(cur, agi); @@ -1016,12 +1025,14 @@ alloc_inode: xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -1); + xfs_perag_put(pag); *inop = ino; return 0; error1: xfs_btree_del_cursor(tcur, XFS_BTREE_ERROR); error0: xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + xfs_perag_put(pag); return error; } @@ -1052,6 +1063,7 @@ xfs_difree( xfs_mount_t *mp; /* mount structure for filesystem */ int off; /* offset of inode in inode chunk */ xfs_inobt_rec_incore_t rec; /* btree record */ + struct xfs_perag *pag; mp = tp->t_mountp; @@ -1158,7 +1170,9 @@ xfs_difree( be32_add_cpu(&agi->agi_freecount, -(ilen - 1)); xfs_ialloc_log_agi(tp, agbp, XFS_AGI_COUNT | XFS_AGI_FREECOUNT); down_read(&mp->m_peraglock); - mp->m_perag[agno].pagi_freecount -= ilen - 1; + pag = xfs_perag_get(mp, agno); + pag->pagi_freecount -= ilen - 1; + xfs_perag_put(pag); up_read(&mp->m_peraglock); xfs_trans_mod_sb(tp, XFS_TRANS_SB_ICOUNT, -ilen); xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -(ilen - 1)); @@ -1189,7 +1203,9 @@ xfs_difree( be32_add_cpu(&agi->agi_freecount, 1); xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); down_read(&mp->m_peraglock); - mp->m_perag[agno].pagi_freecount++; + pag = xfs_perag_get(mp, agno); + pag->pagi_freecount++; + xfs_perag_put(pag); up_read(&mp->m_peraglock); xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, 1); } @@ -1379,7 +1395,6 @@ xfs_imap( XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)); return XFS_ERROR(EINVAL); } - return 0; } @@ -1523,8 +1538,7 @@ xfs_ialloc_read_agi( return error; agi = XFS_BUF_TO_AGI(*bpp); - pag = &mp->m_perag[agno]; - + pag = xfs_perag_get(mp, agno); if (!pag->pagi_init) { pag->pagi_freecount = be32_to_cpu(agi->agi_freecount); pag->pagi_count = be32_to_cpu(agi->agi_count); @@ -1537,6 +1551,7 @@ xfs_ialloc_read_agi( */ ASSERT(pag->pagi_freecount == be32_to_cpu(agi->agi_freecount) || XFS_FORCED_SHUTDOWN(mp)); + xfs_perag_put(pag); return 0; } diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index bd3d816..0317b00 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2695,7 +2695,7 @@ xfs_iflush_cluster( ilist_size = inodes_per_cluster * sizeof(xfs_inode_t *); ilist = kmem_alloc(ilist_size, KM_MAYFAIL|KM_NOFS); if (!ilist) - return 0; + goto out_put; mask = ~(((XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog)) - 1); first_index = XFS_INO_TO_AGINO(mp, ip->i_ino) & mask; @@ -2764,6 +2764,8 @@ xfs_iflush_cluster( out_free: read_unlock(&pag->pag_ici_lock); kmem_free(ilist); +out_put: + xfs_perag_put(pag); return 0; @@ -2807,6 +2809,7 @@ cluster_corrupt_out: */ xfs_iflush_abort(iq); kmem_free(ilist); + xfs_perag_put(pag); return XFS_ERROR(EFSCORRUPTED); } diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index eb403b4..9055b60 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -438,18 +438,20 @@ xfs_initialize_perag( } /* This ag is preferred for inodes */ - pag = &mp->m_perag[index]; + pag = xfs_perag_get(mp, index); pag->pagi_inodeok = 1; if (index < max_metadata) pag->pagf_metadata = 1; xfs_initialize_perag_icache(pag); + xfs_perag_put(pag); } } else { /* Setup default behavior for smaller filesystems */ for (index = 0; index < agcount; index++) { - pag = &mp->m_perag[index]; + pag = xfs_perag_get(mp, index); pag->pagi_inodeok = 1; xfs_initialize_perag_icache(pag); + xfs_perag_put(pag); } } return index; @@ -731,12 +733,13 @@ xfs_initialize_perag_data(xfs_mount_t *mp, xfs_agnumber_t agcount) error = xfs_ialloc_pagi_init(mp, NULL, index); if (error) return error; - pag = &mp->m_perag[index]; + pag = xfs_perag_get(mp, index); ifree += pag->pagi_freecount; ialloc += pag->pagi_count; bfree += pag->pagf_freeblks; bfreelst += pag->pagf_flcount; btree += pag->pagf_btreeblks; + xfs_perag_put(pag); } /* * Overwrite incore superblock counters with just-read data -- 1.6.5 From SRS0+ADNS+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:12 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpBRS137759 for ; Mon, 11 Jan 2010 05:51:12 -0600 X-ASG-Debug-ID: 1263210724-4df602e00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F0261C41137 for ; Mon, 11 Jan 2010 03:52:05 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id 4zXdl8aDDqgs7RvW for ; Mon, 11 Jan 2010 03:52:05 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11397691-1927428 for ; Mon, 11 Jan 2010 22:22:04 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIoU-0003ek-Pv for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkS-0006Fq-Ia for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 01/10] XFS: rename xfs_get_perag Subject: [PATCH 01/10] XFS: rename xfs_get_perag Date: Mon, 11 Jan 2010 22:47:40 +1100 Message-Id: <1263210469-22171-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263210726 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfs_get_perag is really getting the perag that an inode belongs to based on it's inode number. Convert the use of this function to just get the perag from a provided ag number. Use this new function to obtain the per-ag structure when traversing the per AG inode trees for sync and reclaim. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_sync.c | 22 +++++++++++++--------- fs/xfs/xfs_iget.c | 10 +++++----- fs/xfs/xfs_inode.c | 8 +++++--- fs/xfs/xfs_mount.h | 8 ++++---- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 6946978..2de7876 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -90,14 +90,13 @@ xfs_inode_ag_lookup( STATIC int xfs_inode_ag_walk( struct xfs_mount *mp, - xfs_agnumber_t ag, + struct xfs_perag *pag, int (*execute)(struct xfs_inode *ip, struct xfs_perag *pag, int flags), int flags, int tag, int exclusive) { - struct xfs_perag *pag = &mp->m_perag[ag]; uint32_t first_index; int last_error = 0; int skipped; @@ -141,8 +140,6 @@ restart: delay(1); goto restart; } - - xfs_put_perag(mp, pag); return last_error; } @@ -160,10 +157,16 @@ xfs_inode_ag_iterator( xfs_agnumber_t ag; for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) { - if (!mp->m_perag[ag].pag_ici_init) + struct xfs_perag *pag; + + pag = xfs_perag_get(mp, ag); + if (!pag->pag_ici_init) { + xfs_perag_put(pag); continue; - error = xfs_inode_ag_walk(mp, ag, execute, flags, tag, + } + error = xfs_inode_ag_walk(mp, pag, execute, flags, tag, exclusive); + xfs_perag_put(pag); if (error) { last_error = error; if (error == EFSCORRUPTED) @@ -690,16 +693,17 @@ void xfs_inode_set_reclaim_tag( xfs_inode_t *ip) { - xfs_mount_t *mp = ip->i_mount; - xfs_perag_t *pag = xfs_get_perag(mp, ip->i_ino); + struct xfs_mount *mp = ip->i_mount; + struct xfs_perag *pag; + pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); read_lock(&pag->pag_ici_lock); spin_lock(&ip->i_flags_lock); __xfs_inode_set_reclaim_tag(pag, ip); __xfs_iflags_set(ip, XFS_IRECLAIMABLE); spin_unlock(&ip->i_flags_lock); read_unlock(&pag->pag_ici_lock); - xfs_put_perag(mp, pag); + xfs_perag_put(pag); } void diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index 155e798..e281eb4 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c @@ -374,7 +374,7 @@ xfs_iget( return EINVAL; /* get the perag structure and ensure that it's inode capable */ - pag = xfs_get_perag(mp, ino); + pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ino)); if (!pag->pagi_inodeok) return EINVAL; ASSERT(pag->pag_ici_init); @@ -398,7 +398,7 @@ again: if (error) goto out_error_or_again; } - xfs_put_perag(mp, pag); + xfs_perag_put(pag); *ipp = ip; @@ -417,7 +417,7 @@ out_error_or_again: delay(1); goto again; } - xfs_put_perag(mp, pag); + xfs_perag_put(pag); return error; } @@ -488,12 +488,12 @@ xfs_ireclaim( * added to the tree assert that it's been there before to catch * problems with the inode life time early on. */ - pag = xfs_get_perag(mp, ip->i_ino); + pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); write_lock(&pag->pag_ici_lock); if (!radix_tree_delete(&pag->pag_ici_root, agino)) ASSERT(0); write_unlock(&pag->pag_ici_lock); - xfs_put_perag(mp, pag); + xfs_perag_put(pag); /* * Here we do an (almost) spurious inode lock in order to coordinate diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index ef77fd8..bd3d816 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1946,8 +1946,9 @@ xfs_ifree_cluster( xfs_inode_t *ip, **ip_found; xfs_inode_log_item_t *iip; xfs_log_item_t *lip; - xfs_perag_t *pag = xfs_get_perag(mp, inum); + struct xfs_perag *pag; + pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, inum)); if (mp->m_sb.sb_blocksize >= XFS_INODE_CLUSTER_SIZE(mp)) { blks_per_cluster = 1; ninodes = mp->m_sb.sb_inopblock; @@ -2088,7 +2089,7 @@ xfs_ifree_cluster( } kmem_free(ip_found); - xfs_put_perag(mp, pag); + xfs_perag_put(pag); } /* @@ -2675,7 +2676,7 @@ xfs_iflush_cluster( xfs_buf_t *bp) { xfs_mount_t *mp = ip->i_mount; - xfs_perag_t *pag = xfs_get_perag(mp, ip->i_ino); + struct xfs_perag *pag; unsigned long first_index, mask; unsigned long inodes_per_cluster; int ilist_size; @@ -2686,6 +2687,7 @@ xfs_iflush_cluster( int bufwasdelwri; int i; + pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino)); ASSERT(pag->pagi_inodeok); ASSERT(pag->pag_ici_init); diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 1df7e45..f8a68a2 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -386,14 +386,14 @@ xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d) /* * perag get/put wrappers for eventual ref counting */ -static inline xfs_perag_t * -xfs_get_perag(struct xfs_mount *mp, xfs_ino_t ino) +static inline struct xfs_perag * +xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) { - return &mp->m_perag[XFS_INO_TO_AGNO(mp, ino)]; + return &mp->m_perag[agno]; } static inline void -xfs_put_perag(struct xfs_mount *mp, xfs_perag_t *pag) +xfs_perag_put(struct xfs_perag *pag) { /* nothing to see here, move along */ } -- 1.6.5 From SRS0+ADNS+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:14 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpDpa137801 for ; Mon, 11 Jan 2010 05:51:14 -0600 X-ASG-Debug-ID: 1263210727-5e3a01850000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EA3CA1C41138 for ; Mon, 11 Jan 2010 03:52:07 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id Ir4NWHEBNDjG9lMm for ; Mon, 11 Jan 2010 03:52:07 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11397692-1927428 for ; Mon, 11 Jan 2010 22:22:04 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIoU-0003em-TN for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkS-0006Fx-NU for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 03/10] XFS: Convert filestreams code to use per-ag get/put routines Subject: [PATCH 03/10] XFS: Convert filestreams code to use per-ag get/put routines Date: Mon, 11 Jan 2010 22:47:42 +1100 Message-Id: <1263210469-22171-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263210728 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dave Chinner --- fs/xfs/xfs_filestream.c | 19 ++++++++++++------- fs/xfs/xfs_filestream.h | 27 ++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/fs/xfs/xfs_filestream.c b/fs/xfs/xfs_filestream.c index a631e14..e61f2aa 100644 --- a/fs/xfs/xfs_filestream.c +++ b/fs/xfs/xfs_filestream.c @@ -140,6 +140,7 @@ _xfs_filestream_pick_ag( int flags, xfs_extlen_t minlen) { + int streams, max_streams; int err, trylock, nscan; xfs_extlen_t longest, free, minfree, maxfree = 0; xfs_agnumber_t ag, max_ag = NULLAGNUMBER; @@ -155,15 +156,15 @@ _xfs_filestream_pick_ag( trylock = XFS_ALLOC_FLAG_TRYLOCK; for (nscan = 0; 1; nscan++) { - - TRACE_AG_SCAN(mp, ag, xfs_filestream_peek_ag(mp, ag)); - - pag = mp->m_perag + ag; + pag = xfs_perag_get(mp, ag); + TRACE_AG_SCAN(mp, ag, atomic_read(&pag->pagf_fstrms)); if (!pag->pagf_init) { err = xfs_alloc_pagf_init(mp, NULL, ag, trylock); - if (err && !trylock) + if (err && !trylock) { + xfs_perag_put(pag); return err; + } } /* Might fail sometimes during the 1st pass with trylock set. */ @@ -173,6 +174,7 @@ _xfs_filestream_pick_ag( /* Keep track of the AG with the most free blocks. */ if (pag->pagf_freeblks > maxfree) { maxfree = pag->pagf_freeblks; + max_streams = atomic_read(&pag->pagf_fstrms); max_ag = ag; } @@ -195,6 +197,8 @@ _xfs_filestream_pick_ag( /* Break out, retaining the reference on the AG. */ free = pag->pagf_freeblks; + streams = atomic_read(&pag->pagf_fstrms); + xfs_perag_put(pag); *agp = ag; break; } @@ -202,6 +206,7 @@ _xfs_filestream_pick_ag( /* Drop the reference on this AG, it's not usable. */ xfs_filestream_put_ag(mp, ag); next_ag: + xfs_perag_put(pag); /* Move to the next AG, wrapping to AG 0 if necessary. */ if (++ag >= mp->m_sb.sb_agcount) ag = 0; @@ -229,6 +234,7 @@ next_ag: if (max_ag != NULLAGNUMBER) { xfs_filestream_get_ag(mp, max_ag); TRACE_AG_PICK1(mp, max_ag, maxfree); + streams = max_streams; free = maxfree; *agp = max_ag; break; @@ -240,8 +246,7 @@ next_ag: return 0; } - TRACE_AG_PICK2(mp, startag, *agp, xfs_filestream_peek_ag(mp, *agp), - free, nscan, flags); + TRACE_AG_PICK2(mp, startag, *agp, streams, free, nscan, flags); return 0; } diff --git a/fs/xfs/xfs_filestream.h b/fs/xfs/xfs_filestream.h index 4aba67c..58378b2 100644 --- a/fs/xfs/xfs_filestream.h +++ b/fs/xfs/xfs_filestream.h @@ -79,12 +79,21 @@ extern ktrace_t *xfs_filestreams_trace_buf; * the cache that reference per-ag array elements that have since been * reallocated. */ +/* + * xfs_filestream_peek_ag is only used in tracing code + */ static inline int xfs_filestream_peek_ag( xfs_mount_t *mp, xfs_agnumber_t agno) { - return atomic_read(&mp->m_perag[agno].pagf_fstrms); + struct xfs_perag *pag; + int ret; + + pag = xfs_perag_get(mp, agno); + ret = atomic_read(&pag->pagf_fstrms); + xfs_perag_put(pag); + return ret; } static inline int @@ -92,7 +101,13 @@ xfs_filestream_get_ag( xfs_mount_t *mp, xfs_agnumber_t agno) { - return atomic_inc_return(&mp->m_perag[agno].pagf_fstrms); + struct xfs_perag *pag; + int ret; + + pag = xfs_perag_get(mp, agno); + ret = atomic_inc_return(&pag->pagf_fstrms); + xfs_perag_put(pag); + return ret; } static inline int @@ -100,7 +115,13 @@ xfs_filestream_put_ag( xfs_mount_t *mp, xfs_agnumber_t agno) { - return atomic_dec_return(&mp->m_perag[agno].pagf_fstrms); + struct xfs_perag *pag; + int ret; + + pag = xfs_perag_get(mp, agno); + ret = atomic_dec_return(&pag->pagf_fstrms); + xfs_perag_put(pag); + return ret; } /* allocation selection flags */ -- 1.6.5 From SRS0+JJI++40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpMSU137851 for ; Mon, 11 Jan 2010 05:51:22 -0600 X-ASG-Debug-ID: 1263210735-0d6e02ca0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CDAC61358289 for ; Mon, 11 Jan 2010 03:52:15 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id lxOWtAASXjBwIyqw for ; Mon, 11 Jan 2010 03:52:15 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11243208-1927428 for ; Mon, 11 Jan 2010 22:22:14 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIof-0003f6-5I for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:13 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkT-0006GE-0J for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:53 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 08/10] XFS: Kill filestreams cache flush Subject: [PATCH 08/10] XFS: Kill filestreams cache flush Date: Mon, 11 Jan 2010 22:47:47 +1100 Message-Id: <1263210469-22171-9-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263210736 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The filestreams cache flush is not needed in the sync code as it does not affect data writeback, and it is now not used by the growfs code, either, so kill it. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_sync.c | 3 --- fs/xfs/xfs_filestream.c | 14 -------------- fs/xfs/xfs_filestream.h | 1 - fs/xfs/xfs_mru_cache.c | 2 +- fs/xfs/xfs_mru_cache.h | 1 - 5 files changed, 1 insertions(+), 20 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 2de7876..2eca601 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -451,9 +451,6 @@ xfs_quiesce_data( xfs_sync_data(mp, SYNC_WAIT); xfs_qm_sync(mp, SYNC_WAIT); - /* drop inode references pinned by filestreams */ - xfs_filestream_flush(mp); - /* write superblock and hoover up shutdown errors */ error = xfs_sync_fsdata(mp, SYNC_WAIT); diff --git a/fs/xfs/xfs_filestream.c b/fs/xfs/xfs_filestream.c index 914d00d..390850e 100644 --- a/fs/xfs/xfs_filestream.c +++ b/fs/xfs/xfs_filestream.c @@ -455,20 +455,6 @@ xfs_filestream_unmount( } /* - * If the mount point's m_perag tree is going to be modified, all - * outstanding cache entries must be flushed to avoid accessing reference count - * addresses that have been freed. The call to xfs_filestream_flush() must be - * made inside the block that holds the m_perag_lock in write mode to do the - * reallocation. - */ -void -xfs_filestream_flush( - xfs_mount_t *mp) -{ - xfs_mru_cache_flush(mp->m_filestream); -} - -/* * Return the AG of the filestream the file or directory belongs to, or * NULLAGNUMBER otherwise. */ diff --git a/fs/xfs/xfs_filestream.h b/fs/xfs/xfs_filestream.h index 58378b2..260f757 100644 --- a/fs/xfs/xfs_filestream.h +++ b/fs/xfs/xfs_filestream.h @@ -135,7 +135,6 @@ int xfs_filestream_init(void); void xfs_filestream_uninit(void); int xfs_filestream_mount(struct xfs_mount *mp); void xfs_filestream_unmount(struct xfs_mount *mp); -void xfs_filestream_flush(struct xfs_mount *mp); xfs_agnumber_t xfs_filestream_lookup_ag(struct xfs_inode *ip); int xfs_filestream_associate(struct xfs_inode *dip, struct xfs_inode *ip); void xfs_filestream_deassociate(struct xfs_inode *ip); diff --git a/fs/xfs/xfs_mru_cache.c b/fs/xfs/xfs_mru_cache.c index 4b0613d..45ce15d 100644 --- a/fs/xfs/xfs_mru_cache.c +++ b/fs/xfs/xfs_mru_cache.c @@ -398,7 +398,7 @@ exit: * guaranteed that all the free functions for all the elements have finished * executing and the reaper is not running. */ -void +static void xfs_mru_cache_flush( xfs_mru_cache_t *mru) { diff --git a/fs/xfs/xfs_mru_cache.h b/fs/xfs/xfs_mru_cache.h index 5d439f3..36dd3ec 100644 --- a/fs/xfs/xfs_mru_cache.h +++ b/fs/xfs/xfs_mru_cache.h @@ -42,7 +42,6 @@ void xfs_mru_cache_uninit(void); int xfs_mru_cache_create(struct xfs_mru_cache **mrup, unsigned int lifetime_ms, unsigned int grp_count, xfs_mru_cache_free_func_t free_func); -void xfs_mru_cache_flush(xfs_mru_cache_t *mru); void xfs_mru_cache_destroy(struct xfs_mru_cache *mru); int xfs_mru_cache_insert(struct xfs_mru_cache *mru, unsigned long key, void *value); -- 1.6.5 From SRS0+JJI++40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpMrF137853 for ; Mon, 11 Jan 2010 05:51:22 -0600 X-ASG-Debug-ID: 1263210735-1089025a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 72E65135828D for ; Mon, 11 Jan 2010 03:52:16 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id zOz1eStNNYOerKFE for ; Mon, 11 Jan 2010 03:52:16 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11243209-1927428 for ; Mon, 11 Jan 2010 22:22:15 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIof-0003f7-Eb for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:13 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkT-0006GH-Ay for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:53 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 09/10] xfs: handle ENOMEM correctly during initialisation of perag structures Subject: [PATCH 09/10] xfs: handle ENOMEM correctly during initialisation of perag structures Date: Mon, 11 Jan 2010 22:47:48 +1100 Message-Id: <1263210469-22171-10-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263210737 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dave Chinner --- fs/xfs/xfs_mount.c | 21 +++++++++++++++++---- 1 files changed, 17 insertions(+), 4 deletions(-) diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 049dbc7..be643e5 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -432,11 +432,13 @@ xfs_initialize_perag( xfs_agnumber_t *maxagi) { xfs_agnumber_t index, max_metadata; + xfs_agnumber_t first_initialised = 0; xfs_perag_t *pag; xfs_agino_t agino; xfs_ino_t ino; xfs_sb_t *sbp = &mp->m_sb; xfs_ino_t max_inum = XFS_MAXINUMBER_32; + int error = -ENOMEM; /* Check to see if the filesystem can overflow 32 bit inodes */ agino = XFS_OFFBNO_TO_AGINO(mp, sbp->sb_agblocks - 1, 0); @@ -453,17 +455,20 @@ xfs_initialize_perag( xfs_perag_put(pag); continue; } + if (!first_initialised) + first_initialised = index; pag = kmem_zalloc(sizeof(*pag), KM_MAYFAIL); if (!pag) - return -ENOMEM; + goto out_unwind; if (radix_tree_preload(GFP_NOFS)) - return -ENOMEM; + goto out_unwind; spin_lock(&mp->m_perag_lock); if (radix_tree_insert(&mp->m_perag_tree, index, pag)) { BUG(); spin_unlock(&mp->m_perag_lock); - kmem_free(pag); - return -EEXIST; + radix_tree_preload_end(); + error = -EEXIST; + goto out_unwind; } pag->pag_agno = index; pag->pag_mount = mp; @@ -523,6 +528,14 @@ xfs_initialize_perag( if (maxagi) *maxagi = index; return 0; + +out_unwind: + kmem_free(pag); + for (; index > first_initialised; index--) { + pag = radix_tree_delete(&mp->m_perag_tree, index); + kmem_free(pag); + } + return error; } void -- 1.6.5 From SRS0+IW4C+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43,J_CHICKENPOX_44,J_CHICKENPOX_45, J_CHICKENPOX_63 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpMeN137856 for ; Mon, 11 Jan 2010 05:51:22 -0600 X-ASG-Debug-ID: 1263210734-2ff602ac0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6FEF915885F for ; Mon, 11 Jan 2010 03:52:15 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id hf6abUAaejFkGInQ for ; Mon, 11 Jan 2010 03:52:15 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11367100-1927428 for ; Mon, 11 Jan 2010 22:22:14 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIoU-0003el-Ra for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkS-0006Fu-Lk for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 02/10] XFS: Don't directly reference m_perag in allocation code Subject: [PATCH 02/10] XFS: Don't directly reference m_perag in allocation code Date: Mon, 11 Jan 2010 22:47:41 +1100 Message-Id: <1263210469-22171-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263210737 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Start abstracting the perag references so that the indexing of the structures is not directly coded into all the places that uses the perag structures. This will allow us to separate the use of the perag structure and the way it is indexed and hence avoid the known deadlocks related to growing a busy filesystem. Signed-off-by: Dave Chinner --- fs/xfs/xfs_alloc.c | 82 ++++++++++++++++++++++++++-------------------- fs/xfs/xfs_alloc_btree.c | 9 ++++- 2 files changed, 53 insertions(+), 38 deletions(-) diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 275b1f4..84070f2 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -1662,11 +1662,13 @@ xfs_free_ag_extent( xfs_agf_t *agf; xfs_perag_t *pag; /* per allocation group data */ + pag = xfs_perag_get(mp, agno); + pag->pagf_freeblks += len; + xfs_perag_put(pag); + agf = XFS_BUF_TO_AGF(agbp); - pag = &mp->m_perag[agno]; be32_add_cpu(&agf->agf_freeblks, len); xfs_trans_agblocks_delta(tp, len); - pag->pagf_freeblks += len; XFS_WANT_CORRUPTED_GOTO( be32_to_cpu(agf->agf_freeblks) <= be32_to_cpu(agf->agf_length), @@ -1969,10 +1971,12 @@ xfs_alloc_get_freelist( xfs_trans_brelse(tp, agflbp); if (be32_to_cpu(agf->agf_flfirst) == XFS_AGFL_SIZE(mp)) agf->agf_flfirst = 0; - pag = &mp->m_perag[be32_to_cpu(agf->agf_seqno)]; + + pag = xfs_perag_get(mp, be32_to_cpu(agf->agf_seqno)); be32_add_cpu(&agf->agf_flcount, -1); xfs_trans_agflist_delta(tp, -1); pag->pagf_flcount--; + xfs_perag_put(pag); logflags = XFS_AGF_FLFIRST | XFS_AGF_FLCOUNT; if (btreeblk) { @@ -2078,7 +2082,8 @@ xfs_alloc_put_freelist( be32_add_cpu(&agf->agf_fllast, 1); if (be32_to_cpu(agf->agf_fllast) == XFS_AGFL_SIZE(mp)) agf->agf_fllast = 0; - pag = &mp->m_perag[be32_to_cpu(agf->agf_seqno)]; + + pag = xfs_perag_get(mp, be32_to_cpu(agf->agf_seqno)); be32_add_cpu(&agf->agf_flcount, 1); xfs_trans_agflist_delta(tp, 1); pag->pagf_flcount++; @@ -2089,6 +2094,7 @@ xfs_alloc_put_freelist( pag->pagf_btreeblks--; logflags |= XFS_AGF_BTREEBLKS; } + xfs_perag_put(pag); xfs_alloc_log_agf(tp, agbp, logflags); @@ -2152,7 +2158,6 @@ xfs_read_agf( xfs_trans_brelse(tp, *bpp); return XFS_ERROR(EFSCORRUPTED); } - XFS_BUF_SET_VTYPE_REF(*bpp, B_FS_AGF, XFS_AGF_REF); return 0; } @@ -2184,7 +2189,7 @@ xfs_alloc_read_agf( ASSERT(!XFS_BUF_GETERROR(*bpp)); agf = XFS_BUF_TO_AGF(*bpp); - pag = &mp->m_perag[agno]; + pag = xfs_perag_get(mp, agno); if (!pag->pagf_init) { pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks); pag->pagf_btreeblks = be32_to_cpu(agf->agf_btreeblks); @@ -2211,6 +2216,7 @@ xfs_alloc_read_agf( be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNTi])); } #endif + xfs_perag_put(pag); return 0; } @@ -2271,7 +2277,7 @@ xfs_alloc_vextent( */ args->agno = XFS_FSB_TO_AGNO(mp, args->fsbno); down_read(&mp->m_peraglock); - args->pag = &mp->m_perag[args->agno]; + args->pag = xfs_perag_get(mp, args->agno); args->minleft = 0; error = xfs_alloc_fix_freelist(args, 0); args->minleft = minleft; @@ -2341,7 +2347,7 @@ xfs_alloc_vextent( */ down_read(&mp->m_peraglock); for (;;) { - args->pag = &mp->m_perag[args->agno]; + args->pag = xfs_perag_get(mp, args->agno); if (no_min) args->minleft = 0; error = xfs_alloc_fix_freelist(args, flags); args->minleft = minleft; @@ -2400,6 +2406,7 @@ xfs_alloc_vextent( } } } + xfs_perag_put(args->pag); } up_read(&mp->m_peraglock); if (bump_rotor || (type == XFS_ALLOCTYPE_ANY_AG)) { @@ -2427,8 +2434,10 @@ xfs_alloc_vextent( args->len); #endif } + xfs_perag_put(args->pag); return 0; error0: + xfs_perag_put(args->pag); up_read(&mp->m_peraglock); return error; } @@ -2455,7 +2464,7 @@ xfs_free_extent( ASSERT(args.agno < args.mp->m_sb.sb_agcount); args.agbno = XFS_FSB_TO_AGBNO(args.mp, bno); down_read(&args.mp->m_peraglock); - args.pag = &args.mp->m_perag[args.agno]; + args.pag = xfs_perag_get(args.mp, args.agno); if ((error = xfs_alloc_fix_freelist(&args, XFS_ALLOC_FLAG_FREEING))) goto error0; #ifdef DEBUG @@ -2465,6 +2474,7 @@ xfs_free_extent( #endif error = xfs_free_ag_extent(tp, args.agbp, args.agno, args.agbno, len, 0); error0: + xfs_perag_put(args.pag); up_read(&args.mp->m_peraglock); return error; } @@ -2486,15 +2496,15 @@ xfs_alloc_mark_busy(xfs_trans_t *tp, xfs_agblock_t bno, xfs_extlen_t len) { - xfs_mount_t *mp; xfs_perag_busy_t *bsy; + struct xfs_perag *pag; int n; - mp = tp->t_mountp; - spin_lock(&mp->m_perag[agno].pagb_lock); + pag = xfs_perag_get(tp->t_mountp, agno); + spin_lock(&pag->pagb_lock); /* search pagb_list for an open slot */ - for (bsy = mp->m_perag[agno].pagb_list, n = 0; + for (bsy = pag->pagb_list, n = 0; n < XFS_PAGB_NUM_SLOTS; bsy++, n++) { if (bsy->busy_tp == NULL) { @@ -2502,11 +2512,11 @@ xfs_alloc_mark_busy(xfs_trans_t *tp, } } - trace_xfs_alloc_busy(mp, agno, bno, len, n); + trace_xfs_alloc_busy(tp->t_mountp, agno, bno, len, n); if (n < XFS_PAGB_NUM_SLOTS) { - bsy = &mp->m_perag[agno].pagb_list[n]; - mp->m_perag[agno].pagb_count++; + bsy = &pag->pagb_list[n]; + pag->pagb_count++; bsy->busy_start = bno; bsy->busy_length = len; bsy->busy_tp = tp; @@ -2521,7 +2531,8 @@ xfs_alloc_mark_busy(xfs_trans_t *tp, xfs_trans_set_sync(tp); } - spin_unlock(&mp->m_perag[agno].pagb_lock); + spin_unlock(&pag->pagb_lock); + xfs_perag_put(pag); } void @@ -2529,24 +2540,23 @@ xfs_alloc_clear_busy(xfs_trans_t *tp, xfs_agnumber_t agno, int idx) { - xfs_mount_t *mp; + struct xfs_perag *pag; xfs_perag_busy_t *list; - mp = tp->t_mountp; - - spin_lock(&mp->m_perag[agno].pagb_lock); - list = mp->m_perag[agno].pagb_list; - ASSERT(idx < XFS_PAGB_NUM_SLOTS); + pag = xfs_perag_get(tp->t_mountp, agno); + spin_lock(&pag->pagb_lock); + list = pag->pagb_list; - trace_xfs_alloc_unbusy(mp, agno, idx, list[idx].busy_tp == tp); + trace_xfs_alloc_unbusy(tp->t_mountp, agno, idx, list[idx].busy_tp == tp); if (list[idx].busy_tp == tp) { list[idx].busy_tp = NULL; - mp->m_perag[agno].pagb_count--; + pag->pagb_count--; } - spin_unlock(&mp->m_perag[agno].pagb_lock); + spin_unlock(&pag->pagb_lock); + xfs_perag_put(pag); } @@ -2560,17 +2570,15 @@ xfs_alloc_search_busy(xfs_trans_t *tp, xfs_agblock_t bno, xfs_extlen_t len) { - xfs_mount_t *mp; + struct xfs_perag *pag; xfs_perag_busy_t *bsy; xfs_agblock_t uend, bend; xfs_lsn_t lsn = 0; int cnt; - mp = tp->t_mountp; - - spin_lock(&mp->m_perag[agno].pagb_lock); - - uend = bno + len - 1; + pag = xfs_perag_get(tp->t_mountp, agno); + spin_lock(&pag->pagb_lock); + cnt = pag->pagb_count; /* * search pagb_list for this slot, skipping open slots. We have to @@ -2578,8 +2586,9 @@ xfs_alloc_search_busy(xfs_trans_t *tp, * we have to get the most recent LSN for the log force to push out * all the transactions that span the range. */ - for (cnt = 0; cnt < mp->m_perag[agno].pagb_count; cnt++) { - bsy = &mp->m_perag[agno].pagb_list[cnt]; + uend = bno + len - 1; + for (cnt = 0; cnt < pag->pagb_count; cnt++) { + bsy = &pag->pagb_list[cnt]; if (!bsy->busy_tp) continue; @@ -2591,7 +2600,8 @@ xfs_alloc_search_busy(xfs_trans_t *tp, if (XFS_LSN_CMP(bsy->busy_tp->t_commit_lsn, lsn) > 0) lsn = bsy->busy_tp->t_commit_lsn; } - spin_unlock(&mp->m_perag[agno].pagb_lock); + spin_unlock(&pag->pagb_lock); + xfs_perag_put(pag); trace_xfs_alloc_busysearch(tp->t_mountp, agno, bno, len, lsn); /* @@ -2599,5 +2609,5 @@ xfs_alloc_search_busy(xfs_trans_t *tp, * transaction that freed the block */ if (lsn) - xfs_log_force(mp, lsn, XFS_LOG_FORCE|XFS_LOG_SYNC); + xfs_log_force(tp->t_mountp, lsn, XFS_LOG_FORCE|XFS_LOG_SYNC); } diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index adbd914..b726e10 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c @@ -61,12 +61,14 @@ xfs_allocbt_set_root( struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); xfs_agnumber_t seqno = be32_to_cpu(agf->agf_seqno); int btnum = cur->bc_btnum; + struct xfs_perag *pag = xfs_perag_get(cur->bc_mp, seqno); ASSERT(ptr->s != 0); agf->agf_roots[btnum] = ptr->s; be32_add_cpu(&agf->agf_levels[btnum], inc); - cur->bc_mp->m_perag[seqno].pagf_levels[btnum] += inc; + pag->pagf_levels[btnum] += inc; + xfs_perag_put(pag); xfs_alloc_log_agf(cur->bc_tp, agbp, XFS_AGF_ROOTS | XFS_AGF_LEVELS); } @@ -150,6 +152,7 @@ xfs_allocbt_update_lastrec( { struct xfs_agf *agf = XFS_BUF_TO_AGF(cur->bc_private.a.agbp); xfs_agnumber_t seqno = be32_to_cpu(agf->agf_seqno); + struct xfs_perag *pag; __be32 len; int numrecs; @@ -193,7 +196,9 @@ xfs_allocbt_update_lastrec( } agf->agf_longest = len; - cur->bc_mp->m_perag[seqno].pagf_longest = be32_to_cpu(len); + pag = xfs_perag_get(cur->bc_mp, seqno); + pag->pagf_longest = be32_to_cpu(len); + xfs_perag_put(pag); xfs_alloc_log_agf(cur->bc_tp, cur->bc_private.a.agbp, XFS_AGF_LONGEST); } -- 1.6.5 From SRS0+IW4C+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpMJp137858 for ; Mon, 11 Jan 2010 05:51:22 -0600 X-ASG-Debug-ID: 1263210735-336702200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B72B7158862 for ; Mon, 11 Jan 2010 03:52:16 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id mmL4XdDn2IPVfVnY for ; Mon, 11 Jan 2010 03:52:16 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11367104-1927428 for ; Mon, 11 Jan 2010 22:22:14 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIof-0003fJ-4d for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:13 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkS-0006GB-Ul for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 07/10] XFS: Add trace points for per-ag refcount debugging. Subject: [PATCH 07/10] XFS: Add trace points for per-ag refcount debugging. Date: Mon, 11 Jan 2010 22:47:46 +1100 Message-Id: <1263210469-22171-8-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263210737 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Uninline xfs_perag_{get,put} so that tracepoints can be inserted into them to speed debugging of reference count problems. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_trace.h | 27 +++++++++++++++++++++++++++ fs/xfs/xfs_ag.h | 2 ++ fs/xfs/xfs_mount.c | 34 ++++++++++++++++++++++++++++++++++ fs/xfs/xfs_mount.h | 25 ++----------------------- 4 files changed, 65 insertions(+), 23 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h index c22a608..058fff1 100644 --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h @@ -78,6 +78,33 @@ DECLARE_EVENT_CLASS(xfs_attr_list_class, ) ) +#define DEFINE_PERAG_REF_EVENT(name) \ +TRACE_EVENT(name, \ + TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int refcount, \ + unsigned long caller_ip), \ + TP_ARGS(mp, agno, refcount, caller_ip), \ + TP_STRUCT__entry( \ + __field(dev_t, dev) \ + __field(xfs_agnumber_t, agno) \ + __field(int, refcount) \ + __field(unsigned long, caller_ip) \ + ), \ + TP_fast_assign( \ + __entry->dev = mp->m_super->s_dev; \ + __entry->agno = agno; \ + __entry->refcount = refcount; \ + __entry->caller_ip = caller_ip; \ + ), \ + TP_printk("dev %d:%d agno %u refcount %d caller %pf", \ + MAJOR(__entry->dev), MINOR(__entry->dev), \ + __entry->agno, \ + __entry->refcount, \ + (char *)__entry->caller_ip) \ +); + +DEFINE_PERAG_REF_EVENT(xfs_perag_get) +DEFINE_PERAG_REF_EVENT(xfs_perag_put) + #define DEFINE_ATTR_LIST_EVENT(name) \ DEFINE_EVENT(xfs_attr_list_class, name, \ TP_PROTO(struct xfs_attr_list_context *ctx), \ diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h index 18ae43f..963bc27 100644 --- a/fs/xfs/xfs_ag.h +++ b/fs/xfs/xfs_ag.h @@ -197,6 +197,8 @@ typedef struct xfs_perag_busy { #endif typedef struct xfs_perag { + struct xfs_mount *pag_mount; /* owner filesystem */ + xfs_agnumber_t pag_agno; /* AG this structure belongs to */ atomic_t pag_ref; /* perag reference count */ char pagf_init; /* this agf's entry is initialized */ char pagi_init; /* this agi's entry is initialized */ diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index f241fec..049dbc7 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -201,6 +201,38 @@ xfs_uuid_unmount( /* + * Reference counting access wrappers to the perag structures. + */ +struct xfs_perag * +xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) +{ + struct xfs_perag *pag; + int ref = 0; + + spin_lock(&mp->m_perag_lock); + pag = radix_tree_lookup(&mp->m_perag_tree, agno); + if (pag) { + ASSERT(atomic_read(&pag->pag_ref) >= 0); + /* catch leaks in the positive direction during testing */ + ASSERT(atomic_read(&pag->pag_ref) < 1000); + ref = atomic_inc_return(&pag->pag_ref); + } + spin_unlock(&mp->m_perag_lock); + trace_xfs_perag_get(mp, agno, ref, _RET_IP_); + return pag; +} + +void +xfs_perag_put(struct xfs_perag *pag) +{ + int ref; + + ASSERT(atomic_read(&pag->pag_ref) > 0); + ref = atomic_dec_return(&pag->pag_ref); + trace_xfs_perag_put(pag->pag_mount, pag->pag_agno, ref, _RET_IP_); +} + +/* * Free up the resources associated with a mount structure. Assume that * the structure was initially zeroed, so we can tell which fields got * initialized. @@ -433,6 +465,8 @@ xfs_initialize_perag( kmem_free(pag); return -EEXIST; } + pag->pag_agno = index; + pag->pag_mount = mp; spin_unlock(&mp->m_perag_lock); radix_tree_preload_end(); } diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 16b2212..e62fd1c 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -386,29 +386,8 @@ xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d) /* * perag get/put wrappers for ref counting */ -static inline struct xfs_perag * -xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) -{ - struct xfs_perag *pag; - - spin_lock(&mp->m_perag_lock); - pag = radix_tree_lookup(&mp->m_perag_tree, agno); - if (pag) { - ASSERT(atomic_read(&pag->pag_ref) >= 0); - /* catch leaks in the positive direction during testing */ - ASSERT(atomic_read(&pag->pag_ref) < 1000); - atomic_inc(&pag->pag_ref); - } - spin_unlock(&mp->m_perag_lock); - return pag; -} - -static inline void -xfs_perag_put(struct xfs_perag *pag) -{ - ASSERT(atomic_read(&pag->pag_ref) > 0); - atomic_dec(&pag->pag_ref); -} +struct xfs_perag *xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno); +void xfs_perag_put(struct xfs_perag *pag); /* * Per-cpu superblock locking functions -- 1.6.5 From SRS0+IW4C+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpOEa137895 for ; Mon, 11 Jan 2010 05:51:24 -0600 X-ASG-Debug-ID: 1263210734-2ff602ac0002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 49387158863 for ; Mon, 11 Jan 2010 03:52:18 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id 5cAUnRN6m2K2wsGV for ; Mon, 11 Jan 2010 03:52:18 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11367106-1927428 for ; Mon, 11 Jan 2010 22:22:15 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIof-0003fI-3B for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:13 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkS-0006G7-T2 for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 06/10] XFS: Reference count per-ag structures Subject: [PATCH 06/10] XFS: Reference count per-ag structures Date: Mon, 11 Jan 2010 22:47:45 +1100 Message-Id: <1263210469-22171-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263210739 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Reference count the per-ag structures to ensure that we keep get/put pairs balanced. Assert that the reference counts are zero at unmount time to catch leaks. In future, reference counts will enable us to safely remove perag structures by allowing us to detect when they are no longer in use. Signed-off-by: Dave Chinner --- fs/xfs/xfs_ag.h | 4 ++-- fs/xfs/xfs_mount.c | 1 + fs/xfs/xfs_mount.h | 11 +++++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h index 6702bd8..18ae43f 100644 --- a/fs/xfs/xfs_ag.h +++ b/fs/xfs/xfs_ag.h @@ -196,8 +196,8 @@ typedef struct xfs_perag_busy { #define XFS_PAGB_NUM_SLOTS 128 #endif -typedef struct xfs_perag -{ +typedef struct xfs_perag { + atomic_t pag_ref; /* perag reference count */ char pagf_init; /* this agf's entry is initialized */ char pagi_init; /* this agi's entry is initialized */ char pagf_metadata; /* the agf is preferred to be metadata */ diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index c04dd83..f241fec 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -215,6 +215,7 @@ xfs_free_perag( for (agno = 0; agno < mp->m_sb.sb_agcount; agno++) { spin_lock(&mp->m_perag_lock); pag = radix_tree_delete(&mp->m_perag_tree, agno); + ASSERT(atomic_read(&pag->pag_ref) == 0); spin_unlock(&mp->m_perag_lock); ASSERT(pag); kmem_free(pag->pagb_list); diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index cfa7a5d..16b2212 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -384,7 +384,7 @@ xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d) } /* - * perag get/put wrappers for eventual ref counting + * perag get/put wrappers for ref counting */ static inline struct xfs_perag * xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) @@ -393,6 +393,12 @@ xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) spin_lock(&mp->m_perag_lock); pag = radix_tree_lookup(&mp->m_perag_tree, agno); + if (pag) { + ASSERT(atomic_read(&pag->pag_ref) >= 0); + /* catch leaks in the positive direction during testing */ + ASSERT(atomic_read(&pag->pag_ref) < 1000); + atomic_inc(&pag->pag_ref); + } spin_unlock(&mp->m_perag_lock); return pag; } @@ -400,7 +406,8 @@ xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) static inline void xfs_perag_put(struct xfs_perag *pag) { - /* nothing to see here, move along */ + ASSERT(atomic_read(&pag->pag_ref) > 0); + atomic_dec(&pag->pag_ref); } /* -- 1.6.5 From SRS0+RTOu+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_42,J_CHICKENPOX_43,J_CHICKENPOX_44, J_CHICKENPOX_45,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpNtw137877 for ; Mon, 11 Jan 2010 05:51:23 -0600 X-ASG-Debug-ID: 1263210735-4df403320000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DFF9D1C41046 for ; Mon, 11 Jan 2010 03:52:16 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id FBzAE6eAIBHaXq0T for ; Mon, 11 Jan 2010 03:52:16 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11482248-1927428 for ; Mon, 11 Jan 2010 22:22:15 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIoV-0003eu-0g for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:03 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkS-0006G4-RA for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 05/10] XFS: Replace per-ag array with a radix tree Subject: [PATCH 05/10] XFS: Replace per-ag array with a radix tree Date: Mon, 11 Jan 2010 22:47:44 +1100 Message-Id: <1263210469-22171-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263210737 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The use of an array for the per-ag structures requires reallocation of the array when growing the filesystem. This requires locking access to the array to avoid use after free situations, and the locking is difficult to get right. To avoid needing to reallocate an array, change the per-ag structures to an allocated object per ag and index them using a tree structure. The AGs are always densely indexed (hence the use of an array), but the number supported is 2^32 and lookups tend to be random and hence indexing needs to scale. A simple choice is a radix tree - it works well with this sort of index. This change also removes another large contiguous allocation from the mount/growfs path in XFS. The growing process now needs to change to only initialise the new AGs required for the extra space, and as such only needs to exclusively lock the tree for inserts. The rest of the code only needs to lock the tree while doing lookups, and hence this will remove all the deadlocks that currently occur on the m_perag_lock as it is now an innermost lock. The lock is also changed to a spinlock from a read/write lock as the hold time is now extremely short. To complete the picture, the per-ag structures will need to be reference counted to ensure that we don't free/modify them while they are still in use. This will be done in subsequent patch. Signed-off-by: Dave Chinner --- fs/xfs/xfs_alloc.c | 8 ------ fs/xfs/xfs_bmap.c | 7 +---- fs/xfs/xfs_filestream.c | 13 +++------ fs/xfs/xfs_fsops.c | 42 +++++++++++++++--------------- fs/xfs/xfs_ialloc.c | 25 +---------------- fs/xfs/xfs_itable.c | 4 --- fs/xfs/xfs_mount.c | 65 +++++++++++++++++++++++++++++++++++----------- fs/xfs/xfs_mount.h | 14 +++++++--- 8 files changed, 87 insertions(+), 91 deletions(-) diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 84070f2..4d66bb7 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -2276,7 +2276,6 @@ xfs_alloc_vextent( * These three force us into a single a.g. */ args->agno = XFS_FSB_TO_AGNO(mp, args->fsbno); - down_read(&mp->m_peraglock); args->pag = xfs_perag_get(mp, args->agno); args->minleft = 0; error = xfs_alloc_fix_freelist(args, 0); @@ -2286,14 +2285,12 @@ xfs_alloc_vextent( goto error0; } if (!args->agbp) { - up_read(&mp->m_peraglock); trace_xfs_alloc_vextent_noagbp(args); break; } args->agbno = XFS_FSB_TO_AGBNO(mp, args->fsbno); if ((error = xfs_alloc_ag_vextent(args))) goto error0; - up_read(&mp->m_peraglock); break; case XFS_ALLOCTYPE_START_BNO: /* @@ -2345,7 +2342,6 @@ xfs_alloc_vextent( * Loop over allocation groups twice; first time with * trylock set, second time without. */ - down_read(&mp->m_peraglock); for (;;) { args->pag = xfs_perag_get(mp, args->agno); if (no_min) args->minleft = 0; @@ -2408,7 +2404,6 @@ xfs_alloc_vextent( } xfs_perag_put(args->pag); } - up_read(&mp->m_peraglock); if (bump_rotor || (type == XFS_ALLOCTYPE_ANY_AG)) { if (args->agno == sagno) mp->m_agfrotor = (mp->m_agfrotor + 1) % @@ -2438,7 +2433,6 @@ xfs_alloc_vextent( return 0; error0: xfs_perag_put(args->pag); - up_read(&mp->m_peraglock); return error; } @@ -2463,7 +2457,6 @@ xfs_free_extent( args.agno = XFS_FSB_TO_AGNO(args.mp, bno); ASSERT(args.agno < args.mp->m_sb.sb_agcount); args.agbno = XFS_FSB_TO_AGBNO(args.mp, bno); - down_read(&args.mp->m_peraglock); args.pag = xfs_perag_get(args.mp, args.agno); if ((error = xfs_alloc_fix_freelist(&args, XFS_ALLOC_FLAG_FREEING))) goto error0; @@ -2475,7 +2468,6 @@ xfs_free_extent( error = xfs_free_ag_extent(tp, args.agbp, args.agno, args.agbno, len, 0); error0: xfs_perag_put(args.pag); - up_read(&args.mp->m_peraglock); return error; } diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index a9b95d9..7c6d9ac 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -2629,14 +2629,12 @@ xfs_bmap_btalloc( if (startag == NULLAGNUMBER) startag = ag = 0; notinit = 0; - down_read(&mp->m_peraglock); pag = xfs_perag_get(mp, ag); while (blen < ap->alen) { if (!pag->pagf_init && (error = xfs_alloc_pagf_init(mp, args.tp, ag, XFS_ALLOC_FLAG_TRYLOCK))) { xfs_perag_put(pag); - up_read(&mp->m_peraglock); return error; } /* @@ -2669,10 +2667,8 @@ xfs_bmap_btalloc( error = xfs_filestream_new_ag(ap, &ag); xfs_perag_put(pag); - if (error) { - up_read(&mp->m_peraglock); + if (error) return error; - } /* loop again to set 'blen'*/ startag = NULLAGNUMBER; @@ -2688,7 +2684,6 @@ xfs_bmap_btalloc( pag = xfs_perag_get(mp, ag); } xfs_perag_put(pag); - up_read(&mp->m_peraglock); /* * Since the above loop did a BUF_TRYLOCK, it is * possible that there is space for this request. diff --git a/fs/xfs/xfs_filestream.c b/fs/xfs/xfs_filestream.c index e61f2aa..914d00d 100644 --- a/fs/xfs/xfs_filestream.c +++ b/fs/xfs/xfs_filestream.c @@ -253,8 +253,7 @@ next_ag: /* * Set the allocation group number for a file or a directory, updating inode - * references and per-AG references as appropriate. Must be called with the - * m_peraglock held in read mode. + * references and per-AG references as appropriate. */ static int _xfs_filestream_update_ag( @@ -456,10 +455,10 @@ xfs_filestream_unmount( } /* - * If the mount point's m_perag array is going to be reallocated, all + * If the mount point's m_perag tree is going to be modified, all * outstanding cache entries must be flushed to avoid accessing reference count * addresses that have been freed. The call to xfs_filestream_flush() must be - * made inside the block that holds the m_peraglock in write mode to do the + * made inside the block that holds the m_perag_lock in write mode to do the * reallocation. */ void @@ -531,7 +530,6 @@ xfs_filestream_associate( mp = pip->i_mount; cache = mp->m_filestream; - down_read(&mp->m_peraglock); /* * We have a problem, Houston. @@ -548,10 +546,8 @@ xfs_filestream_associate( * * So, if we can't get the iolock without sleeping then just give up */ - if (!xfs_ilock_nowait(pip, XFS_IOLOCK_EXCL)) { - up_read(&mp->m_peraglock); + if (!xfs_ilock_nowait(pip, XFS_IOLOCK_EXCL)) return 1; - } /* If the parent directory is already in the cache, use its AG. */ item = xfs_mru_cache_lookup(cache, pip->i_ino); @@ -606,7 +602,6 @@ exit_did_pick: exit: xfs_iunlock(pip, XFS_IOLOCK_EXCL); - up_read(&mp->m_peraglock); return -err; } diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index a13919a..37a6f62 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c @@ -167,27 +167,14 @@ xfs_growfs_data_private( } new = nb - mp->m_sb.sb_dblocks; oagcount = mp->m_sb.sb_agcount; - if (nagcount > oagcount) { - void *new_perag, *old_perag; - - xfs_filestream_flush(mp); - - new_perag = kmem_zalloc(sizeof(xfs_perag_t) * nagcount, - KM_MAYFAIL); - if (!new_perag) - return XFS_ERROR(ENOMEM); - - down_write(&mp->m_peraglock); - memcpy(new_perag, mp->m_perag, sizeof(xfs_perag_t) * oagcount); - old_perag = mp->m_perag; - mp->m_perag = new_perag; - - mp->m_flags |= XFS_MOUNT_32BITINODES; - nagimax = xfs_initialize_perag(mp, nagcount); - up_write(&mp->m_peraglock); - kmem_free(old_perag); + /* allocate the new per-ag structures */ + if (nagcount > oagcount) { + error = xfs_initialize_perag(mp, nagcount, &nagimax); + if (error) + return error; } + tp = xfs_trans_alloc(mp, XFS_TRANS_GROWFS); tp->t_flags |= XFS_TRANS_RESERVE; if ((error = xfs_trans_reserve(tp, XFS_GROWFS_SPACE_RES(mp), @@ -196,6 +183,11 @@ xfs_growfs_data_private( return error; } + /* + * Write new AG headers to disk. Non-transactional, but written + * synchronously so they are completed prior to the growfs transaction + * being logged. + */ nfree = 0; for (agno = nagcount - 1; agno >= oagcount; agno--, new -= agsize) { /* @@ -359,6 +351,12 @@ xfs_growfs_data_private( goto error0; } } + + /* + * Update changed superblock fields transactionally. These are not + * seen by the rest of the world until the transaction commit applies + * them atomically to the superblock. + */ if (nagcount > oagcount) xfs_trans_mod_sb(tp, XFS_TRANS_SB_AGCOUNT, nagcount - oagcount); if (nb > mp->m_sb.sb_dblocks) @@ -369,9 +367,9 @@ xfs_growfs_data_private( if (dpct) xfs_trans_mod_sb(tp, XFS_TRANS_SB_IMAXPCT, dpct); error = xfs_trans_commit(tp, 0); - if (error) { + if (error) return error; - } + /* New allocation groups fully initialized, so update mount struct */ if (nagimax) mp->m_maxagi = nagimax; @@ -381,6 +379,8 @@ xfs_growfs_data_private( mp->m_maxicount = icount << mp->m_sb.sb_inopblog; } else mp->m_maxicount = 0; + + /* update secondary superblocks. */ for (agno = 1; agno < nagcount; agno++) { error = xfs_read_buf(mp, mp->m_ddev_targp, XFS_AGB_TO_DADDR(mp, agno, XFS_SB_BLOCK(mp)), diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 884ee13..52c9d00 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -383,11 +383,9 @@ xfs_ialloc_ag_alloc( newino = XFS_OFFBNO_TO_AGINO(args.mp, args.agbno, 0); be32_add_cpu(&agi->agi_count, newlen); be32_add_cpu(&agi->agi_freecount, newlen); - down_read(&args.mp->m_peraglock); pag = xfs_perag_get(args.mp, agno); pag->pagi_freecount += newlen; xfs_perag_put(pag); - up_read(&args.mp->m_peraglock); agi->agi_newino = cpu_to_be32(newino); /* @@ -489,7 +487,6 @@ xfs_ialloc_ag_select( */ agno = pagno; flags = XFS_ALLOC_FLAG_TRYLOCK; - down_read(&mp->m_peraglock); for (;;) { pag = xfs_perag_get(mp, agno); if (!pag->pagi_init) { @@ -531,7 +528,6 @@ xfs_ialloc_ag_select( goto nextag; } xfs_perag_put(pag); - up_read(&mp->m_peraglock); return agbp; } } @@ -544,18 +540,14 @@ nextag: * No point in iterating over the rest, if we're shutting * down. */ - if (XFS_FORCED_SHUTDOWN(mp)) { - up_read(&mp->m_peraglock); + if (XFS_FORCED_SHUTDOWN(mp)) return NULL; - } agno++; if (agno >= agcount) agno = 0; if (agno == pagno) { - if (flags == 0) { - up_read(&mp->m_peraglock); + if (flags == 0) return NULL; - } flags = 0; } } @@ -777,16 +769,13 @@ nextag: *inop = NULLFSINO; return noroom ? ENOSPC : 0; } - down_read(&mp->m_peraglock); pag = xfs_perag_get(mp, tagno); if (pag->pagi_inodeok == 0) { xfs_perag_put(pag); - up_read(&mp->m_peraglock); goto nextag; } error = xfs_ialloc_read_agi(mp, tp, tagno, &agbp); xfs_perag_put(pag); - up_read(&mp->m_peraglock); if (error) goto nextag; agi = XFS_BUF_TO_AGI(agbp); @@ -1015,9 +1004,7 @@ alloc_inode: goto error0; be32_add_cpu(&agi->agi_freecount, -1); xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); - down_read(&mp->m_peraglock); pag->pagi_freecount--; - up_read(&mp->m_peraglock); error = xfs_check_agi_freecount(cur, agi); if (error) @@ -1100,9 +1087,7 @@ xfs_difree( /* * Get the allocation group header. */ - down_read(&mp->m_peraglock); error = xfs_ialloc_read_agi(mp, tp, agno, &agbp); - up_read(&mp->m_peraglock); if (error) { cmn_err(CE_WARN, "xfs_difree: xfs_ialloc_read_agi() returned an error %d on %s. Returning error.", @@ -1169,11 +1154,9 @@ xfs_difree( be32_add_cpu(&agi->agi_count, -ilen); be32_add_cpu(&agi->agi_freecount, -(ilen - 1)); xfs_ialloc_log_agi(tp, agbp, XFS_AGI_COUNT | XFS_AGI_FREECOUNT); - down_read(&mp->m_peraglock); pag = xfs_perag_get(mp, agno); pag->pagi_freecount -= ilen - 1; xfs_perag_put(pag); - up_read(&mp->m_peraglock); xfs_trans_mod_sb(tp, XFS_TRANS_SB_ICOUNT, -ilen); xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -(ilen - 1)); @@ -1202,11 +1185,9 @@ xfs_difree( */ be32_add_cpu(&agi->agi_freecount, 1); xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); - down_read(&mp->m_peraglock); pag = xfs_perag_get(mp, agno); pag->pagi_freecount++; xfs_perag_put(pag); - up_read(&mp->m_peraglock); xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, 1); } @@ -1328,9 +1309,7 @@ xfs_imap( xfs_buf_t *agbp; /* agi buffer */ int i; /* temp state */ - down_read(&mp->m_peraglock); error = xfs_ialloc_read_agi(mp, tp, agno, &agbp); - up_read(&mp->m_peraglock); if (error) { xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " "xfs_ialloc_read_agi() returned " diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index 62efab2..940307a 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c @@ -420,9 +420,7 @@ xfs_bulkstat( while (XFS_BULKSTAT_UBLEFT(ubleft) && agno < mp->m_sb.sb_agcount) { cond_resched(); bp = NULL; - down_read(&mp->m_peraglock); error = xfs_ialloc_read_agi(mp, NULL, agno, &agbp); - up_read(&mp->m_peraglock); if (error) { /* * Skip this allocation group and go to the next one. @@ -849,9 +847,7 @@ xfs_inumbers( agbp = NULL; while (left > 0 && agno < mp->m_sb.sb_agcount) { if (agbp == NULL) { - down_read(&mp->m_peraglock); error = xfs_ialloc_read_agi(mp, NULL, agno, &agbp); - up_read(&mp->m_peraglock); if (error) { /* * If we can't read the AGI of this ag, diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 9055b60..c04dd83 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -209,13 +209,16 @@ STATIC void xfs_free_perag( xfs_mount_t *mp) { - if (mp->m_perag) { - int agno; + xfs_agnumber_t agno; + struct xfs_perag *pag; - for (agno = 0; agno < mp->m_maxagi; agno++) - if (mp->m_perag[agno].pagb_list) - kmem_free(mp->m_perag[agno].pagb_list); - kmem_free(mp->m_perag); + for (agno = 0; agno < mp->m_sb.sb_agcount; agno++) { + spin_lock(&mp->m_perag_lock); + pag = radix_tree_delete(&mp->m_perag_tree, agno); + spin_unlock(&mp->m_perag_lock); + ASSERT(pag); + kmem_free(pag->pagb_list); + kmem_free(pag); } } @@ -389,10 +392,11 @@ xfs_initialize_perag_icache( } } -xfs_agnumber_t +int xfs_initialize_perag( xfs_mount_t *mp, - xfs_agnumber_t agcount) + xfs_agnumber_t agcount, + xfs_agnumber_t *maxagi) { xfs_agnumber_t index, max_metadata; xfs_perag_t *pag; @@ -405,6 +409,33 @@ xfs_initialize_perag( agino = XFS_OFFBNO_TO_AGINO(mp, sbp->sb_agblocks - 1, 0); ino = XFS_AGINO_TO_INO(mp, agcount - 1, agino); + /* + * Walk the current per-ag tree so we don't try to initialise AGs + * that already exist (growfs case). Allocate and insert all the + * AGs we don't find ready for initialisation. + */ + for (index = 0; index < agcount; index++) { + pag = xfs_perag_get(mp, index); + if (pag) { + xfs_perag_put(pag); + continue; + } + pag = kmem_zalloc(sizeof(*pag), KM_MAYFAIL); + if (!pag) + return -ENOMEM; + if (radix_tree_preload(GFP_NOFS)) + return -ENOMEM; + spin_lock(&mp->m_perag_lock); + if (radix_tree_insert(&mp->m_perag_tree, index, pag)) { + BUG(); + spin_unlock(&mp->m_perag_lock); + kmem_free(pag); + return -EEXIST; + } + spin_unlock(&mp->m_perag_lock); + radix_tree_preload_end(); + } + /* Clear the mount flag if no inode can overflow 32 bits * on this filesystem, or if specifically requested.. */ @@ -454,7 +485,9 @@ xfs_initialize_perag( xfs_perag_put(pag); } } - return index; + if (maxagi) + *maxagi = index; + return 0; } void @@ -1155,13 +1188,13 @@ xfs_mountfs( /* * Allocate and initialize the per-ag data. */ - init_rwsem(&mp->m_peraglock); - mp->m_perag = kmem_zalloc(sbp->sb_agcount * sizeof(xfs_perag_t), - KM_MAYFAIL); - if (!mp->m_perag) + spin_lock_init(&mp->m_perag_lock); + INIT_RADIX_TREE(&mp->m_perag_tree, GFP_NOFS); + error = xfs_initialize_perag(mp, sbp->sb_agcount, &mp->m_maxagi); + if (error) { + cmn_err(CE_WARN, "XFS: Failed per-ag init: %d", error); goto out_remove_uuid; - - mp->m_maxagi = xfs_initialize_perag(mp, sbp->sb_agcount); + } if (!sbp->sb_logblocks) { cmn_err(CE_WARN, "XFS: no log defined"); diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index f8a68a2..cfa7a5d 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -207,8 +207,8 @@ typedef struct xfs_mount { uint m_ag_maxlevels; /* XFS_AG_MAXLEVELS */ uint m_bm_maxlevels[2]; /* XFS_BM_MAXLEVELS */ uint m_in_maxlevels; /* max inobt btree levels. */ - struct xfs_perag *m_perag; /* per-ag accounting info */ - struct rw_semaphore m_peraglock; /* lock for m_perag (pointer) */ + struct radix_tree_root m_perag_tree; /* per-ag accounting info */ + spinlock_t m_perag_lock; /* lock for m_perag_tree */ struct mutex m_growlock; /* growfs mutex */ int m_fixedfsid[2]; /* unchanged for life of FS */ uint m_dmevmask; /* DMI events for this FS */ @@ -389,7 +389,12 @@ xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d) static inline struct xfs_perag * xfs_perag_get(struct xfs_mount *mp, xfs_agnumber_t agno) { - return &mp->m_perag[agno]; + struct xfs_perag *pag; + + spin_lock(&mp->m_perag_lock); + pag = radix_tree_lookup(&mp->m_perag_tree, agno); + spin_unlock(&mp->m_perag_lock); + return pag; } static inline void @@ -450,7 +455,8 @@ extern struct xfs_dmops xfs_dmcore_xfs; #endif /* __KERNEL__ */ extern void xfs_mod_sb(struct xfs_trans *, __int64_t); -extern xfs_agnumber_t xfs_initialize_perag(struct xfs_mount *, xfs_agnumber_t); +extern int xfs_initialize_perag(struct xfs_mount *, xfs_agnumber_t, + xfs_agnumber_t *); extern void xfs_sb_from_disk(struct xfs_sb *, struct xfs_dsb *); extern void xfs_sb_to_disk(struct xfs_dsb *, struct xfs_sb *, __int64_t); -- 1.6.5 From SRS0+IW4C+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:51:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBpWfO137949 for ; Mon, 11 Jan 2010 05:51:32 -0600 X-ASG-Debug-ID: 1263210745-2ff602ad0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0F1FE158866 for ; Mon, 11 Jan 2010 03:52:25 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id vtNztBQNqAbWr94O for ; Mon, 11 Jan 2010 03:52:25 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11377753-1927428 for ; Mon, 11 Jan 2010 22:22:24 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIok-0003fe-Jz for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:52:18 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUIkT-0006GN-Ci for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:47:53 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 10/10] xfs: embed the pagb_list array in the perag structure Subject: [PATCH 10/10] xfs: embed the pagb_list array in the perag structure Date: Mon, 11 Jan 2010 22:47:49 +1100 Message-Id: <1263210469-22171-11-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263210747 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Now that the perag structure is allocated memory rather than held in an array, we don't need to have the busy extent array external to the structure. Embed it into the perag structure to avoid needing an extra allocation when setting up. Signed-off-by: Dave Chinner --- fs/xfs/xfs_ag.h | 10 ++-------- fs/xfs/xfs_alloc.c | 4 ++-- fs/xfs/xfs_mount.c | 3 +-- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h index 963bc27..b1a5a1f 100644 --- a/fs/xfs/xfs_ag.h +++ b/fs/xfs/xfs_ag.h @@ -187,14 +187,8 @@ typedef struct xfs_perag_busy { /* * Per-ag incore structure, copies of information in agf and agi, * to improve the performance of allocation group selection. - * - * pick sizes which fit in allocation buckets well */ -#if (BITS_PER_LONG == 32) -#define XFS_PAGB_NUM_SLOTS 84 -#elif (BITS_PER_LONG == 64) #define XFS_PAGB_NUM_SLOTS 128 -#endif typedef struct xfs_perag { struct xfs_mount *pag_mount; /* owner filesystem */ @@ -212,8 +206,6 @@ typedef struct xfs_perag { __uint32_t pagf_btreeblks; /* # of blocks held in AGF btrees */ xfs_agino_t pagi_freecount; /* number of free inodes */ xfs_agino_t pagi_count; /* number of allocated inodes */ - int pagb_count; /* pagb slots in use */ - xfs_perag_busy_t *pagb_list; /* unstable blocks */ /* * Inode allocation search lookup optimisation. @@ -232,6 +224,8 @@ typedef struct xfs_perag { rwlock_t pag_ici_lock; /* incore inode lock */ struct radix_tree_root pag_ici_root; /* incore inode cache root */ #endif + int pagb_count; /* pagb slots in use */ + xfs_perag_busy_t pagb_list[XFS_PAGB_NUM_SLOTS]; /* unstable blocks */ } xfs_perag_t; /* diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 4d66bb7..8aa181d 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -2200,8 +2200,8 @@ xfs_alloc_read_agf( pag->pagf_levels[XFS_BTNUM_CNTi] = be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNTi]); spin_lock_init(&pag->pagb_lock); - pag->pagb_list = kmem_zalloc(XFS_PAGB_NUM_SLOTS * - sizeof(xfs_perag_busy_t), KM_SLEEP); + pag->pagb_count = 0; + memset(pag->pagb_list, 0, sizeof(pag->pagb_list)); pag->pagf_init = 1; } #ifdef DEBUG diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index be643e5..0df5045 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -247,10 +247,9 @@ xfs_free_perag( for (agno = 0; agno < mp->m_sb.sb_agcount; agno++) { spin_lock(&mp->m_perag_lock); pag = radix_tree_delete(&mp->m_perag_tree, agno); + ASSERT(pag); ASSERT(atomic_read(&pag->pag_ref) == 0); spin_unlock(&mp->m_perag_lock); - ASSERT(pag); - kmem_free(pag->pagb_list); kmem_free(pag); } } -- 1.6.5 From SRS0+IW4C+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:53:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBrNWx138154 for ; Mon, 11 Jan 2010 05:53:24 -0600 X-ASG-Debug-ID: 1263210857-336a02200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D1E8315888A for ; Mon, 11 Jan 2010 03:54:17 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id lYukDiC5AKeEYqeE for ; Mon, 11 Jan 2010 03:54:17 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11538028-1927428 for ; Mon, 11 Jan 2010 22:24:16 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIqd-0003fm-EC for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:54:15 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUImb-0006qZ-8I for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:50:05 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] XFS: Don't wake the aild once per second Subject: [PATCH 2/3] XFS: Don't wake the aild once per second Date: Mon, 11 Jan 2010 22:49:58 +1100 Message-Id: <1263210599-25067-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210599-25067-1-git-send-email-david@fromorbit.com> References: <1263210599-25067-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263210858 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Now that the AIL push algorithm is traversal safe, we don't need a watchdog function in the xfsaild to catch pushes that fail to make progress. Remove the watchdog timeout and make pushes purely driven by demand. This will remove the once-per-second wakeup that is seen when the filesystem is idle and make laptop power misers happy. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 7 +++---- fs/xfs/xfs_trans_ail.c | 19 +++++++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 384bd96..b1b9634 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -877,12 +877,11 @@ xfsaild( { struct xfs_ail *ailp = data; xfs_lsn_t last_pushed_lsn = 0; - long tout = 0; + long tout = 0; /* milliseconds */ while (!kthread_should_stop()) { - if (tout) - schedule_timeout_interruptible(msecs_to_jiffies(tout)); - tout = 1000; + schedule_timeout_interruptible(tout ? + msecs_to_jiffies(tout) : MAX_SCHEDULE_TIMEOUT); /* swsusp */ try_to_freeze(); diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index 2ffc570..063dfbd 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c @@ -237,14 +237,15 @@ out: } /* - * Function that does the work of pushing on the AIL + * xfsaild_push does the work of pushing on the AIL. Returning a timeout of + * zero indicates that the caller should sleep until woken. */ long xfsaild_push( struct xfs_ail *ailp, xfs_lsn_t *last_lsn) { - long tout = 1000; /* milliseconds */ + long tout = 0; xfs_lsn_t last_pushed_lsn = *last_lsn; xfs_lsn_t target = ailp->xa_target; xfs_lsn_t lsn; @@ -262,7 +263,7 @@ xfsaild_push( */ xfs_trans_ail_cursor_done(ailp, cur); spin_unlock(&ailp->xa_lock); - last_pushed_lsn = 0; + *last_lsn = 0; return tout; } @@ -279,7 +280,6 @@ xfsaild_push( * prevents use from spinning when we can't do anything or there is * lots of contention on the AIL lists. */ - tout = 10; lsn = lip->li_lsn; flush_log = stuck = count = 0; while ((XFS_LSN_CMP(lip->li_lsn, target) < 0)) { @@ -376,14 +376,14 @@ xfsaild_push( if (!count) { /* We're past our target or empty, so idle */ - tout = 1000; + last_pushed_lsn = 0; } else if (XFS_LSN_CMP(lsn, target) >= 0) { /* * We reached the target so wait a bit longer for I/O to * complete and remove pushed items from the AIL before we * start the next scan from the start of the AIL. */ - tout += 20; + tout = 50; last_pushed_lsn = 0; } else if ((stuck * 100) / count > 90) { /* @@ -395,11 +395,14 @@ xfsaild_push( * Backoff a bit more to allow some I/O to complete before * continuing from where we were. */ - tout += 10; + tout = 20; + } else { + /* more to do, but wait a short while before continuing */ + tout = 10; } *last_lsn = last_pushed_lsn; return tout; -} /* xfsaild_push */ +} /* -- 1.6.5 From SRS0+ADNS+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:53:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBrNDn138152 for ; Mon, 11 Jan 2010 05:53:24 -0600 X-ASG-Debug-ID: 1263210857-0d6c030d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CA1B11357F87 for ; Mon, 11 Jan 2010 03:54:17 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id fEcfI6AM2TIPFMwL for ; Mon, 11 Jan 2010 03:54:17 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11397740-1927428 for ; Mon, 11 Jan 2010 22:24:16 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIqd-0003fo-GC for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:54:15 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUImb-0006qd-A3 for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:50:05 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] XFS: Don't wake xfsbufd when idle Subject: [PATCH 3/3] XFS: Don't wake xfsbufd when idle Date: Mon, 11 Jan 2010 22:49:59 +1100 Message-Id: <1263210599-25067-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210599-25067-1-git-send-email-david@fromorbit.com> References: <1263210599-25067-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263210858 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The xfsbufd wakes every xfsbufd_centisecs (once per second by default) for each filesystem even when the filesystem is idle. If the xfsbufd has nothing to do, put it into a long term sleep and only wake it up when there is work pending (i.e. dirty buffers to flush soon). This will make laptop power misers happy. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_buf.c | 20 +++++++++++++++----- 1 files changed, 15 insertions(+), 5 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 77b8be8..b51be4e 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -1595,6 +1595,11 @@ xfs_buf_delwri_queue( list_del(&bp->b_list); } + if (list_empty(dwq)) { + /* start xfsbufd as it is about to have something to do */ + wake_up_process(bp->b_target->bt_task); + } + bp->b_flags |= _XBF_DELWRI_Q; list_add_tail(&bp->b_list, dwq); bp->b_queuetime = jiffies; @@ -1644,6 +1649,8 @@ xfsbufd_wakeup( list_for_each_entry(btp, &xfs_buftarg_list, bt_list) { if (test_bit(XBT_FORCE_SLEEP, &btp->bt_flags)) continue; + if (list_empty(&btp->bt_delwrite_queue)) + continue; set_bit(XBT_FORCE_FLUSH, &btp->bt_flags); wake_up_process(btp->bt_task); } @@ -1708,6 +1715,9 @@ xfsbufd( set_freezable(); do { + long age = xfs_buf_age_centisecs * msecs_to_jiffies(10); + long tout = age; + if (unlikely(freezing(current))) { set_bit(XBT_FORCE_SLEEP, &target->bt_flags); refrigerator(); @@ -1715,12 +1725,12 @@ xfsbufd( clear_bit(XBT_FORCE_SLEEP, &target->bt_flags); } - schedule_timeout_interruptible( - xfs_buf_timer_centisecs * msecs_to_jiffies(10)); - - xfs_buf_delwri_split(target, &tmp, - xfs_buf_age_centisecs * msecs_to_jiffies(10)); + /* sleep for a long time if there is nothing to do. */ + if (list_empty(&target->bt_delwrite_queue)) + tout = MAX_SCHEDULE_TIMEOUT; + schedule_timeout_interruptible(tout); + xfs_buf_delwri_split(target, &tmp, age); count = 0; while (!list_empty(&tmp)) { bp = list_entry(tmp.next, xfs_buf_t, b_list); -- 1.6.5 From SRS0+IW4C+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:53:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBrPoU138179 for ; Mon, 11 Jan 2010 05:53:25 -0600 X-ASG-Debug-ID: 1263210858-4a6d03670000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 497BA1C4114D for ; Mon, 11 Jan 2010 03:54:19 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id 5uuDhZUpFBxx9dSP for ; Mon, 11 Jan 2010 03:54:19 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11538029-1927428 for ; Mon, 11 Jan 2010 22:24:17 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIqd-0003fk-Aw for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:54:15 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUImb-0006qT-3W for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:50:05 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] Other 2.6.34 candidate patches Subject: [PATCH 0/3] Other 2.6.34 candidate patches Date: Mon, 11 Jan 2010 22:49:56 +1100 Message-Id: <1263210599-25067-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263210860 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0100 1.0000 -1.9558 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.96 X-Barracuda-Spam-Status: No, SCORE=-1.96 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Cleanup and on-demand wakeup patches that have been cleaned up after review. From SRS0+ADNS+40+fromorbit.com=dave@internode.on.net Mon Jan 11 05:53:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_63,J_CHICKENPOX_65,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BBrOwl138174 for ; Mon, 11 Jan 2010 05:53:25 -0600 X-ASG-Debug-ID: 1263210857-108702950000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8F6001357F87 for ; Mon, 11 Jan 2010 03:54:18 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id Jka2aAaFFhrBjOzn for ; Mon, 11 Jan 2010 03:54:18 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11397741-1927428 for ; Mon, 11 Jan 2010 22:24:17 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUIqd-0003fl-CV for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:54:15 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUImb-0006qV-5C for xfs@oss.sgi.com; Mon, 11 Jan 2010 22:50:05 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] XFS: Use list_heads for log recovery item lists Subject: [PATCH 1/3] XFS: Use list_heads for log recovery item lists Date: Mon, 11 Jan 2010 22:49:57 +1100 Message-Id: <1263210599-25067-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263210599-25067-1-git-send-email-david@fromorbit.com> References: <1263210599-25067-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263210859 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Remove the roll-your-own linked list operations. Signed-off-by: Dave Chinner --- fs/xfs/xfs_log_recover.c | 205 ++++++++++++++++------------------------------ fs/xfs/xfs_log_recover.h | 23 +++--- 2 files changed, 81 insertions(+), 147 deletions(-) diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index 69ac2e5..cd55e1c 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -50,8 +50,6 @@ STATIC int xlog_find_zeroed(xlog_t *, xfs_daddr_t *); STATIC int xlog_clear_stale_blocks(xlog_t *, xfs_lsn_t); -STATIC void xlog_recover_insert_item_backq(xlog_recover_item_t **q, - xlog_recover_item_t *item); #if defined(DEBUG) STATIC void xlog_recover_check_summary(xlog_t *); #else @@ -1367,36 +1365,45 @@ xlog_clear_stale_blocks( STATIC xlog_recover_t * xlog_recover_find_tid( - xlog_recover_t *q, + struct hlist_head *head, xlog_tid_t tid) { - xlog_recover_t *p = q; + xlog_recover_t *trans; + struct hlist_node *n; - while (p != NULL) { - if (p->r_log_tid == tid) - break; - p = p->r_next; + hlist_for_each_entry(trans, n, head, r_list) { + if (trans->r_log_tid == tid) + return trans; } - return p; + return NULL; } STATIC void -xlog_recover_put_hashq( - xlog_recover_t **q, - xlog_recover_t *trans) +xlog_recover_new_tid( + struct hlist_head *head, + xlog_tid_t tid, + xfs_lsn_t lsn) { - trans->r_next = *q; - *q = trans; + xlog_recover_t *trans; + + trans = kmem_zalloc(sizeof(xlog_recover_t), KM_SLEEP); + trans->r_log_tid = tid; + trans->r_lsn = lsn; + INIT_LIST_HEAD(&trans->r_itemq); + + INIT_HLIST_NODE(&trans->r_list); + hlist_add_head(&trans->r_list, head); } STATIC void xlog_recover_add_item( - xlog_recover_item_t **itemq) + struct list_head *head) { xlog_recover_item_t *item; item = kmem_zalloc(sizeof(xlog_recover_item_t), KM_SLEEP); - xlog_recover_insert_item_backq(itemq, item); + INIT_LIST_HEAD(&item->ri_list); + list_add_tail(&item->ri_list, head); } STATIC int @@ -1409,8 +1416,7 @@ xlog_recover_add_to_cont_trans( xfs_caddr_t ptr, old_ptr; int old_len; - item = trans->r_itemq; - if (item == NULL) { + if (list_empty(&trans->r_itemq)) { /* finish copying rest of trans header */ xlog_recover_add_item(&trans->r_itemq); ptr = (xfs_caddr_t) &trans->r_theader + @@ -1418,7 +1424,8 @@ xlog_recover_add_to_cont_trans( memcpy(ptr, dp, len); /* d, s, l */ return 0; } - item = item->ri_prev; + /* take the tail entry */ + item = list_entry(trans->r_itemq.prev, xlog_recover_item_t, ri_list); old_ptr = item->ri_buf[item->ri_cnt-1].i_addr; old_len = item->ri_buf[item->ri_cnt-1].i_len; @@ -1455,8 +1462,7 @@ xlog_recover_add_to_trans( if (!len) return 0; - item = trans->r_itemq; - if (item == NULL) { + if (list_empty(&trans->r_itemq)) { /* we need to catch log corruptions here */ if (*(uint *)dp != XFS_TRANS_HEADER_MAGIC) { xlog_warn("XFS: xlog_recover_add_to_trans: " @@ -1474,12 +1480,15 @@ xlog_recover_add_to_trans( memcpy(ptr, dp, len); in_f = (xfs_inode_log_format_t *)ptr; - if (item->ri_prev->ri_total != 0 && - item->ri_prev->ri_total == item->ri_prev->ri_cnt) { + /* take the tail entry */ + item = list_entry(trans->r_itemq.prev, xlog_recover_item_t, ri_list); + if (item->ri_total != 0 && + item->ri_total == item->ri_cnt) { + /* tail item is in use, get a new one */ xlog_recover_add_item(&trans->r_itemq); + item = list_entry(trans->r_itemq.prev, + xlog_recover_item_t, ri_list); } - item = trans->r_itemq; - item = item->ri_prev; if (item->ri_total == 0) { /* first region to be added */ if (in_f->ilf_size == 0 || @@ -1504,96 +1513,29 @@ xlog_recover_add_to_trans( return 0; } -STATIC void -xlog_recover_new_tid( - xlog_recover_t **q, - xlog_tid_t tid, - xfs_lsn_t lsn) -{ - xlog_recover_t *trans; - - trans = kmem_zalloc(sizeof(xlog_recover_t), KM_SLEEP); - trans->r_log_tid = tid; - trans->r_lsn = lsn; - xlog_recover_put_hashq(q, trans); -} - -STATIC int -xlog_recover_unlink_tid( - xlog_recover_t **q, - xlog_recover_t *trans) -{ - xlog_recover_t *tp; - int found = 0; - - ASSERT(trans != NULL); - if (trans == *q) { - *q = (*q)->r_next; - } else { - tp = *q; - while (tp) { - if (tp->r_next == trans) { - found = 1; - break; - } - tp = tp->r_next; - } - if (!found) { - xlog_warn( - "XFS: xlog_recover_unlink_tid: trans not found"); - ASSERT(0); - return XFS_ERROR(EIO); - } - tp->r_next = tp->r_next->r_next; - } - return 0; -} - -STATIC void -xlog_recover_insert_item_backq( - xlog_recover_item_t **q, - xlog_recover_item_t *item) -{ - if (*q == NULL) { - item->ri_prev = item->ri_next = item; - *q = item; - } else { - item->ri_next = *q; - item->ri_prev = (*q)->ri_prev; - (*q)->ri_prev = item; - item->ri_prev->ri_next = item; - } -} - -STATIC void -xlog_recover_insert_item_frontq( - xlog_recover_item_t **q, - xlog_recover_item_t *item) -{ - xlog_recover_insert_item_backq(q, item); - *q = item; -} - +/* + * Sort the log items in the transaction. Cancelled buffers need + * to be put first so they are processed before any items that might + * modify the buffers. If they are cancelled, then the modifications + * don't need to be replayed. + */ STATIC int xlog_recover_reorder_trans( xlog_recover_t *trans) { - xlog_recover_item_t *first_item, *itemq, *itemq_next; - xfs_buf_log_format_t *buf_f; - ushort flags = 0; + xlog_recover_item_t *item, *n; + LIST_HEAD(sort_list); + + list_splice_init(&trans->r_itemq, &sort_list); + list_for_each_entry_safe(item, n, &sort_list, ri_list) { + xfs_buf_log_format_t *buf_f; - first_item = itemq = trans->r_itemq; - trans->r_itemq = NULL; - do { - itemq_next = itemq->ri_next; - buf_f = (xfs_buf_log_format_t *)itemq->ri_buf[0].i_addr; + buf_f = (xfs_buf_log_format_t *)item->ri_buf[0].i_addr; - switch (ITEM_TYPE(itemq)) { + switch (ITEM_TYPE(item)) { case XFS_LI_BUF: - flags = buf_f->blf_flags; - if (!(flags & XFS_BLI_CANCEL)) { - xlog_recover_insert_item_frontq(&trans->r_itemq, - itemq); + if (!(buf_f->blf_flags & XFS_BLI_CANCEL)) { + list_move(&item->ri_list, &trans->r_itemq); break; } case XFS_LI_INODE: @@ -1601,7 +1543,7 @@ xlog_recover_reorder_trans( case XFS_LI_QUOTAOFF: case XFS_LI_EFD: case XFS_LI_EFI: - xlog_recover_insert_item_backq(&trans->r_itemq, itemq); + list_move_tail(&item->ri_list, &trans->r_itemq); break; default: xlog_warn( @@ -1609,8 +1551,8 @@ xlog_recover_reorder_trans( ASSERT(0); return XFS_ERROR(EIO); } - itemq = itemq_next; - } while (first_item != itemq); + } + ASSERT(list_empty(&sort_list)); return 0; } @@ -2814,14 +2756,13 @@ xlog_recover_do_trans( int pass) { int error = 0; - xlog_recover_item_t *item, *first_item; + xlog_recover_item_t *item; error = xlog_recover_reorder_trans(trans); if (error) return error; - first_item = item = trans->r_itemq; - do { + list_for_each_entry(item, &trans->r_itemq, ri_list) { switch (ITEM_TYPE(item)) { case XFS_LI_BUF: error = xlog_recover_do_buffer_trans(log, item, pass); @@ -2854,8 +2795,7 @@ xlog_recover_do_trans( if (error) return error; - item = item->ri_next; - } while (first_item != item); + } return 0; } @@ -2869,21 +2809,18 @@ STATIC void xlog_recover_free_trans( xlog_recover_t *trans) { - xlog_recover_item_t *first_item, *item, *free_item; + xlog_recover_item_t *item, *n; int i; - item = first_item = trans->r_itemq; - do { - free_item = item; - item = item->ri_next; - /* Free the regions in the item. */ - for (i = 0; i < free_item->ri_cnt; i++) { - kmem_free(free_item->ri_buf[i].i_addr); - } + list_for_each_entry_safe(item, n, &trans->r_itemq, ri_list) { + /* Free the regions in the item. */ + list_del(&item->ri_list); + for (i = 0; i < item->ri_cnt; i++) + kmem_free(item->ri_buf[i].i_addr); /* Free the item itself */ - kmem_free(free_item->ri_buf); - kmem_free(free_item); - } while (first_item != item); + kmem_free(item->ri_buf); + kmem_free(item); + } /* Free the transaction recover structure */ kmem_free(trans); } @@ -2891,14 +2828,12 @@ xlog_recover_free_trans( STATIC int xlog_recover_commit_trans( xlog_t *log, - xlog_recover_t **q, xlog_recover_t *trans, int pass) { int error; - if ((error = xlog_recover_unlink_tid(q, trans))) - return error; + hlist_del(&trans->r_list); if ((error = xlog_recover_do_trans(log, trans, pass))) return error; xlog_recover_free_trans(trans); /* no error */ @@ -2926,7 +2861,7 @@ xlog_recover_unmount_trans( STATIC int xlog_recover_process_data( xlog_t *log, - xlog_recover_t *rhash[], + struct hlist_head rhash[], xlog_rec_header_t *rhead, xfs_caddr_t dp, int pass) @@ -2960,7 +2895,7 @@ xlog_recover_process_data( } tid = be32_to_cpu(ohead->oh_tid); hash = XLOG_RHASH(tid); - trans = xlog_recover_find_tid(rhash[hash], tid); + trans = xlog_recover_find_tid(&rhash[hash], tid); if (trans == NULL) { /* not found; add new tid */ if (ohead->oh_flags & XLOG_START_TRANS) xlog_recover_new_tid(&rhash[hash], tid, @@ -2978,7 +2913,7 @@ xlog_recover_process_data( switch (flags) { case XLOG_COMMIT_TRANS: error = xlog_recover_commit_trans(log, - &rhash[hash], trans, pass); + trans, pass); break; case XLOG_UNMOUNT_TRANS: error = xlog_recover_unmount_trans(trans); @@ -3517,7 +3452,7 @@ xlog_do_recovery_pass( int error = 0, h_size; int bblks, split_bblks; int hblks, split_hblks, wrapped_hblks; - xlog_recover_t *rhash[XLOG_RHASH_SIZE]; + struct hlist_head rhash[XLOG_RHASH_SIZE]; ASSERT(head_blk != tail_blk); diff --git a/fs/xfs/xfs_log_recover.h b/fs/xfs/xfs_log_recover.h index b225455..75d7492 100644 --- a/fs/xfs/xfs_log_recover.h +++ b/fs/xfs/xfs_log_recover.h @@ -35,22 +35,21 @@ * item headers are in ri_buf[0]. Additional buffers follow. */ typedef struct xlog_recover_item { - struct xlog_recover_item *ri_next; - struct xlog_recover_item *ri_prev; - int ri_type; - int ri_cnt; /* count of regions found */ - int ri_total; /* total regions */ - xfs_log_iovec_t *ri_buf; /* ptr to regions buffer */ + struct list_head ri_list; + int ri_type; + int ri_cnt; /* count of regions found */ + int ri_total; /* total regions */ + xfs_log_iovec_t *ri_buf; /* ptr to regions buffer */ } xlog_recover_item_t; struct xlog_tid; typedef struct xlog_recover { - struct xlog_recover *r_next; - xlog_tid_t r_log_tid; /* log's transaction id */ - xfs_trans_header_t r_theader; /* trans header for partial */ - int r_state; /* not needed */ - xfs_lsn_t r_lsn; /* xact lsn */ - xlog_recover_item_t *r_itemq; /* q for items */ + struct hlist_node r_list; + xlog_tid_t r_log_tid; /* log's transaction id */ + xfs_trans_header_t r_theader; /* trans header for partial */ + int r_state; /* not needed */ + xfs_lsn_t r_lsn; /* xact lsn */ + struct list_head r_itemq; /* q for items */ } xlog_recover_t; #define ITEM_TYPE(i) (*(ushort *)(i)->ri_buf[0].i_addr) -- 1.6.5 From ebb9@byu.net Mon Jan 11 06:49:39 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BCnbfW144357 for ; Mon, 11 Jan 2010 06:49:38 -0600 X-ASG-Debug-ID: 1263214232-6fcb010a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from qmta04.emeryville.ca.mail.comcast.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E9772158B8E for ; Mon, 11 Jan 2010 04:50:32 -0800 (PST) Received: from qmta04.emeryville.ca.mail.comcast.net (qmta04.emeryville.ca.mail.comcast.net [76.96.30.40]) by cuda.sgi.com with ESMTP id Yf2lYZ2mcym0gUuW for ; Mon, 11 Jan 2010 04:50:32 -0800 (PST) Received: from omta06.emeryville.ca.mail.comcast.net ([76.96.30.51]) by qmta04.emeryville.ca.mail.comcast.net with comcast id UCpC1d00C16AWCUA4CqZZV; Mon, 11 Jan 2010 12:50:33 +0000 Received: from [192.168.0.106] ([24.10.244.244]) by omta06.emeryville.ca.mail.comcast.net with comcast id UCqX1d0085H651C8SCqYbp; Mon, 11 Jan 2010 12:50:32 +0000 Message-ID: <4B4B1EB7.6010706@byu.net> Date: Mon, 11 Jan 2010 05:51:03 -0700 From: Eric Blake User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.6.666 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: add test for ctimes updates in futimens Subject: Re: [PATCH] xfstests: add test for ctimes updates in futimens References: <20100110215227.GA15354@infradead.org> In-Reply-To: <20100110215227.GA15354@infradead.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: qmta04.emeryville.ca.mail.comcast.net[76.96.30.40] X-Barracuda-Start-Time: 1263214232 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19517 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean According to Christoph Hellwig on 1/10/2010 2:52 PM: > Erik, can you double check the attribution and licensing for your > testcase? You got the spelling of my name wrong in the email... > + * Copyright (c) 2009 Eric Blake > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2, or (at your option) > + * any later version. ...but correct here in the patch. Looks good to me. -- Don't work too hard, make some time for fun as well! Eric Blake ebb9@byu.net From aelder@sgi.com Mon Jan 11 08:45:05 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BEj4ld154387 for ; Mon, 11 Jan 2010 08:45:04 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay1.corp.sgi.com (Postfix) with ESMTP id D55818F80B6; Mon, 11 Jan 2010 06:45:56 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.3/8.14.2) with ESMTP id o0BEjuhn024642; Mon, 11 Jan 2010 08:45:56 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.3/8.14.3/Submit) id o0BEjt7M024641; Mon, 11 Jan 2010 08:45:55 -0600 From: Alex Elder Message-Id: <201001111445.o0BEjt7M024641@stout.americas.sgi.com> Date: Mon, 11 Jan 2010 08:45:55 -0600 To: torvalds@linux-foundation.org Subject: [GIT PULL] XFS update 2 for 2.6.33-rc3 Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org User-Agent: Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 3 bug fixes and a tracing change that reduces text footprint by about 40% for XFS. -Alex The following changes since commit 3c8ad49b015eb115fbd6982f56d530f53cf57f84: Linus Torvalds (1): Merge branch 'for-linus' of git://git.kernel.org/.../roland/infiniband are available in the git repository at: git://oss.sgi.com/xfs/xfs for-linus Christoph Hellwig (2): xfs: use DECLARE_EVENT_CLASS xfs: fix timestamp handling in xfs_setattr Dave Chinner (2): xfs: Don't flush stale inodes xfs: Ensure we force all busy extents in range to disk fs/xfs/linux-2.6/xfs_acl.c | 3 +- fs/xfs/linux-2.6/xfs_trace.h | 1141 ++++++++++++++++++++++-------------------- fs/xfs/xfs_alloc.c | 44 +- fs/xfs/xfs_inode.c | 10 +- fs/xfs/xfs_vnodeops.c | 93 ++-- 5 files changed, 666 insertions(+), 625 deletions(-) From bobsmithinc1@gmail.com Mon Jan 11 10:49:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.5 required=5.0 tests=BAYES_50,FH_DATE_PAST_20XX, J_CHICKENPOX_41,J_CHICKENPOX_42,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BGnkpl161929 for ; Mon, 11 Jan 2010 10:49:46 -0600 X-ASG-Debug-ID: 1263228615-11ab007a0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bajaj.mempreng.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A46C31C4210C; Mon, 11 Jan 2010 08:50:26 -0800 (PST) Received: from bajaj.mempreng.com ([202.164.220.210]) by cuda.sgi.com with ESMTP id akePA4yVKaru4O9Z; Mon, 11 Jan 2010 08:50:26 -0800 (PST) Received: from [127.0.0.1] (helo=localhost) by bajaj.mempreng.com with esmtpa (Exim 4.69) (envelope-from ) id 1NUMwF-000079-Bk; Mon, 11 Jan 2010 23:16:19 +0700 Received: from 41.219.251.17 ([41.219.251.17]) by www.usl.co.id (Horde MIME library) with HTTP; Mon, 11 Jan 2010 23:16:18 +0700 Message-ID: <20100111231618.0p1grjtpc0s88wgo@www.usl.co.id> Date: Mon, 11 Jan 2010 23:16:18 +0700 From: Bob Smith Reply-To: bobsmithinc03@gmail.com To: undisclosed-recipients:; X-ASG-Orig-Subj: Order To Au Subject: Order To Au MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: 7bit User-Agent: Internet Messaging Program (IMP) H3 (4.1.6) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - bajaj.mempreng.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - gmail.com X-Barracuda-Connect: UNKNOWN[202.164.220.210] X-Barracuda-Start-Time: 1263228640 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5021 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.85 X-Barracuda-Spam-Status: No, SCORE=0.85 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19529 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, I want to place an order in your store,and i will like to know if you ship to Australia and my method of payment will be credit card.so please let me know if you can assist me with the order ,And please do not forget to include your web page in your replying back to my mail. I will await your prompt response as soon as you receive this mail,i will be very glad if you treat this email with good concern... Best Regards Bob Smith Store Adventures Inc. Balwyn, VIC, 3103 Australia Telephone: 61 3 95833387 Fax: 61 3 9585 0509 From chingimleong@yahoo.com.sg Mon Jan 11 11:24:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BHOMDT164305 for ; Mon, 11 Jan 2010 11:24:23 -0600 X-ASG-Debug-ID: 1263230715-4456035a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web76214.mail.sg1.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id BF12A159A85 for ; Mon, 11 Jan 2010 09:25:16 -0800 (PST) Received: from web76214.mail.sg1.yahoo.com (web76214.mail.sg1.yahoo.com [124.108.115.162]) by cuda.sgi.com with SMTP id sEhBpavREnQdYHK7 for ; Mon, 11 Jan 2010 09:25:16 -0800 (PST) Received: (qmail 91190 invoked by uid 60001); 11 Jan 2010 17:25:14 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com.sg; s=s1024; t=1263230714; bh=Ghr9nAEswDO6TvYvmUaK6gTVlC6cbZ//e+fH4qxFx6A=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=3dJLn3jvSsQLufyM3L/8plxcsYwreWRgQ7OWxP1bfra00BqXpkvvNOJiKGo8cMl3mM3rEHyH8diFoWT9o8wTOcPRfFzAUKSDJO0xMgVLpwCDsFJUrIV78PSD7xdJod4QZ1pkVv8aEuXnW+yBhMX7s5Zb4ZjKyOCze0NBqzIn2m8= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com.sg; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=0ueFE0aQN5XOehwhMMb6xoRbDYvotnXsnguyEU/US8q5dJaIc9RCf9nsxrKuZeFDd6Utszo/Zu7aZMZxdpB0LOqYZvrfYmfXADXiHTN3pFBc/mTSrUJ1piEHIQHswwB9qybeKPlA7ycChqu+ZRt6oBIDtZ5Pt2tvJbw7r0Yp5k4=; Message-ID: <614476.89961.qm@web76214.mail.sg1.yahoo.com> X-YMail-OSG: Bp89ND0VM1lsR.qw.SxNQ1NaAQmnZwrkAjHtB494dg1TUNxtncDC8cItt5HecH4yo5kgGmSX3buFuZBV2SSiQ0Onn_zmEieahKv07pU5PJpSdla_AUTCeK6NHiRcGYI7ckMt55lzzBOQarR7gNiEgBM9nbz7HdrEiQR7n9WRK7M.jynM4k94xH7x4skGQ9sc5g4D4.BOSlunKSv6mjkq4KRbOacX_ZZYAkLTcXlb377ZNwj_gdfmfYOF7cSUVt0w8RAHYsGgi3Dc6a0ukq7906zPFE5FUk3upLmHOY4Kzs9D2Vc.1l96X5An1bxRfkbG_.V7f6uzCT5cLDN9yoTelZLMN8jdFa4twTAs66CLqoleNN9Mwnx7axHpZGira1DIv_L78EOLykB3OM1.xgqlcflltqe383Zfbatx.UiLoDBWX.l8dBzeTD6qvJr3UuCN9NcaxUsfMXEGK1rZJnd6qfH0QY3aQK.uyCs_jOJE Received: from [218.186.10.227] by web76214.mail.sg1.yahoo.com via HTTP; Tue, 12 Jan 2010 01:25:14 SGT X-Mailer: YahooMailClassic/9.0.20 YahooMailWebService/0.8.100.260964 Date: Tue, 12 Jan 2010 01:25:14 +0800 (SGT) From: Gim Leong Chin X-ASG-Orig-Subj: allocsize mount option Subject: allocsize mount option To: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: web76214.mail.sg1.yahoo.com[124.108.115.162] X-Barracuda-Start-Time: 1263230717 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0032 1.0000 -2.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19531 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi,=0A=0AMount options for xfs=0A allocsize=3Dsize=0A Sets the= buffered I/O end-of-file preallocation size when doing delayed allocation = writeout (default size is 64KiB). =0A=0A=0AI read that setting allocsize to= a big value can be used to combat filesystem fragmentation when writing bi= g files.=0A=0AI do not understand how allocsize works. Say I set allocsize= =3D1g, but my file size is only 1 MB or even smaller. Will the rest of the= 1 GB file extent be allocated, resulting in wasted space and even file fra= gmentation problem?=0A=0ADoes setting allocsize to a big value result in pe= rformance gain when writing big files? Is performance hurt by a big value = setting when writing files smaller than the allocsize value?=0A=0AI am sett= ing up a system for HPC, where two different applications have different fi= le size characteristics, one writes files of GBs and even 128 GB, the other= is in MBs to tens of MBs.=0A=0AI am not able to find documentation on the = behaviour of allocsize mount option.=0A=0AThank you.=0A=0A=0AChin Gim Leong= =0A=0A=0A New Email names for you! =0AGet the Email name you've al= ways wanted on the new @ymail and @rocketmail. =0AHurry before someone else= does!=0Ahttp://mail.promotions.yahoo.com/newdomains/sg/ From sandeen@sandeen.net Mon Jan 11 12:09:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_210,J_CHICKENPOX_43,J_CHICKENPOX_45, J_CHICKENPOX_52 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BI9fRb167855 for ; Mon, 11 Jan 2010 12:09:41 -0600 X-ASG-Debug-ID: 1263233435-480903e70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8B25A159DDA for ; Mon, 11 Jan 2010 10:10:35 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id KmxV417NCOYsQHii for ; Mon, 11 Jan 2010 10:10:35 -0800 (PST) Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0BIAQJA018598 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 11 Jan 2010 13:10:27 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0BIAOi1030832; Mon, 11 Jan 2010 13:10:25 -0500 Message-ID: <4B4B6990.8090604@sandeen.net> Date: Mon, 11 Jan 2010 12:10:24 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Eric Sandeen CC: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: [PATCH V3] mkfs: handle 4k sector devices more cleanly Subject: [PATCH V3] mkfs: handle 4k sector devices more cleanly References: <4B1E9A25.50108@redhat.com> <4B476171.4020701@sandeen.net> In-Reply-To: <4B476171.4020701@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1263233436 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19533 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Trying to mkfs a 4k sector device today fails w/o manually specifying sector size: # modprobe scsi_debug sector_size=4096 dev_size_mb=32 # mkfs.xfs -f /dev/sdc mkfs.xfs: warning - cannot set blocksize on block device /dev/sdc: Invalid argument Warning: the data subvolume sector size 512 is less than the sector size reported by the device (4096). ... add sectorsize to the device topology info, and use that if present. Also check that explicitly requested sector sizes are not smaller than the hardware size. This already fails today, but with the more cryptic "cannot set blocksize" ioctl error above. With a few more suggested comments & cleanups from Christoph. Signed-off-by: Eric Sandeen --- diff --git a/include/libxfs.h b/include/libxfs.h index ab37a60..e7199c7 100644 --- a/include/libxfs.h +++ b/include/libxfs.h @@ -115,6 +115,7 @@ extern void libxfs_device_zero (dev_t, xfs_daddr_t, uint); extern void libxfs_device_close (dev_t); extern int libxfs_device_alignment (void); extern void libxfs_report(FILE *); +extern void platform_findsizes(char *path, int fd, long long *sz, int *bsz); /* check or write log footer: specify device, log size in blocks & uuid */ typedef xfs_caddr_t (libxfs_get_block_t)(xfs_caddr_t, int, void *); diff --git a/libxfs/init.h b/libxfs/init.h index 1f27af6..f0b8cb6 100644 --- a/libxfs/init.h +++ b/libxfs/init.h @@ -24,7 +24,6 @@ extern int platform_check_ismounted (char *path, char *block, struct stat64 *sptr, int verbose); extern int platform_check_iswritable (char *path, char *block, struct stat64 *sptr, int fatal); -extern void platform_findsizes (char *path, int fd, long long *sz, int *bsz); extern int platform_set_blocksize (int fd, char *path, dev_t device, int bsz, int fatal); extern void platform_flush_device (int fd, dev_t device); extern char *platform_findrawpath(char *path); diff --git a/libxfs/linux.c b/libxfs/linux.c index bc49903..2e07d54 100644 --- a/libxfs/linux.c +++ b/libxfs/linux.c @@ -112,9 +112,9 @@ platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fata if (major(device) != RAMDISK_MAJOR) { if ((error = ioctl(fd, BLKBSZSET, &blocksize)) < 0) { fprintf(stderr, _("%s: %s - cannot set blocksize " - "on block device %s: %s\n"), + "%d on block device %s: %s\n"), progname, fatal ? "error": "warning", - path, strerror(errno)); + blocksize, path, strerror(errno)); } } return error; diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index d3ed00a..64b324c 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -33,6 +33,7 @@ struct fs_topology { int dsunit; /* stripe unit - data subvolume */ int dswidth; /* stripe width - data subvolume */ int rtswidth; /* stripe width - rt subvolume */ + int sectorsize; int sectoralign; }; @@ -320,7 +321,7 @@ out_free_probe: return ret; } -static void blkid_get_topology(const char *device, int *sunit, int *swidth) +static void blkid_get_topology(const char *device, int *sunit, int *swidth, int *sectorsize) { blkid_topology tp; blkid_probe pr; @@ -348,6 +349,8 @@ static void blkid_get_topology(const char *device, int *sunit, int *swidth) val = blkid_topology_get_optimal_io_size(tp) >> 9; if (val > 1) *swidth = val; + val = blkid_probe_get_sectorsize(pr); + *sectorsize = val; if (blkid_topology_get_alignment_offset(tp) != 0) { fprintf(stderr, @@ -370,13 +373,14 @@ static void get_topology(libxfs_init_t *xi, struct fs_topology *ft) if (!xi->disfile) { const char *dfile = xi->volname ? xi->volname : xi->dname; - blkid_get_topology(dfile, &ft->dsunit, &ft->dswidth); + blkid_get_topology(dfile, &ft->dsunit, &ft->dswidth, + &ft->sectorsize); } if (xi->rtname && !xi->risfile) { int dummy; - blkid_get_topology(xi->rtname, &dummy, &ft->rtswidth); + blkid_get_topology(xi->rtname, &dummy, &ft->rtswidth, &dummy); } } #else /* ENABLE_BLKID */ @@ -403,15 +407,29 @@ check_overwrite( return 0; } +extern void platform_findsizes (char *path, int fd, long long *sz, int *bsz); + static void get_topology(libxfs_init_t *xi, struct fs_topology *ft) { char *dfile = xi->volname ? xi->volname : xi->dname; + int bsz = BBSIZE; if (!xi->disfile) { + int fd; + long long dummy; + get_subvol_stripe_wrapper(dfile, SVTYPE_DATA, &ft->dsunit, &ft->dswidth, &ft->sectoralign); + fd = open(dfile, O_RDONLY); + /* If this fails we just fall back to BBSIZE */ + if (fd) { + platform_findsizes(dfile, fd, &dummy, &bsz); + close(fd); + } } + ft->sectorsize = bsz; + if (xi->rtname && !xi->risfile) { int dummy1; @@ -1544,18 +1562,41 @@ main( get_topology(&xi, &ft); if (ft.sectoralign) { + /* + * Older Linux software RAID versions want the sector size + * to match the block size to avoid switching I/O sizes. + * For the legacy libdisk case we thus set the sector size to + * match the block size. For systems using libblkid we assume + * that the kernel is recent enough to not require this and + * ft.sectoralign will never be set. + */ sectorsize = blocksize; + } else if (!ssflag) { + /* + * Unless specified manually on the command line use the + * advertised sector size of the device. + */ + sectorsize = ft.sectorsize; + } + + if (ft.sectoralign || !ssflag) { sectorlog = libxfs_highbit32(sectorsize); if (loginternal) { lsectorsize = sectorsize; lsectorlog = sectorlog; } } + if (sectorsize < XFS_MIN_SECTORSIZE || sectorsize > XFS_MAX_SECTORSIZE || sectorsize > blocksize) { fprintf(stderr, _("illegal sector size %d\n"), sectorsize); usage(); } + if (sectorsize < ft.sectorsize) { + fprintf(stderr, _("illegal sector size %d; hw sector is %d\n"), + sectorsize, ft.sectorsize); + usage(); + } if (lsectorsize < XFS_MIN_SECTORSIZE || lsectorsize > XFS_MAX_SECTORSIZE || lsectorsize > blocksize) { fprintf(stderr, _("illegal log sector size %d\n"), lsectorsize); @@ -1749,10 +1790,7 @@ main( calc_stripe_factors(dsu, dsw, sectorsize, lsu, lsectorsize, &dsunit, &dswidth, &lsunit); - if (slflag || ssflag) - xi.setblksize = sectorsize; - else - xi.setblksize = 1; + xi.setblksize = sectorsize; /* * Initialize. This will open the log and rt devices as well. From sandeen@sandeen.net Mon Jan 11 12:15:16 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BIFFHa168222 for ; Mon, 11 Jan 2010 12:15:15 -0600 X-ASG-Debug-ID: 1263233769-43bb02fb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ADAEAEF62BE for ; Mon, 11 Jan 2010 10:16:09 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ifXHHprRXHZQlhLN for ; Mon, 11 Jan 2010 10:16:09 -0800 (PST) Received: from int-mx08.intmail.prod.int.phx2.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0BIG9kG029993 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 11 Jan 2010 13:16:09 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx08.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0BIG8wZ029296; Mon, 11 Jan 2010 13:16:08 -0500 Message-ID: <4B4B6AE8.8070904@sandeen.net> Date: Mon, 11 Jan 2010 12:16:08 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Gim Leong Chin CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: allocsize mount option Subject: Re: allocsize mount option References: <614476.89961.qm@web76214.mail.sg1.yahoo.com> In-Reply-To: <614476.89961.qm@web76214.mail.sg1.yahoo.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.21 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1263233770 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19534 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Gim Leong Chin wrote: > Hi, > > Mount options for xfs allocsize=size Sets the buffered I/O > end-of-file preallocation size when doing delayed allocation writeout > (default size is 64KiB). > > > I read that setting allocsize to a big value can be used to combat > filesystem fragmentation when writing big files. That's not universally necessary though, depending on how you are writing them. I've only used it in the very specific case of mythtv calling "sync" every couple seconds, and defeating delalloc. > I do not understand how allocsize works. Say I set allocsize=1g, but > my file size is only 1 MB or even smaller. Will the rest of the 1 GB > file extent be allocated, resulting in wasted space and even file > fragmentation problem? possibly :) It's only speculatively allocated, though, so you won't have 1g for every file; when it's closed the preallocation goes away, IIRC. > Does setting allocsize to a big value result in performance gain when > writing big files? Is performance hurt by a big value setting when > writing files smaller than the allocsize value? > > I am setting up a system for HPC, where two different applications > have different file size characteristics, one writes files of GBs and > even 128 GB, the other is in MBs to tens of MBs. We should probably back up and say: are you seeing fragmentation problems -without- the mount option, and if so, what is your write pattern? -Eric > I am not able to find documentation on the behaviour of allocsize > mount option. > > Thank you. > > > Chin Gim Leong > > > New Email names for you! Get the Email name you've always wanted > on the new @ymail and @rocketmail. Hurry before someone else does! > http://mail.promotions.yahoo.com/newdomains/sg/ > > _______________________________________________ xfs mailing list > xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs > From patrick@news-service.com Mon Jan 11 14:21:35 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BKLYS5176128 for ; Mon, 11 Jan 2010 14:21:35 -0600 X-ASG-Debug-ID: 1263241348-050b003b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pu01.news-service.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 29134153143 for ; Mon, 11 Jan 2010 12:22:28 -0800 (PST) Received: from pu01.news-service.com (ns1.news-service.com [195.114.240.3]) by cuda.sgi.com with ESMTP id Vmy03xlFR6R3oxhk for ; Mon, 11 Jan 2010 12:22:28 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by pu01.news-service.com (Postfix) with ESMTP id 6165F62F39; Mon, 11 Jan 2010 21:22:27 +0100 (CET) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: Debian amavisd-new at pu01.news-service.com Received: from pu01.news-service.com ([127.0.0.1]) by localhost (pu01.nse [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GSpT+CYSm59t; Mon, 11 Jan 2010 21:22:25 +0100 (CET) Received: from [172.25.4.34] (fw01.nse [172.25.8.1]) by pu01.news-service.com (Postfix) with ESMTP id 9267362F2D; Mon, 11 Jan 2010 21:22:25 +0100 (CET) Message-ID: <4B4B8882.2010209@news-service.com> Date: Mon, 11 Jan 2010 21:22:26 +0100 From: Patrick Schreurs User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091204 Thunderbird/3.0 MIME-Version: 1.0 To: Dave Chinner CC: Christoph Hellwig , Tommy van Leeuwen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Inode reclaim fixes (was Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim) Subject: Re: [PATCH] Inode reclaim fixes (was Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim) References: <89c4f90c0910270341r7833f490g60810f2817eb0950@mail.gmail.com> <89c4f90c0910280519k759230c1r7b1586932ac792f7@mail.gmail.com> <20091030101601.GA11142@infradead.org> <4AF0422D.1070104@news-service.com> <20091114162126.GB17658@infradead.org> <4B0A8075.8080008@news-service.com> <20091211115932.GA20632@infradead.org> <4B3F9F88.9030307@news-service.com> <20100107110446.GA13802@discord.disaster> <4B45CFAC.4000607@news-service.com> <20100108113114.GA8654@discord.disaster> In-Reply-To: <20100108113114.GA8654@discord.disaster> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ns1.news-service.com[195.114.240.3] X-Barracuda-Start-Time: 1263241349 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19543 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean Hi Dave, Just wanted to let you know we are running a few servers with your patches. So far so good, but it's a but too early to conclude anything. Thanks for the patches. I'll keep you posted on our results. -Patrick On 8-1-2010 12:31, Dave Chinner wrote: > Hi Patrick, > > I've attached two compendium patches that will hopefully fix > the inode reclaim problems you've been seeing - one is for 2.6.31, > the other is for 2.6.32. I've cc'd this to the XFS list Ń•o that > anyone else who has been seeing crashes, assert failures and > general nastiness around inode reclaim can test them as well. > > These are not final patches - there's a few changes that Christoph > has picked up on during review - so there'll be another round of > patches before checkins and -stable backports can be requested. > > I'm hoping that these patches fix your problem, because with them > I can't make my machines fall over anymore.... > > Cheers, > > Dave. > > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 15:36:02 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BLa09f180823 for ; Mon, 11 Jan 2010 15:36:01 -0600 X-ASG-Debug-ID: 1263245814-5f6a03390000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 97237EF7192 for ; Mon, 11 Jan 2010 13:36:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id wInVad2bUj0YM3KU for ; Mon, 11 Jan 2010 13:36:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NURwT-0003zV-1k; Mon, 11 Jan 2010 21:36:53 +0000 Date: Mon, 11 Jan 2010 16:36:52 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Eric Sandeen , Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [PATCH V3] mkfs: handle 4k sector devices more cleanly Subject: Re: [PATCH V3] mkfs: handle 4k sector devices more cleanly Message-ID: <20100111213652.GA30724@infradead.org> References: <4B1E9A25.50108@redhat.com> <4B476171.4020701@sandeen.net> <4B4B6990.8090604@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B4B6990.8090604@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263245815 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 15:46:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BLkebg181481 for ; Mon, 11 Jan 2010 15:46:40 -0600 X-ASG-Debug-ID: 1263246455-77b902780000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A45C3158207 for ; Mon, 11 Jan 2010 13:47:35 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id HcQ4nSX2ihbFYaCj for ; Mon, 11 Jan 2010 13:47:35 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUS6n-0007U8-Lj; Mon, 11 Jan 2010 21:47:33 +0000 Date: Mon, 11 Jan 2010 16:47:33 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: fix stale inode flush avoidance Subject: Re: [PATCH] xfs: fix stale inode flush avoidance Message-ID: <20100111214733.GA10278@infradead.org> References: <1263210321-21068-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263210321-21068-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263246455 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 11, 2010 at 10:45:21PM +1100, Dave Chinner wrote: > When reclaiming stale inodes, we need to guarantee that inodes are > unpinned before returning with a "clean" status. If we don't we can > reclaim inodes that are pinned, leading to use after free in the > transaction subsystem as transactions complete. Looks good. Per discussion this morning the clean check might not be good enough for delwri buffers either, but as let's leave that for the more throughout redo of the inode buffer flushing. Reviewed-by: Christoph Hellwig From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 15:49:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BLn645181873 for ; Mon, 11 Jan 2010 15:49:06 -0600 X-ASG-Debug-ID: 1263246600-04ff02210000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1C6E515A4E2 for ; Mon, 11 Jan 2010 13:50:00 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id o0B3QCHJ9rNlC5gb for ; Mon, 11 Jan 2010 13:50:00 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUS9A-0003EB-Nx; Mon, 11 Jan 2010 21:50:00 +0000 Date: Mon, 11 Jan 2010 16:50:00 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] XFS: Use list_heads for log recovery item lists Subject: Re: [PATCH 1/3] XFS: Use list_heads for log recovery item lists Message-ID: <20100111215000.GB10278@infradead.org> References: <1263210599-25067-1-git-send-email-david@fromorbit.com> <1263210599-25067-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263210599-25067-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263246601 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 11, 2010 at 10:49:57PM +1100, Dave Chinner wrote: > Remove the roll-your-own linked list operations. I can't spot any changes since the version I reviewed a few days ago, so: Reviewed-by: Christoph Hellwig From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 15:50:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BLoHxc182081 for ; Mon, 11 Jan 2010 15:50:17 -0600 X-ASG-Debug-ID: 1263246673-77c1026c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3F0E415A6A1 for ; Mon, 11 Jan 2010 13:51:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Hch8UYHVLDVwu4zA for ; Mon, 11 Jan 2010 13:51:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUSAK-0005x7-NX; Mon, 11 Jan 2010 21:51:12 +0000 Date: Mon, 11 Jan 2010 16:51:12 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/3] XFS: Don't wake the aild once per second Subject: Re: [PATCH 2/3] XFS: Don't wake the aild once per second Message-ID: <20100111215112.GC10278@infradead.org> References: <1263210599-25067-1-git-send-email-david@fromorbit.com> <1263210599-25067-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263210599-25067-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263246673 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 11, 2010 at 10:49:58PM +1100, Dave Chinner wrote: > Now that the AIL push algorithm is traversal safe, we don't need a > watchdog function in the xfsaild to catch pushes that fail to make > progress. Remove the watchdog timeout and make pushes purely driven > by demand. This will remove the once-per-second wakeup that is seen > when the filesystem is idle and make laptop power misers happy. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 15:50:53 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BLorFL182177 for ; Mon, 11 Jan 2010 15:50:53 -0600 X-ASG-Debug-ID: 1263246708-77a902a50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C7DF315A6A9 for ; Mon, 11 Jan 2010 13:51:48 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id riUSQmC8e6mAh5kE for ; Mon, 11 Jan 2010 13:51:48 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUSAu-0006dm-Gh; Mon, 11 Jan 2010 21:51:48 +0000 Date: Mon, 11 Jan 2010 16:51:48 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] XFS: Don't wake xfsbufd when idle Subject: Re: [PATCH 3/3] XFS: Don't wake xfsbufd when idle Message-ID: <20100111215148.GD10278@infradead.org> References: <1263210599-25067-1-git-send-email-david@fromorbit.com> <1263210599-25067-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263210599-25067-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263246708 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 11, 2010 at 10:49:59PM +1100, Dave Chinner wrote: > The xfsbufd wakes every xfsbufd_centisecs (once per second by > default) for each filesystem even when the filesystem is idle. > If the xfsbufd has nothing to do, put it into a long term sleep > and only wake it up when there is work pending (i.e. dirty > buffers to flush soon). This will make laptop power misers happy. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 16:25:55 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BMPt5m184850 for ; Mon, 11 Jan 2010 16:25:55 -0600 X-ASG-Debug-ID: 1263248810-2a7601cc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 971C61C4377C for ; Mon, 11 Jan 2010 14:26:50 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id d9KW1Cihj3gM5KI3 for ; Mon, 11 Jan 2010 14:26:50 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUSio-0005c5-0p; Mon, 11 Jan 2010 22:26:50 +0000 Date: Mon, 11 Jan 2010 17:26:50 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: XFS status update for December 2009 Subject: XFS status update for December 2009 Message-ID: <20100111222649.GA21308@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263248810 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean December finally saw the long awaited release of Linux 2.6.32, which for XFS is mostly a bug fix release, with the major changes being various improvement to the sync path, including working around the expectation from the grub boot loader where metadata is supposed to be after a sync() system call. Together with a refactoring of the inode allocator this gives a nice diffstat for this kernel release: 46 files changed, 767 insertions(+), 1048 deletions(-) In the meantime development for the 2.6.33 has been going strong. The new event tracing code that allows to observe the inner workings of XFS in production systems has finally been merged, with another patch to reduce the size of the tracing code by using new upstream kernel features posted for review. Also a large patch series has been posted which changes per-AG data to be looked up by a radix tree instead of the existing array. This works around possible deadlocks and user after free issues during growfs, and prepares for removing a global (shared) lock from the free space allocators. In addition to that a wide range of fixes has been posted and applied. Work on the userspace packages has been just as busy. In mkfs.xfs the lazy superblock counter feature has now been enabled by default for the upcoming xfsprogs 3.1.0 release, which will require kernel 2.6.22 for the default mkfs invocation. Also for mkfs.xfs as patch was posted to correct the automatic detection of 4 kilobyte sector drivers which are expected to show up in large quantities the real work soon. The norepair mode in xfs_repair has been enhanced with additional freespace btree correction checks from xfs_db and is now identical to xfs_check in filesystem consistency checking coverage. A temporary file permission problems has been fixed in xfs_fsr, and the libhandle library has been fixed to better deal with symbolic links. In xfs_io a few commands that were added years ago have finally been wired up to actually be usable. And last but not least xfsdump saw a fix to the time stamp handling in the backup format and some usability and documentation improvements to xfsinvutil. From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 16:32:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BMWw6Y185450 for ; Mon, 11 Jan 2010 16:32:59 -0600 X-ASG-Debug-ID: 1263249234-2a6d020e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 83E821C42DB6 for ; Mon, 11 Jan 2010 14:33:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id TAgH93c1rHyNmCfi for ; Mon, 11 Jan 2010 14:33:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUSpe-0007OS-5m; Mon, 11 Jan 2010 22:33:54 +0000 Date: Mon, 11 Jan 2010 17:33:54 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/10] Perag lookup rework Subject: Re: [PATCH 0/10] Perag lookup rework Message-ID: <20100111223354.GA23551@infradead.org> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263249234 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 11, 2010 at 10:47:39PM +1100, Dave Chinner wrote: > This is the previous set of patches all put together in the one series > for the current xfs-dev tree. > > Patch 10 is a new patch - it embeds the busy extent list into the perag > structure rather than leaving as a separate allocation. All patches, including the new last one look good to me, Reviewed-by: Christoph Hellwig From BATV+b1585a11fa71e27f7fde+2332+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 11 16:33:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0BMXwIL185523 for ; Mon, 11 Jan 2010 16:33:59 -0600 X-ASG-Debug-ID: 1263249294-59d200c60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 89ADCEF7940 for ; Mon, 11 Jan 2010 14:34:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id HrpG871umx4Xjxba for ; Mon, 11 Jan 2010 14:34:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUSqc-0007ZK-15; Mon, 11 Jan 2010 22:34:54 +0000 Date: Mon, 11 Jan 2010 17:34:54 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/10] Perag lookup rework Subject: Re: [PATCH 0/10] Perag lookup rework Message-ID: <20100111223453.GA28532@infradead.org> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263249294 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Oh, btw subjects are still a mixup between XFS: and xfs: From SRS0+TIHT+41+fromorbit.com=dave@internode.on.net Mon Jan 11 22:44:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0C4ij5i217442 for ; Mon, 11 Jan 2010 22:44:46 -0600 X-ASG-Debug-ID: 1263271538-7eaf01c30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 810981C44458 for ; Mon, 11 Jan 2010 20:45:39 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id OaMoCcEqHkVuZ7ZZ for ; Mon, 11 Jan 2010 20:45:39 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11326442-1927428 for ; Tue, 12 Jan 2010 15:15:37 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUYdL-0004g5-MV for xfs@oss.sgi.com; Tue, 12 Jan 2010 15:45:35 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUYZJ-0005zX-5d for xfs@oss.sgi.com; Tue, 12 Jan 2010 15:41:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/4] xfsqa: filter the fsstress seed output in 104 Subject: [PATCH 1/4] xfsqa: filter the fsstress seed output in 104 Date: Tue, 12 Jan 2010 15:41:06 +1100 Message-Id: <1263271269-18997-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263271269-18997-1-git-send-email-david@fromorbit.com> References: <1263271269-18997-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263271540 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19573 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Otherwise it fails to match the golden output. Also add the test to the auto group so that it is run regularly now that the growfs problems are fixed. Signed-off-by: Dave Chinner --- 104 | 2 +- group | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/104 b/104 index 6dea1d3..5f18d08 100755 --- a/104 +++ b/104 @@ -60,7 +60,7 @@ _stress_scratch() procs=3 nops=1000 # -w ensures that the only ops are ones which cause write I/O - $FSSTRESS_PROG -d $SCRATCH_MNT -w -p $procs -n $nops $FSSTRESS_AVOID & + $FSSTRESS_PROG -d $SCRATCH_MNT -w -p $procs -n $nops $FSSTRESS_AVOID > /dev/null & } # real QA test starts here diff --git a/group b/group index 8d055a2..2c2e293 100644 --- a/group +++ b/group @@ -210,7 +210,7 @@ prealloc 101 udf 102 udf 103 metadata dir ioctl auto quick -104 growfs ioctl prealloc +104 growfs ioctl prealloc auto 105 acl auto quick 106 quota 107 quota -- 1.6.5 From SRS0+TIHT+41+fromorbit.com=dave@internode.on.net Mon Jan 11 22:44:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0C4ijmN217443 for ; Mon, 11 Jan 2010 22:44:46 -0600 X-ASG-Debug-ID: 1263271538-7eb201c60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 71B1A1C44455 for ; Mon, 11 Jan 2010 20:45:39 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id Z9UTXNuvV7XjLPFz for ; Mon, 11 Jan 2010 20:45:39 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11326441-1927428 for ; Tue, 12 Jan 2010 15:15:37 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUYdL-0004g6-OA for xfs@oss.sgi.com; Tue, 12 Jan 2010 15:45:35 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUYZJ-0005za-8j for xfs@oss.sgi.com; Tue, 12 Jan 2010 15:41:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/4] xfsqa: make unmounting loop devices in 073 work again Subject: [PATCH 2/4] xfsqa: make unmounting loop devices in 073 work again Date: Tue, 12 Jan 2010 15:41:07 +1100 Message-Id: <1263271269-18997-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263271269-18997-1-git-send-email-david@fromorbit.com> References: <1263271269-18997-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263271540 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0148 1.0000 -1.9246 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19573 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Loop devices are now created and destroyed on demand, and the existing hacks to do this no longer work. Remove them. Signed-off-by: Dave Chinner --- 073 | 13 +------------ 1 files changed, 1 insertions(+), 12 deletions(-) diff --git a/073 b/073 index 5059448..ac4c64f 100755 --- a/073 +++ b/073 @@ -3,15 +3,6 @@ # # Test xfs_copy # -# HACK WARNING: -# -# Due to the severe brokenness of mount's handling of loopback devices, we -# hardcode the loop devices we use for this test. This enables us to clean up -# the pieces when we remount the loop device because mount loses all trace of -# the fact this is a loop device. Hence to enable us to unmount the hosting -# filesystem, we need to manually tear down the relevant loop device. If -# mount ever gets fixed then this hack can be removed. -# #----------------------------------------------------------------------- # Copyright (c) 2000-2003,2008 Silicon Graphics, Inc. All Rights Reserved. # @@ -127,9 +118,7 @@ _verify_copy() diff -u $tmp.geometry1 $tmp.geometry2 echo unmounting and removing new image - loop=`mount | grep $target | grep -o -e 'loop=.*[^),]' | grep -o -e '/.*$'` - umount $source $target - losetup -d $loop > /dev/null 2>&1 + umount $source_dir $target_dir rm -f $target } -- 1.6.5 From SRS0+TIHT+41+fromorbit.com=dave@internode.on.net Mon Jan 11 22:44:47 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0C4ik9T217454 for ; Mon, 11 Jan 2010 22:44:46 -0600 X-ASG-Debug-ID: 1263271538-7eb201c60002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3FF061C44455 for ; Mon, 11 Jan 2010 20:45:41 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id dbnw2f29u56MkrTd for ; Mon, 11 Jan 2010 20:45:41 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11326443-1927428 for ; Tue, 12 Jan 2010 15:15:38 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUYdL-0004g4-Ky for xfs@oss.sgi.com; Tue, 12 Jan 2010 15:45:35 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUYZJ-0005zV-3t for xfs@oss.sgi.com; Tue, 12 Jan 2010 15:41:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/4] xfsqa: make some tests work again, add xfs_fsr test Subject: [PATCH 0/4] xfsqa: make some tests work again, add xfs_fsr test Date: Tue, 12 Jan 2010 15:41:05 +1100 Message-Id: <1263271269-18997-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263271542 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0084 1.0000 -1.9659 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.97 X-Barracuda-Spam-Status: No, SCORE=-1.97 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19573 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Enable the growfs test 104 and filter out the useless output, remove hacks from 073 to do with loop devices and filter the log size out in 206 to prevent failures with new mkfs binaries that allow large logs. Also, add a simple xfs_fsr test to improve coverage in the test suite. That's not hard given we have only one test (042) that defragments only one file. From SRS0+1hB4+41+fromorbit.com=dave@internode.on.net Mon Jan 11 22:44:55 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0C4itwX217514 for ; Mon, 11 Jan 2010 22:44:55 -0600 X-ASG-Debug-ID: 1263271548-3b6703e00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6E1DCEFE5BB for ; Mon, 11 Jan 2010 20:45:48 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id AeQ1ahyavgq2jByC for ; Mon, 11 Jan 2010 20:45:48 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11406828-1927428 for ; Tue, 12 Jan 2010 15:15:47 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUYdV-0004gA-Qa for xfs@oss.sgi.com; Tue, 12 Jan 2010 15:45:45 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUYZJ-0005zj-CD for xfs@oss.sgi.com; Tue, 12 Jan 2010 15:41:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/4] xfsqa: add simple xfs_fsr test Subject: [PATCH 4/4] xfsqa: add simple xfs_fsr test Date: Tue, 12 Jan 2010 15:41:09 +1100 Message-Id: <1263271269-18997-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263271269-18997-1-git-send-email-david@fromorbit.com> References: <1263271269-18997-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263271550 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19574 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We have very little fsr test coverage in the test suite right now. 042 is the only test that runs it, and it only defragments a single file. Improve the coverage by simply running xfs_fsr of the test filesystem. This gives xfs_fsr a wide variety of inodes to try to defragment. A simple test like this would have tripped over the attr2 fork offset problems in the swap extents ioctl long ago thanks to the varied nature of inodes the test suite leaves around in this filesystem. Signed-off-by: Dave Chinner --- 221 | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 221.out | 2 ++ group | 1 + 3 files changed, 60 insertions(+), 0 deletions(-) create mode 100644 221 create mode 100644 221.out diff --git a/221 b/221 new file mode 100644 index 0000000..5fe5583 --- /dev/null +++ b/221 @@ -0,0 +1,57 @@ +#! /bin/sh +# FS QA Test No. 221 +# +# xfs_fsr QA tests +# run xfs_fsr over the test filesystem to give it a wide and varied set of +# inodes to try to defragment. This is effectively a crash/assert failure +# test looking for corruption induced by xfs_fsr runs. +# +#----------------------------------------------------------------------- +# Copyright (c) 2010 Dave Chinner. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=david@fromorbit.com + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +[ "$XFS_FSR_PROG" = "" ] && _notrun "xfs_fsr not found" + +xfs_fsr $TEST_MNT > /dev/null 2>&1 + +echo "--- silence is golden ---" +status=0 ; exit diff --git a/221.out b/221.out new file mode 100644 index 0000000..34b5d1b --- /dev/null +++ b/221.out @@ -0,0 +1,2 @@ +QA output created by 221 +--- silence is golden --- diff --git a/group b/group index 2c2e293..528f5e9 100644 --- a/group +++ b/group @@ -330,3 +330,4 @@ prealloc 218 auto fsr quick 219 auto quota quick 220 auto quota quick +221 fsr ioctl auto quick -- 1.6.5 From SRS0+1hB4+41+fromorbit.com=dave@internode.on.net Mon Jan 11 22:44:55 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43,J_CHICKENPOX_65 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0C4it4T217513 for ; Mon, 11 Jan 2010 22:44:55 -0600 X-ASG-Debug-ID: 1263271548-3f66037d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8BAADEFE5C0 for ; Mon, 11 Jan 2010 20:45:49 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id 5RLL3I0svHRveite for ; Mon, 11 Jan 2010 20:45:49 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11406830-1927428 for ; Tue, 12 Jan 2010 15:15:48 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUYdV-0004g7-NS for xfs@oss.sgi.com; Tue, 12 Jan 2010 15:45:45 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUYZJ-0005zg-AT for xfs@oss.sgi.com; Tue, 12 Jan 2010 15:41:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/4] xfsqa: filter log size in 206 Subject: [PATCH 3/4] xfsqa: filter log size in 206 Date: Tue, 12 Jan 2010 15:41:08 +1100 Message-Id: <1263271269-18997-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263271269-18997-1-git-send-email-david@fromorbit.com> References: <1263271269-18997-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263271550 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19574 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean With the log size now going past 128MB, test 206 creates a filesystem with a much larger log than 128MB. The golden output expects at 128MB log size, so the test breaks. Filter the log size out of the mkfs output and golden output so that the test works on both older and newer mkfs binaries. Signed-off-by: Dave Chinner --- 206 | 9 ++++++--- 206.out | 6 +++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/206 b/206 index b1b2286..0935335 100755 --- a/206 +++ b/206 @@ -75,19 +75,22 @@ dd if=/dev/zero of=$tmpfile bs=1 seek=19998630180864 count=1 >/dev/null 2>&1 \ # mkfs slightly smaller than that echo "=== mkfs.xfs ===" mkfs.xfs -f -bsize=4096 -dagsize=76288719b,size=3905982455b -llazy-count=0 $tmpfile \ - | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" + | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" \ + -e "s/\(^log.*blocks=\)\([0-9]*,\)/\1XXXXX,/" mount -o loop $tmpfile $tmpdir || _fail "!!! failed to loopback mount" # see what happens when we growfs it echo "=== xfs_growfs ===" xfs_growfs $tmpdir \ - | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" + | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" \ + -e "s/\(^log.*blocks=\)\([0-9]*,\)/\1XXXXX,/" # and double-check the new geometry echo "=== xfs_info ===" xfs_info $tmpdir \ - | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" + | sed -e "s,^meta-data=.*isize,meta-data=FILE isize,g" \ + -e "s/\(^log.*blocks=\)\([0-9]*,\)/\1XXXXX,/" # _cleanup cleans up for us diff --git a/206.out b/206.out index 57d4f4e..da70d01 100644 --- a/206.out +++ b/206.out @@ -6,7 +6,7 @@ meta-data=FILE isize=256 agcount=52, agsize=76288719 blks data = bsize=4096 blocks=3905982455, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 -log =internal log bsize=4096 blocks=32768, version=2 +log =internal log bsize=4096 blocks=XXXXX, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 === xfs_growfs === @@ -15,7 +15,7 @@ meta-data=FILE isize=256 agcount=52, agsize=76288719 blks data = bsize=4096 blocks=3905982455, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 -log =internal bsize=4096 blocks=32768, version=2 +log =internal bsize=4096 blocks=XXXXX, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 3905982455 to 4882478016 @@ -25,6 +25,6 @@ meta-data=FILE isize=256 agcount=64, agsize=76288719 blks data = bsize=4096 blocks=4882478016, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 -log =internal bsize=4096 blocks=32768, version=2 +log =internal bsize=4096 blocks=XXXXX, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 -- 1.6.5 From SRS0+U274+41+fromorbit.com=dave@internode.on.net Mon Jan 11 23:05:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0C556Un219889 for ; Mon, 11 Jan 2010 23:05:06 -0600 X-ASG-Debug-ID: 1263272759-1bbc00190000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9955A15B849 for ; Mon, 11 Jan 2010 21:06:00 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id LZ5KQS4rJU6BTYaj for ; Mon, 11 Jan 2010 21:06:00 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11526388-1927428 for ; Tue, 12 Jan 2010 15:35:58 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUYx2-0004hf-Ui for xfs@oss.sgi.com; Tue, 12 Jan 2010 16:05:56 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUYt0-0003wK-DH for xfs@oss.sgi.com; Tue, 12 Jan 2010 16:01:46 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: xfs_swap_extents needs to handle dynamic fork offsets Subject: [PATCH] xfs: xfs_swap_extents needs to handle dynamic fork offsets Date: Tue, 12 Jan 2010 16:01:46 +1100 Message-Id: <1263272506-15085-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263272761 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19575 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When swapping extents, we can corrupt inodes by swapping data forks that are in incompatible formats. This is caused by the two indoes having different fork offsets due to the presence of an attribute fork on an attr2 filesystem. xfs_fsr tries to be smart about setting the fork offset, but the trick it plays only works on attr1 (old fixed format attribute fork) filesystems. Changing the way xfs_fsr sets up the attribute fork will prevent this situation from ever occurring, so in the kernel code we can get by with a preventative fix - check that the data fork in the defragmented inode is in a format valid for the inode it is being swapped into. This will lead to files that will silently and potentially repeatedly fail defragmentation, so issue a warning to the log when this particular failure occurs to let us know that xfs_fsr needs updating/fixing. To help identify how to improve xfs_fsr to avoid this issue, add trace points for the inodes being swapped so that we can determine why the swap was rejected and to confirm that the code is making the right decisions and modifications when swapping forks. A further complication is even when the swap is allowed to proceed when the fork offset is different between the two inodes then value for the maximum number of extents the data fork can hold can be wrong. Make sure these are also set correctly after the swap occurs. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_trace.h | 53 ++++++++++++++++ fs/xfs/xfs_dfrag.c | 140 +++++++++++++++++++++++++++++++++--------- 2 files changed, 163 insertions(+), 30 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h index 058fff1..d4145bf 100644 --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h @@ -1441,6 +1441,59 @@ TRACE_EVENT(xfs_dir2_leafn_moveents, __entry->count) ); +#define XFS_SWAPEXT_INODES \ + { 0, "target" }, \ + { 1, "temp" } + +#define XFS_INODE_FORMAT_STR \ + { 0, "invalid" }, \ + { 1, "local" }, \ + { 2, "extent" }, \ + { 3, "btree" } + +DECLARE_EVENT_CLASS(xfs_swap_extent_class, + TP_PROTO(struct xfs_inode *ip, int which), + TP_ARGS(ip, which), + TP_STRUCT__entry( + __field(dev_t, dev) + __field(int, which) + __field(xfs_ino_t, ino) + __field(int, format) + __field(int, nex) + __field(int, max_nex) + __field(int, broot_size) + __field(int, fork_off) + ), + TP_fast_assign( + __entry->dev = VFS_I(ip)->i_sb->s_dev; + __entry->which = which; + __entry->ino = ip->i_ino; + __entry->format = ip->i_d.di_format; + __entry->nex = ip->i_d.di_nextents; + __entry->max_nex = ip->i_df.if_ext_max; + __entry->broot_size = ip->i_df.if_broot_bytes; + __entry->fork_off = XFS_IFORK_BOFF(ip); + ), + TP_printk("dev %d:%d %s inode 0x%llx, %s format, num_extents %d, " + "Max in-fork extents %d, broot size %d, fork offset %d", + MAJOR(__entry->dev), MINOR(__entry->dev), + __print_symbolic(__entry->which, XFS_SWAPEXT_INODES), + __entry->ino, + __print_symbolic(__entry->format, XFS_INODE_FORMAT_STR), + __entry->nex, + __entry->max_nex, + __entry->broot_size, + __entry->fork_off) +) + +#define DEFINE_SWAPEXT_EVENT(name) \ +DEFINE_EVENT(xfs_swap_extent_class, name, \ + TP_PROTO(struct xfs_inode *ip, int which), \ + TP_ARGS(ip, which)) + +DEFINE_SWAPEXT_EVENT(xfs_swap_extent_before); +DEFINE_SWAPEXT_EVENT(xfs_swap_extent_after); + #endif /* _TRACE_XFS_H */ #undef TRACE_INCLUDE_PATH diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index d1483a4..f83d127 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c @@ -53,7 +53,7 @@ xfs_swapext( xfs_swapext_t *sxp) { xfs_inode_t *ip, *tip; - struct file *file, *target_file; + struct file *file, *tmp_file; int error = 0; /* Pull information for the target fd */ @@ -68,56 +68,128 @@ xfs_swapext( goto out_put_file; } - target_file = fget((int)sxp->sx_fdtmp); - if (!target_file) { + tmp_file = fget((int)sxp->sx_fdtmp); + if (!tmp_file) { error = XFS_ERROR(EINVAL); goto out_put_file; } - if (!(target_file->f_mode & FMODE_WRITE) || - (target_file->f_flags & O_APPEND)) { + if (!(tmp_file->f_mode & FMODE_WRITE) || + (tmp_file->f_flags & O_APPEND)) { error = XFS_ERROR(EBADF); - goto out_put_target_file; + goto out_put_tmp_file; } if (IS_SWAPFILE(file->f_path.dentry->d_inode) || - IS_SWAPFILE(target_file->f_path.dentry->d_inode)) { + IS_SWAPFILE(tmp_file->f_path.dentry->d_inode)) { error = XFS_ERROR(EINVAL); - goto out_put_target_file; + goto out_put_tmp_file; } ip = XFS_I(file->f_path.dentry->d_inode); - tip = XFS_I(target_file->f_path.dentry->d_inode); + tip = XFS_I(tmp_file->f_path.dentry->d_inode); if (ip->i_mount != tip->i_mount) { error = XFS_ERROR(EINVAL); - goto out_put_target_file; + goto out_put_tmp_file; } if (ip->i_ino == tip->i_ino) { error = XFS_ERROR(EINVAL); - goto out_put_target_file; + goto out_put_tmp_file; } if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { error = XFS_ERROR(EIO); - goto out_put_target_file; + goto out_put_tmp_file; } error = xfs_swap_extents(ip, tip, sxp); - out_put_target_file: - fput(target_file); + out_put_tmp_file: + fput(tmp_file); out_put_file: fput(file); out: return error; } +/* + * We need to check that the format of the data fork in the temporary inode is + * valid for the target inode before doing the swap. This is not a problem with + * attr1 because of the fixed fok offset, but attr2 has a dynamically sized + * data fork depending on the space the attribute fork is taking so we can get + * invalid formats on the target inode. + * + * e.g. target has space for 7 extents in extent format, temp inode only has + * space for 6. If we defragment down to 7 extents, then the tmp format is a + * btree, but when swapped it needs to be in extent format. Hence we can't just + * blindly swap data forks on attr2 filesystems. + * + * Note that we check the swap in both directions so that we don't end up with + * a corrupt temporary inode, either. + * + * Note that fixing the way xfs_fsr sets up the attribute fork in the source + * inode will prevent this situation from occurring, so all we do here is + * reject and log the attempt. basically we are putting the responsibility on + * userspace to get this right. + */ +static int +xfs_swap_extents_check_format( + xfs_inode_t *ip, /* target inode */ + xfs_inode_t *tip) /* tmp inode */ +{ + + /* Should never get a local format */ + if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL || + tip->i_d.di_format == XFS_DINODE_FMT_LOCAL) + return EINVAL; + + /* + * if the target inode has less extents that then temporary inode then + * why did userspace call us? + */ + if (ip->i_d.di_nextents < tip->i_d.di_nextents) + return EINVAL; + + /* + * if the target inode is in extent form and the temp inode is in btree + * form then we will end up with the target inode in the wrong format + * as we already know there are less extents in the temp inode. + */ + if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && + tip->i_d.di_format == XFS_DINODE_FMT_BTREE) + return EINVAL; + + /* Check temp in extent form to max in target */ + if (tip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && + XFS_IFORK_NEXTENTS(tip, XFS_DATA_FORK) > ip->i_df.if_ext_max) + return EINVAL; + + /* Check target in extent form to max in temp */ + if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && + XFS_IFORK_NEXTENTS(ip, XFS_DATA_FORK) > tip->i_df.if_ext_max) + return EINVAL; + + /* Check root block of temp in btree form to max in target */ + if (tip->i_d.di_format == XFS_DINODE_FMT_BTREE && + XFS_IFORK_BOFF(ip) && + tip->i_df.if_broot_bytes > XFS_IFORK_BOFF(ip)) + return EINVAL; + + /* Check root block of target in btree form to max in temp */ + if (ip->i_d.di_format == XFS_DINODE_FMT_BTREE && + XFS_IFORK_BOFF(tip) && + ip->i_df.if_broot_bytes > XFS_IFORK_BOFF(tip)) + return EINVAL; + + return 0; +} + int xfs_swap_extents( - xfs_inode_t *ip, - xfs_inode_t *tip, + xfs_inode_t *ip, /* target inode */ + xfs_inode_t *tip, /* tmp inode */ xfs_swapext_t *sxp) { xfs_mount_t *mp; @@ -161,13 +233,6 @@ xfs_swap_extents( goto out_unlock; } - /* Should never get a local format */ - if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL || - tip->i_d.di_format == XFS_DINODE_FMT_LOCAL) { - error = XFS_ERROR(EINVAL); - goto out_unlock; - } - if (VN_CACHED(VFS_I(tip)) != 0) { error = xfs_flushinval_pages(tip, 0, -1, FI_REMAPF_LOCKED); @@ -189,13 +254,15 @@ xfs_swap_extents( goto out_unlock; } - /* - * If the target has extended attributes, the tmp file - * must also in order to ensure the correct data fork - * format. - */ - if ( XFS_IFORK_Q(ip) != XFS_IFORK_Q(tip) ) { - error = XFS_ERROR(EINVAL); + trace_xfs_swap_extent_before(ip, 0); + trace_xfs_swap_extent_before(tip, 1); + + /* check inode formats now that data is flushed */ + error = xfs_swap_extents_check_format(ip, tip); + if (error) { + xfs_fs_cmn_err(CE_NOTE, mp, + "%s: inode 0x%llx format is incompatible for exchanging.", + __FILE__, ip->i_ino); goto out_unlock; } @@ -276,6 +343,16 @@ xfs_swap_extents( *tifp = *tempifp; /* struct copy */ /* + * Fix the in-memory data fork values that are dependent on the fork + * offset in the inode. We can't assume they remain the same as attr2 + * has dynamic fork offsets. + */ + ifp->if_ext_max = XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / + (uint)sizeof(xfs_bmbt_rec_t); + tifp->if_ext_max = XFS_IFORK_SIZE(tip, XFS_DATA_FORK) / + (uint)sizeof(xfs_bmbt_rec_t); + + /* * Fix the on-disk inode values */ tmp = (__uint64_t)ip->i_d.di_nblocks; @@ -347,6 +424,9 @@ xfs_swap_extents( error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); + trace_xfs_swap_extent_after(ip, 0); + trace_xfs_swap_extent_after(tip, 1); + out: kmem_free(tempifp); return error; -- 1.6.5 From BATV+e1c7883d0f96dc795381+2333+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 12 03:30:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0C9UeUF252220 for ; Tue, 12 Jan 2010 03:30:42 -0600 X-ASG-Debug-ID: 1263288695-517d004d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 46C8915AB0B for ; Tue, 12 Jan 2010 01:31:35 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id DD1qDGlOtMaxJ1EF for ; Tue, 12 Jan 2010 01:31:35 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUd65-0005Ji-Sk; Tue, 12 Jan 2010 09:31:33 +0000 Date: Tue, 12 Jan 2010 04:31:33 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/4] xfsqa: filter the fsstress seed output in 104 Subject: Re: [PATCH 1/4] xfsqa: filter the fsstress seed output in 104 Message-ID: <20100112093133.GA20017@infradead.org> References: <1263271269-18997-1-git-send-email-david@fromorbit.com> <1263271269-18997-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263271269-18997-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263288696 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 12, 2010 at 03:41:06PM +1100, Dave Chinner wrote: > Otherwise it fails to match the golden output. Also add > the test to the auto group so that it is run regularly now > that the growfs problems are fixed. Well, they're not actually fixed yet, Alex still needs to push out your patches to the xfs tree :) anyway, patch looks good, Reviewed-by: Christoph Hellwig From BATV+e1c7883d0f96dc795381+2333+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 12 03:46:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0C9kol2253805 for ; Tue, 12 Jan 2010 03:46:50 -0600 X-ASG-Debug-ID: 1263289666-36da02960000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 54F9B15C3DC for ; Tue, 12 Jan 2010 01:47:46 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 5GDBWriR3aTpgNzE for ; Tue, 12 Jan 2010 01:47:46 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUdLm-0001HY-0O; Tue, 12 Jan 2010 09:47:46 +0000 Date: Tue, 12 Jan 2010 04:47:45 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/4] xfsqa: filter log size in 206 Subject: Re: [PATCH 3/4] xfsqa: filter log size in 206 Message-ID: <20100112094745.GB20017@infradead.org> References: <1263271269-18997-1-git-send-email-david@fromorbit.com> <1263271269-18997-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263271269-18997-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263289666 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 12, 2010 at 03:41:08PM +1100, Dave Chinner wrote: > With the log size now going past 128MB, test 206 creates a filesystem > with a much larger log than 128MB. The golden output expects at > 128MB log size, so the test breaks. Filter the log size out of the > mkfs output and golden output so that the test works on both older and > newer mkfs binaries. I guess you'll need a large enough test filesystem to hit this so I don't see it, but it looks good, Reviewed-by: Christoph Hellwig From BATV+e1c7883d0f96dc795381+2333+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 12 03:49:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0C9nNdk254121 for ; Tue, 12 Jan 2010 03:49:23 -0600 X-ASG-Debug-ID: 1263289818-124f03b90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 29B5C12F1E46 for ; Tue, 12 Jan 2010 01:50:18 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id M0CYtxB2u4hLeGur for ; Tue, 12 Jan 2010 01:50:18 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUdOD-00025l-Cm; Tue, 12 Jan 2010 09:50:17 +0000 Date: Tue, 12 Jan 2010 04:50:17 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/4] xfsqa: add simple xfs_fsr test Subject: Re: [PATCH 4/4] xfsqa: add simple xfs_fsr test Message-ID: <20100112095017.GC20017@infradead.org> References: <1263271269-18997-1-git-send-email-david@fromorbit.com> <1263271269-18997-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263271269-18997-5-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263289819 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 12, 2010 at 03:41:09PM +1100, Dave Chinner wrote: > We have very little fsr test coverage in the test suite right now. > 042 is the only test that runs it, and it only defragments a single > file. > > Improve the coverage by simply running xfs_fsr of the test > filesystem. This gives xfs_fsr a wide variety of inodes to try to > defragment. A simple test like this would have tripped over the > attr2 fork offset problems in the swap extents ioctl long ago > thanks to the varied nature of inodes the test suite leaves around > in this filesystem. Looks good, and having it after 200+ testcases also means it should have at least a bit of work to do. Reviewed-by: Christoph Hellwig From BATV+e1c7883d0f96dc795381+2333+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 12 03:59:36 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0C9xadd255419 for ; Tue, 12 Jan 2010 03:59:36 -0600 X-ASG-Debug-ID: 1263290431-516d00fa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EEC1215C2FD for ; Tue, 12 Jan 2010 02:00:31 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id hyUnGFsiFiePbC3U for ; Tue, 12 Jan 2010 02:00:31 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUdY7-0003zx-Kt; Tue, 12 Jan 2010 10:00:31 +0000 Date: Tue, 12 Jan 2010 05:00:31 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/4] xfsqa: make unmounting loop devices in 073 work again Subject: Re: [PATCH 2/4] xfsqa: make unmounting loop devices in 073 work again Message-ID: <20100112100031.GA8749@infradead.org> References: <1263271269-18997-1-git-send-email-david@fromorbit.com> <1263271269-18997-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263271269-18997-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263290431 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 12, 2010 at 03:41:07PM +1100, Dave Chinner wrote: > Loop devices are now created and destroyed on demand, and > the existing hacks to do this no longer work. Remove them. Just noticed that I had not been running this test at all for a long time as it doesn't work with external logs. Seems like the current code indeed fails reliably for me and this patch fixes it. The only problem is that the loop device autodestruct features is only available since Linux 2.6.25 and also needs a recent util-linux. Is this old enough to simply go with the auto destruct version, or do we need to support either one? What about the patch below? This adds the -d argument to the umount calls for the loop images, which destroys the loop images in older kernels and is a no-op for modern kernels that have the loop auto-destruct feature: Loop devices are now created and destroyed on demand, and the existing hacks to do this no longer work. Remove them. Signed-off-by: Dave Chinner --- 073 | 13 +------------ 1 files changed, 1 insertions(+), 12 deletions(-) Index: xfstests-dev/073 =================================================================== --- xfstests-dev.orig/073 2009-05-28 18:29:58.000000000 +0000 +++ xfstests-dev/073 2010-01-12 09:53:37.000000000 +0000 @@ -3,15 +3,6 @@ # # Test xfs_copy # -# HACK WARNING: -# -# Due to the severe brokenness of mount's handling of loopback devices, we -# hardcode the loop devices we use for this test. This enables us to clean up -# the pieces when we remount the loop device because mount loses all trace of -# the fact this is a loop device. Hence to enable us to unmount the hosting -# filesystem, we need to manually tear down the relevant loop device. If -# mount ever gets fixed then this hack can be removed. -# #----------------------------------------------------------------------- # Copyright (c) 2000-2003,2008 Silicon Graphics, Inc. All Rights Reserved. # @@ -51,7 +42,7 @@ _cleanup() { cd / umount $SCRATCH_MNT 2>/dev/null - umount $imgs.loop 2>/dev/null + umount -d $imgs.loop 2>/dev/null [ -d $imgs.loop ] && rmdir $imgs.loop [ -d $imgs.source_dir ] && rm -rf $imgs.source_dir rm -f $imgs.* $tmp.* /var/tmp/xfs_copy.log.* @@ -127,9 +118,7 @@ _verify_copy() diff -u $tmp.geometry1 $tmp.geometry2 echo unmounting and removing new image - loop=`mount | grep $target | grep -o -e 'loop=.*[^),]' | grep -o -e '/.*$'` - umount $source $target - losetup -d $loop > /dev/null 2>&1 + umount -d $source_dir $target_dir rm -f $target } From SRS0+h+ws+41+fromorbit.com=david@internode.on.net Tue Jan 12 05:50:28 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CBoRIu007295 for ; Tue, 12 Jan 2010 05:50:28 -0600 X-ASG-Debug-ID: 1263297080-602200a10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C2FAD1512E38 for ; Tue, 12 Jan 2010 03:51:21 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id R6JXQqvuzWFHweDv for ; Tue, 12 Jan 2010 03:51:21 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11601632-1927428 for multiple; Tue, 12 Jan 2010 22:21:19 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NUfHJ-00052j-Vo; Tue, 12 Jan 2010 22:51:18 +1100 Date: Tue, 12 Jan 2010 22:51:17 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/4] xfsqa: make unmounting loop devices in 073 work again Subject: Re: [PATCH 2/4] xfsqa: make unmounting loop devices in 073 work again Message-ID: <20100112115117.GC17483@discord.disaster> References: <1263271269-18997-1-git-send-email-david@fromorbit.com> <1263271269-18997-3-git-send-email-david@fromorbit.com> <20100112100031.GA8749@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100112100031.GA8749@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263297082 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19597 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 12, 2010 at 05:00:31AM -0500, Christoph Hellwig wrote: > On Tue, Jan 12, 2010 at 03:41:07PM +1100, Dave Chinner wrote: > > Loop devices are now created and destroyed on demand, and > > the existing hacks to do this no longer work. Remove them. > > Just noticed that I had not been running this test at all for a long > time as it doesn't work with external logs. > > Seems like the current code indeed fails reliably for me and this > patch fixes it. > > The only problem is that the loop device autodestruct features is only > available since Linux 2.6.25 and also needs a recent util-linux. Is > this old enough to simply go with the auto destruct version, or do > we need to support either one? > > What about the patch below? This adds the -d argument to the umount > calls for the loop images, which destroys the loop images in older > kernels and is a no-op for modern kernels that have the loop > auto-destruct feature: Yes, that looks like a better way to solve the problem. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+BSmU+41+fromorbit.com=david@internode.on.net Tue Jan 12 06:02:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CC2581008811 for ; Tue, 12 Jan 2010 06:02:06 -0600 X-ASG-Debug-ID: 1263297779-062200140000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9279914480C for ; Tue, 12 Jan 2010 04:03:00 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id 0lOBFxibVrBEz8vY for ; Tue, 12 Jan 2010 04:03:00 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11544011-1927428 for multiple; Tue, 12 Jan 2010 22:32:58 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NUfSa-00053g-UW; Tue, 12 Jan 2010 23:02:56 +1100 Date: Tue, 12 Jan 2010 23:02:56 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH, RFC] xfstests: test quota log replay in 087 Subject: Re: [PATCH, RFC] xfstests: test quota log replay in 087 Message-ID: <20100112120256.GD17483@discord.disaster> References: <20100110212619.GA30907@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100110212619.GA30907@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263297781 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19598 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Jan 10, 2010 at 04:26:19PM -0500, Christoph Hellwig wrote: > By mounting the filesystem with quotas enabled in 087 we exercise the > replay of the quota log items in this tests, which we otherwise don't > test in xfstests. OSS bugzilla #855 is an example of something caught > by this. > > Does this look okay, or should I add a duplicate of > 087 with quotas enabled instead? I think having 087 cover quotas as well is fine. Adding a separate test just for quotas doesn't provide any extra coverage compared to this patch. > @@ -98,7 +100,7 @@ do > > # mount the FS > _echofull "mount" > - if ! _scratch_mount >>$seq.full 2>&1; then > + if ! _scratch_mount -o uquota >>$seq.full 2>&1; then My only question is whether this will work if uquota is set up as a global option. I haven't looked into it yet, but there appears to be several different ways that uquota is specified in other tests: 052:_qmount_option uquota 108:export MOUNT_OPTIONS="-ouquota" 116:mount -o uquota $SCRATCH_DEV $SCRATCH_MNT 220:_scratch_mount -o uquota Some consistency would be nice, but I don't think it's a problem for this patch right now. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From SRS0+h+ws+41+fromorbit.com=david@internode.on.net Tue Jan 12 06:06:54 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CC6sTx009455 for ; Tue, 12 Jan 2010 06:06:54 -0600 X-ASG-Debug-ID: 1263298068-602201810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0009012F2426 for ; Tue, 12 Jan 2010 04:07:48 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id LljBfkW2B5JlyHgI for ; Tue, 12 Jan 2010 04:07:48 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11425348-1927428 for multiple; Tue, 12 Jan 2010 22:37:37 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NUfX6-000540-4E; Tue, 12 Jan 2010 23:07:36 +1100 Date: Tue, 12 Jan 2010 23:07:36 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com, Eric Blake X-ASG-Orig-Subj: Re: [PATCH] xfstests: add test for ctimes updates in futimens Subject: Re: [PATCH] xfstests: add test for ctimes updates in futimens Message-ID: <20100112120736.GE17483@discord.disaster> References: <20100110215227.GA15354@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100110215227.GA15354@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263298070 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19598 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Jan 10, 2010 at 04:52:27PM -0500, Christoph Hellwig wrote: > This adds Erik's testcase for the ctime update in futimes that I fixed > a while ago. > > Erik, can you double check the attribution and licensing for your > testcase? Looks good. We've both got test "221" patches outstanding now, so one othem them will have to change number ;) > +# real QA test starts here > +_supported_fs xfs > +_supported_os Linux FWIW, I'd consider this a generic test - it should work correctly on NFS, ext3/4, etc... Reviewed-by: Dave Chinner Cheers, Dave. -- Dave Chinner david@fromorbit.com From Martin@lichtvoll.de Tue Jan 12 06:51:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,SUBJ_FORWARDED autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CCpHpF014094 for ; Tue, 12 Jan 2010 06:51:18 -0600 X-ASG-Debug-ID: 1263300731-7d4700a10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 528F61C4677B for ; Tue, 12 Jan 2010 04:52:11 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id OHPf6kavlpCGCLYK for ; Tue, 12 Jan 2010 04:52:11 -0800 (PST) Received: from shambhala.localnet (ppp-88-217-96-205.dynamic.mnet-online.de [88.217.96.205]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 7032D5AE9C; Tue, 12 Jan 2010 13:52:10 +0100 (CET) From: Martin Steigerwald To: xfs@oss.sgi.com X-ASG-Orig-Subj: Fwd: [TuxOnIce-devel] Latest updates. Subject: Fwd: [TuxOnIce-devel] Latest updates. Date: Tue, 12 Jan 2010 13:51:58 +0100 User-Agent: KMail/1.12.4 (Linux/2.6.32.3-tp42-toi-3.0.99.45; KDE/4.3.4; i686; ; ) Cc: TuxOnIce Devel List MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart9729447.EbZOFvyFvj"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <201001121352.06224.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1263300732 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19600 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --nextPart9729447.EbZOFvyFvj Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Please keep CC to TuxOnIce devel list. Hi! Nigel, who develops the alternative TuxOnIce hibernation / snapshot=20 infrastructure, implemented checking last mount time of filesystem as a=20 safety feature for Ext 2, 3 and 4. He would like this also for XFS. Does XFS record the last mount time=20 somewhere? If not, could this be added? Ciao, Martin =2D--------- Weitergeleitete Nachricht ---------- Subject: [TuxOnIce-devel] Latest updates. Date: Montag 11 Januar 2010 =46rom: Nigel Cunningham To: TuxOnIce Devel List Hi everyone. I'm pushing some updates to the git trees at the moment. These add support for storing the last mount time of filesystems in the image header. At resume time, we can then check that the value is the same, and refuse to resume if the filesystem has been mounted again in the meantime. At the moment, I've only implemented this for ext filesystems. I've looked for a last mount time in the xfs superblock structure, but can't find one. Can anyone help there? Nigel _______________________________________________ TuxOnIce-devel mailing list TuxOnIce-devel@lists.tuxonice.net http://lists.tuxonice.net/listinfo/tuxonice-devel =2D------------------------------------------------------ =2D-=20 Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 --nextPart9729447.EbZOFvyFvj Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEABECAAYFAktMcG8ACgkQmRvqrKWZhMf1TQCgqKZzH+3Is/eUnhFLV9IKT8HO bKoAnRWNNgkBRjW9FPlveYrpY+CuP+pr =LYtl -----END PGP SIGNATURE----- --nextPart9729447.EbZOFvyFvj-- From BATV+e1c7883d0f96dc795381+2333+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 12 07:08:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CD8SEH015782 for ; Tue, 12 Jan 2010 07:08:29 -0600 X-ASG-Debug-ID: 1263301764-77f302c70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 52B0415D763 for ; Tue, 12 Jan 2010 05:09:24 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 9nsaVG3pYYuUVtLj for ; Tue, 12 Jan 2010 05:09:24 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUgUs-0008I7-O7; Tue, 12 Jan 2010 13:09:22 +0000 Date: Tue, 12 Jan 2010 08:09:22 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: xfs_swap_extents needs to handle dynamic fork offsets Subject: Re: [PATCH] xfs: xfs_swap_extents needs to handle dynamic fork offsets Message-ID: <20100112130922.GA30985@infradead.org> References: <1263272506-15085-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263272506-15085-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263301764 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > + TP_printk("dev %d:%d %s inode 0x%llx, %s format, num_extents %d, " > + "Max in-fork extents %d, broot size %d, fork offset %d", It would be nice to keep the "dev %d:%d ino 0x%llx" prefix as a convention so that all trace records are similar at their beginning. > #undef TRACE_INCLUDE_PATH > diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c > @@ -53,7 +53,7 @@ xfs_swapext( > xfs_swapext_t *sxp) > { > xfs_inode_t *ip, *tip; > - struct file *file, *target_file; > + struct file *file, *tmp_file; I think these xfs_swapext belong into a separate patch. While they make the code quite a bit more redable they're purely cleanups and can wait for 2.6.34. And while you're at it you might also want to merge xfs_swap_extents into xfs_swapext - there's no need for that split at all. > +static int > +xfs_swap_extents_check_format( > + xfs_inode_t *ip, /* target inode */ > + xfs_inode_t *tip) /* tmp inode */ What about just using struct xfs_inode * for new code? > + /* Should never get a local format */ > + if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL || > + tip->i_d.di_format == XFS_DINODE_FMT_LOCAL) > + return EINVAL; Ok, same check as in the old code. Any reason we drop the XFS_ERROR here? > + /* > + * if the target inode has less extents that then temporary inode then > + * why did userspace call us? > + */ > + if (ip->i_d.di_nextents < tip->i_d.di_nextents) > + return EINVAL; Ok. > + /* > + * if the target inode is in extent form and the temp inode is in btree > + * form then we will end up with the target inode in the wrong format > + * as we already know there are less extents in the temp inode. > + */ > + if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && > + tip->i_d.di_format == XFS_DINODE_FMT_BTREE) > + return EINVAL; Ok. > + /* Check temp in extent form to max in target */ > + if (tip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && > + XFS_IFORK_NEXTENTS(tip, XFS_DATA_FORK) > ip->i_df.if_ext_max) > + return EINVAL; > + > + /* Check target in extent form to max in temp */ > + if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && > + XFS_IFORK_NEXTENTS(ip, XFS_DATA_FORK) > tip->i_df.if_ext_max) > + return EINVAL; So we check this either way just to be sure, ok. > + /* Check root block of temp in btree form to max in target */ > + if (tip->i_d.di_format == XFS_DINODE_FMT_BTREE && > + XFS_IFORK_BOFF(ip) && > + tip->i_df.if_broot_bytes > XFS_IFORK_BOFF(ip)) > + return EINVAL; > + > + /* Check root block of target in btree form to max in temp */ > + if (ip->i_d.di_format == XFS_DINODE_FMT_BTREE && > + XFS_IFORK_BOFF(tip) && > + ip->i_df.if_broot_bytes > XFS_IFORK_BOFF(tip)) > + return EINVAL; Same here. Patch looks good, Reviewed-by: Christoph Hellwig From ghost_3k@gmx.net Tue Jan 12 09:31:11 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CFVBh7031939 for ; Tue, 12 Jan 2010 09:31:11 -0600 X-ASG-Debug-ID: 1263310324-62f503d40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.gmx.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 42DE81C470E4 for ; Tue, 12 Jan 2010 07:32:05 -0800 (PST) Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by cuda.sgi.com with SMTP id HByJrUwUsA4pGD3V for ; Tue, 12 Jan 2010 07:32:05 -0800 (PST) Received: (qmail invoked by alias); 12 Jan 2010 15:32:04 -0000 Received: from unknown (EHLO [192.168.10.69]) [188.24.32.62] by mail.gmx.net (mp016) with SMTP; 12 Jan 2010 16:32:04 +0100 X-Authenticated: #4498566 X-Provags-ID: V01U2FsdGVkX19tikNAY11tWoN6ngqciQ2U892YMcZb9Qzd7Rr9yz UT8qDFTFL1LPlA Message-ID: <4B4C95F1.20106@gmx.net> Date: Tue, 12 Jan 2010 17:32:01 +0200 From: Alexandru Coman User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20100104 SeaMonkey/2.0.2 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: help investigating some xfs errors Subject: help investigating some xfs errors Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-FuHaFi: 0.51 X-Barracuda-Connect: mail.gmx.net[213.165.64.20] X-Barracuda-Start-Time: 1263310326 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19609 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, I'm having some problems with an XFS filesystem, and I'm wondering if anyone can point me in the right direction, it would be greatly appreciated. I have several XFS filesystems on top of LVM in a RAID-1 (mdadm) created on a pair of 1TB SATA drives. Running on Linux (Debian, amd64). One of the XFS filesystems is 600GB in size (65% used), storing ~19 mil files under 100KB (jpeg), usually under high load (read+write). There are also a few other smaller XFS partitions on the same drives. It has been running like this for 11 months, until a few days ago when I started to get a lot of errors. On Jan 10, I got a few lines with "ata3: hard resetting link", after which the partition could not be accessed, I couldn't umount/mount it. All other partitions were fine. I rebooted the server, but that filesystem still wouldn't mount (it said "Structure needs cleaning"), I then ran xfs_repair on it, which reported that I needed to use the "-L" option to destroy the log. I then ran "xfs_repair -L" which appeared to fix a lot of errors, and then I was able to mount the filesystem again. Everything appeared to be ok at that point. Jan 10 night: a lot of xfs call traces start to appear in the log Jan 11: xfs call traces along with - xfs_force_shutdown(dm-4,0x8) called from line 1164 of file fs/xfs/xfs_trans.c. Return address = 0xffffffffa01999ff - xfs_imap_to_bp: xfs_trans_read_buf()returned an error 5 on dm-4. Returning error. - lots of "Filesystem "dm-4": xfs_log_force: error 5 returned." The filesystem disappeared, but I could unmount and mount it again with no errors. At this point I've also decided to update the kernel, and switched from 2.6.26 to 2.6.30 Then ran xfs_repair which again found a few errors. Jan 12: xfs call traces along with: - Filesystem "dm-4": corrupt dinode 1293803384, extent total = 1, nblocks = 0. Unmount and run xfs_repair. - Filesystem "dm-4": corrupt dinode 665458404, extent total = 1, nblocks = 0. Unmount and run xfs_repair. - Filesystem "dm-4": corrupt dinode 225720890, extent total = 1, nblocks = 0. Unmount and run xfs_repair. I then unmounted the fs and ran xfs_repair again. This time the output was massive compared to the previous runs, and it put around ~ 100.000 files in lost+found. Beside 3 lines on Jan 10 with "ata3: hard resetting link", there have been no sign of possible hardware problems. The raid and the hdd's appear to be fine, no errors. What's curious is that I'm experiencing problems only with the large XFS filesystem, and there hasn't been not even a single error in the logs about the other xfs partitions. So, if anyone has any ideea what I can research next, to help me find out more information about what's happening here... I've uploaded some detailed logs at http://ghost3k.net/xfs1/ Thanks, Alexandru Coman From BATV+e1c7883d0f96dc795381+2333+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 12 10:42:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43,J_CHICKENPOX_73 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CGgbBD040347 for ; Tue, 12 Jan 2010 10:42:37 -0600 X-ASG-Debug-ID: 1263314613-22a103400000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 890E51C478A7 for ; Tue, 12 Jan 2010 08:43:33 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id BiESJAMHqOGJb91y for ; Tue, 12 Jan 2010 08:43:33 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUjq8-00062b-RX for xfs@oss.sgi.com; Tue, 12 Jan 2010 16:43:32 +0000 Date: Tue, 12 Jan 2010 11:43:32 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH v3] xfsprogs: bump version and update changelog Subject: [PATCH v3] xfsprogs: bump version and update changelog Message-ID: <20100112164332.GA22988@infradead.org> References: <20091223135718.GA29975@infradead.org> <20100108122639.GA17229@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100108122639.GA17229@infradead.org> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263314613 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/VERSION =================================================================== --- xfsprogs-dev.orig/VERSION 2010-01-02 12:11:42.871003354 +0100 +++ xfsprogs-dev/VERSION 2010-01-06 18:49:38.221274008 +0100 @@ -2,6 +2,6 @@ # This file is used by configure to get version information # PKG_MAJOR=3 -PKG_MINOR=0 -PKG_REVISION=4 +PKG_MINOR=1 +PKG_REVISION=0 PKG_BUILD=1 Index: xfsprogs-dev/doc/CHANGES =================================================================== --- xfsprogs-dev.orig/doc/CHANGES 2010-01-02 12:11:42.873010034 +0100 +++ xfsprogs-dev/doc/CHANGES 2010-01-08 13:24:09.150268999 +0100 @@ -1,3 +1,23 @@ +xfsprogs-3.1.0 + - Reduce memory usage in xfs_repair by using better data structures. + - Add additional checks in xfs_repair to detect freespace btree + corruption instead of only rebuilding the btrees. Useful for the + no-modify mode. + - Fix libhandle to use the right path to issue by-handle ioctls for + symbolic links and special files. + - Use lazy superblock counters by default. At least kernel 2.6.22 is + needed for this feature. + - Add a German translation, thanks to Chris Leick. + - Enable the madvise and mincor commands in xfs_io. + - Fix unsafe temporary file creation in xfs_fsr. + - Add support for discarding unused space on SSDs or thing provionen + arrays in mkfs.xfs. + - Allow linking against libblkid for topology information. + - Add symbol versioning for libhandle. + - Remove the included RPM and binary tarball built infrastructure. + - Various build system improvements. + - Small fixes to xfs_db and xfs_io. + xfsprogs-3.0.4 (17 September 2009) - Fix a memory leak in xfsprogs. - Increase hash chain length in xfsprogs when running out of memory. Index: xfsprogs-dev/debian/changelog =================================================================== --- xfsprogs-dev.orig/debian/changelog 2010-01-02 12:11:42.872012141 +0100 +++ xfsprogs-dev/debian/changelog 2010-01-06 18:49:38.224273412 +0100 @@ -1,6 +1,6 @@ xfsprogs (3.1.0) unstable; urgency=low - * New bugfix release + * New upstream release * Merged German translation (closes: #521389) * Merged German translation update (closes: #557100) * Uptodate po file is provided now (closes: #538962) From BATV+e1c7883d0f96dc795381+2333+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 12 10:58:43 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_73 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CGwf5w042325 for ; Tue, 12 Jan 2010 10:58:43 -0600 X-ASG-Debug-ID: 1263315577-4269036b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D2798F00D2A for ; Tue, 12 Jan 2010 08:59:37 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id BdhouwpjVRE4UR2U for ; Tue, 12 Jan 2010 08:59:37 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUk5g-0001VP-Vp; Tue, 12 Jan 2010 16:59:36 +0000 Date: Tue, 12 Jan 2010 11:59:36 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: nathans@debian.org X-ASG-Orig-Subj: [PATCH] xfsdump: bump version and update changelog Subject: [PATCH] xfsdump: bump version and update changelog Message-ID: <20100112165936.GA5085@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263315577 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Including a debian changelog update Nathan sent me earlier. Signed-off-by: Christoph Hellwig Index: xfsdump-dev/debian/changelog =================================================================== --- xfsdump-dev.orig/debian/changelog 2010-01-06 18:42:23.013011836 +0100 +++ xfsdump-dev/debian/changelog 2010-01-12 17:55:30.278005578 +0100 @@ -1,3 +1,9 @@ +xfsdump (3.0.4) unstable; urgency=low + + * New bugfix release + + -- Nathan Scott Tue, 12 Jan 2009 17:46:03 +1100 + xfsdump (3.0.2) unstable; urgency=low * New bugfix release Index: xfsdump-dev/VERSION =================================================================== --- xfsdump-dev.orig/VERSION 2010-01-12 17:50:51.818254512 +0100 +++ xfsdump-dev/VERSION 2010-01-12 17:51:01.847006343 +0100 @@ -3,5 +3,5 @@ # PKG_MAJOR=3 PKG_MINOR=0 -PKG_REVISION=2 +PKG_REVISION=4 PKG_BUILD=1 Index: xfsdump-dev/doc/CHANGES =================================================================== --- xfsdump-dev.orig/doc/CHANGES 2010-01-12 17:51:04.440274239 +0100 +++ xfsdump-dev/doc/CHANGES 2010-01-12 17:54:59.819255971 +0100 @@ -1,3 +1,8 @@ +xfsdump-3.0.4 + - Improve xfsinvutil man page and argument processing. + - Fix timestamp handling on 64-bit architectures in xfsinvutil. + - Various build system improvements. + xfsdump-3.0.2 (9 May 2009) - Update the Debian packaging and resolve xfsprogs dependencies. From aelder@sgi.com Tue Jan 12 13:00:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43,J_CHICKENPOX_73 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CJ0Xsu056749 for ; Tue, 12 Jan 2010 13:00:33 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 61EAAAC00C; Tue, 12 Jan 2010 11:01:29 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH v3] xfsprogs: bump version and update changelog Date: Tue, 12 Jan 2010 13:01:02 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6954@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100112164332.GA22988@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v3] xfsprogs: bump version and update changelog Thread-Index: AcqTqNcpt5E+tt93QfyJ1qfp1vNW+gAELL4g From: "Alex Elder" To: "Christoph Hellwig" , X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Alex Elder > Index: xfsprogs-dev/VERSION > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs-dev.orig/VERSION 2010-01-02 12:11:42.871003354 +0100 > +++ xfsprogs-dev/VERSION 2010-01-06 18:49:38.221274008 +0100 > @@ -2,6 +2,6 @@ > # This file is used by configure to get version information > # > PKG_MAJOR=3D3 > -PKG_MINOR=3D0 > -PKG_REVISION=3D4 > +PKG_MINOR=3D1 > +PKG_REVISION=3D0 > PKG_BUILD=3D1 > Index: xfsprogs-dev/doc/CHANGES > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs-dev.orig/doc/CHANGES 2010-01-02 12:11:42.873010034 +0100 > +++ xfsprogs-dev/doc/CHANGES 2010-01-08 13:24:09.150268999 +0100 > @@ -1,3 +1,23 @@ > +xfsprogs-3.1.0 > + - Reduce memory usage in xfs_repair by using better data structures. > + - Add additional checks in xfs_repair to detect freespace btree > + corruption instead of only rebuilding the btrees. Useful for the > + no-modify mode. > + - Fix libhandle to use the right path to issue by-handle ioctls for > + symbolic links and special files. > + - Use lazy superblock counters by default. At least kernel 2.6.22 = is > + needed for this feature. > + - Add a German translation, thanks to Chris Leick. > + - Enable the madvise and mincor commands in xfs_io. > + - Fix unsafe temporary file creation in xfs_fsr. > + - Add support for discarding unused space on SSDs or thing provionen > + arrays in mkfs.xfs. > + - Allow linking against libblkid for topology information. > + - Add symbol versioning for libhandle. > + - Remove the included RPM and binary tarball built infrastructure. > + - Various build system improvements. > + - Small fixes to xfs_db and xfs_io. > + > xfsprogs-3.0.4 (17 September 2009) > - Fix a memory leak in xfsprogs. > - Increase hash chain length in xfsprogs when running out of memory. > Index: xfsprogs-dev/debian/changelog > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs-dev.orig/debian/changelog 2010-01-02 12:11:42.872012141 = +0100 > +++ xfsprogs-dev/debian/changelog 2010-01-06 18:49:38.224273412 +0100 > @@ -1,6 +1,6 @@ > xfsprogs (3.1.0) unstable; urgency=3Dlow >=20 > - * New bugfix release > + * New upstream release > * Merged German translation (closes: #521389) > * Merged German translation update (closes: #557100) > * Uptodate po file is provided now (closes: #538962) >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Tue Jan 12 13:00:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_73 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CJ0W5X056747 for ; Tue, 12 Jan 2010 13:00:33 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id BAEAFAC008; Tue, 12 Jan 2010 11:01:25 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfsdump: bump version and update changelog Date: Tue, 12 Jan 2010 13:00:18 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6953@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100112165936.GA5085@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfsdump: bump version and update changelog Thread-Index: AcqTrO8tBr6FPftCTl2APBCyU/5ORAADH5iA From: "Alex Elder" To: "Christoph Hellwig" , Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Including a debian changelog update Nathan sent me earlier. >=20 > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Alex Elder > Index: xfsdump-dev/debian/changelog > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsdump-dev.orig/debian/changelog 2010-01-06 18:42:23.013011836 = +0100 > +++ xfsdump-dev/debian/changelog 2010-01-12 17:55:30.278005578 +0100 > @@ -1,3 +1,9 @@ > +xfsdump (3.0.4) unstable; urgency=3Dlow > + > + * New bugfix release > + > + -- Nathan Scott Tue, 12 Jan 2009 17:46:03 = +1100 > + > xfsdump (3.0.2) unstable; urgency=3Dlow >=20 > * New bugfix release > Index: xfsdump-dev/VERSION > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsdump-dev.orig/VERSION 2010-01-12 17:50:51.818254512 +0100 > +++ xfsdump-dev/VERSION 2010-01-12 17:51:01.847006343 +0100 > @@ -3,5 +3,5 @@ > # > PKG_MAJOR=3D3 > PKG_MINOR=3D0 > -PKG_REVISION=3D2 > +PKG_REVISION=3D4 > PKG_BUILD=3D1 > Index: xfsdump-dev/doc/CHANGES > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsdump-dev.orig/doc/CHANGES 2010-01-12 17:51:04.440274239 +0100 > +++ xfsdump-dev/doc/CHANGES 2010-01-12 17:54:59.819255971 +0100 > @@ -1,3 +1,8 @@ > +xfsdump-3.0.4 > + - Improve xfsinvutil man page and argument processing. > + - Fix timestamp handling on 64-bit architectures in xfsinvutil. > + - Various build system improvements. > + > xfsdump-3.0.2 (9 May 2009) > - Update the Debian packaging and resolve xfsprogs dependencies. >=20 >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Tue Jan 12 13:08:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43,J_CHICKENPOX_73 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CJ8Mwg057704 for ; Tue, 12 Jan 2010 13:08:23 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 762ADAC00C; Tue, 12 Jan 2010 11:09:18 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH v3] xfsprogs: bump version and update changelog Date: Tue, 12 Jan 2010 13:07:44 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6955@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6954@cf--amer001e--3.americas.sgi.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v3] xfsprogs: bump version and update changelog Thread-Index: AcqTqNcpt5E+tt93QfyJ1qfp1vNW+gAELL4gAAAPOIA= From: "Alex Elder" To: "Christoph Hellwig" , X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alex Elder wrote: > Christoph Hellwig wrote: >> Signed-off-by: Christoph Hellwig >=20 > Looks good. >=20 > Reviewed-by: Alex Elder Whoops. I'm going to also add this to the CHANGES file: - Use physical device sector size if available in mkfs.xfs, so 4K sector devices are handed more gracefully. Eric felt this wording was OK. -Alex >> Index: xfsprogs-dev/VERSION >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- xfsprogs-dev.orig/VERSION 2010-01-02 12:11:42.871003354 +0100 >> +++ xfsprogs-dev/VERSION 2010-01-06 18:49:38.221274008 +0100 @@ -2,6 = +2,6 @@ >> # This file is used by configure to get version information # >> PKG_MAJOR=3D3 >> -PKG_MINOR=3D0 >> -PKG_REVISION=3D4 >> +PKG_MINOR=3D1 >> +PKG_REVISION=3D0 >> PKG_BUILD=3D1 >> Index: xfsprogs-dev/doc/CHANGES >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- xfsprogs-dev.orig/doc/CHANGES 2010-01-02 12:11:42.873010034 +0100 >> +++ xfsprogs-dev/doc/CHANGES 2010-01-08 13:24:09.150268999 +0100 @@ = -1,3 +1,23 @@ >> +xfsprogs-3.1.0 >> + - Reduce memory usage in xfs_repair by using better data = structures. >> + - Add additional checks in xfs_repair to detect freespace btree >> + corruption instead of only rebuilding the btrees. Useful for the = + no-modify mode. >> + - Fix libhandle to use the right path to issue by-handle ioctls for >> + symbolic links and special files. >> + - Use lazy superblock counters by default. At least kernel 2.6.22 = is + needed for this >> feature. + - Add a German translation, thanks to Chris Leick. >> + - Enable the madvise and mincor commands in xfs_io. >> + - Fix unsafe temporary file creation in xfs_fsr. >> + - Add support for discarding unused space on SSDs or thing = provionen + arrays in mkfs.xfs. >> + - Allow linking against libblkid for topology information. >> + - Add symbol versioning for libhandle. >> + - Remove the included RPM and binary tarball built infrastructure. >> + - Various build system improvements. >> + - Small fixes to xfs_db and xfs_io. >> + >> xfsprogs-3.0.4 (17 September 2009) >> - Fix a memory leak in xfsprogs. >> - Increase hash chain length in xfsprogs when running out of = memory. >> Index: xfsprogs-dev/debian/changelog >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- xfsprogs-dev.orig/debian/changelog 2010-01-02 12:11:42.872012141 = +0100 >> +++ xfsprogs-dev/debian/changelog 2010-01-06 18:49:38.224273412 +0100 = @@ -1,6 +1,6 @@ >> xfsprogs (3.1.0) unstable; urgency=3Dlow >>=20 >> - * New bugfix release >> + * New upstream release >> * Merged German translation (closes: #521389) >> * Merged German translation update (closes: #557100) >> * Uptodate po file is provided now (closes: #538962) >>=20 >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs From BATV+e1c7883d0f96dc795381+2333+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 12 13:54:28 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CJsRAI063327 for ; Tue, 12 Jan 2010 13:54:28 -0600 X-ASG-Debug-ID: 1263326122-0d0901a90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F33A3F02031; Tue, 12 Jan 2010 11:55:23 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id TOGPfJLIoVxSCVbT; Tue, 12 Jan 2010 11:55:23 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NUmpm-0000Je-KL; Tue, 12 Jan 2010 19:55:22 +0000 Date: Tue, 12 Jan 2010 14:55:22 -0500 From: Christoph Hellwig To: Alex Elder Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH v3] xfsprogs: bump version and update changelog Subject: Re: [PATCH v3] xfsprogs: bump version and update changelog Message-ID: <20100112195522.GA9594@infradead.org> References: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6954@cf--amer001e--3.americas.sgi.com> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6955@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6955@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263326123 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 12, 2010 at 01:07:44PM -0600, Alex Elder wrote: > Alex Elder wrote: > > Christoph Hellwig wrote: > >> Signed-off-by: Christoph Hellwig > > > > Looks good. > > > > Reviewed-by: Alex Elder > > Whoops. I'm going to also add this to the CHANGES file: > > - Use physical device sector size if available in mkfs.xfs, > so 4K sector devices are handed more gracefully. > > Eric felt this wording was OK. I'm going to fix the text up before commiting it, thanks. From sandeen@sandeen.net Tue Jan 12 14:25:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CKPkIp067262 for ; Tue, 12 Jan 2010 14:25:46 -0600 X-ASG-Debug-ID: 1263328000-146602890000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7C6AF15F726 for ; Tue, 12 Jan 2010 12:26:40 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id H8hTnHm9hxu839es for ; Tue, 12 Jan 2010 12:26:40 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 240029E7D99; Tue, 12 Jan 2010 14:26:40 -0600 (CST) Message-ID: <4B4CDB00.1080103@sandeen.net> Date: Tue, 12 Jan 2010 14:26:40 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Alexandru Coman CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: help investigating some xfs errors Subject: Re: help investigating some xfs errors References: <4B4C95F1.20106@gmx.net> In-Reply-To: <4B4C95F1.20106@gmx.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263328001 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA210e, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19625 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alexandru Coman wrote: > Hello, > > I'm having some problems with an XFS filesystem, and I'm wondering if > anyone can point me in the right direction, it would be greatly appreciated. > > I have several XFS filesystems on top of LVM in a RAID-1 (mdadm) created > on a pair of 1TB SATA drives. Running on Linux (Debian, amd64). One of > the XFS filesystems is 600GB in size (65% used), storing ~19 mil files > under 100KB (jpeg), usually under high load (read+write). There are also > a few other smaller XFS partitions on the same drives. It has been > running like this for 11 months, until a few days ago when I started to > get a lot of errors. > > On Jan 10, I got a few lines with "ata3: hard resetting link", after hardware problem... > which the partition could not be accessed, I couldn't umount/mount it. > All other partitions were fine. I rebooted the server, but that > filesystem still wouldn't mount (it said "Structure needs cleaning"), I > then ran xfs_repair on it, which reported that I needed to use the "-L" > option to destroy the log. I then ran "xfs_repair -L" which appeared to > fix a lot of errors, and then I was able to mount the filesystem again. > Everything appeared to be ok at that point. > > Jan 10 night: a lot of xfs call traces start to appear in the log > > Jan 11: xfs call traces along with > - xfs_force_shutdown(dm-4,0x8) called from line 1164 of file > fs/xfs/xfs_trans.c. Return address = 0xffffffffa01999ff > - xfs_imap_to_bp: xfs_trans_read_buf()returned an error 5 on dm-4. > Returning error. 5 is EIO - your storage had an IO error, xfs reacted. > - lots of "Filesystem "dm-4": xfs_log_force: error 5 returned." > The filesystem disappeared, but I could unmount and mount it again with > no errors. At this point I've also decided to update the kernel, and > switched from 2.6.26 to 2.6.30 Then ran xfs_repair which again found a > few errors. after those IO errors, the fs may well be in bad shape, which xfs_repair will do its best to fix. You'll need to get your hardware problems sorted out, it seems. -Eric > Jan 12: xfs call traces along with: > - Filesystem "dm-4": corrupt dinode 1293803384, extent total = 1, > nblocks = 0. Unmount and run xfs_repair. > - Filesystem "dm-4": corrupt dinode 665458404, extent total = 1, nblocks > = 0. Unmount and run xfs_repair. > - Filesystem "dm-4": corrupt dinode 225720890, extent total = 1, nblocks > = 0. Unmount and run xfs_repair. > I then unmounted the fs and ran xfs_repair again. This time the output > was massive compared to the previous runs, and it put around ~ 100.000 > files in lost+found. > > Beside 3 lines on Jan 10 with "ata3: hard resetting link", there have > been no sign of possible hardware problems. The raid and the hdd's > appear to be fine, no errors. What's curious is that I'm experiencing > problems only with the large XFS filesystem, and there hasn't been not > even a single error in the logs about the other xfs partitions. > > So, if anyone has any ideea what I can research next, to help me find > out more information about what's happening here... > > I've uploaded some detailed logs at http://ghost3k.net/xfs1/ > > > Thanks, > Alexandru Coman > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@redhat.com Tue Jan 12 17:16:03 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_21,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0CNG2C1089135 for ; Tue, 12 Jan 2010 17:16:02 -0600 X-ASG-Debug-ID: 1263338217-5bb502530000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 309161243AE5 for ; Tue, 12 Jan 2010 15:16:57 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id y7072J8qvJIvICv4 for ; Tue, 12 Jan 2010 15:16:57 -0800 (PST) Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0CNGuYI008294 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 12 Jan 2010 18:16:56 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0CNGqWj006546 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 12 Jan 2010 18:16:55 -0500 Message-ID: <4B4D02E5.7040306@redhat.com> Date: Tue, 12 Jan 2010 17:16:53 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests: more 214 updates Subject: [PATCH] xfstests: more 214 updates Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1263338218 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19637 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean A few more updates for the 214 fallocate test, since ext4 is having some fallocate trouble these days. First off, updated 214.out was missing from the previous commit to this file. Second, run each test against a new filename and don't remove it, so that the post-test fs check will have more work to do. Third, and a newly-found corruption case for ext4. Signed-off-by: Eric Sandeen --- diff --git a/214 b/214 index a71680a..0cfb23e 100755 --- a/214 +++ b/214 @@ -56,13 +56,16 @@ _require_xfs_io_falloc # Ok, off we go. +# We don't remove files after they are written to check +# for subsequent fs corruption at the end +rm -f $TEST_DIR/test214-* + # Super-trivial; preallocate a region and read it; get 0s. echo "=== falloc & read ===" $XFS_IO_PROG -F -f \ -c 'falloc 0 4096' \ -c 'pread -v 0 4096' \ - $TEST_DIR/ouch | _filter_xfs_io_unique -rm -f $TEST_DIR/ouch + $TEST_DIR/test214-1 | _filter_xfs_io_unique # Preallocate a chunk, write 1 byte, read it all back. # Should get no stale data. Early ext4 bug. @@ -72,8 +75,7 @@ $XFS_IO_PROG -F -f \ -c 'falloc 0 512' \ -c 'pwrite 0 1' \ -c 'pread -v 0 512' \ - $TEST_DIR/ouch | _filter_xfs_io_unique -rm -f $TEST_DIR/ouch + $TEST_DIR/test214-2 | _filter_xfs_io_unique # Same but write in the middle of the region echo "=== falloc, write middle, read ===" @@ -81,8 +83,7 @@ $XFS_IO_PROG -F -f \ -c 'falloc 0 512' \ -c 'pwrite 256 1' \ -c 'pread -v 0 512' \ - $TEST_DIR/ouch | _filter_xfs_io_unique -rm -f $TEST_DIR/ouch + $TEST_DIR/test214-3 | _filter_xfs_io_unique # Same but write the end of the region echo "=== falloc, write end, read ===" @@ -90,8 +91,7 @@ $XFS_IO_PROG -F -f \ -c 'falloc 0 512' \ -c 'pwrite 511 1' \ -c 'pread -v 0 512' \ - $TEST_DIR/ouch | _filter_xfs_io_unique -rm -f $TEST_DIR/ouch + $TEST_DIR/test214-4 | _filter_xfs_io_unique # Reported by IBM on ext4. # @@ -110,14 +110,12 @@ $XFS_IO_PROG -F -f \ -c 'pwrite -S 0xAA 0x12000 0x10000' \ -c 'fsync' \ -c 'truncate 0x16000' \ - $TEST_DIR/ouch | _filter_xfs_io_unique + $TEST_DIR/test214-5 | _filter_xfs_io_unique # now do a direct read and see what's on-disk $XFS_IO_PROG -F -f -d \ -c 'pread -v 0 0x16000' \ - $TEST_DIR/ouch | _filter_xfs_io_unique - -rm -f $TEST_DIR/ouch + $TEST_DIR/test214-5 | _filter_xfs_io_unique # Reported by Ted Ts'o on linux-ext4, 12/31/2009 # double-allocation on ext4 when fallocating over delalloc blocks @@ -131,7 +129,20 @@ $XFS_IO_PROG -F -f \ -c "pwrite 0 16k" \ -c "falloc 0 16k" \ -c "fsync" \ - $TEST_DIR/ouch2 | _filter_xfs_io_unique + $TEST_DIR/test214-6 | _filter_xfs_io_unique + +# Another ext4 failure + +echo "=== ext4 testcase 2 ===" + +$XFS_IO_PROG -F -f \ + -c "fsync" \ + -c "pwrite 551917 41182" \ + -c "falloc 917633 392230" \ + -c "pwrite 285771 77718" \ + -c "pwrite 1136718 104115" \ + $TEST_DIR/test214-7 | _filter_xfs_io_unique + # success, all done status=0 diff --git a/214.out b/214.out index b6344c2..4576150 100644 --- a/214.out +++ b/214.out @@ -39,3 +39,13 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) * read 90112/90112 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +=== delalloc write 16k; fallocate same range === +wrote 16384/16384 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +=== ext4 testcase 2 === +wrote 41182/41182 bytes at offset 551917 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 77718/77718 bytes at offset 285771 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 104115/104115 bytes at offset 1136718 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) From pengxihan@gmail.com Tue Jan 12 19:10:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D1A8xc098858 for ; Tue, 12 Jan 2010 19:10:08 -0600 X-ASG-Debug-ID: 1263345063-71ec01e80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-pw0-f53.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B90A1160707 for ; Tue, 12 Jan 2010 17:11:03 -0800 (PST) Received: from mail-pw0-f53.google.com (mail-pw0-f53.google.com [209.85.160.53]) by cuda.sgi.com with ESMTP id GrM1HgYFlT4MUYK3 for ; Tue, 12 Jan 2010 17:11:03 -0800 (PST) Received: by pwj3 with SMTP id 3so890908pwj.12 for ; Tue, 12 Jan 2010 17:11:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=rm2qV/HKYnj8+jCPC/VMYFBsHSMyyOt2sZj2GE8dsLc=; b=qGYhHTDreSCC+IrXt5rQ18Z7/aLt+pi41RpBfMV4WXbFtvOv2L+f/HEhhG6xIjQN/c ICVRFnPN0yDKohpIPwYxd6zrI+WBzSZkDRlQ5+mlDrUCOAzes4NHdFBEh52hw33A79KZ 6ITHAdgewC1LrqcIvgLZ0HcdCgMcC9+VOTV3o= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=LezC/oIt3CDgjJ+xfiRaV/Qb+fNBYFQggAgKNfTgCz43rmXoeHSZFD5sJBw2cX1cXC 89JO1himX8gSGTGZi27Em0SdV8pWpZ3NI9Pa9CXNrXxvofT6IqWiafMwLIW+HoNc1g37 FKXhUprGQOpvl3+WNzc14XVRNrWIKznxHu9e8= MIME-Version: 1.0 Received: by 10.142.4.12 with SMTP id 12mr5750540wfd.133.1263345062524; Tue, 12 Jan 2010 17:11:02 -0800 (PST) In-Reply-To: <20091215012640.GA4850@discord.disaster> References: <4B1F1211.90607@sandeen.net> <4B1F18C4.3060704@sandeen.net> <389deec70912082053v4310057dg479f6d4b6c4b46f7@mail.gmail.com> <4B1F31FD.3020705@sandeen.net> <389deec70912082220pcb3b5d1q516ac197d31502c5@mail.gmail.com> <389deec70912082230g38987576pc48d7699f23844c5@mail.gmail.com> <389deec70912140119q40ed91cao62fe9c9ebdf13601@mail.gmail.com> <4B26604B.3060901@sandeen.net> <389deec70912141649g767a1540hdeae66707c4c68fd@mail.gmail.com> <20091215012640.GA4850@discord.disaster> Date: Wed, 13 Jan 2010 09:11:02 +0800 Message-ID: <389deec71001121711n53aa8837y5e6d6299f71efbd6@mail.gmail.com> X-ASG-Orig-Subj: Re: [BUG report]xfs_btree_make_block_unfull generated an OOPS Subject: Re: [BUG report]xfs_btree_make_block_unfull generated an OOPS From: hank peng To: Dave Chinner Cc: Eric Sandeen , xfs-oss Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-pw0-f53.google.com[209.85.160.53] X-Barracuda-Start-Time: 1263345063 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19644 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 2009/12/15 Dave Chinner : > On Tue, Dec 15, 2009 at 08:49:37AM +0800, hank peng wrote: >> Hi, Eric: >> I add some code like this: >> if (*stat) { >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 printk("*stat = =3D 0x%08x, oindex =3D %p, index =3D %p\n", >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 *stat, oindex, index); >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (oindex =3D= =3D NULL || index =3D=3D NULL) { > > This won't catch bad non-NULL pointers like you are seeing. > >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 printk("BUG occured!\n"); >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 printk("oindex =3D %p, index =3D %p\n", oindex, index); >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 BUG(); >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 *oindex =3D *ind= ex =3D cur->bc_ptrs[level]; >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0; >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 } >> >> And the same OOPS happened again but a little different, kernel messages= are: >> >> >> *stat =3D 0x00000001, oindex =3D e87d7bf8, index =3D e87d7bfc >> *stat =3D 0x00000001, oindex =3D e87d7bf8, index =3D e87d7bfc >> *stat =3D 0x00000001, oindex =3D e87d7bf8, index =3D e87d7bfc >> *stat =3D 0x00000001, oindex =3D e87d7bf8, index =3D e87d7bfc >> *stat =3D 0x00000001, oindex =3D 00000501, index =3D 22008424 >> Unable to handle kernel paging request for data at address 0x22008424 > > Given that oindex and index are stack varibles, this indicates some > thing is probably smashing the stack. Possibly a buffer overrun. To > narrow down the possible cause, can you add the debug: > > =C2=A0 =C2=A0 =C2=A0 =C2=A0printk("%s:%s: oindex =3D %p, index =3D %p\n", > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0__func__, __LINE__, oindex, index); > > throughout the xfs_btree_make_block_unfull() function? i.e. at > first entry, before the xfs_btree_rshift() call, before the > xfs_btree_lshift() call, etc, to see if any of the parameters > are being modified during execution of the function? > > If the variables being passed into xfs_btree_make_block_unfull() are > already bad, then do the same thing for the caller > xfs_btree_insert(). This may help narrow down where the problem > is coming from.... > I added the following debug code as you said: printk("%s: before xfs_btree_rshift, oindex =3D %p, index =3D %p\n", __func__, oindex, index); error =3D xfs_btree_rshift(cur, level, stat); if (error || *stat) return error; /* Next, try shifting an entry to the left neighbor. */ printk("%s: before xfs_btree_lshift, oindex =3D %p, index =3D %p\n"= , __func__, oindex, index); error =3D xfs_btree_lshift(cur, level, stat); if (error) return error; if (*stat) { printk("%s: oindex =3D %p, index =3D %p, *stat =3D %d\n", __func__, oindex, index, *stat); *oindex =3D *index =3D cur->bc_ptrs[level]; return 0; } It has been working fine for about 36 hours without problem, but in today's morning, odd OOPS appeared: xfs_btree_make_block_unfull: before xfs_btree_rshift, oindex =3D d3a27bd8, index =3D d3a27bdc xfs_btree_make_block_unfull: before xfs_btree_lshift, oindex =3D d3a27bd8, index =3D d3a27bdc xfs_btree_make_block_unfull: oindex =3D d3a27bd8, index =3D d3a27bdc, *stat= =3D 1 xfs_btree_make_block_unfull: before xfs_btree_rshift, oindex =3D d3a27bd8, index =3D d3a27bdc Unable to handle kernel paging request for data at address 0x00000501 Faulting instruction address: 0xc019f4f0 Oops: Kernel access of bad area, sig: 11 [#2] MPC85xx CDS Modules linked in: NIP: c019f4f0 LR: c019f4e8 CTR: c023fabc REGS: d3a27ad0 TRAP: 0300 Tainted: G D (2.6.31.6-svn45) MSR: 00029000 CR: 22008424 XER: 20000000 DEAR: 00000501, ESR: 00000000 TASK =3D efb46a30[20273] 'cp' THREAD: d3a26000 GPR00: c019f4e8 d3a27b80 efb46a30 00000000 d3a27b38 d3a27b38 00000010 007f0= f26 GPR08: c04a7c40 ffffffff e8517850 d3a27b80 20008422 100eb39c 3fff5400 100a0= 000 GPR16: 100d5ac8 00000000 016d30f3 e8517850 c019d08c 00029000 d3a27bf0 c023f= abc GPR24: c019d068 00000000 22008424 d3a27bdc 00000501 d3a27bd8 00000000 e8517= 850 NIP [c019f4f0] xfs_btree_make_block_unfull+0x8c/0x1f8 LR [c019f4e8] xfs_btree_make_block_unfull+0x84/0x1f8 Call Trace: [d3a27b80] [c019f4e8] xfs_btree_make_block_unfull+0x84/0x1f8 (unreliable) [d3a27bc0] [c019f9d0] xfs_btree_insrec+0x374/0x4b0 [d3a27c30] [c019fb88] xfs_btree_insert+0x7c/0x1c0 [d3a27c90] [c01865d0] xfs_free_ag_extent+0x34c/0x810 [d3a27d00] [c0187168] xfs_free_extent+0xdc/0x104 [d3a27d90] [c018fe50] xfs_bmap_finish+0x154/0x1a0 [d3a27dc0] [c01b697c] xfs_itruncate_finish+0x254/0x3b8 [d3a27e40] [c01d2134] xfs_inactive+0x2c4/0x450 [d3a27e80] [c01e193c] xfs_fs_clear_inode+0x40/0x50 [d3a27e90] [c00a84bc] clear_inode+0x6c/0x108 [d3a27ea0] [c00a87d0] generic_delete_inode+0x114/0x118 [d3a27eb0] [c00a7ff8] iput+0x74/0x94 [d3a27ec0] [c00a003c] do_unlinkat+0x114/0x198 [d3a27f40] [c000f7ac] ret_from_syscall+0x0/0x3c Instruction dump: 7f66db78 7f44d378 7fa5eb78 3863eca4 4cc63182 4be97ef5 7fe3fb78 7fc4f378 7f85e378 4bffdb15 7c791b79 40820010 <801c0000> 2f800000 419e001c 80010044 ---[ end trace 95e2c49eb5a34f9a ]--- (gdb) list *(xfs_btree_make_block_unfull+0x8c) 0xc019f4f0 is in xfs_btree_make_block_unfull (fs/xfs/xfs_btree.c:2636). 2631 2632 /* First, try shifting an entry to the right neighbor. */ 2633 printk("%s: before xfs_btree_rshift, oindex =3D %p, index = =3D %p\n", 2634 __func__, oindex, index); 2635 error =3D xfs_btree_rshift(cur, level, stat); 2636 if (error || *stat) 2637 return error; 2638 2639 /* Next, try shifting an entry to the left neighbor. */ 2640 printk("%s: before xfs_btree_lshift, oindex =3D %p, index = =3D %p\n", It seems that after call xfs_btree_rshift, the value of 'stat' has been changed, how could it be possible since it is local variable? # uname -a Linux Storage 2.6.31.6-svn45 #87 Mon Jan 11 13:22:14 CST 2010 ppc unknown # mount rootfs on / type rootfs (rw) /dev/root on / type ext2 (rw,relatime,errors=3Dcontinue) /dev/mtdblock2 on /mnt/sys_data type jffs2 (rw,relatime) proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,relatime) tmpfs on /opt/upgrade type tmpfs (rw,relatime) devpts on /dev/pts type devpts (rw,relatime,gid=3D5,mode=3D620) /dev/vg_log/lv_log on /var/log type reiserfs (rw,relatime) /dev/Pool_md1/SS1 on /mnt/Pool_md1/SS1 type xfs (rw,relatime,attr2,inode64,noquota) /dev/Pool_md2/SS2 on /mnt/Pool_md2/SS2 type xfs (rw,relatime,attr2,inode64,noquota) root@Storage:/var/log# df -h Filesystem Size Used Available Use% Mounted on /dev/root 124.0M 72.6M 51.4M 59% / /dev/mtdblock2 1.0M 408.0K 616.0K 40% /mnt/sys_data tmpfs 505.3M 0 505.3M 0% /opt/upgrade /dev/vg_log/lv_log 10.0G 32.4M 10.0G 0% /var/log /dev/Pool_md1/SS1 2.7T 270.2G 2.5T 10% /mnt/Pool_md1/SS1 /dev/Pool_md2/SS2 2.7T 344.0G 2.4T 12% /mnt/Pool_md2/SS2 >From assembly code, I noticed that the local variable 'stat' didn't have real space in stack. It is optimised to be a register(r28). According to powerpc ABI, before call xfs_btree_rshift, some registers will be saved at stack and before return from xfs_btree_rshift, these registers will be restored. Is it possible that a smash occured at this time? BTW, I noticed that my cross-compiler "powerpc-linux-gnuspe-gcc" didn't have default 4 bytes alignment but 8 bytes alignment. > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > --=20 The simplest is not all best but the best is surely the simplest! From SRS0+PLNG+42+fromorbit.com=dave@internode.on.net Tue Jan 12 20:37:03 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D2b2XN105953 for ; Tue, 12 Jan 2010 20:37:03 -0600 X-ASG-Debug-ID: 1263350275-662701e40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6EDA91C492D6 for ; Tue, 12 Jan 2010 18:37:55 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id NilLJtAFd0i9BLVX for ; Tue, 12 Jan 2010 18:37:55 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11579427-1927428 for ; Wed, 13 Jan 2010 13:07:54 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NUt7I-0005uC-TZ for xfs@oss.sgi.com; Wed, 13 Jan 2010 13:37:52 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NUt3G-0001VT-0B for xfs@oss.sgi.com; Wed, 13 Jan 2010 13:33:42 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: Make the compile output cleaner Subject: [PATCH] xfsprogs: Make the compile output cleaner Date: Wed, 13 Jan 2010 13:33:41 +1100 Message-Id: <1263350021-5733-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263350278 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19650 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We don't need to see every compiler command line for every file that is compiled. This makes it hard to see warnings and errors during compile. For progress notification, we really only need to see the diretory/file being operated on. Turn down the verbosity of output by suppressing various make output and provide better overall visibility of which directory is being operated on, what the operation is and what is being done to the files by the build/clean process. Sample output from a build: .... Building libxlog [CC] xfs_log_recover.c [CC] util.c [LD] libxlog.la Building libxcmd [CC] command.c [CC] input.c [CC] paths.c [CC] projects.c [CC] help.c [CC] quit.c [LD] libxcmd.la .... Sample output from cleaning: $ make clean Cleaning include Cleaning libxfs Cleaning libxlog Cleaning libxcmd Cleaning libhandle Cleaning libdisk Cleaning copy Cleaning db .... If you want to see a noisy build (i.e. every command), use: $ make Q= and that will output all the commands that are now suppressed by default. Signed-off-by: Dave Chinner --- Makefile | 24 +++++++++++++----------- include/buildmacros | 10 +++++----- include/buildrules | 24 +++++++++++++++++------- mkfs/Makefile | 3 ++- 4 files changed, 37 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 2d394e4..2fbfb51 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,8 @@ # # Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved. # +Q ?= @ +MAKEOPTS = --no-print-directory Q=$(Q) TOPDIR = . HAVE_BUILDDEFS = $(shell test -f $(TOPDIR)/include/builddefs && echo yes || echo no) @@ -36,9 +38,9 @@ SUBDIRS = include $(LIB_SUBDIRS) $(TOOL_SUBDIRS) default: include/builddefs include/platform_defs.h ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SUBDIRS) + $(Q)$(MAKE) $(MAKEOPTS) $(SUBDIRS) endif # tool/lib dependencies @@ -80,7 +82,7 @@ include/platform_defs.h: include/builddefs ## Recover from the removal of $@ @if test -f $@; then :; else \ rm -f include/builddefs; \ - $(MAKE) $(AM_MAKEFLAGS) include/builddefs; \ + $(MAKE) $(MAKEOPTS) $(AM_MAKEFLAGS) include/builddefs; \ fi install: default $(addsuffix -install,$(SUBDIRS)) @@ -111,19 +113,19 @@ realclean: distclean # dist: include/builddefs include/platform_defs.h default ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SRCTAR) + $(Q)$(MAKE) $(MAKEOPTS) $(SRCTAR) endif deb: include/builddefs include/platform_defs.h ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SRCDIR) - $(MAKE) -C po - $(MAKE) source-link - cd $(SRCDIR) && dpkg-buildpackage + $(Q)$(MAKE) $(MAKEOPTS) $(SRCDIR) + $(Q)$(MAKE) $(MAKEOPTS) -C po + $(Q)$(MAKE) $(MAKEOPTS) source-link + $(Q)cd $(SRCDIR) && dpkg-buildpackage endif $(SRCDIR) : $(_FORCE) @@ -131,6 +133,6 @@ $(SRCDIR) : $(_FORCE) mkdir -p $@ $(SRCTAR) : default $(SRCDIR) - $(MAKE) source-link + $(Q)$(MAKE) $(MAKEOPTS) source-link unset TAPE; $(TAR) -cf - $(SRCDIR) | $(ZIP) --best > $@ && \ echo Wrote: $@ diff --git a/include/buildmacros b/include/buildmacros index 099570f..62babca 100644 --- a/include/buildmacros +++ b/include/buildmacros @@ -13,7 +13,7 @@ LDFLAGS += $(LOADERFLAGS) $(LLDFLAGS) LTLDFLAGS += $(LOADERFLAGS) LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB) -MAKEOPTS = --no-print-directory +MAKEOPTS = --no-print-directory Q=$(Q) SRCFILES = Makefile $(HFILES) $(CFILES) $(LSRCFILES) $(LFILES) $(YFILES) SRCFILES += $(QAHFILES) @@ -45,10 +45,10 @@ LIBNAME = $(basename $(LTLIBRARY)) LTOBJECTS = $(OBJECTS:.o=.lo) LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -LTLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) -LTEXEC = $(LIBTOOL) --mode=execute -LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CCF) +LTLINK = $(LIBTOOL) --quiet --tag=CC --mode=link $(CC) +LTEXEC = $(LIBTOOL) --quiet --mode=execute +LTINSTALL = $(LIBTOOL) --quiet --mode=install $(INSTALL) +LTCOMPILE = $(LIBTOOL) --quiet --tag=CC --mode=compile $(CCF) ifeq ($(ENABLE_SHARED),yes) LTLDFLAGS += -rpath $(PKG_ROOT_LIB_DIR) diff --git a/include/buildrules b/include/buildrules index a06d480..a0c77a9 100644 --- a/include/buildrules +++ b/include/buildrules @@ -7,10 +7,11 @@ _BUILDRULES_INCLUDED_ = 1 include $(TOPDIR)/include/builddefs clean clobber : $(addsuffix -clean,$(SUBDIRS)) - rm -f $(DIRT) - rm -fr $(DIRDIRT) + $(Q)rm -f $(DIRT) + $(Q)rm -fr $(DIRDIRT) %-clean: - $(MAKE) -C $* clean + @echo "Cleaning $*" + $(Q)$(MAKE) $(MAKEOPTS) -C $* clean # Never blow away subdirs ifdef SUBDIRS @@ -18,7 +19,8 @@ ifdef SUBDIRS .PHONY: $(SUBDIRS) $(SUBDIRS): - $(MAKE) -C $@ + @echo "Building $@" + $(Q)$(MAKE) $(MAKEOPTS) -C $@ endif source-link: @@ -38,15 +40,23 @@ source-link: ifdef LTCOMMAND $(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES) - $(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) + @echo " [LD] $@" + $(Q)$(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) endif ifdef LTLIBRARY $(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS) - $(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) + @echo " [LD] $@" + $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) %.lo: %.c - $(LTCOMPILE) -c $< + @echo " [CC] $<" + $(Q)$(LTCOMPILE) -c $< +else +%.o: %.c + @echo " [CC] $<" + $(Q)$(CC) $(CFLAGS) -c $< + endif ifdef POTHEAD diff --git a/mkfs/Makefile b/mkfs/Makefile index 9fcadf2..7065f24 100644 --- a/mkfs/Makefile +++ b/mkfs/Makefile @@ -36,7 +36,8 @@ endif include $(BUILDRULES) $(FSTYP): - $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBDISK) $(PLDLIBS) + @echo " [CC] $@" + $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBDISK) $(PLDLIBS) install: default $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR) -- 1.6.5 From nscott@aconex.com Tue Jan 12 21:08:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D38QTi108153 for ; Tue, 12 Jan 2010 21:08:26 -0600 X-ASG-Debug-ID: 1263352160-570803900000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postoffice2.aconex.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0B5AA1C49B55 for ; Tue, 12 Jan 2010 19:09:20 -0800 (PST) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id 3wNo2oUgFnic6u5S for ; Tue, 12 Jan 2010 19:09:20 -0800 (PST) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam & Virus Firewall) with ESMTP id 49A0D18F9C6; Wed, 13 Jan 2010 14:09:19 +1100 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id uKPy2GsTY1qHn7JN; Wed, 13 Jan 2010 14:09:19 +1100 (EST) Received: from gatekeeper.aconex.com (gatekeeper.yarra.acx [192.168.102.10]) by postoffice.aconex.com (Postfix) with ESMTP id 5A8F5A5023D; Wed, 13 Jan 2010 14:07:07 +1100 (EST) Received: from localhost (localhost.localdomain [127.0.0.1]) by gatekeeper.aconex.com (Postfix) with ESMTP id 2AD2E4882EA; Wed, 13 Jan 2010 14:09:19 +1100 (EST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at aconex.com Received: from gatekeeper.aconex.com ([127.0.0.1]) by localhost (gatekeeper.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id x1El4AM6352C; Wed, 13 Jan 2010 14:09:14 +1100 (EST) Received: from mail-au.aconex.com (mail-au.aconex.com [192.168.102.12]) by gatekeeper.aconex.com (Postfix) with ESMTP id 74A90488312; Wed, 13 Jan 2010 14:09:14 +1100 (EST) Date: Wed, 13 Jan 2010 14:09:14 +1100 (EST) From: Nathan Scott To: Martin Steigerwald Cc: TuxOnIce Devel List , xfs@oss.sgi.com Message-ID: <643097034.1721341263352154340.JavaMail.root@mail-au.aconex.com> In-Reply-To: <2097834991.1721031263351861134.JavaMail.root@mail-au.aconex.com> X-ASG-Orig-Subj: Re: [TuxOnIce-devel] Latest updates. Subject: Re: [TuxOnIce-devel] Latest updates. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [203.89.192.141] X-Mailer: Zimbra 5.0.18_GA_3011.RHEL5_64 (ZimbraWebClient - [unknown] (Linux)/5.0.18_GA_3011.RHEL5_64) X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1263352162 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19652 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean ----- "Martin Steigerwald" wrote: > Please keep CC to TuxOnIce devel list. > > > Hi! > > Nigel, who develops the alternative TuxOnIce hibernation / snapshot > infrastructure, implemented checking last mount time of filesystem as > a > safety feature for Ext 2, 3 and 4. > > He would like this also for XFS. Does XFS record the last mount time > somewhere? Nope. > If not, could this be added? Anythings possible ... its a relatively trivial change, and there's room in the superblock. Could probably even be done without a superblock version bump - if you were prepared to live with the possibility of finding zero in the ondisk location & dealing with it appropriately (i.e. last mount time unknown). Guess you'd have to convince the XFS folks doing most of the work these days, but really it'd be quite trivial to implement. xfs_mount_log_sb() would be the place to start looking... cheers. -- Nathan From sandeen@sandeen.net Tue Jan 12 21:50:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D3oUXW112059 for ; Tue, 12 Jan 2010 21:50:30 -0600 X-ASG-Debug-ID: 1263354684-6d8b02da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D39D91246F9C for ; Tue, 12 Jan 2010 19:51:25 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id 9yY1PTdFDLnDzSLp for ; Tue, 12 Jan 2010 19:51:25 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 6954C9E7D99; Tue, 12 Jan 2010 21:51:24 -0600 (CST) Message-ID: <4B4D433C.7080501@sandeen.net> Date: Tue, 12 Jan 2010 21:51:24 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: Make the compile output cleaner Subject: Re: [PATCH] xfsprogs: Make the compile output cleaner References: <1263350021-5733-1-git-send-email-david@fromorbit.com> In-Reply-To: <1263350021-5733-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263354685 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19655 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > We don't need to see every compiler command line for every file that > is compiled. This makes it hard to see warnings and errors during > compile. For progress notification, we really only need to see the > diretory/file being operated on. > > Turn down the verbosity of output by suppressing various make output > and provide better overall visibility of which directory is being > operated on, what the operation is and what is being done to the > files by the build/clean process. > > Sample output from a build: > > .... > Building libxlog > [CC] xfs_log_recover.c > [CC] util.c > [LD] libxlog.la > ... swanky! What would you think of this on top of it, ripped straight from kbuild - that way "make V=1" works the same way as kbuild, but the default is still to be quiet. Also, just to show my kbuild bias, maybe consider outputting the target on the quiet line, instead of the source? :) But no biggie. -Eric diff --git a/Makefile b/Makefile index 2fbfb51..46e6a3e 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,20 @@ # # Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved. # -Q ?= @ + +ifeq ("$(origin V)", "command line") + BUILD_VERBOSE = $(V) +endif +ifndef BUILD_VERBOSE + BUILD_VERBOSE = 0 +endif + +ifeq ($(BUILD_VERBOSE),1) + Q = +else + Q = @ +endif + MAKEOPTS = --no-print-directory Q=$(Q) TOPDIR = . diff --git a/include/buildrules b/include/buildrules index a0c77a9..72edc69 100644 --- a/include/buildrules +++ b/include/buildrules @@ -50,11 +50,11 @@ $(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS) $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) %.lo: %.c - @echo " [CC] $<" + @echo " [CC] $@" $(Q)$(LTCOMPILE) -c $< else %.o: %.c - @echo " [CC] $<" + @echo " [CC] $@" $(Q)$(CC) $(CFLAGS) -c $< endif From imaccoll@gmail.com Tue Jan 12 22:23:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_17,J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D4NoFG115384 for ; Tue, 12 Jan 2010 22:23:50 -0600 X-ASG-Debug-ID: 1263356685-39ac006c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yw0-f191.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7D0C51247632 for ; Tue, 12 Jan 2010 20:24:45 -0800 (PST) Received: from mail-yw0-f191.google.com (mail-yw0-f191.google.com [209.85.211.191]) by cuda.sgi.com with ESMTP id G90Q0GGwGlIzHJAG for ; Tue, 12 Jan 2010 20:24:45 -0800 (PST) Received: by ywh29 with SMTP id 29so1118220ywh.32 for ; Tue, 12 Jan 2010 20:24:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:content-type :content-transfer-encoding:subject:date:message-id:cc:to :mime-version:x-mailer; bh=9lb52i+Wvk9uWzwB0aJHtysP4Nq49fvFrZgi2jeumHw=; b=kke0s6XLeULa47ZdCLnFIxYO9mOLjEyyQ3anBdJ4CRAwvOSerM5kvjdT8ktzw7vFgZ EwEx0PABGOLpUWFSUZXPFG2/X0z7fR4ssgb6WiRi60YQgSg1MYu+stoa5c0vnUSbHpep rBFDnPuKGPnbLtvE55KqnhvTP1LC3o7KEnK7Y= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:content-type:content-transfer-encoding:subject:date:message-id :cc:to:mime-version:x-mailer; b=gWFk/PiRKJe91aV0Je2F4LSr+ptgj9x0kMsQDITEC1fpDJhKC5Sn7zHut/ayjlyYnG 7AdTtMIgfbFCXyo031zZaipgiGjxlSpUcoosmj0i5cSqh9vFlEDYokD6uEJnVBSbF5Wr 2SLIJwB8+4TA2cl6IIw3GuqAkAM99/wcQHyJo= Received: by 10.101.184.38 with SMTP id l38mr4351434anp.81.1263356684948; Tue, 12 Jan 2010 20:24:44 -0800 (PST) Received: from ?192.168.1.102? (ppp189-26.static.internode.on.net [150.101.189.26]) by mx.google.com with ESMTPS id 4sm477059ywd.29.2010.01.12.20.24.42 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 12 Jan 2010 20:24:44 -0800 (PST) From: Ian MacColl Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-ASG-Orig-Subj: broken XFS filesystem? Subject: broken XFS filesystem? Date: Wed, 13 Jan 2010 14:24:38 +1000 Message-Id: Cc: Ian MacColl To: xfs@oss.sgi.com Mime-Version: 1.0 (Apple Message framework v1077) X-Mailer: Apple Mail (2.1077) X-Barracuda-Connect: mail-yw0-f191.google.com[209.85.211.191] X-Barracuda-Start-Time: 1263356686 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19657 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello I'm hoping for some suggestions for sorting out a problem with an XFS = filesystem running on top of an mdadm-based linear array. The original hardware was a lacie Ethernet Big Disk (ARM-based Marvell = CPU, I think) with two seagate 500GB disks. The power supply died and = I'm trying to retrieve the files. The array is a backup of a readynas = RAID that has also died (with a more complex setup, so I decided to = start with the lacie). One disk (originally sda) has several partitions including linux root = (sda8) and about half of the main storage (sda2). The other disk = (originally sdb) is unpartitioned and provides the other half of the = main storage. Both disks have been copied without errors to img files which I'm = mounting as loop devices on an Intel Macbook running Debian over vmware. Surprisingly (to me, at least), mdadm --examine reveals an md superblock = on sdb but not sda2, even though sda2 is listed before sdb in = mdadm.conf. The array (md0) can be started via --create with = assume-clean if the underlying volumes are read-write, or via --build if = not. The array can be mounted but much of the directory hierarchy isn't = accessible, giving "Structure needs cleaning" messages. xfs_repair -n reveals many errors, apparently stemming from problems = with superblocks 16 through 31 inclusive (bad magic number, conflicting = geometry, bad sizes, bad flags, and so on). xfs_repair recovers about = 100GB of 700GB, including some parts of the original directory hierarchy = plus a large number of orphaned directories in lost+found, named by = inode. The array comprised of sda2 and sdb (md0) has xfs superblocks, = apparently 0 through 15 from sda2 and 16 through 31 from sdb + sb0 seems sensible + sb1-15 differ from sb0 in that: + rootino, rbmino, rsumino are null (except sb15.rootino is 128) + inprogress is 1 rather than 0 + icount is 0 rather than 324032 + ifree is 0 rather than 854 + fdblocks is 243908608 rather than 71789361 + sb16-23 contain 0s + sb24 contains rubbish + sb25 contains 0s + sb26-31 contain rubbish I'm not sure whether the sb1-15 differences with sb0 are a problem since = I understand sb0 is used operationally and the others are only used for = recovery.=20 For the underlying volumes, xfs_db reveals an xfs superblock on sda2 but = not sdb. On sda2, the superblocks look to be the same as sb0-15 for md0 = (including sb15.rootino value of 128). On sdb, there appears to be an = xfs superblock at offset 0x1EB80000, preceded by 0s. xfs_db gives = sensible results for sb0-15 on a loop device set up at the offset .=20 I'm naively wondering whether this might somehow be related to the = offset and the composition of the array but starting the array with = offset loop device instead of sdb doesn't give anything useful. Also, = nothing in the original config suggests sdb was mounted with a(similar = to sb1-15 on md0) n offset. Walking the inode tree of md0 from the root seems to quickly fall off = the end of the world at the point where traversing the directory fails. = For example: 128 (rootino) 131 share 2281701564 xxx (all 0s/needs cleaning) 132 lacie ... Basically, I'm unsure whether the problem lies with mdadm or xfs. Either = way, I'm after suggestions as to how to proceed (possibly including = advice that I should give up and start on the readynas) regards Ian= From sandeen@sandeen.net Tue Jan 12 22:28:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_72,J_CHICKENPOX_83 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D4SUFb115864 for ; Tue, 12 Jan 2010 22:28:30 -0600 X-ASG-Debug-ID: 1263356964-1f6301030000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 44A2C160C2F for ; Tue, 12 Jan 2010 20:29:24 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id YwtUiS2JKMrFlZwL for ; Tue, 12 Jan 2010 20:29:24 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 060919E7DA3; Tue, 12 Jan 2010 22:29:24 -0600 (CST) Message-ID: <4B4D4C24.9060309@sandeen.net> Date: Tue, 12 Jan 2010 22:29:24 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: Make the compile output cleaner Subject: Re: [PATCH] xfsprogs: Make the compile output cleaner References: <1263350021-5733-1-git-send-email-david@fromorbit.com> <4B4D433C.7080501@sandeen.net> In-Reply-To: <4B4D433C.7080501@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263356966 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19658 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > Dave Chinner wrote: > >> We don't need to see every compiler command line for every file that >> is compiled. This makes it hard to see warnings and errors during >> compile. For progress notification, we really only need to see the >> diretory/file being operated on. >> >> Turn down the verbosity of output by suppressing various make output >> and provide better overall visibility of which directory is being >> operated on, what the operation is and what is being done to the >> files by the build/clean process. >> >> Sample output from a build: >> >> .... >> Building libxlog >> [CC] xfs_log_recover.c >> [CC] util.c >> [LD] libxlog.la >> >> > > ... > > swanky! > > What would you think of this on top of it, ripped straight from > kbuild - that way "make V=1" works the same way as kbuild, but > the default is still to be quiet. > > Also, just to show my kbuild bias, maybe consider outputting the target > on the quiet line, instead of the source? :) But no biggie. > > -Eric > > ok now I'm being a make junkie, but a couple more things are "noisy" Building include [LN] xfs [LN] disk ... Building doc [ZIP] CHANGES.gz Building po [GETTXT] xfsprogs.pot -Eric diff --git a/include/Makefile b/include/Makefile index d89480e..42e7233 100644 --- a/include/Makefile +++ b/include/Makefile @@ -43,7 +43,8 @@ LDIRT = xfs disk default install: xfs disk xfs disk: - $(LN_S) . $@ + @echo " [LN]" $@ + $(Q)$(LN_S) . $@ include $(BUILDRULES) diff --git a/doc/Makefile b/doc/Makefile index 8f65b66..0a6de15 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -13,7 +13,8 @@ default: CHANGES.gz include $(BUILDRULES) CHANGES.gz: - $(ZIP) --best -c < CHANGES > $@ + @echo " [ZIP] $@" + $(Q)$(ZIP) --best -c < CHANGES > $@ install: default $(INSTALL) -m 755 -d $(PKG_DOC_DIR) diff --git a/include/buildrules b/include/buildrules index 72edc69..ba004e6 100644 --- a/include/buildrules +++ b/include/buildrules @@ -61,7 +61,8 @@ endif ifdef POTHEAD $(POTHEAD): $(XGETTEXTFILES) - $(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES) + @echo "[GETTXT] $@" + $(Q)$(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES) # Update translations update-po: $(POTHEAD) $(wildcard $(TOPDIR)/po/*.po) From SRS0+fswH+42+fromorbit.com=david@internode.on.net Tue Jan 12 23:41:01 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D5f1oS121186 for ; Tue, 12 Jan 2010 23:41:01 -0600 X-ASG-Debug-ID: 1263361314-5fd500980000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B462A160DB1 for ; Tue, 12 Jan 2010 21:41:55 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id Bki03FOfwbPuJEP6 for ; Tue, 12 Jan 2010 21:41:55 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11590548-1927428 for multiple; Wed, 13 Jan 2010 16:11:54 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NUvzM-00065L-6K; Wed, 13 Jan 2010 16:41:52 +1100 Date: Wed, 13 Jan 2010 16:41:52 +1100 From: Dave Chinner To: Nathan Scott Cc: Martin Steigerwald , TuxOnIce Devel List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [TuxOnIce-devel] Latest updates. Subject: Re: [TuxOnIce-devel] Latest updates. Message-ID: <20100113054152.GL17483@discord.disaster> References: <2097834991.1721031263351861134.JavaMail.root@mail-au.aconex.com> <643097034.1721341263352154340.JavaMail.root@mail-au.aconex.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <643097034.1721341263352154340.JavaMail.root@mail-au.aconex.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263361316 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19661 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 02:09:14PM +1100, Nathan Scott wrote: > > ----- "Martin Steigerwald" wrote: > > > Please keep CC to TuxOnIce devel list. > > > > > > Hi! > > > > Nigel, who develops the alternative TuxOnIce hibernation / snapshot > > infrastructure, implemented checking last mount time of filesystem as > > a > > safety feature for Ext 2, 3 and 4. > > > > He would like this also for XFS. Does XFS record the last mount time > > somewhere? > > Nope. > > > If not, could this be added? > > Anythings possible ... its a relatively trivial change, and there's room > in the superblock. Could probably even be done without a superblock version > bump - if you were prepared to live with the possibility of finding zero in > the ondisk location & dealing with it appropriately (i.e. last mount time > unknown). > > Guess you'd have to convince the XFS folks doing most of the work these > days, but really it'd be quite trivial to implement. xfs_mount_log_sb() > would be the place to start looking... Agreed that it is trivial to implement but there are still some definite traps - like the fact the sb change transaction may be logged immediately but the physical superblock may not get written for some time after the mount. Really it comes down to the interface used to read the mount time fromt eh superblock at suspend and resume - can anyone tell me what that is or point me at the code? Personally I don't see why this needs to be in the superblock - an extended attribute on the root directory of the root filesystem that is written: a) by a startup script at boot time; b) by the suspend code; c) copied into the suspend image; and d) read and verified during resume seems sufficient to me to provide what you want. This has the benefit of being completely filesystem independent and doesn't require on-disk format changes for every filesystem that ppl want TuxOnIce to supprt. Cheers, Dave. -- Dave Chinner david@fromorbit.com From nscott@aconex.com Wed Jan 13 00:04:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D64VHP125104 for ; Wed, 13 Jan 2010 00:04:31 -0600 X-ASG-Debug-ID: 1263362725-7e0e01be0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postoffice2.aconex.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 18CD61C49DFF for ; Tue, 12 Jan 2010 22:05:25 -0800 (PST) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id xTYWGKVxApoOjPBW for ; Tue, 12 Jan 2010 22:05:25 -0800 (PST) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam & Virus Firewall) with ESMTP id C2111189EC0; Wed, 13 Jan 2010 17:05:23 +1100 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id GxPtz6e33yFQKSFE; Wed, 13 Jan 2010 17:05:23 +1100 (EST) Received: from gatekeeper.aconex.com (gatekeeper.yarra.acx [192.168.102.10]) by postoffice.aconex.com (Postfix) with ESMTP id BE96BA50133; Wed, 13 Jan 2010 17:03:11 +1100 (EST) Received: from localhost (localhost.localdomain [127.0.0.1]) by gatekeeper.aconex.com (Postfix) with ESMTP id 9F3A9488305; Wed, 13 Jan 2010 17:05:23 +1100 (EST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at aconex.com Received: from gatekeeper.aconex.com ([127.0.0.1]) by localhost (gatekeeper.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3nYjL1ipJ2HT; Wed, 13 Jan 2010 17:05:18 +1100 (EST) Received: from mail-au.aconex.com (mail-au.aconex.com [192.168.102.12]) by gatekeeper.aconex.com (Postfix) with ESMTP id D90A7488300; Wed, 13 Jan 2010 17:05:18 +1100 (EST) Date: Wed, 13 Jan 2010 17:05:18 +1100 (EST) From: Nathan Scott To: Dave Chinner Cc: Martin Steigerwald , TuxOnIce Devel List , xfs@oss.sgi.com Message-ID: <99724068.1731191263362718752.JavaMail.root@mail-au.aconex.com> In-Reply-To: <20100113054152.GL17483@discord.disaster> X-ASG-Orig-Subj: Re: [TuxOnIce-devel] Latest updates. Subject: Re: [TuxOnIce-devel] Latest updates. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [203.89.192.141] X-Mailer: Zimbra 5.0.18_GA_3011.RHEL5_64 (ZimbraWebClient - [unknown] (Linux)/5.0.18_GA_3011.RHEL5_64) X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1263362727 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19663 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean [Looks like tuxonice is a subscriber-only list...] ----- "Dave Chinner" wrote: > On Wed, Jan 13, 2010 at 02:09:14PM +1100, Nathan Scott wrote: > > > > Agreed that it is trivial to implement but there are still some > definite traps - like the fact the sb change transaction may be > logged > immediately but the physical superblock may not get written for some > time after the mount. *nod* ... it will be written when unmounted though... > > Really it comes down to the interface used to read the mount time > fromt eh superblock at suspend and resume - can anyone tell me what > that is or point me at the code? (not me!) > Personally I don't see why this needs to be in the superblock - an > extended attribute on the root directory of the root filesystem that > is written: Yeah, that was my first thought too, but I suspect they want to be able to query this when the filesystem is unmounted; in which case the interface is probably "read a fs-specific magic spot ondisk". For this not-mounted query, the EA route would be incredibly painful. cheers. -- Nathan From SRS0+NbkC+42+fromorbit.com=david@internode.on.net Wed Jan 13 00:35:10 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D6Z9e4127464 for ; Wed, 13 Jan 2010 00:35:09 -0600 X-ASG-Debug-ID: 1263364563-66a902750000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C0030160ED3 for ; Tue, 12 Jan 2010 22:36:04 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id g2MHvEGAirgK8L5Z for ; Tue, 12 Jan 2010 22:36:04 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11652479-1927428 for multiple; Wed, 13 Jan 2010 17:06:02 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NUwpl-00068T-73; Wed, 13 Jan 2010 17:36:01 +1100 Date: Wed, 13 Jan 2010 17:36:01 +1100 From: Dave Chinner To: Ian MacColl Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: broken XFS filesystem? Subject: Re: broken XFS filesystem? Message-ID: <20100113063601.GM17483@discord.disaster> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263364565 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19665 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 02:24:38PM +1000, Ian MacColl wrote: > Hello > > I'm hoping for some suggestions for sorting out a problem with an > XFS filesystem running on top of an mdadm-based linear array. > > The original hardware was a lacie Ethernet Big Disk (ARM-based > Marvell CPU, I think) with two seagate 500GB disks. The power > supply died and I'm trying to retrieve the files. The array is a > backup of a readynas RAID that has also died (with a more complex > setup, so I decided to start with the lacie). > > One disk (originally sda) has several partitions including linux > root (sda8) and about half of the main storage (sda2). The other > disk (originally sdb) is unpartitioned and provides the other half > of the main storage. > > Both disks have been copied without errors to img files which I'm > mounting as loop devices on an Intel Macbook running Debian over > vmware. > > Surprisingly (to me, at least), mdadm --examine reveals an md > superblock on sdb but not sda2, even though sda2 is listed before > sdb in mdadm.conf. The array (md0) can be started via --create > with assume-clean if the underlying volumes are read-write, or via > --build if not. The array can be mounted but much of the directory > hierarchy isn't accessible, giving "Structure needs cleaning" > messages. OK, to summarise up to this point - you have a md array of some kind from an ARM system that you are not sure has assembled correctly, and you are trying to recover it on an x86/x86_64 machine? First issue: up until a 2.6.27 ARM kernels had a different directory structure on disk to all other platforms which meant it can't easily be recovered on x86. What version of the kernel was the box running? Second issue - what type of md array was it? RAID0, RAID1, etc? Are you sure that it had MD in use - maybe it used DM to construct a linear concatenation of the two drives, and the md superblock is stale? > xfs_repair -n reveals many errors, apparently stemming from > problems with superblocks 16 through 31 inclusive (bad magic > number, conflicting geometry, bad sizes, bad flags, and so on). > xfs_repair recovers about 100GB of 700GB, including some parts of > the original directory hierarchy plus a large number of orphaned > directories in lost+found, named by inode. > > The array comprised of sda2 and sdb (md0) has xfs superblocks, > apparently 0 through 15 from sda2 and 16 through 31 from sdb > > + sb0 seems sensible > + sb1-15 differ from sb0 in that: > + rootino, rbmino, rsumino are null (except sb15.rootino is 128) > + inprogress is 1 rather than 0 > + icount is 0 rather than 324032 > + ifree is 0 rather than 854 > + fdblocks is 243908608 rather than 71789361 This looks normal - mkfs writes more information to the middle SB (15 in this case) and the last one for recovery, and all the secondary superblocks don't get icount/ifree updated. The difference in fdblocks is curious, though - did you grow the filesystem at some point? > + sb16-23 contain 0s > + sb24 contains rubbish > + sb25 contains 0s > + sb26-31 contain rubbish This indicates the second half of the filesystem has not been reconstructed properly. That points to this not being a mirror but a linear concatenation of two devices (i.e. more capacity available in the single filesytem that a single disk in the machine provides). > I'm not sure whether the sb1-15 differences with sb0 are a problem > since I understand sb0 is used operationally and the others are > only used for recovery. > > For the underlying volumes, xfs_db reveals an xfs superblock on > sda2 but not sdb. On sda2, the superblocks look to be the same as > sb0-15 for md0 (including sb15.rootino value of 128). On sdb, > there appears to be an xfs superblock at offset 0x1EB80000, > preceded by 0s. xfs_db gives sensible results for sb0-15 on a > loop device set up at the offset. Ok, that's 0xf5c00 (1,006,592) sectors offset into the disk. An offset of about 500k.. And this really does point to a setup using a DM linear concatenation to join the two disks together. Work out how big sda2 is in 512 byte sectors, and work out how big (sdb in 512 byte sectors) - 0xf5c00 is, and build a dmtable file like replacing the obvious variables with the real values: # start offset size, join mode, device, device offset 0 sizeof_sda2 linear /dev/sda2 0 sizeof_sda2 sizeof_sda2+sizeof_sdb linear /dev/sdb 1006592 And the use dmsetup to create it. dmsetup doesn't write anything to the disks so it should be safe to do. If you are actually using mirroring (RAID1), then don't build a linear concatenation but use a similar trick to build a mapped device starting at the offset 0xfc500 and them point md at the mapped device and sda2. IIRC, mdadm puts superblocks at the end of the device, so you might be able to calculate the end offset of sdb from the location of that superblock on disk.... Once that is done, you can start to look at whether sb16 in the dm volume is at the right offset. hopefully it will be right offset, but you can vary it by modifying the size of sda2 in the dmtable file and reconstructing the device. If this works, you might be able to access the entire filesystem again, and depending on the ARM kernel version your device was running, you might even be able to read the entire filesystem. Hope this helps... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+Jm1y+42+fromorbit.com=david@internode.on.net Wed Jan 13 00:56:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D6uo5Y128954 for ; Wed, 13 Jan 2010 00:56:50 -0600 X-ASG-Debug-ID: 1263365863-01d0025f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0BD02124783F for ; Tue, 12 Jan 2010 22:57:43 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id WGZbHPirmEZJUZ19 for ; Tue, 12 Jan 2010 22:57:43 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11353586-1927428 for multiple; Wed, 13 Jan 2010 17:27:42 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NUxAi-00069U-7i; Wed, 13 Jan 2010 17:57:40 +1100 Date: Wed, 13 Jan 2010 17:57:40 +1100 From: Dave Chinner To: Nathan Scott Cc: Martin Steigerwald , TuxOnIce Devel List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [TuxOnIce-devel] Latest updates. Subject: Re: [TuxOnIce-devel] Latest updates. Message-ID: <20100113065740.GN17483@discord.disaster> References: <20100113054152.GL17483@discord.disaster> <99724068.1731191263362718752.JavaMail.root@mail-au.aconex.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <99724068.1731191263362718752.JavaMail.root@mail-au.aconex.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263365866 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19666 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 05:05:18PM +1100, Nathan Scott wrote: > [Looks like tuxonice is a subscriber-only list...] > > ----- "Dave Chinner" wrote: > > > On Wed, Jan 13, 2010 at 02:09:14PM +1100, Nathan Scott wrote: > > > > > > Agreed that it is trivial to implement but there are still some > > definite traps - like the fact the sb change transaction may be > > logged > > immediately but the physical superblock may not get written for some > > time after the mount. > > *nod* ... it will be written when unmounted though... suspend in the kernel doesn't unmount filesystems. I have no idea what tuxonice does these days, but last time I heard it left them mounted but frozen over the suspend/resume cycle. > > Really it comes down to the interface used to read the mount time > > fromt eh superblock at suspend and resume - can anyone tell me what > > that is or point me at the code? > > (not me!) > > > Personally I don't see why this needs to be in the superblock - an > > extended attribute on the root directory of the root filesystem that > > is written: > > Yeah, that was my first thought too, but I suspect they want to be > able to query this when the filesystem is unmounted; in which case > the interface is probably "read a fs-specific magic spot ondisk". > For this not-mounted query, the EA route would be incredibly painful. I know, but it's the "read from the magic spot on disk" approach that I'm most concerned about. It's so easy to implement, but oh so easy get wrong because block device access is not coherent with the filesystem. Not to mention that if we change the format of the "magic spot" then the application breaks, whereas that will not happen if access is via extended attributes. Essentially, I don't want to see another boot related, filesystem interacting application having random problems with XFS and then doing stupid stuff to try to work around problems caused by fundamentally broken assumptions made by the application. IMO, learning from the mistakes the world's most screwed up bootlader (grub) made is a good idea.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+NbkC+42+fromorbit.com=david@internode.on.net Wed Jan 13 02:10:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D8AmaD134205 for ; Wed, 13 Jan 2010 02:10:49 -0600 X-ASG-Debug-ID: 1263370302-367e02f80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DBF781C4992B for ; Wed, 13 Jan 2010 00:11:43 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id P7ppP21mJNhuSyoz for ; Wed, 13 Jan 2010 00:11:43 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11478941-1927428 for multiple; Wed, 13 Jan 2010 18:41:42 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NUyKK-0006DU-8C; Wed, 13 Jan 2010 19:11:40 +1100 Date: Wed, 13 Jan 2010 19:11:40 +1100 From: Dave Chinner To: Nathan Scott Cc: TuxOnIce Devel List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [TuxOnIce-devel] Latest updates. Subject: Re: [TuxOnIce-devel] Latest updates. Message-ID: <20100113081140.GO17483@discord.disaster> References: <20100113054152.GL17483@discord.disaster> <99724068.1731191263362718752.JavaMail.root@mail-au.aconex.com> <20100113065740.GN17483@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100113065740.GN17483@discord.disaster> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263370304 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19670 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 05:57:40PM +1100, Dave Chinner wrote: > On Wed, Jan 13, 2010 at 05:05:18PM +1100, Nathan Scott wrote: > > [Looks like tuxonice is a subscriber-only list...] > > > > ----- "Dave Chinner" wrote: > > > > > On Wed, Jan 13, 2010 at 02:09:14PM +1100, Nathan Scott wrote: > > > > > > > > Agreed that it is trivial to implement but there are still some > > > definite traps - like the fact the sb change transaction may be > > > logged > > > immediately but the physical superblock may not get written for some > > > time after the mount. > > > > *nod* ... it will be written when unmounted though... > > suspend in the kernel doesn't unmount filesystems. I have no idea > what tuxonice does these days, but last time I heard it left them > mounted but frozen over the suspend/resume cycle. I found the code - it doesn't unmount filesystems. The git tree is here: http://git.kernel.org/?p=linux/kernel/git/nigelc/tuxonice-head.git;a=summary It appears that it walks the list of superblocks to grab the block device off each mounted superblock to do it's work, so I don't see any fundamental problem with using an attribute hanging off sb->s_root to hold the boot time... Cheers, Dave. -- Dave Chinner david@fromorbit.com From ncunningham@crca.org.au Wed Jan 13 02:42:16 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D8gG8s136449 for ; Wed, 13 Jan 2010 02:42:16 -0600 X-ASG-Debug-ID: 1263372191-585a011b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from crca.org.au (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 235F31611FD for ; Wed, 13 Jan 2010 00:43:11 -0800 (PST) Received: from crca.org.au (mail.crca.org.au [67.207.131.56]) by cuda.sgi.com with ESMTP id ng1RIRqb21UROEoj for ; Wed, 13 Jan 2010 00:43:11 -0800 (PST) X-Bogosity: Ham, spamicity=0.000000 Received: from [192.168.0.170] (unknown [121.90.104.196]) by crca.org.au (Postfix) with ESMTPSA id 380A516119D; Wed, 13 Jan 2010 08:43:02 +0000 (UTC) Message-ID: <4B4D87D8.5050900@crca.org.au> Date: Wed, 13 Jan 2010 19:44:08 +1100 From: Nigel Cunningham User-Agent: Thunderbird 2.0.0.23 (X11/20090817) MIME-Version: 1.0 To: Dave Chinner CC: Nathan Scott , TuxOnIce Devel List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [TuxOnIce-devel] Latest updates. Subject: Re: [TuxOnIce-devel] Latest updates. References: <20100113054152.GL17483@discord.disaster> <99724068.1731191263362718752.JavaMail.root@mail-au.aconex.com> <20100113065740.GN17483@discord.disaster> <20100113081140.GO17483@discord.disaster> In-Reply-To: <20100113081140.GO17483@discord.disaster> X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail.crca.org.au[67.207.131.56] X-Barracuda-Start-Time: 1263372192 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19672 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi. Dave Chinner wrote: > On Wed, Jan 13, 2010 at 05:57:40PM +1100, Dave Chinner wrote: >> On Wed, Jan 13, 2010 at 05:05:18PM +1100, Nathan Scott wrote: >>> [Looks like tuxonice is a subscriber-only list...] >>> >>> ----- "Dave Chinner" wrote: >>> >>>> On Wed, Jan 13, 2010 at 02:09:14PM +1100, Nathan Scott wrote: >>>> Agreed that it is trivial to implement but there are still some >>>> definite traps - like the fact the sb change transaction may be >>>> logged >>>> immediately but the physical superblock may not get written for some >>>> time after the mount. >>> *nod* ... it will be written when unmounted though... >> suspend in the kernel doesn't unmount filesystems. I have no idea >> what tuxonice does these days, but last time I heard it left them >> mounted but frozen over the suspend/resume cycle. > > I found the code - it doesn't unmount filesystems. The git tree is > here: > > http://git.kernel.org/?p=linux/kernel/git/nigelc/tuxonice-head.git;a=summary > > It appears that it walks the list of superblocks to grab the block > device off each mounted superblock to do it's work, so I don't see > any fundamental problem with using an attribute hanging off > sb->s_root to hold the boot time... Yeah. The idea is to have very simple code that looks at a fixed number of bytes at a known offset into the partition. The value of the bytes is stored in the image header, and compared prior to starting to resume. If the data is different, we assume the filesystem has been mounted since the image was written and it's unsafe to resume. It doesn't _need_ to be a time - just something that's guaranteed to have changed if the filesystem gets mounted afresh. By the way, sorry for the slow replies so far and for slow ones in the coming 24 hours. I'm on holidays and my father-in-law's funeral is tomorrow. Nigel From chingimleong@yahoo.com.sg Wed Jan 13 03:41:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0D9fOrh140660 for ; Wed, 13 Jan 2010 03:41:24 -0600 X-ASG-Debug-ID: 1263375737-0bbc018d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web76206.mail.sg1.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id E504B1247CFD for ; Wed, 13 Jan 2010 01:42:17 -0800 (PST) Received: from web76206.mail.sg1.yahoo.com (web76206.mail.sg1.yahoo.com [124.108.115.130]) by cuda.sgi.com with SMTP id P35endXIGzkzBECI for ; Wed, 13 Jan 2010 01:42:17 -0800 (PST) Received: (qmail 12100 invoked by uid 60001); 13 Jan 2010 09:42:16 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com.sg; s=s1024; t=1263375736; bh=QpyizeS+eAvbutLkdGdBtYEaXbV9pnEDoOEivwY+19E=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=O/qtF46wh/8zynwAQkYfvnl4eFucRPWKVJgSF+0BqIgaBOxwWW2Fjo2Pdj3T0MJ337QGyGwe9dAzhvCsLVs2KW2AmgxmeUjbBdYeaHsdCsnQr2pVRboXQ1IMV27P0W6MK9i4fBvmqlZtkSX1eYlLgXvrgpPRTy0ZkdHCh5nqppM= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com.sg; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=zGnZgC3I4BIjIci/fni5n7CY4OQ7U1X/wtNx8wSf8JBIiF6uSJawhaUJ7EcBKiIvFT3/Mu4WuCJthr+l1asle3rx1uztP0HPZaLjmyXyUO2sRRu6ODNl/aAgEPK7ElScL71Y8lKs+r+H3SitPjPJeXJnmqhuhaOM0D35kURl3KM=; Message-ID: <348821.11898.qm@web76206.mail.sg1.yahoo.com> X-YMail-OSG: 8tgp6ogVM1nMzx8ufqTnHQTPGjhAy5NGLsgFEl4aE2SmecDKhBlLUF_1oguXG0JjAO6yskq7UJP4Ho4FHQnA7LMpBGMZXr9K7UZHOB2wKQLwwL.GXZjQKHDO5oPfSsu4NTYSoP7bO6c4Hzl2roIHG7JokhPSV84E3zafGgbm6LTX2.EOmWKs8WDWii1Z6MdDrSyl19hhDBQt.8DmOYvyDI3OQUez51xJQsw_Y_nq.C85aGPYvmZgXT.cufJF6K9wQDOctXzh.V_0a67g6iclOGsq_bjBqlcaLcIBnb4cZQFX_fu2Qt7Q.0QPXPhtNKAnq4n1OejuCAS6g3jioH7OPpY9O9rZTPDF2jOyHZkgWySZwtcv.qMBQobJZeRjaMX9bDs.axd2.ArvJM_xYM4c2CIq3L7l7TSS64l_6TqKtDOP1W8C9dcQ49cwWvbnzTHQTRXirgSCKVIPHygovZRNvWCIk9aFvFVL7Ti5YSUJ Received: from [192.122.131.20] by web76206.mail.sg1.yahoo.com via HTTP; Wed, 13 Jan 2010 17:42:16 SGT X-Mailer: YahooMailClassic/9.0.20 YahooMailWebService/0.8.100.260964 Date: Wed, 13 Jan 2010 17:42:16 +0800 (SGT) From: Gim Leong Chin X-ASG-Orig-Subj: Re: allocsize mount option Subject: Re: allocsize mount option To: Eric Sandeen Cc: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: web76206.mail.sg1.yahoo.com[124.108.115.130] X-Barracuda-Start-Time: 1263375739 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19675 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi,=0A=0A=0AThe application is ANSYS, which writes 128 GB files.=A0 The exi= sting computer with SUSE Linux Enterprise Desktop 11 which is used for runn= ing ANSYS, has two software RAID 0 devices made up of five 1 TB drives.=A0 = The /home partition is 4.5 T, and it is now 4 TB full.=A0 I see a fragmenta= tion > 19%.=0A=0A=0AI have just set up a new computer with 16 WD Cavair Bla= ck 1 TB drives connected to an Areca 1680ix-16 RAID with 4 GB cache.=A0 14 = of these drives are in RAID 6 with 128 kB stripes. The OS is also SLED 11.= The system has 16 GB memory, and AMD Phenom II X4 965 CPU.=0A=0AI have do= ne tests writing 100 30 MB files and 1 GB, 10 GB and 20 GB files, with sing= le instance and multiple instances.=0A=0AThere is a big difference in writi= ng speed when=A0writing 20 GB files when using allocsize=3D1g and not using= the option. That is without the inode64 option, which gives further speed= gains.=0A=0AI use dd for writing the 1 GB, 10 GB and 20 GB files.=0A=0Amkf= s.xfs -f -b size=3D4k -d agcount=3D32,su=3D128k,sw=3D12 -i size=3D256,align= =3D1,attr=3D2 -l version=3D2,su=3D128k,lazy-count=3D1 -n version=3D2 -s siz= e=3D512 -L /data /dev/sdb1=0A=0A=0Adefaults,nobarrier,usrquota,grpquota,noa= time,nodiratime,allocsize=3D1g,logbufs=3D8,logbsize=3D256k,largeio,swalloc= =0A=0AThe start of the partition has been set to LBA 3072 using GPT Fdisk t= o align the stripes.=0A=0AThe dd command is:=0A=0Achingl@tsunami:/data/test= /t2> dd if=3D/dev/zero of=3Dbigfile20GB bs=3D1073741824 count=3D20=0A=0ASin= gle instance of 20 GB dd repeats were 214, 221, 123 MB/s with allocsize=3D1= g, compared to 94, 126 MB/s without.=0A=0ATwo instances of 20 GB dd repeats= were aggregate 331, 372 MB/s with allocsize=3D1g, compared to 336, 296 MB/= s without.=0A=0AThree instances of 20 GB dd was aggregate 400 MB/s with, 32= 6 MB/s without.=0A=0ASix instances of 20 GB dd was 606 MB/s with, 473 MB/s = without.=0A=0A=0AMy production configuration is=0A=0Adefaults,nobarrier,usr= quota,grpquota,noatime,nodiratime,allocsize=3D1g,logbufs=3D8,logbsize=3D256= k,largeio,swalloc,inode64=0A=0Afor which I got up to 297 MB/s for single in= stance 20 GB dd.=0A=0A=0A=0AChin Gim Leong=0A=0A=0A--- On Tue, 12/1/10, Eri= c Sandeen wrote:=0A=0A> From: Eric Sandeen =0A> Subject: Re: allocsize mount option=0A> To: "Gim Leong Chin= " =0A> Cc: xfs@oss.sgi.com=0A> Date: Tuesday, 12= January, 2010, 2:16 AM=0A> Gim Leong Chin wrote:=0A> > Hi,=0A> > =0A> > Mo= unt options for xfs allocsize=3Dsize Sets=A0 the=0A> buffered I/O=0A> > end= -of-file preallocation size when doing delayed=0A> allocation writeout=0A> = > (default size is 64KiB).=0A> > =0A> > =0A> > I read that setting allocsiz= e to a big value can be=0A> used to combat=0A> > filesystem fragmentation w= hen writing big files.=0A> =0A> That's not universally necessary though, de= pending on how=0A> you are=0A> writing them.=A0 I've only used it in the ve= ry specific=0A> case of mythtv=0A> calling "sync" every couple seconds, and= defeating=0A> delalloc.=0A> =0A> > I do not understand how allocsize works= .=A0 Say I=0A> set allocsize=3D1g, but=0A> > my file size is only 1 MB or e= ven smaller.=A0 Will=0A> the rest of the 1 GB=0A> > file extent be allocate= d, resulting in wasted space=0A> and even file=0A> > fragmentation problem?= =0A> =0A> possibly :)=A0 It's only speculatively allocated,=0A> though, so = you won't=0A> have 1g for every file; when it's closed the preallocation=0A= > goes=0A> away, IIRC.=0A> =0A> > Does setting allocsize to a big value res= ult in=0A> performance gain when=0A> > writing big files?=A0 Is performance= hurt by a big=0A> value setting when=0A> > writing files smaller than the = allocsize value?=0A> > =0A> > I am setting up a system for HPC, where two d= ifferent=0A> applications=0A> > have different file size characteristics, o= ne writes=0A> files of GBs and=0A> > even 128 GB, the other is in MBs to te= ns of MBs.=0A> =0A> We should probably back up and say:=A0 are you seeing= =0A> fragmentation=0A> problems -without- the mount option, and if so, what= is=0A> your write pattern?=0A> =0A> -Eric=0A> =0A> > I am not able to find= documentation on the behaviour=0A> of allocsize=0A> > mount option.=0A> > = =0A> > Thank you.=0A> > =0A> > =0A> > Chin Gim Leong=0A> > =0A> > =0A> > Ne= w Email names for you! Get the Email name you've=0A> always wanted=0A> > on= the new @ymail and @rocketmail. Hurry before=0A> someone else does! =0A> >= http://mail.promotions.yahoo.com/newdomains/sg/=0A> > =0A> > _____________= __________________________________ xfs=0A> mailing list =0A> > xfs@oss.sgi.= com http://oss.sgi.com/mailman/listinfo/xfs=0A> > =0A> =0A> _______________= ________________________________=0A> xfs mailing list=0A> xfs@oss.sgi.com= =0A> http://oss.sgi.com/mailman/listinfo/xfs=0A>=0A=0A=0A=0A New Email= addresses available on Yahoo!=0AGet the Email name you've always wante= d on the new @ymail and @rocketmail. =0AHurry before someone else does!=0Ah= ttp://mail.promotions.yahoo.com/newdomains/sg/ From SRS0+ENds+42+fromorbit.com=dave@internode.on.net Wed Jan 13 04:06:48 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_63,J_CHICKENPOX_65,J_CHICKENPOX_66,J_CHICKENPOX_72,URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DA6lps142961 for ; Wed, 13 Jan 2010 04:06:48 -0600 X-ASG-Debug-ID: 1263377261-125702100000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1554316148D for ; Wed, 13 Jan 2010 02:07:41 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id zXFuIIs0KoE7ARRt for ; Wed, 13 Jan 2010 02:07:41 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11361509-1927428 for ; Wed, 13 Jan 2010 20:37:40 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NV08Y-0006Kp-J8 for xfs@oss.sgi.com; Wed, 13 Jan 2010 21:07:38 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NV04V-0001BQ-Gc for xfs@oss.sgi.com; Wed, 13 Jan 2010 21:03:27 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: Make the compile output cleaner V2 Subject: [PATCH] xfsprogs: Make the compile output cleaner V2 Date: Wed, 13 Jan 2010 21:03:27 +1100 Message-Id: <1263377007-4500-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263377263 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19676 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We don't need to see every compiler command line for every file that is compiled. This makes it hard to see warnings and errors during compile. For progress notification, we really only need to see the diretory/file being operated on. Turn down the verbosity of output by suppressing various make output and provide better overall visibility of which directory is being operated on, what the operation is and what is being done to the files by the build/clean process. Also fix the top level clean rule so that we don't run configure scripts after a make clean, only after a make distclean. Sample output from a build: .... Building libxlog [CC] xfs_log_recover.c [CC] util.c [LD] libxlog.la Building libxcmd [CC] command.c [CC] input.c [CC] paths.c [CC] projects.c [CC] help.c [CC] quit.c [LD] libxcmd.la .... Sample output from cleaning: $ make clean Cleaning include Cleaning libxfs Cleaning libxlog Cleaning libxcmd Cleaning libhandle Cleaning libdisk Cleaning copy Cleaning db .... If you want to see a noisy build (i.e. every command), use: $ make Q= and that will output all the commands that are now suppressed by default. Portions of this patch were contributed by Eric Sandeen. Signed-off-by: Dave Chinner --- Makefile | 43 +++++++++++++++++++++++++++++-------------- doc/Makefile | 3 ++- include/Makefile | 3 ++- include/buildmacros | 10 +++++----- include/buildrules | 30 +++++++++++++++++++++--------- mkfs/Makefile | 3 ++- 6 files changed, 61 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index 2d394e4..62c4258 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,21 @@ # Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved. # +ifeq ("$(origin V)", "command line") + BUILD_VERBOSE = $(V) +endif +ifndef BUILD_VERBOSE + BUILD_VERBOSE = 0 +endif + +ifeq ($(BUILD_VERBOSE),1) + Q = +else + Q = @ +endif + +MAKEOPTS = --no-print-directory Q=$(Q) + TOPDIR = . HAVE_BUILDDEFS = $(shell test -f $(TOPDIR)/include/builddefs && echo yes || echo no) @@ -15,7 +30,7 @@ SRCTAR = $(PKG_NAME)-$(PKG_VERSION).tar.gz CONFIGURE = aclocal.m4 configure config.guess config.sub install-sh ltmain.sh LSRCFILES = configure.in release.sh README VERSION $(CONFIGURE) -LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ +DISTDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ built .census install.* install-dev.* *.gz autom4te.cache/* libtool \ include/builddefs include/platform_defs.h @@ -36,9 +51,9 @@ SUBDIRS = include $(LIB_SUBDIRS) $(TOOL_SUBDIRS) default: include/builddefs include/platform_defs.h ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SUBDIRS) + $(Q)$(MAKE) $(MAKEOPTS) $(SUBDIRS) endif # tool/lib dependencies @@ -80,7 +95,7 @@ include/platform_defs.h: include/builddefs ## Recover from the removal of $@ @if test -f $@; then :; else \ rm -f include/builddefs; \ - $(MAKE) $(AM_MAKEFLAGS) include/builddefs; \ + $(MAKE) $(MAKEOPTS) $(AM_MAKEFLAGS) include/builddefs; \ fi install: default $(addsuffix -install,$(SUBDIRS)) @@ -101,29 +116,29 @@ install-qa: install $(addsuffix -install-qa,$(SUBDIRS)) $(MAKE) -C $* install-qa distclean: clean - rm -f $(LDIRT) + $(Q)rm -f $(DISTDIRT) realclean: distclean - rm -f $(CONFIGURE) + $(Q)rm -f $(CONFIGURE) # # All this gunk is to allow for a make dist on an unconfigured tree # dist: include/builddefs include/platform_defs.h default ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SRCTAR) + $(Q)$(MAKE) $(MAKEOPTS) $(SRCTAR) endif deb: include/builddefs include/platform_defs.h ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SRCDIR) - $(MAKE) -C po - $(MAKE) source-link - cd $(SRCDIR) && dpkg-buildpackage + $(Q)$(MAKE) $(MAKEOPTS) $(SRCDIR) + $(Q)$(MAKE) $(MAKEOPTS) -C po + $(Q)$(MAKE) $(MAKEOPTS) source-link + $(Q)cd $(SRCDIR) && dpkg-buildpackage endif $(SRCDIR) : $(_FORCE) @@ -131,6 +146,6 @@ $(SRCDIR) : $(_FORCE) mkdir -p $@ $(SRCTAR) : default $(SRCDIR) - $(MAKE) source-link + $(Q)$(MAKE) $(MAKEOPTS) source-link unset TAPE; $(TAR) -cf - $(SRCDIR) | $(ZIP) --best > $@ && \ echo Wrote: $@ diff --git a/doc/Makefile b/doc/Makefile index 8f65b66..86ac2ca 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -13,7 +13,8 @@ default: CHANGES.gz include $(BUILDRULES) CHANGES.gz: - $(ZIP) --best -c < CHANGES > $@ + @echo " [ZIP] $@" + $(Q)$(ZIP) --best -c < CHANGES > $@ install: default $(INSTALL) -m 755 -d $(PKG_DOC_DIR) diff --git a/include/Makefile b/include/Makefile index d89480e..bc787db 100644 --- a/include/Makefile +++ b/include/Makefile @@ -43,7 +43,8 @@ LDIRT = xfs disk default install: xfs disk xfs disk: - $(LN_S) . $@ + @echo " [LN] $@" + $(Q)$(LN_S) . $@ include $(BUILDRULES) diff --git a/include/buildmacros b/include/buildmacros index 099570f..62babca 100644 --- a/include/buildmacros +++ b/include/buildmacros @@ -13,7 +13,7 @@ LDFLAGS += $(LOADERFLAGS) $(LLDFLAGS) LTLDFLAGS += $(LOADERFLAGS) LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB) -MAKEOPTS = --no-print-directory +MAKEOPTS = --no-print-directory Q=$(Q) SRCFILES = Makefile $(HFILES) $(CFILES) $(LSRCFILES) $(LFILES) $(YFILES) SRCFILES += $(QAHFILES) @@ -45,10 +45,10 @@ LIBNAME = $(basename $(LTLIBRARY)) LTOBJECTS = $(OBJECTS:.o=.lo) LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -LTLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) -LTEXEC = $(LIBTOOL) --mode=execute -LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CCF) +LTLINK = $(LIBTOOL) --quiet --tag=CC --mode=link $(CC) +LTEXEC = $(LIBTOOL) --quiet --mode=execute +LTINSTALL = $(LIBTOOL) --quiet --mode=install $(INSTALL) +LTCOMPILE = $(LIBTOOL) --quiet --tag=CC --mode=compile $(CCF) ifeq ($(ENABLE_SHARED),yes) LTLDFLAGS += -rpath $(PKG_ROOT_LIB_DIR) diff --git a/include/buildrules b/include/buildrules index a06d480..464dfe3 100644 --- a/include/buildrules +++ b/include/buildrules @@ -7,10 +7,11 @@ _BUILDRULES_INCLUDED_ = 1 include $(TOPDIR)/include/builddefs clean clobber : $(addsuffix -clean,$(SUBDIRS)) - rm -f $(DIRT) - rm -fr $(DIRDIRT) + $(Q)rm -f $(DIRT) + $(Q)rm -fr $(DIRDIRT) %-clean: - $(MAKE) -C $* clean + @echo "Cleaning $*" + $(Q)$(MAKE) $(MAKEOPTS) -C $* clean # Never blow away subdirs ifdef SUBDIRS @@ -18,7 +19,8 @@ ifdef SUBDIRS .PHONY: $(SUBDIRS) $(SUBDIRS): - $(MAKE) -C $@ + @echo "Building $@" + $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@ endif source-link: @@ -38,20 +40,29 @@ source-link: ifdef LTCOMMAND $(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES) - $(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) + @echo " [LD] $@" + $(Q)$(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) endif ifdef LTLIBRARY $(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS) - $(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) + @echo " [LD] $@" + $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) %.lo: %.c - $(LTCOMPILE) -c $< + @echo " [CC] $@" + $(Q)$(LTCOMPILE) -c $< +else +%.o: %.c + @echo " [CC] $@" + $(Q)$(CC) $(CFLAGS) -c $< + endif ifdef POTHEAD $(POTHEAD): $(XGETTEXTFILES) - $(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES) + @echo " [GETTXT] $@" + $(Q)$(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES) # Update translations update-po: $(POTHEAD) $(wildcard $(TOPDIR)/po/*.po) @@ -70,7 +81,8 @@ update-po: $(POTHEAD) $(wildcard $(TOPDIR)/po/*.po) done %.mo: %.po - $(MSGFMT) -c --statistics -o $@ $< + @echo " [MSGFMT] $@" + $(Q)$(MSGFMT) -c --statistics -o $@ $< endif endif # _BUILDRULES_INCLUDED_ diff --git a/mkfs/Makefile b/mkfs/Makefile index 9fcadf2..a749262 100644 --- a/mkfs/Makefile +++ b/mkfs/Makefile @@ -36,7 +36,8 @@ endif include $(BUILDRULES) $(FSTYP): - $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBDISK) $(PLDLIBS) + @echo " [CC] $@" + $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBDISK) $(PLDLIBS) install: default $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR) -- 1.6.5 From SRS0+Jm1y+42+fromorbit.com=david@internode.on.net Wed Jan 13 04:49:27 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_27,J_CHICKENPOX_43,J_CHICKENPOX_56 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DAnRsb145995 for ; Wed, 13 Jan 2010 04:49:27 -0600 X-ASG-Debug-ID: 1263379821-4d0500ea0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 061EA12484ED for ; Wed, 13 Jan 2010 02:50:21 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id Pq8ClJXPWJDczpKg for ; Wed, 13 Jan 2010 02:50:21 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11363479-1927428 for multiple; Wed, 13 Jan 2010 21:20:20 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NV0nq-0006Qd-H2; Wed, 13 Jan 2010 21:50:18 +1100 Date: Wed, 13 Jan 2010 21:50:18 +1100 From: Dave Chinner To: Gim Leong Chin Cc: Eric Sandeen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: allocsize mount option Subject: Re: allocsize mount option Message-ID: <20100113105018.GP17483@discord.disaster> References: <348821.11898.qm@web76206.mail.sg1.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <348821.11898.qm@web76206.mail.sg1.yahoo.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263379823 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19679 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 05:42:16PM +0800, Gim Leong Chin wrote: > Hi, > > > The application is ANSYS, which writes 128 GB files.  The existing > computer with SUSE Linux Enterprise Desktop 11 which is used for > running ANSYS, has two software RAID 0 devices made up of five 1 > TB drives.  The /home partition is 4.5 T, and it is now 4 TB > full.  I see a fragmentation > 19%. XFS will start to fragment when the filesystem gets beyond 85% full - it seems that you are very close to that threshold. That being said, if you've pulled the figure of 19% from the xfs_db measure of fragmentation, that doesn't mean the filesystem is badly fragmented, it just means that that there are 19% more fragments than the ideal. In 4TB of data with 1GB sized files, that would mean there are 4800 extents (average length ~800MB, which is excellent) instead of the perfect 4000 extents (@1GB each). Hence you can see how misleading this "19% fragmentation" number can be on an extent based filesystem... > I have just set up a new computer with 16 WD Cavair Black 1 TB > drives connected to an Areca 1680ix-16 RAID with 4 GB cache.  14 > of these drives are in RAID 6 with 128 kB stripes. The OS is also > SLED 11. The system has 16 GB memory, and AMD Phenom II X4 965 > CPU. > > I have done tests writing 100 30 MB files and 1 GB, 10 GB and 20 > GB files, with single instance and multiple instances. > > There is a big difference in writing speed when writing 20 GB > files when using allocsize=1g and not using the option. That is > without the inode64 option, which gives further speed gains. > I use dd for writing the 1 GB, 10 GB and 20 GB files. > > mkfs.xfs -f -b size=4k -d agcount=32,su=128k,sw=12 -i size=256,align=1,attr=2 -l version=2,su=128k,lazy-count=1 -n version=2 -s size=512 -L /data /dev/sdb1 > > > defaults,nobarrier,usrquota,grpquota,noatime,nodiratime,allocsize=1g,logbufs=8,logbsize=256k,largeio,swalloc > > The start of the partition has been set to LBA 3072 using GPT Fdisk to align the stripes. This all looks good - it certainly seems that you have done your research. ;) The only thing I'd do differently is that if you have only one partition on the drives, I wouldn't even put a partition on it. > The dd command is: > > chingl@tsunami:/data/test/t2> dd if=/dev/zero of=bigfile20GB bs=1073741824 count=20 I'd significantly reduce the size of that buffer - too large a buffer can slow down IO due to the memory it consumes and TLB misses it causes. I'd typically use something like: $ dd if=/dev/zero of=bigfile bs=1024k count=20k Which does 20,000 writes of 1MB each and ensures the dd process doesn't consume over a GB of RAM. > Single instance of 20 GB dd repeats were 214, 221, 123 MB/s with > allocsize=1g, compared to 94, 126 MB/s without. This seems rather low for a buffered write on hardware that can clearly go faster. SLED11 is based on 2.6.27, right? I suspect that many of the buffered writeback issues that have been fixed since 2.6.30 are present in the SLED11 kernel, and if that is the case I can see why the allocsize mount option makes such a big difference. It might be worth checking how well direct IO writes run to take buffered writeback issues out ofthe equation. In that case, I'd use stripe width multiple sized buffers like: $ dd if=/dev/zero of=bigfile bs=3072k count=7k oflag=direct I'd suggest that you might need to look at increasing the maximum IO size for the block device (/sys/block/sdb/queue/max_sectors_kb), maybe the request queue depth as well to get larger IOs to be pushed to the raid controller. if you can, at least get it to the stripe width of 1536k.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+A1dl+42+fromorbit.com=dave@internode.on.net Wed Jan 13 06:09:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_54,J_CHICKENPOX_65,J_CHICKENPOX_66, LOCAL_GNU_PATCH,URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DC9N0s151348 for ; Wed, 13 Jan 2010 06:09:24 -0600 X-ASG-Debug-ID: 1263384617-07ae003e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 342DC161B4E for ; Wed, 13 Jan 2010 04:10:17 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id K2xaW2mahLCIbyK8 for ; Wed, 13 Jan 2010 04:10:17 -0800 (PST) Received: from discord (unverified [121.44.168.156]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11503875-1927428 for ; Wed, 13 Jan 2010 22:39:58 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NV22a-0006Vw-Do for xfs@oss.sgi.com; Wed, 13 Jan 2010 23:09:36 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NV1yX-0003zd-BE for xfs@oss.sgi.com; Wed, 13 Jan 2010 23:05:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: Clean up build output Subject: [PATCH] xfstests: Clean up build output Date: Wed, 13 Jan 2010 23:05:25 +1100 Message-Id: <1263384325-15300-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263384619 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19684 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We don't need to see every compiler command line for every file that is compiled. This makes it hard to see warnings and errors during compile. For progress notification, we really only need to see the directory/file being operated on. Turn down the verbosity of output by suppressing various make output and provide better overall visibility of which directory is being operated on, what the operation is and what is being done to the files by the build/clean process. While doing this, remove explicit target-per-file rules in the subdirectories being built and replace them with target based rules using the buildrules hooks for doing this. This results in the makefiles being simpler, smaller and more consistent. This patch does not address the dmapi subdirectory of the xfstests build system. The old style verbose builds can still be run via "make V=1 ..." Signed-off-by: Dave Chinner --- Makefile | 28 ++++++++++-- include/buildmacros | 10 ++-- include/buildrules | 24 +++++++--- ltp/Makefile | 31 +++---------- src/Makefile | 101 +++++++----------------------------------- src/aio-dio-regress/Makefile | 7 ++- 6 files changed, 74 insertions(+), 127 deletions(-) diff --git a/Makefile b/Makefile index b017580..a4bb63f 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,21 @@ # Copyright (c) 2000-2008 Silicon Graphics, Inc. All Rights Reserved. # +ifeq ("$(origin V)", "command line") + BUILD_VERBOSE = $(V) +endif +ifndef BUILD_VERBOSE + BUILD_VERBOSE = 0 +endif + +ifeq ($(BUILD_VERBOSE),1) + Q = +else + Q = @ +endif + +MAKEOPTS = --no-print-directory Q=$(Q) + TOPDIR = . HAVE_BUILDDEFS = $(shell test -f $(TOPDIR)/include/builddefs && echo yes || echo no) @@ -11,11 +26,14 @@ endif TESTS = $(shell sed -n -e '/^[0-9][0-9][0-9]*/s/ .*//p' group) CONFIGURE = configure include/builddefs include/config.h -DMAPI_MAKEFILE = dmapi/Makefile LSRCFILES = configure configure.in aclocal.m4 README VERSION LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ check.log check.time +ifeq ($(HAVE_DMAPI), true) +DMAPI_MAKEFILE = dmapi/Makefile +endif + LIB_SUBDIRS = include lib TOOL_SUBDIRS = ltp src m4 @@ -23,13 +41,13 @@ SUBDIRS = $(LIB_SUBDIRS) $(TOOL_SUBDIRS) default: include/builddefs include/config.h $(DMAPI_MAKEFILE) new remake check $(TESTS) ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) $@ + $(Q)$(MAKE) $(MAKEOPTS) $@ else - $(MAKE) $(SUBDIRS) + $(Q)$(MAKE) $(MAKEOPTS) $(SUBDIRS) # automake doesn't always support "default" target # so do dmapi make explicitly with "all" ifeq ($(HAVE_DMAPI), true) - $(MAKE) -C $(TOPDIR)/dmapi all + $(Q)$(MAKE) $(MAKEOPTS) -C $(TOPDIR)/dmapi all endif endif @@ -76,7 +94,7 @@ install: default $(addsuffix -install,$(SUBDIRS)) install-dev install-lib: %-install: - $(MAKE) -C $* install + $(MAKE) $(MAKEOPTS) -C $* install realclean distclean: clean rm -f $(LDIRT) $(CONFIGURE) diff --git a/include/buildmacros b/include/buildmacros index 276d2c8..026ca4b 100644 --- a/include/buildmacros +++ b/include/buildmacros @@ -12,7 +12,7 @@ BUILDRULES = $(TOPDIR)/include/buildrules LDFLAGS += $(LOADERFLAGS) $(LLDFLAGS) LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB) -MAKEOPTS = --no-print-directory +MAKEOPTS = --no-print-directory Q=$(Q) SRCFILES = Makefile $(HFILES) $(CFILES) $(LSRCFILES) $(LFILES) $(YFILES) DEPDIRT = dep dep.bak @@ -41,10 +41,10 @@ LIBNAME = $(basename $(LTLIBRARY)) LTOBJECTS = $(OBJECTS:.o=.lo) LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -LTLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) -LTEXEC = $(LIBTOOL) --mode=execute -LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CCF) +LTLINK = $(LIBTOOL) --quiet --tag=CC --mode=link $(CC) +LTEXEC = $(LIBTOOL) --quiet --mode=execute +LTINSTALL = $(LIBTOOL) --quiet --mode=install $(INSTALL) +LTCOMPILE = $(LIBTOOL) --quiet --tag=CC --mode=compile $(CCF) ifeq ($(ENABLE_SHARED),yes) LTLDFLAGS += -rpath $(PKG_LIB_DIR) diff --git a/include/buildrules b/include/buildrules index e509833..5428391 100644 --- a/include/buildrules +++ b/include/buildrules @@ -7,11 +7,12 @@ _BUILDRULES_INCLUDED_ = 1 include $(TOPDIR)/include/builddefs clean clobber : $(addsuffix -clean,$(SUBDIRS)) - rm -f $(DIRT) - @rm -fr .libs + $(Q)rm -f $(DIRT) + $(Q)rm -fr .libs %-clean: - $(MAKE) -C $* clean + @echo "Cleaning $*" + $(Q)$(MAKE) $(MAKEOPTS) -q -C $* clean || $(MAKE) $(MAKEOPTS) -C $* clean # Never blow away subdirs ifdef SUBDIRS @@ -19,7 +20,8 @@ ifdef SUBDIRS .PHONY: $(SUBDIRS) $(SUBDIRS): - $(MAKE) -C $@ + @echo "Building $@" + $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@ endif # @@ -28,15 +30,23 @@ endif ifdef LTCOMMAND $(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES) - $(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) + @echo " [LD] $*" + $(Q)$(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) endif ifdef LTLIBRARY $(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS) - $(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) + @echo " [LD] $*" + $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) %.lo: %.c - $(LTCOMPILE) -c $< + @echo " [CC] $@" + $(Q)$(LTCOMPILE) -c $< +else +%.o: %.c + @echo " [CC] $@" + $(Q)$(CC) $(CFLAGS) -c $< + endif ifdef POTHEAD diff --git a/ltp/Makefile b/ltp/Makefile index bcdac84..fee10f5 100644 --- a/ltp/Makefile +++ b/ltp/Makefile @@ -10,47 +10,32 @@ CFILES = $(TARGETS:=.c) HFILES = doio.h LDIRT = $(TARGETS) LCFLAGS = -DXFS -IFLAG = -I$(TOPDIR)/src #Used for including $(TOPDIR)/src/global.h +LCFLAGS += -I$(TOPDIR)/src #Used for including $(TOPDIR)/src/global.h ifeq ($(HAVE_ATTR_LIST), true) LCFLAGS += -DHAVE_ATTR_LIST +LLDLIBS += $(LIBATTR) endif ifeq ($(PKG_PLATFORM),irix) LCFLAGS += -DHAVE_ATTR_LIST +LLDLIBS += $(LIBATTR) endif ifeq ($(HAVE_AIO), true) TARGETS += aio-stress LCFLAGS += -DAIO -LIBAIO = -laio -lpthread +LLDLIBS += -laio -lpthread endif default: $(TARGETS) include $(BUILDRULES) -LINKTEST = $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) -doio: doio.c $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(IFLAG) +$(TARGETS): $(LIBTEST) + @echo " [CC] $@" + $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) -fsstress: fsstress.c $(LIBATTR) $(LIBTEST) - $(LINKTEST) $(LIBATTR) $(LIBTEST) $(LDLIBS) $(IFLAG) - -fsx: fsx.c - $(LINKTEST) $(LIBAIO) $(LDLIBS) $(IFLAG) - -growfiles: growfiles.c $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(LDLIBS) $(IFLAG) - -iogen: iogen.c $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(IFLAG) - -ifeq ($(HAVE_AIO), true) -aio-stress: aio-stress.c - $(LINKTEST) $(LIBAIO) $(LDLIBS) -endif - -install: +install: default $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/ltp $(INSTALL) -m 755 $(TARGETS) $(PKG_LIB_DIR)/ltp diff --git a/src/Makefile b/src/Makefile index 9f19605..8126a10 100644 --- a/src/Makefile +++ b/src/Makefile @@ -17,6 +17,8 @@ LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize \ fs_perms testx looptest locktest unwritten_mmap \ bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset +LLDLIBS = $(LIBATTR) $(LIBHANDLE) $(LIBACL) + ifeq ($(HAVE_XLOG_ASSIGN_LSN), true) LINUX_TARGETS += loggen endif @@ -25,18 +27,17 @@ IRIX_TARGETS = open_unlink ifeq ($(PKG_PLATFORM),linux) TARGETS += $(LINUX_TARGETS) +TARGETS += t_immutable endif ifeq ($(PKG_PLATFORM),irix) TARGETS += $(IRIX_TARGETS) +LLDLIBS += -lgen endif ifeq ($(HAVE_DB), true) TARGETS += dbtest -endif - -ifeq ($(PKG_PLATFORM),linux) -TARGETS += t_immutable +LLDLIBS += $(LIBGDBM) endif ifeq ($(HAVE_AIO), true) @@ -46,96 +47,28 @@ endif CFILES = $(TARGETS:=.c) LDIRT = $(TARGETS) -default: $(TARGETS) $(SUBDIRS) - -include $(BUILDRULES) -LINKTEST = $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) - -randholes: randholes.o $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(LDLIBS) - -truncfile: truncfile.o $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(LDLIBS) - -dbtest: dbtest.o $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(LIBGDBM) $(LDLIBS) - -genhashnames: genhashnames.o - $(LINKTEST) - -nametest: nametest.o $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(LDLIBS) - -bstat: bstat.o - $(LINKTEST) $(LIBHANDLE) $(LDLIBS) - -t_immutable: t_immutable.o - $(LINKTEST) $(LIBACL) $(LIBHANDLE) $(LDLIBS) - -loggen: loggen.o - $(LINKTEST) $(LDLIBS) -fstest: fstest.o - $(LINKTEST) - -resvtest: resvtest.o - $(LINKTEST) - -itrash: itrash.o - $(LINKTEST) - -multi_open_unlink: multi_open_unlink.o - $(LINKTEST) $(LIBATTR) $(LDLIBS) - -#scaleread: scaleread.o $(LDLIBS) -# $(LINKTEST) +default: $(TARGETS) $(SUBDIRS) -acl_get: acl_get.o - $(LINKTEST) $(LIBACL) $(LIBATTR) $(LDLIBS) +PREALLO_TARGETS = preallo_rw_pattern_reader preallo_rw_pattern_writer -dmiperf: dmiperf.o - $(LINKTEST) $(LIBATTR) $(LDLIBS) +include $(BUILDRULES) preallo_rw_pattern_reader: - $(CC) $(GCFLAGS) $(LDFLAGS) -DREAD iopat.c -o preallo_rw_pattern_reader + @echo " [CC] $@" + $(Q)$(LTLINK) iopat.c -DREAD -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) preallo_rw_pattern_writer: - $(CC) $(GCFLAGS) $(LDFLAGS) -DWRITE iopat.c -o preallo_rw_pattern_writer - -ftrunc: ftrunc.o - $(LINKTEST) - -trunc: trunc.o - $(LINKTEST) - -fs_perms: fs_perms.o - $(LINKTEST) + @echo " [CC] $@" + $(Q)$(LTLINK) iopat.c -DWRITE -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) -testx: testx.o - $(LINKTEST) +$(filter-out $(PREALLO_TARGETS), $(TARGETS)): $(LIBTEST) + @echo " [CC] $@" + $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) -looptest: looptest.o - $(LINKTEST) - -locktest: locktest.o - $(LINKTEST) - -unwritten_sync: unwritten_sync.o - $(LINKTEST) - -ifeq ($(PKG_PLATFORM),irix) -fill2: fill2.o - $(LINKTEST) -lgen - -runas: runas.o - $(LINKTEST) -lgen - -open_unlink: open_unlink.o $(LIBHANDLE) - $(LINKTEST) $(LIBHANDLE) $(LDLIBS) - -endif +LINKTEST = $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) -install: $(addsuffix -install,$(SUBDIRS)) +install: default $(addsuffix -install,$(SUBDIRS)) $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/src $(INSTALL) -m 755 $(TARGETS) $(PKG_LIB_DIR)/src $(INSTALL) -m 755 fill2attr fill2fs fill2fs_check scaleread.sh $(PKG_LIB_DIR)/src diff --git a/src/aio-dio-regress/Makefile b/src/aio-dio-regress/Makefile index 9968093..f0e4d15 100644 --- a/src/aio-dio-regress/Makefile +++ b/src/aio-dio-regress/Makefile @@ -6,14 +6,15 @@ TARGETS = $(basename $(wildcard *.c)) CFILES = $(TARGETS:=.c) LDIRT = $(TARGETS) -LIBAIO = -laio -lpthread +LLDLIBS = -laio -lpthread default: $(TARGETS) include $(BUILDRULES) -$(TARGETS): %: %.c - $(CC) -g -Wall $(LIBAIO) -o $@ $*.c +$(TARGETS): + @echo " [CC] $@" + $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) install: $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/src/aio-dio-regress -- 1.6.5 From sandeen@sandeen.net Wed Jan 13 08:49:35 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_63,J_CHICKENPOX_65,J_CHICKENPOX_66,J_CHICKENPOX_72,URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DEnZnD163495 for ; Wed, 13 Jan 2010 08:49:35 -0600 X-ASG-Debug-ID: 1263394230-709d01c40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5F44E162352 for ; Wed, 13 Jan 2010 06:50:30 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id hG2iHRgqabKdDB58 for ; Wed, 13 Jan 2010 06:50:30 -0800 (PST) Received: from [10.0.0.77] (eric-iphone.sandeen.net [10.0.0.77]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 52B619A45C7; Wed, 13 Jan 2010 08:50:30 -0600 (CST) References: <1263377007-4500-1-git-send-email-david@fromorbit.com> Message-Id: <8F499EB9-6813-46CF-999C-F7F1DFABA9A6@sandeen.net> From: Eric Sandeen To: Dave Chinner In-Reply-To: <1263377007-4500-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=us-ascii; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit X-Mailer: iPhone Mail (7D11) Mime-Version: 1.0 (iPhone Mail 7D11) X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Subject: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Date: Wed, 13 Jan 2010 08:50:29 -0600 Cc: "xfs@oss.sgi.com" X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263394231 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19695 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Jan 13, 2010, at 4:03 AM, Dave Chinner wrote: > We don't need to see every compiler command line for every file that > is compiled. This makes it hard to see warnings and errors during > compile. For progress notification, we really only need to see the > diretory/file being operated on. > > Turn down the verbosity of output by suppressing various make output > and provide better overall visibility of which directory is being > operated on, what the operation is and what is being done to the > files by the build/clean process. Also fix the top level clean rule > so that we don't run configure scripts after a make clean, only after > a make distclean. > > Sample output from a build: > > .... > Building libxlog > [CC] xfs_log_recover.c > [CC] util.c > [LD] libxlog.la > Building libxcmd > [CC] command.c > [CC] input.c > [CC] paths.c > [CC] projects.c > [CC] help.c > [CC] quit.c > [LD] libxcmd.la > .... > > Sample output from cleaning: > > $ make clean > Cleaning include > Cleaning libxfs > Cleaning libxlog > Cleaning libxcmd > Cleaning libhandle > Cleaning libdisk > Cleaning copy > Cleaning db > .... > > If you want to see a noisy build (i.e. every command), use: > > $ make Q= > > and that will output all the commands that are now suppressed by > default. > > Portions of this patch were contributed by Eric Sandeen. > > Signed-off-by: Dave Chinner Reviewed-by: Eric Sandeen > --- > Makefile | 43 +++++++++++++++++++++++++++++-------------- > doc/Makefile | 3 ++- > include/Makefile | 3 ++- > include/buildmacros | 10 +++++----- > include/buildrules | 30 +++++++++++++++++++++--------- > mkfs/Makefile | 3 ++- > 6 files changed, 61 insertions(+), 31 deletions(-) > > diff --git a/Makefile b/Makefile > index 2d394e4..62c4258 100644 > --- a/Makefile > +++ b/Makefile > @@ -2,6 +2,21 @@ > # Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved. > # > > +ifeq ("$(origin V)", "command line") > + BUILD_VERBOSE = $(V) > +endif > +ifndef BUILD_VERBOSE > + BUILD_VERBOSE = 0 > +endif > + > +ifeq ($(BUILD_VERBOSE),1) > + Q = > +else > + Q = @ > +endif > + > +MAKEOPTS = --no-print-directory Q=$(Q) > + > TOPDIR = . > HAVE_BUILDDEFS = $(shell test -f $(TOPDIR)/include/builddefs && echo > yes || echo no) > > @@ -15,7 +30,7 @@ SRCTAR = $(PKG_NAME)-$(PKG_VERSION).tar.gz > CONFIGURE = aclocal.m4 configure config.guess config.sub install-sh > ltmain.sh > LSRCFILES = configure.in release.sh README VERSION $(CONFIGURE) > > -LDIRT = config.log .dep config.status config.cache confdefs.h > conftest* \ > +DISTDIRT = config.log .dep config.status config.cache confdefs.h > conftest* \ > built .census install.* install-dev.* *.gz autom4te.cache/* > libtool \ > include/builddefs include/platform_defs.h > > @@ -36,9 +51,9 @@ SUBDIRS = include $(LIB_SUBDIRS) $(TOOL_SUBDIRS) > > default: include/builddefs include/platform_defs.h > ifeq ($(HAVE_BUILDDEFS), no) > - $(MAKE) -C . $@ > + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ > else > - $(MAKE) $(SUBDIRS) > + $(Q)$(MAKE) $(MAKEOPTS) $(SUBDIRS) > endif > > # tool/lib dependencies > @@ -80,7 +95,7 @@ include/platform_defs.h: include/builddefs > ## Recover from the removal of $@ > @if test -f $@; then :; else \ > rm -f include/builddefs; \ > - $(MAKE) $(AM_MAKEFLAGS) include/builddefs; \ > + $(MAKE) $(MAKEOPTS) $(AM_MAKEFLAGS) include/builddefs; \ > fi > > install: default $(addsuffix -install,$(SUBDIRS)) > @@ -101,29 +116,29 @@ install-qa: install $(addsuffix -install-qa,$ > (SUBDIRS)) > $(MAKE) -C $* install-qa > > distclean: clean > - rm -f $(LDIRT) > + $(Q)rm -f $(DISTDIRT) > > realclean: distclean > - rm -f $(CONFIGURE) > + $(Q)rm -f $(CONFIGURE) > > # > # All this gunk is to allow for a make dist on an unconfigured tree > # > dist: include/builddefs include/platform_defs.h default > ifeq ($(HAVE_BUILDDEFS), no) > - $(MAKE) -C . $@ > + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ > else > - $(MAKE) $(SRCTAR) > + $(Q)$(MAKE) $(MAKEOPTS) $(SRCTAR) > endif > > deb: include/builddefs include/platform_defs.h > ifeq ($(HAVE_BUILDDEFS), no) > - $(MAKE) -C . $@ > + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ > else > - $(MAKE) $(SRCDIR) > - $(MAKE) -C po > - $(MAKE) source-link > - cd $(SRCDIR) && dpkg-buildpackage > + $(Q)$(MAKE) $(MAKEOPTS) $(SRCDIR) > + $(Q)$(MAKE) $(MAKEOPTS) -C po > + $(Q)$(MAKE) $(MAKEOPTS) source-link > + $(Q)cd $(SRCDIR) && dpkg-buildpackage > endif > > $(SRCDIR) : $(_FORCE) > @@ -131,6 +146,6 @@ $(SRCDIR) : $(_FORCE) > mkdir -p $@ > > $(SRCTAR) : default $(SRCDIR) > - $(MAKE) source-link > + $(Q)$(MAKE) $(MAKEOPTS) source-link > unset TAPE; $(TAR) -cf - $(SRCDIR) | $(ZIP) --best > $@ && \ > echo Wrote: $@ > diff --git a/doc/Makefile b/doc/Makefile > index 8f65b66..86ac2ca 100644 > --- a/doc/Makefile > +++ b/doc/Makefile > @@ -13,7 +13,8 @@ default: CHANGES.gz > include $(BUILDRULES) > > CHANGES.gz: > - $(ZIP) --best -c < CHANGES > $@ > + @echo " [ZIP] $@" > + $(Q)$(ZIP) --best -c < CHANGES > $@ > > install: default > $(INSTALL) -m 755 -d $(PKG_DOC_DIR) > diff --git a/include/Makefile b/include/Makefile > index d89480e..bc787db 100644 > --- a/include/Makefile > +++ b/include/Makefile > @@ -43,7 +43,8 @@ LDIRT = xfs disk > default install: xfs disk > > xfs disk: > - $(LN_S) . $@ > + @echo " [LN] $@" > + $(Q)$(LN_S) . $@ > > include $(BUILDRULES) > > diff --git a/include/buildmacros b/include/buildmacros > index 099570f..62babca 100644 > --- a/include/buildmacros > +++ b/include/buildmacros > @@ -13,7 +13,7 @@ LDFLAGS += $(LOADERFLAGS) $(LLDFLAGS) > LTLDFLAGS += $(LOADERFLAGS) > LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB) > > -MAKEOPTS = --no-print-directory > +MAKEOPTS = --no-print-directory Q=$(Q) > SRCFILES = Makefile $(HFILES) $(CFILES) $(LSRCFILES) $(LFILES) $ > (YFILES) > SRCFILES += $(QAHFILES) > > @@ -45,10 +45,10 @@ LIBNAME = $(basename $(LTLIBRARY)) > LTOBJECTS = $(OBJECTS:.o=.lo) > LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) > > -LTLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) > -LTEXEC = $(LIBTOOL) --mode=execute > -LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) > -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CCF) > +LTLINK = $(LIBTOOL) --quiet --tag=CC --mode=link $(CC) > +LTEXEC = $(LIBTOOL) --quiet --mode=execute > +LTINSTALL = $(LIBTOOL) --quiet --mode=install $(INSTALL) > +LTCOMPILE = $(LIBTOOL) --quiet --tag=CC --mode=compile $(CCF) > > ifeq ($(ENABLE_SHARED),yes) > LTLDFLAGS += -rpath $(PKG_ROOT_LIB_DIR) > diff --git a/include/buildrules b/include/buildrules > index a06d480..464dfe3 100644 > --- a/include/buildrules > +++ b/include/buildrules > @@ -7,10 +7,11 @@ _BUILDRULES_INCLUDED_ = 1 > include $(TOPDIR)/include/builddefs > > clean clobber : $(addsuffix -clean,$(SUBDIRS)) > - rm -f $(DIRT) > - rm -fr $(DIRDIRT) > + $(Q)rm -f $(DIRT) > + $(Q)rm -fr $(DIRDIRT) > %-clean: > - $(MAKE) -C $* clean > + @echo "Cleaning $*" > + $(Q)$(MAKE) $(MAKEOPTS) -C $* clean > > # Never blow away subdirs > ifdef SUBDIRS > @@ -18,7 +19,8 @@ ifdef SUBDIRS > .PHONY: $(SUBDIRS) > > $(SUBDIRS): > - $(MAKE) -C $@ > + @echo "Building $@" > + $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@ > endif > > source-link: > @@ -38,20 +40,29 @@ source-link: > > ifdef LTCOMMAND > $(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES) > - $(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) > + @echo " [LD] $@" > + $(Q)$(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) > endif > > ifdef LTLIBRARY > $(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS) > - $(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) > + @echo " [LD] $@" > + $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) > > %.lo: %.c > - $(LTCOMPILE) -c $< > + @echo " [CC] $@" > + $(Q)$(LTCOMPILE) -c $< > +else > +%.o: %.c > + @echo " [CC] $@" > + $(Q)$(CC) $(CFLAGS) -c $< > + > endif > > ifdef POTHEAD > $(POTHEAD): $(XGETTEXTFILES) > - $(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $ > (XGETTEXTFILES) > + @echo " [GETTXT] $@" > + $(Q)$(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $ > (XGETTEXTFILES) > > # Update translations > update-po: $(POTHEAD) $(wildcard $(TOPDIR)/po/*.po) > @@ -70,7 +81,8 @@ update-po: $(POTHEAD) $(wildcard $(TOPDIR)/po/*.po) > done > > %.mo: %.po > - $(MSGFMT) -c --statistics -o $@ $< > + @echo " [MSGFMT] $@" > + $(Q)$(MSGFMT) -c --statistics -o $@ $< > endif > > endif # _BUILDRULES_INCLUDED_ > diff --git a/mkfs/Makefile b/mkfs/Makefile > index 9fcadf2..a749262 100644 > --- a/mkfs/Makefile > +++ b/mkfs/Makefile > @@ -36,7 +36,8 @@ endif > include $(BUILDRULES) > > $(FSTYP): > - $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBDISK) $(PLDLIBS) > + @echo " [CC] $@" > + $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBDISK) $ > (PLDLIBS) > > install: default > $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR) > -- > 1.6.5 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@redhat.com Wed Jan 13 15:07:54 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DL7r6A189049 for ; Wed, 13 Jan 2010 15:07:54 -0600 X-ASG-Debug-ID: 1263416929-4cd603aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 72B64F04830 for ; Wed, 13 Jan 2010 13:08:49 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id faXKsin87oqEf4xO for ; Wed, 13 Jan 2010 13:08:49 -0800 (PST) Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0DL8m0A030305 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 13 Jan 2010 16:08:48 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0DL8kg1014814 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 13 Jan 2010 16:08:48 -0500 Message-ID: <4B4E365E.8000306@redhat.com> Date: Wed, 13 Jan 2010 15:08:46 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfsprogs: fix build with latest glibc headers Subject: [PATCH] xfsprogs: fix build with latest glibc headers Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1263416930 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19717 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean glibc in rawhide has some changes... * Tue Jan 12 2010 Andreas Schwab - 2.11.90-8 - Update from master. - More POSIX conformance fixes. * Mon Jan 11 2010 Andreas Schwab - 2.11.90-6 - Update from master. - POSIX conformance fixes (BZ#11125). which seem to break the xfsprogs build. I'm no feature test macro guru, but the following gets it going again for me. Signed-off-by: Eric Sandeen --- diff --git a/include/builddefs.in b/include/builddefs.in index ca8f172..cc75b5d 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -102,7 +102,7 @@ GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall # -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-decl ifeq ($(PKG_PLATFORM),linux) -PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) +PCFLAGS = -D_GNU_SOURCE -D_XOPEN_SOURCE=500 -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) DEPENDFLAGS = -D__linux__ endif ifeq ($(PKG_PLATFORM),darwin) diff --git a/include/linux.h b/include/linux.h index dbfb4cf..b342e55 100644 --- a/include/linux.h +++ b/include/linux.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 15:35:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DLZOTv191312 for ; Wed, 13 Jan 2010 15:35:25 -0600 X-ASG-Debug-ID: 1263418580-0a49021c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 599C3163A30 for ; Wed, 13 Jan 2010 13:36:21 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id smDGMZsZqyZQGkGA for ; Wed, 13 Jan 2010 13:36:21 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVAt2-0005Sp-Pp for xfs@oss.sgi.com; Wed, 13 Jan 2010 21:36:20 +0000 Date: Wed, 13 Jan 2010 16:36:20 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: add package_blkid.m4 to the distributed files Subject: [PATCH] xfsprogs: add package_blkid.m4 to the distributed files Message-ID: <20100113213620.GA20812@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263418581 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We need to include all the m4 files in the source tarball in case people want to regenerate the configure script. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/m4/Makefile =================================================================== --- xfsprogs-dev.orig/m4/Makefile 2010-01-13 22:27:54.121253788 +0100 +++ xfsprogs-dev/m4/Makefile 2010-01-13 22:28:08.553256439 +0100 @@ -15,6 +15,7 @@ CONFIGURE = \ LSRCFILES = \ manual_format.m4 \ package_aiodev.m4 \ + package_blkid.m4 \ package_globals.m4 \ package_libcdev.m4 \ package_pthread.m4 \ From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 15:41:11 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DLfAHr191681 for ; Wed, 13 Jan 2010 15:41:10 -0600 X-ASG-Debug-ID: 1263418927-245c032a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7A9351C4CF03 for ; Wed, 13 Jan 2010 13:42:07 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FTHkfRHvmfLF8AUh for ; Wed, 13 Jan 2010 13:42:07 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVAyc-0006zI-Up; Wed, 13 Jan 2010 21:42:06 +0000 Date: Wed, 13 Jan 2010 16:42:06 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: fix build with latest glibc headers Subject: Re: [PATCH] xfsprogs: fix build with latest glibc headers Message-ID: <20100113214206.GA23091@infradead.org> References: <4B4E365E.8000306@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B4E365E.8000306@redhat.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263418927 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 03:08:46PM -0600, Eric Sandeen wrote: > glibc in rawhide has some changes... > > * Tue Jan 12 2010 Andreas Schwab - 2.11.90-8 > - Update from master. > - More POSIX conformance fixes. > > * Mon Jan 11 2010 Andreas Schwab - 2.11.90-6 > - Update from master. > - POSIX conformance fixes (BZ#11125). Great, eh? :) > @@ -102,7 +102,7 @@ GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall > # -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-decl > > ifeq ($(PKG_PLATFORM),linux) > -PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) > +PCFLAGS = -D_GNU_SOURCE -D_XOPEN_SOURCE=500 -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) We might aswell got to -D_XOPEN_SOURCE=700 which is the newest revision and should give us just about everything we might need. But generally this looks okay to me, Reviewed-by: Christoph Hellwig From sandeen@sandeen.net Wed Jan 13 16:00:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DM0wNE193687 for ; Wed, 13 Jan 2010 16:00:59 -0600 X-ASG-Debug-ID: 1263420114-214600950000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E19E01249BF3 for ; Wed, 13 Jan 2010 14:01:54 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id V7IvNjZqYeP3mJ2B for ; Wed, 13 Jan 2010 14:01:54 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 813D9AAE3BE; Wed, 13 Jan 2010 16:01:53 -0600 (CST) Message-ID: <4B4E42D1.8090806@sandeen.net> Date: Wed, 13 Jan 2010 16:01:53 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: add package_blkid.m4 to the distributed files Subject: Re: [PATCH] xfsprogs: add package_blkid.m4 to the distributed files References: <20100113213620.GA20812@infradead.org> In-Reply-To: <20100113213620.GA20812@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263420114 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19719 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > We need to include all the m4 files in the source tarball in case people > want to regenerate the configure script. > > Signed-off-by: Christoph Hellwig sigh, yep, sorry. Reviewed-by: Eric Sandeen > > Index: xfsprogs-dev/m4/Makefile > =================================================================== > --- xfsprogs-dev.orig/m4/Makefile 2010-01-13 22:27:54.121253788 +0100 > +++ xfsprogs-dev/m4/Makefile 2010-01-13 22:28:08.553256439 +0100 > @@ -15,6 +15,7 @@ CONFIGURE = \ > LSRCFILES = \ > manual_format.m4 \ > package_aiodev.m4 \ > + package_blkid.m4 \ > package_globals.m4 \ > package_libcdev.m4 \ > package_pthread.m4 \ > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 16:05:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DM56Q7194000 for ; Wed, 13 Jan 2010 16:05:06 -0600 X-ASG-Debug-ID: 1263420362-244d03dd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DD71A1C4CFDC for ; Wed, 13 Jan 2010 14:06:02 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id dOaTs8lshnv37xEF for ; Wed, 13 Jan 2010 14:06:02 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVBLm-0004TO-GG for xfs@oss.sgi.com; Wed, 13 Jan 2010 22:06:02 +0000 Message-Id: <20100113220547.846700560@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Wed, 13 Jan 2010 17:05:47 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] small quota updates for 2.6.34 Subject: [PATCH 0/3] small quota updates for 2.6.34 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263420362 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 16:05:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DM56Op194002 for ; Wed, 13 Jan 2010 16:05:06 -0600 X-ASG-Debug-ID: 1263420363-244d03de0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3DD951C4CFDC for ; Wed, 13 Jan 2010 14:06:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id klOCfGOmdVu3JfIm for ; Wed, 13 Jan 2010 14:06:03 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVBLm-0004Ty-QR for xfs@oss.sgi.com; Wed, 13 Jan 2010 22:06:02 +0000 Message-Id: <20100113220602.632551077@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Wed, 13 Jan 2010 17:05:48 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] xfs: kill XFS_QMOPT_ASYNC Subject: [PATCH 1/3] xfs: kill XFS_QMOPT_ASYNC References: <20100113220547.846700560@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-XFS_QMOPT_ASYNC X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263420363 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The option is unused and one of the few remaining users of xfs_bawrite, so let's get rid of it. Signed-off-by: Christoph Hellwig Index: linux-2.6/fs/xfs/quota/xfs_dquot.c =================================================================== --- linux-2.6.orig/fs/xfs/quota/xfs_dquot.c 2010-01-08 15:10:07.694006652 +0100 +++ linux-2.6/fs/xfs/quota/xfs_dquot.c 2010-01-08 15:10:26.227006460 +0100 @@ -1253,8 +1253,6 @@ xfs_qm_dqflush( if (flags & XFS_QMOPT_DELWRI) { xfs_bdwrite(mp, bp); - } else if (flags & XFS_QMOPT_ASYNC) { - error = xfs_bawrite(mp, bp); } else { error = xfs_bwrite(mp, bp); } Index: linux-2.6/fs/xfs/xfs_quota.h =================================================================== --- linux-2.6.orig/fs/xfs/xfs_quota.h 2010-01-08 15:10:07.729006360 +0100 +++ linux-2.6/fs/xfs/xfs_quota.h 2010-01-08 15:10:12.062005658 +0100 @@ -226,7 +226,6 @@ typedef struct xfs_qoff_logformat { * flags for dqflush and dqflush_all. */ #define XFS_QMOPT_SYNC 0x1000000 -#define XFS_QMOPT_ASYNC 0x2000000 #define XFS_QMOPT_DELWRI 0x4000000 /* From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 16:05:07 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DM57ac194021 for ; Wed, 13 Jan 2010 16:05:07 -0600 X-ASG-Debug-ID: 1263420363-028302700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C758F10C6DD2 for ; Wed, 13 Jan 2010 14:06:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id fIq94B67RCavGqfi for ; Wed, 13 Jan 2010 14:06:03 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVBLn-0004UW-4V for xfs@oss.sgi.com; Wed, 13 Jan 2010 22:06:03 +0000 Message-Id: <20100113220602.928911019@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Wed, 13 Jan 2010 17:05:49 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] xfs: clean up error handling in xfs_trans_dqresv Subject: [PATCH 2/3] xfs: clean up error handling in xfs_trans_dqresv References: <20100113220547.846700560@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-xfs_trans_dqresv X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263420363 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Move the error code selection after the goto label and fold the xfs_quota_error helper into it. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_trans_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_trans_dquot.c 2010-01-13 13:37:38.652253919 +0100 +++ xfs/fs/xfs/quota/xfs_trans_dquot.c 2010-01-13 13:50:50.132006544 +0100 @@ -589,14 +589,6 @@ xfs_trans_unreserve_and_mod_dquots( } } -STATIC int -xfs_quota_error(uint flags) -{ - if (flags & XFS_QMOPT_ENOSPC) - return ENOSPC; - return EDQUOT; -} - /* * This reserves disk blocks and inodes against a dquot. * Flags indicate if the dquot is to be locked here and also @@ -612,7 +604,6 @@ xfs_trans_dqresv( long ninos, uint flags) { - int error; xfs_qcnt_t hardlimit; xfs_qcnt_t softlimit; time_t timer; @@ -649,7 +640,6 @@ xfs_trans_dqresv( warnlimit = XFS_QI_RTBWARNLIMIT(dqp->q_mount); resbcountp = &dqp->q_res_rtbcount; } - error = 0; if ((flags & XFS_QMOPT_FORCE_RES) == 0 && dqp->q_core.d_id && @@ -667,19 +657,13 @@ xfs_trans_dqresv( * nblks. */ if (hardlimit > 0ULL && - (hardlimit <= nblks + *resbcountp)) { - error = xfs_quota_error(flags); + hardlimit <= nblks + *resbcountp) goto error_return; - } - if (softlimit > 0ULL && - (softlimit <= nblks + *resbcountp)) { - if ((timer != 0 && get_seconds() > timer) || - (warns != 0 && warns >= warnlimit)) { - error = xfs_quota_error(flags); - goto error_return; - } - } + softlimit <= nblks + *resbcountp && + ((timer != 0 && get_seconds() > timer) || + (warns != 0 && warns >= warnlimit))) + goto error_return; } if (ninos > 0) { count = be64_to_cpu(dqp->q_core.d_icount); @@ -692,16 +676,13 @@ xfs_trans_dqresv( softlimit = be64_to_cpu(dqp->q_core.d_ino_softlimit); if (!softlimit) softlimit = q->qi_isoftlimit; - if (hardlimit > 0ULL && count >= hardlimit) { - error = xfs_quota_error(flags); + + if (hardlimit > 0ULL && count >= hardlimit) + goto error_return; + if (softlimit > 0ULL && count >= softlimit && + ((timer != 0 && get_seconds() > timer) || + (warns != 0 && warns >= warnlimit))) goto error_return; - } else if (softlimit > 0ULL && count >= softlimit) { - if ((timer != 0 && get_seconds() > timer) || - (warns != 0 && warns >= warnlimit)) { - error = xfs_quota_error(flags); - goto error_return; - } - } } } @@ -736,9 +717,14 @@ xfs_trans_dqresv( ASSERT(dqp->q_res_rtbcount >= be64_to_cpu(dqp->q_core.d_rtbcount)); ASSERT(dqp->q_res_icount >= be64_to_cpu(dqp->q_core.d_icount)); + xfs_dqunlock(dqp); + return 0; + error_return: xfs_dqunlock(dqp); - return error; + if (flags & XFS_QMOPT_ENOSPC) + return ENOSPC; + return EDQUOT; } From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 16:05:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DM57cr194023 for ; Wed, 13 Jan 2010 16:05:07 -0600 X-ASG-Debug-ID: 1263420363-028c02640000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0D22010C70B8 for ; Wed, 13 Jan 2010 14:06:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id PjBorRS7QVMkwb6X for ; Wed, 13 Jan 2010 14:06:03 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVBLn-0004V2-Ea for xfs@oss.sgi.com; Wed, 13 Jan 2010 22:06:03 +0000 Message-Id: <20100113220603.251930871@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Wed, 13 Jan 2010 17:05:50 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] xfs: implement quota warnings via netlink Subject: [PATCH 3/3] xfs: implement quota warnings via netlink References: <20100113220547.846700560@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-quotanl-warn X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263420364 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Wire up quota_send_warning to send quota warnings over netlink. This is used by various desktops to show user quota warnings. Tested by running the quota_nld daemon while running the xfstest quota tests and observing the warnings. I'll see how I can get a more formal testcase for it written. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_trans_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_trans_dquot.c 2010-01-13 13:51:20.925003101 +0100 +++ xfs/fs/xfs/quota/xfs_trans_dquot.c 2010-01-13 14:10:46.083254517 +0100 @@ -589,6 +589,20 @@ xfs_trans_unreserve_and_mod_dquots( } } +STATIC void +xfs_quota_send_warning( + struct xfs_mount *mp, + struct xfs_dquot *dqp, + int hard) +{ + /* no warnings for project quotas - we just return ENOSPC later */ + if (dqp->dq_flags & XFS_DQ_PROJ) + return; + quota_send_warning((dqp->dq_flags & XFS_DQ_USER) ? USRQUOTA : GRPQUOTA, + be32_to_cpu(dqp->q_core.d_id), mp->m_super->s_dev, + hard ? QUOTA_NL_BHARDWARN: QUOTA_NL_BSOFTWARN); +} + /* * This reserves disk blocks and inodes against a dquot. * Flags indicate if the dquot is to be locked here and also @@ -612,6 +626,7 @@ xfs_trans_dqresv( xfs_qcnt_t count; xfs_qcnt_t *resbcountp; xfs_quotainfo_t *q = mp->m_quotainfo; + int hardwarn = 0; xfs_dqlock(dqp); @@ -657,8 +672,10 @@ xfs_trans_dqresv( * nblks. */ if (hardlimit > 0ULL && - hardlimit <= nblks + *resbcountp) + hardlimit <= nblks + *resbcountp) { + hardwarn = 1; goto error_return; + } if (softlimit > 0ULL && softlimit <= nblks + *resbcountp && ((timer != 0 && get_seconds() > timer) || @@ -677,8 +694,10 @@ xfs_trans_dqresv( if (!softlimit) softlimit = q->qi_isoftlimit; - if (hardlimit > 0ULL && count >= hardlimit) + if (hardlimit > 0ULL && count >= hardlimit) { + hardwarn = 1; goto error_return; + } if (softlimit > 0ULL && count >= softlimit && ((timer != 0 && get_seconds() > timer) || (warns != 0 && warns >= warnlimit))) @@ -722,6 +741,7 @@ xfs_trans_dqresv( error_return: xfs_dqunlock(dqp); + xfs_quota_send_warning(mp, dqp, hardwarn); if (flags & XFS_QMOPT_ENOSPC) return ENOSPC; return EDQUOT; From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 16:07:19 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_65,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DM7Jp3194192 for ; Wed, 13 Jan 2010 16:07:19 -0600 X-ASG-Debug-ID: 1263420495-2c5100290000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BA8D11C4D09D for ; Wed, 13 Jan 2010 14:08:15 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ool9CTbPYYRWTOok for ; Wed, 13 Jan 2010 14:08:15 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVBNu-0004lw-4j; Wed, 13 Jan 2010 22:08:14 +0000 Date: Wed, 13 Jan 2010 17:08:14 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Subject: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Message-ID: <20100113220814.GA17310@infradead.org> References: <1263377007-4500-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263377007-4500-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263420495 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 09:03:27PM +1100, Dave Chinner wrote: > -LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ > +DISTDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ > built .census install.* install-dev.* *.gz autom4te.cache/* libtool \ > include/builddefs include/platform_defs.h > distclean: clean > - rm -f $(LDIRT) > + $(Q)rm -f $(DISTDIRT) What does this have to do with the rest? Otherwise looks good, Reviewed-by: Christoph Hellwig Any chance you could also port it to xfsdump? From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 16:17:16 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DMHFI9194822 for ; Wed, 13 Jan 2010 16:17:16 -0600 X-ASG-Debug-ID: 1263421092-0304032e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9CD261249B29 for ; Wed, 13 Jan 2010 14:18:12 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id dH0VotRlNj3DsSLu for ; Wed, 13 Jan 2010 14:18:12 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVBXX-0007XC-Vz for xfs@oss.sgi.com; Wed, 13 Jan 2010 22:18:12 +0000 Message-Id: <20100113221755.686033903@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Wed, 13 Jan 2010 17:17:55 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] buffer handling cleanups for 2.6.34 Subject: [PATCH 0/3] buffer handling cleanups for 2.6.34 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263421092 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 16:17:16 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DMHGJ2194824 for ; Wed, 13 Jan 2010 16:17:16 -0600 X-ASG-Debug-ID: 1263421092-2c4500c90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C16931C4D172 for ; Wed, 13 Jan 2010 14:18:12 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 2WofqyzN4VQMrseI for ; Wed, 13 Jan 2010 14:18:12 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVBXY-0007Xn-BA for xfs@oss.sgi.com; Wed, 13 Jan 2010 22:18:12 +0000 Message-Id: <20100113221812.190183785@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Wed, 13 Jan 2010 17:17:56 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] xfs: move more buffer helpers into xfs_buf.c Subject: [PATCH 1/3] xfs: move more buffer helpers into xfs_buf.c References: <20100113221755.686033903@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-move-buf-funcs X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263421092 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Move xfsbdstrat and xfs_bdstrat_cb from xfs_lrw.c and xfs_bioerror and xfs_bioerror_relse from xfs_rw.c into xfs_buf.c. This also means xfs_bioerror and xfs_bioerror_relse can be marked static now. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2010-01-08 14:36:12.997003975 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2010-01-08 14:49:45.449006546 +0100 @@ -1121,6 +1121,126 @@ xfs_bdwrite( xfs_buf_delwri_queue(bp, 1); } +/* + * Called when we want to stop a buffer from getting written or read. + * We attach the EIO error, muck with its flags, and call biodone + * so that the proper iodone callbacks get called. + */ +STATIC int +xfs_bioerror( + xfs_buf_t *bp) +{ +#ifdef XFSERRORDEBUG + ASSERT(XFS_BUF_ISREAD(bp) || bp->b_iodone); +#endif + + /* + * No need to wait until the buffer is unpinned, we aren't flushing it. + */ + XFS_BUF_ERROR(bp, EIO); + + /* + * We're calling biodone, so delete XBF_DONE flag. + */ + XFS_BUF_UNREAD(bp); + XFS_BUF_UNDELAYWRITE(bp); + XFS_BUF_UNDONE(bp); + XFS_BUF_STALE(bp); + + XFS_BUF_CLR_BDSTRAT_FUNC(bp); + xfs_biodone(bp); + + return EIO; +} + +/* + * Same as xfs_bioerror, except that we are releasing the buffer + * here ourselves, and avoiding the biodone call. + * This is meant for userdata errors; metadata bufs come with + * iodone functions attached, so that we can track down errors. + */ +STATIC int +xfs_bioerror_relse( + struct xfs_buf *bp) +{ + int64_t fl = XFS_BUF_BFLAGS(bp); + /* + * No need to wait until the buffer is unpinned. + * We aren't flushing it. + * + * chunkhold expects B_DONE to be set, whether + * we actually finish the I/O or not. We don't want to + * change that interface. + */ + XFS_BUF_UNREAD(bp); + XFS_BUF_UNDELAYWRITE(bp); + XFS_BUF_DONE(bp); + XFS_BUF_STALE(bp); + XFS_BUF_CLR_IODONE_FUNC(bp); + XFS_BUF_CLR_BDSTRAT_FUNC(bp); + if (!(fl & XFS_B_ASYNC)) { + /* + * Mark b_error and B_ERROR _both_. + * Lot's of chunkcache code assumes that. + * There's no reason to mark error for + * ASYNC buffers. + */ + XFS_BUF_ERROR(bp, EIO); + XFS_BUF_FINISH_IOWAIT(bp); + } else { + xfs_buf_relse(bp); + } + + return EIO; +} + + +/* + * All xfs metadata buffers except log state machine buffers + * get this attached as their b_bdstrat callback function. + * This is so that we can catch a buffer + * after prematurely unpinning it to forcibly shutdown the filesystem. + */ +int +xfs_bdstrat_cb( + struct xfs_buf *bp) +{ + if (XFS_FORCED_SHUTDOWN(bp->b_mount)) { + trace_xfs_bdstrat_shut(bp, _RET_IP_); + /* + * Metadata write that didn't get logged but + * written delayed anyway. These aren't associated + * with a transaction, and can be ignored. + */ + if (!bp->b_iodone && !XFS_BUF_ISREAD(bp)) + return xfs_bioerror_relse(bp); + else + return xfs_bioerror(bp); + } + + xfs_buf_iorequest(bp); + return 0; +} + +/* + * Wrapper around bdstrat so that we can stop data from going to disk in case + * we are shutting down the filesystem. Typically user data goes thru this + * path; one of the exceptions is the superblock. + */ +void +xfsbdstrat( + struct xfs_mount *mp, + struct xfs_buf *bp) +{ + if (XFS_FORCED_SHUTDOWN(mp)) { + trace_xfs_bdstrat_shut(bp, _RET_IP_); + xfs_bioerror_relse(bp); + return; + } + + xfs_buf_iorequest(bp); +} + STATIC void _xfs_buf_ioend( xfs_buf_t *bp, Index: xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2010-01-08 14:37:05.433254150 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2010-01-08 14:37:27.189016082 +0100 @@ -235,6 +235,10 @@ extern void xfs_buf_unlock(xfs_buf_t *); extern int xfs_bwrite(struct xfs_mount *mp, struct xfs_buf *bp); extern int xfs_bawrite(void *mp, xfs_buf_t *bp); extern void xfs_bdwrite(void *mp, xfs_buf_t *bp); + +extern void xfsbdstrat(struct xfs_mount *, struct xfs_buf *); +extern int xfs_bdstrat_cb(struct xfs_buf *); + extern void xfs_buf_ioend(xfs_buf_t *, int); extern void xfs_buf_ioerror(xfs_buf_t *, int); extern int xfs_buf_iorequest(xfs_buf_t *); Index: xfs/fs/xfs/linux-2.6/xfs_lrw.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_lrw.c 2010-01-08 14:36:12.979003708 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_lrw.c 2010-01-08 14:36:31.450260193 +0100 @@ -784,53 +784,6 @@ write_retry: } /* - * All xfs metadata buffers except log state machine buffers - * get this attached as their b_bdstrat callback function. - * This is so that we can catch a buffer - * after prematurely unpinning it to forcibly shutdown the filesystem. - */ -int -xfs_bdstrat_cb(struct xfs_buf *bp) -{ - if (XFS_FORCED_SHUTDOWN(bp->b_mount)) { - trace_xfs_bdstrat_shut(bp, _RET_IP_); - /* - * Metadata write that didn't get logged but - * written delayed anyway. These aren't associated - * with a transaction, and can be ignored. - */ - if (XFS_BUF_IODONE_FUNC(bp) == NULL && - (XFS_BUF_ISREAD(bp)) == 0) - return (xfs_bioerror_relse(bp)); - else - return (xfs_bioerror(bp)); - } - - xfs_buf_iorequest(bp); - return 0; -} - -/* - * Wrapper around bdstrat so that we can stop data from going to disk in case - * we are shutting down the filesystem. Typically user data goes thru this - * path; one of the exceptions is the superblock. - */ -void -xfsbdstrat( - struct xfs_mount *mp, - struct xfs_buf *bp) -{ - ASSERT(mp); - if (!XFS_FORCED_SHUTDOWN(mp)) { - xfs_buf_iorequest(bp); - return; - } - - trace_xfs_bdstrat_shut(bp, _RET_IP_); - xfs_bioerror_relse(bp); -} - -/* * If the underlying (data/log/rt) device is readonly, there are some * operations that cannot proceed. */ Index: xfs/fs/xfs/linux-2.6/xfs_lrw.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_lrw.h 2010-01-08 14:37:05.420004139 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_lrw.h 2010-01-08 14:37:10.786008356 +0100 @@ -22,9 +22,6 @@ struct xfs_mount; struct xfs_inode; struct xfs_buf; -/* errors from xfsbdstrat() must be extracted from the buffer */ -extern void xfsbdstrat(struct xfs_mount *, struct xfs_buf *); -extern int xfs_bdstrat_cb(struct xfs_buf *); extern int xfs_dev_is_read_only(struct xfs_mount *, char *); extern int xfs_zero_eof(struct xfs_inode *, xfs_off_t, xfs_fsize_t); Index: xfs/fs/xfs/xfs_rw.c =================================================================== --- xfs.orig/fs/xfs/xfs_rw.c 2010-01-08 14:37:36.052026657 +0100 +++ xfs/fs/xfs/xfs_rw.c 2010-01-08 14:38:01.461318269 +0100 @@ -153,88 +153,6 @@ xfs_do_force_shutdown( } } - -/* - * Called when we want to stop a buffer from getting written or read. - * We attach the EIO error, muck with its flags, and call biodone - * so that the proper iodone callbacks get called. - */ -int -xfs_bioerror( - xfs_buf_t *bp) -{ - -#ifdef XFSERRORDEBUG - ASSERT(XFS_BUF_ISREAD(bp) || bp->b_iodone); -#endif - - /* - * No need to wait until the buffer is unpinned. - * We aren't flushing it. - */ - XFS_BUF_ERROR(bp, EIO); - /* - * We're calling biodone, so delete B_DONE flag. Either way - * we have to call the iodone callback, and calling biodone - * probably is the best way since it takes care of - * GRIO as well. - */ - XFS_BUF_UNREAD(bp); - XFS_BUF_UNDELAYWRITE(bp); - XFS_BUF_UNDONE(bp); - XFS_BUF_STALE(bp); - - XFS_BUF_CLR_BDSTRAT_FUNC(bp); - xfs_biodone(bp); - - return (EIO); -} - -/* - * Same as xfs_bioerror, except that we are releasing the buffer - * here ourselves, and avoiding the biodone call. - * This is meant for userdata errors; metadata bufs come with - * iodone functions attached, so that we can track down errors. - */ -int -xfs_bioerror_relse( - xfs_buf_t *bp) -{ - int64_t fl; - - ASSERT(XFS_BUF_IODONE_FUNC(bp) != xfs_buf_iodone_callbacks); - ASSERT(XFS_BUF_IODONE_FUNC(bp) != xlog_iodone); - - fl = XFS_BUF_BFLAGS(bp); - /* - * No need to wait until the buffer is unpinned. - * We aren't flushing it. - * - * chunkhold expects B_DONE to be set, whether - * we actually finish the I/O or not. We don't want to - * change that interface. - */ - XFS_BUF_UNREAD(bp); - XFS_BUF_UNDELAYWRITE(bp); - XFS_BUF_DONE(bp); - XFS_BUF_STALE(bp); - XFS_BUF_CLR_IODONE_FUNC(bp); - XFS_BUF_CLR_BDSTRAT_FUNC(bp); - if (!(fl & XFS_B_ASYNC)) { - /* - * Mark b_error and B_ERROR _both_. - * Lot's of chunkcache code assumes that. - * There's no reason to mark error for - * ASYNC buffers. - */ - XFS_BUF_ERROR(bp, EIO); - XFS_BUF_FINISH_IOWAIT(bp); - } else { - xfs_buf_relse(bp); - } - return (EIO); -} - /* * Prints out an ALERT message about I/O error. */ Index: xfs/fs/xfs/xfs_rw.h =================================================================== --- xfs.orig/fs/xfs/xfs_rw.h 2010-01-08 14:38:21.464003870 +0100 +++ xfs/fs/xfs/xfs_rw.h 2010-01-08 14:38:38.516035769 +0100 @@ -40,8 +40,6 @@ xfs_fsb_to_db(struct xfs_inode *ip, xfs_ * Prototypes for functions in xfs_rw.c. */ extern int xfs_write_clear_setuid(struct xfs_inode *ip); -extern int xfs_bioerror(struct xfs_buf *bp); -extern int xfs_bioerror_relse(struct xfs_buf *bp); extern int xfs_read_buf(struct xfs_mount *mp, xfs_buftarg_t *btp, xfs_daddr_t blkno, int len, uint flags, struct xfs_buf **bpp); From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 16:17:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DMHGdh194833 for ; Wed, 13 Jan 2010 16:17:17 -0600 X-ASG-Debug-ID: 1263421093-0a4a03670000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 756F5163EE9 for ; Wed, 13 Jan 2010 14:18:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id kwMLosd1UyyYx4aW for ; Wed, 13 Jan 2010 14:18:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVBXZ-0007Yx-2I for xfs@oss.sgi.com; Wed, 13 Jan 2010 22:18:13 +0000 Message-Id: <20100113221812.879733544@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Wed, 13 Jan 2010 17:17:58 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] xfs: clean up xfs_bwrite Subject: [PATCH 3/3] xfs: clean up xfs_bwrite References: <20100113221755.686033903@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-bwrite-cleanup X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263421093 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Fold XFS_bwrite into it's only caller, xfs_bwrite and move it into xfs_buf.c instead of leaving it as a fairly large inline function. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2010-01-13 14:56:29.241004610 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2010-01-13 14:58:43.278256022 +0100 @@ -980,6 +980,33 @@ xfs_buf_ioerror( } int +xfs_bwrite( + struct xfs_mount *mp, + struct xfs_buf *bp) +{ + int iowait = (bp->b_flags & XBF_ASYNC) == 0; + int error = 0; + + bp->b_strat = xfs_bdstrat_cb; + bp->b_mount = mp; + bp->b_flags |= XBF_WRITE; + if (!iowait) + bp->b_flags |= _XBF_RUN_QUEUES; + + xfs_buf_delwri_dequeue(bp); + xfs_buf_iostrategy(bp); + + if (iowait) { + error = xfs_buf_iowait(bp); + if (error) + xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); + xfs_buf_relse(bp); + } + + return error; +} + +int xfs_bawrite( void *mp, struct xfs_buf *bp) Index: xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2010-01-13 14:56:29.253027581 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2010-01-13 14:59:45.854006783 +0100 @@ -232,6 +232,7 @@ extern void xfs_buf_lock(xfs_buf_t *); extern void xfs_buf_unlock(xfs_buf_t *); /* Buffer Read and Write Routines */ +extern int xfs_bwrite(struct xfs_mount *mp, struct xfs_buf *bp); extern int xfs_bawrite(void *mp, xfs_buf_t *bp); extern void xfs_bdwrite(void *mp, xfs_buf_t *bp); extern void xfs_buf_ioend(xfs_buf_t *, int); @@ -390,24 +391,6 @@ static inline void xfs_buf_relse(xfs_buf #define xfs_biozero(bp, off, len) \ xfs_buf_iomove((bp), (off), (len), NULL, XBRW_ZERO) - -static inline int XFS_bwrite(xfs_buf_t *bp) -{ - int iowait = (bp->b_flags & XBF_ASYNC) == 0; - int error = 0; - - if (!iowait) - bp->b_flags |= _XBF_RUN_QUEUES; - - xfs_buf_delwri_dequeue(bp); - xfs_buf_iostrategy(bp); - if (iowait) { - error = xfs_buf_iowait(bp); - xfs_buf_relse(bp); - } - return error; -} - #define xfs_iowait(bp) xfs_buf_iowait(bp) #define xfs_baread(target, rablkno, ralen) \ Index: xfs/fs/xfs/xfs_rw.c =================================================================== --- xfs.orig/fs/xfs/xfs_rw.c 2010-01-13 14:56:29.229003918 +0100 +++ xfs/fs/xfs/xfs_rw.c 2010-01-13 14:56:43.546029660 +0100 @@ -306,37 +306,6 @@ xfs_read_buf( } /* - * Wrapper around bwrite() so that we can trap - * write errors, and act accordingly. - */ -int -xfs_bwrite( - struct xfs_mount *mp, - struct xfs_buf *bp) -{ - int error; - - /* - * XXXsup how does this work for quotas. - */ - XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb); - bp->b_mount = mp; - XFS_BUF_WRITE(bp); - - if ((error = XFS_bwrite(bp))) { - ASSERT(mp); - /* - * Cannot put a buftrace here since if the buffer is not - * B_HOLD then we will brelse() the buffer before returning - * from bwrite and we could be tracing a buffer that has - * been reused. - */ - xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); - } - return (error); -} - -/* * helper function to extract extent size hint from inode */ xfs_extlen_t Index: xfs/fs/xfs/xfs_rw.h =================================================================== --- xfs.orig/fs/xfs/xfs_rw.h 2010-01-13 14:58:48.628253849 +0100 +++ xfs/fs/xfs/xfs_rw.h 2010-01-13 14:59:00.915005960 +0100 @@ -40,7 +40,6 @@ xfs_fsb_to_db(struct xfs_inode *ip, xfs_ * Prototypes for functions in xfs_rw.c. */ extern int xfs_write_clear_setuid(struct xfs_inode *ip); -extern int xfs_bwrite(struct xfs_mount *mp, struct xfs_buf *bp); extern int xfs_bioerror(struct xfs_buf *bp); extern int xfs_bioerror_relse(struct xfs_buf *bp); extern int xfs_read_buf(struct xfs_mount *mp, xfs_buftarg_t *btp, From BATV+87fc9e5204ecfdce15fa+2334+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 13 16:17:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DMHG81194832 for ; Wed, 13 Jan 2010 16:17:16 -0600 X-ASG-Debug-ID: 1263421092-7d5b038a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5111A1249B29 for ; Wed, 13 Jan 2010 14:18:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id piSsfBa57TRTRFFS for ; Wed, 13 Jan 2010 14:18:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVBXY-0007YL-Lv for xfs@oss.sgi.com; Wed, 13 Jan 2010 22:18:12 +0000 Message-Id: <20100113221812.467038685@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Wed, 13 Jan 2010 17:17:57 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] xfs: clean up log buffer writes Subject: [PATCH 2/3] xfs: clean up log buffer writes References: <20100113221755.686033903@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-log-write-cleanup X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263421093 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Don't bother using XFS_bwrite as it doesn't provide much code for our use case. Instead opencode it and fold xlog_bdstrat_cb into the new xlog_bdstrat helper. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2010-01-02 13:39:48.476003952 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2010-01-02 13:43:39.250005833 +0100 @@ -408,8 +408,6 @@ static inline int XFS_bwrite(xfs_buf_t * return error; } -#define XFS_bdstrat(bp) xfs_buf_iorequest(bp) - #define xfs_iowait(bp) xfs_buf_iowait(bp) #define xfs_baread(target, rablkno, ralen) \ Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2010-01-02 13:39:48.493261945 +0100 +++ xfs/fs/xfs/xfs_log.c 2010-01-02 13:45:36.221004745 +0100 @@ -50,7 +50,6 @@ kmem_zone_t *xfs_log_ticket_zone; (off) += (bytes);} /* Local miscellaneous function prototypes */ -STATIC int xlog_bdstrat_cb(struct xfs_buf *); STATIC int xlog_commit_record(xfs_mount_t *mp, xlog_ticket_t *ticket, xlog_in_core_t **, xfs_lsn_t *); STATIC xlog_t * xlog_alloc_log(xfs_mount_t *mp, @@ -988,35 +987,6 @@ xlog_iodone(xfs_buf_t *bp) } /* xlog_iodone */ /* - * The bdstrat callback function for log bufs. This gives us a central - * place to trap bufs in case we get hit by a log I/O error and need to - * shutdown. Actually, in practice, even when we didn't get a log error, - * we transition the iclogs to IOERROR state *after* flushing all existing - * iclogs to disk. This is because we don't want anymore new transactions to be - * started or completed afterwards. - */ -STATIC int -xlog_bdstrat_cb(struct xfs_buf *bp) -{ - xlog_in_core_t *iclog; - - iclog = XFS_BUF_FSPRIVATE(bp, xlog_in_core_t *); - - if ((iclog->ic_state & XLOG_STATE_IOERROR) == 0) { - /* note for irix bstrat will need struct bdevsw passed - * Fix the following macro if the code ever is merged - */ - XFS_bdstrat(bp); - return 0; - } - - XFS_BUF_ERROR(bp, EIO); - XFS_BUF_STALE(bp); - xfs_biodone(bp); - return XFS_ERROR(EIO); -} - -/* * Return size of each in-core log record buffer. * * All machines get 8 x 32kB buffers by default, unless tuned otherwise. @@ -1158,7 +1128,6 @@ xlog_alloc_log(xfs_mount_t *mp, if (!bp) goto out_free_log; XFS_BUF_SET_IODONE_FUNC(bp, xlog_iodone); - XFS_BUF_SET_BDSTRAT_FUNC(bp, xlog_bdstrat_cb); XFS_BUF_SET_FSPRIVATE2(bp, (unsigned long)1); ASSERT(XFS_BUF_ISBUSY(bp)); ASSERT(XFS_BUF_VALUSEMA(bp) <= 0); @@ -1196,7 +1165,6 @@ xlog_alloc_log(xfs_mount_t *mp, if (!XFS_BUF_CPSEMA(bp)) ASSERT(0); XFS_BUF_SET_IODONE_FUNC(bp, xlog_iodone); - XFS_BUF_SET_BDSTRAT_FUNC(bp, xlog_bdstrat_cb); XFS_BUF_SET_FSPRIVATE2(bp, (unsigned long)1); iclog->ic_bp = bp; iclog->ic_data = bp->b_addr; @@ -1343,6 +1311,37 @@ xlog_grant_push_ail(xfs_mount_t *mp, xfs_trans_ail_push(log->l_ailp, threshold_lsn); } /* xlog_grant_push_ail */ +/* + * The bdstrat callback function for log bufs. This gives us a central + * place to trap bufs in case we get hit by a log I/O error and need to + * shutdown. Actually, in practice, even when we didn't get a log error, + * we transition the iclogs to IOERROR state *after* flushing all existing + * iclogs to disk. This is because we don't want anymore new transactions to be + * started or completed afterwards. + */ +STATIC int +xlog_bdstrat( + struct xfs_buf *bp) +{ + struct xlog_in_core *iclog; + + iclog = XFS_BUF_FSPRIVATE(bp, xlog_in_core_t *); + if (iclog->ic_state & XLOG_STATE_IOERROR) { + XFS_BUF_ERROR(bp, EIO); + XFS_BUF_STALE(bp); + xfs_biodone(bp); + /* + * It would seem logical to return EIO here, but we rely on + * the log state machine to propagate I/O errors instead of + * doing it here. + */ + return 0; + } + + bp->b_flags |= _XBF_RUN_QUEUES; + xfs_buf_iorequest(bp); + return 0; +} /* * Flush out the in-core log (iclog) to the on-disk log in an asynchronous @@ -1462,7 +1461,7 @@ xlog_sync(xlog_t *log, */ XFS_BUF_WRITE(bp); - if ((error = XFS_bwrite(bp))) { + if ((error = xlog_bdstrat(bp))) { xfs_ioerror_alert("xlog_sync", log->l_mp, bp, XFS_BUF_ADDR(bp)); return error; @@ -1502,7 +1501,7 @@ xlog_sync(xlog_t *log, /* account for internal log which doesn't start at block #0 */ XFS_BUF_SET_ADDR(bp, XFS_BUF_ADDR(bp) + log->l_logBBstart); XFS_BUF_WRITE(bp); - if ((error = XFS_bwrite(bp))) { + if ((error = xlog_bdstrat(bp))) { xfs_ioerror_alert("xlog_sync (split)", log->l_mp, bp, XFS_BUF_ADDR(bp)); return error; From SRS0+NbkC+42+fromorbit.com=david@internode.on.net Wed Jan 13 16:29:09 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_65,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DMT9Dc195735 for ; Wed, 13 Jan 2010 16:29:09 -0600 X-ASG-Debug-ID: 1263421803-2c51014b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7B89F1C4CFF7 for ; Wed, 13 Jan 2010 14:30:04 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id vcU4DStfzr3rrWqE for ; Wed, 13 Jan 2010 14:30:04 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11689074-1927428 for multiple; Thu, 14 Jan 2010 09:00:02 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVBiz-00079C-4Z; Thu, 14 Jan 2010 09:30:01 +1100 Date: Thu, 14 Jan 2010 09:30:01 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Subject: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Message-ID: <20100113223001.GR17483@discord.disaster> References: <1263377007-4500-1-git-send-email-david@fromorbit.com> <20100113220814.GA17310@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100113220814.GA17310@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263421805 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19722 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 05:08:14PM -0500, Christoph Hellwig wrote: > On Wed, Jan 13, 2010 at 09:03:27PM +1100, Dave Chinner wrote: > > -LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ > > +DISTDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ > > built .census install.* install-dev.* *.gz autom4te.cache/* libtool \ > > include/builddefs include/platform_defs.h > > > distclean: clean > > - rm -f $(LDIRT) > > + $(Q)rm -f $(DISTDIRT) > > What does this have to do with the rest? That's the "make clean doesn't cause configure to run again" fix. > Otherwise looks good, > > > Reviewed-by: Christoph Hellwig > > Any chance you could also port it to xfsdump? Yes, I'm slowly working my way through the different trees doing this, then I'll go fix all the compile warnings we currently have... Cheers, Dave. -- Dave Chinner david@fromorbit.com From aelder@sgi.com Wed Jan 13 16:31:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DMVKLt195929 for ; Wed, 13 Jan 2010 16:31:20 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3CACB8F80D9; Wed, 13 Jan 2010 14:32:12 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfs: xfs_swap_extents needs to handle dynamic fork offsets Date: Wed, 13 Jan 2010 16:32:12 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6965@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100112130922.GA30985@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfs: xfs_swap_extents needs to handle dynamic fork offsets Thread-Index: AcqTi2yPc65tn26dRb60/pK2KygrTABE9z+w From: "Alex Elder" To: "Christoph Hellwig" , "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: >> + TP_printk("dev %d:%d %s inode 0x%llx, %s format, num_extents %d, " >> + "Max in-fork extents %d, broot size %d, fork offset %d", >=20 > It would be nice to keep the >=20 > "dev %d:%d ino 0x%llx" >=20 > prefix as a convention so that all trace records are similar at their > beginning. Perhaps: + TP_printk("dev %d:%d inode 0x%llx (%s), %s format, num_extents %d, = "=20 ^ +--- symbolic entry->which >> #undef TRACE_INCLUDE_PATH >> diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c >> @@ -53,7 +53,7 @@ xfs_swapext( >> xfs_swapext_t *sxp) >> { >> xfs_inode_t *ip, *tip; >> - struct file *file, *target_file; >> + struct file *file, *tmp_file; >=20 > I think these xfs_swapext belong into a separate patch. While they > make the code quite a bit more redable they're purely cleanups and > can wait for 2.6.34. And while you're at it you might also want to > merge xfs_swap_extents into xfs_swapext - there's no need for that > split at all. I agree. The change here is good (it was confusing and wrong before). But Dave can you please re-submit this with only the critical changes so I can get them to Linus in this release cycle? I think the trace addition is probably fine, just get rid of the gratuitous variable name change in xfs_swapext() and put that in a separate patch. The rest looks all good. Thanks. =09 -Alex From aelder@sgi.com Wed Jan 13 16:42:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_65,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DMgdOv197016 for ; Wed, 13 Jan 2010 16:42:40 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8D917AC007; Wed, 13 Jan 2010 14:43:33 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfsprogs: Make the compile output cleaner V2 Date: Wed, 13 Jan 2010 16:43:33 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6966@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100113220814.GA17310@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfsprogs: Make the compile output cleaner V2 Thread-Index: AcqUoNTOHCOSBAGzSB+c06No0xrprAAAKOfg From: "Alex Elder" To: "Christoph Hellwig" , "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Wed, Jan 13, 2010 at 09:03:27PM +1100, Dave Chinner wrote: >> -LDIRT =3D config.log .dep config.status config.cache confdefs.h = conftest* \ >> +DISTDIRT =3D config.log .dep config.status config.cache confdefs.h = conftest* \ >> built .census install.* install-dev.* *.gz autom4te.cache/* libtool = \ >> include/builddefs include/platform_defs.h >=20 >> distclean: clean >> - rm -f $(LDIRT) >> + $(Q)rm -f $(DISTDIRT) >=20 > What does this have to do with the rest? >=20 > Otherwise looks good, I didn't get the original in my e-mail or I would have responded to it directly. I like this change a lot. > Reviewed-by: Christoph Hellwig >=20 > Any chance you could also port it to xfsdump? And dmapi and xfstests, for that matter... Reviewed-by: Alex Elder From aelder@sgi.com Wed Jan 13 16:58:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DMw8eg197802 for ; Wed, 13 Jan 2010 16:58:08 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9714AAC005; Wed, 13 Jan 2010 14:59:04 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: Re: xfstests: Clean up build output Date: Wed, 13 Jan 2010 16:59:04 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6967@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100113105018.GP17483@discord.disaster> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: allocsize mount option Thread-Index: AcqUP52SIgGTTqk2T+C+kfXK1AxfKwAY0fmw From: "Alex Elder" To: "Dave Chinner" Cc: "Eric Sandeen" , X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > We don't need to see every compiler command line for every file that > is compiled. This makes it hard to see warnings and errors during > compile. For progress notification, we really only need to see the > directory/file being operated on. >=20 > Turn down the verbosity of output by suppressing various make output > and provide better overall visibility of which directory is being > operated on, what the operation is and what is being done to the > files by the build/clean process. >=20 > While doing this, remove explicit target-per-file rules in the > subdirectories being built and replace them with target based rules > using the buildrules hooks for doing this. This results in the > makefiles being simpler, smaller and more consistent. >=20 > This patch does not address the dmapi subdirectory of the xfstests > build system. >=20 > The old style verbose builds can still be run via "make V=3D1 ..." >=20 > Signed-off-by: Dave Chinner Didn't get this in my mail box but it looks good to me. Reviewed-by: Alex Elder From SRS0+Jm1y+42+fromorbit.com=david@internode.on.net Wed Jan 13 17:02:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0DN2UC9198933 for ; Wed, 13 Jan 2010 17:02:30 -0600 X-ASG-Debug-ID: 1263423804-496601a70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B544EF05B7B for ; Wed, 13 Jan 2010 15:03:25 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id oSdGArD7xlMvEiQT for ; Wed, 13 Jan 2010 15:03:25 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11387869-1927428 for multiple; Thu, 14 Jan 2010 09:33:23 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVCFG-0007C2-8d; Thu, 14 Jan 2010 10:03:22 +1100 Date: Thu, 14 Jan 2010 10:03:22 +1100 From: Dave Chinner To: Alex Elder Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: xfs_swap_extents needs to handle dynamic fork offsets Subject: Re: [PATCH] xfs: xfs_swap_extents needs to handle dynamic fork offsets Message-ID: <20100113230322.GS17483@discord.disaster> References: <20100112130922.GA30985@infradead.org> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6965@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6965@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263423806 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19723 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 04:32:12PM -0600, Alex Elder wrote: > Christoph Hellwig wrote: > >> + TP_printk("dev %d:%d %s inode 0x%llx, %s format, num_extents %d, " > >> + "Max in-fork extents %d, broot size %d, fork offset %d", > > > > It would be nice to keep the > > > > "dev %d:%d ino 0x%llx" > > > > prefix as a convention so that all trace records are similar at their > > beginning. > > Perhaps: > + TP_printk("dev %d:%d inode 0x%llx (%s), %s format, num_extents %d, " > ^ > +--- symbolic entry->which > > >> #undef TRACE_INCLUDE_PATH > >> diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c > >> @@ -53,7 +53,7 @@ xfs_swapext( > >> xfs_swapext_t *sxp) > >> { > >> xfs_inode_t *ip, *tip; > >> - struct file *file, *target_file; > >> + struct file *file, *tmp_file; > > > > I think these xfs_swapext belong into a separate patch. While they > > make the code quite a bit more redable they're purely cleanups and > > can wait for 2.6.34. And while you're at it you might also want to > > merge xfs_swap_extents into xfs_swapext - there's no need for that > > split at all. > > I agree. The change here is good (it was confusing and wrong before). I think this is all a bit crazy - I had to make this change before I could understand the code clearly enough to fix the bug. I had to go all the way back to xfs_fsr to work out what it was providing the kernel to determine WTF the kernel code was doing. Clarifying the temp/target inodes is especially important because the bug fix results in enforcing the target/temp inode ordering by checking the temp inode has less extents than the target otherwise it will reject the swap. If you can't tell which inode is which, how can you tell the code is correct? > But Dave can you please re-submit this with only the critical changes > so I can get them to Linus in this release cycle? I think the trace > addition is probably fine, just get rid of the gratuitous variable > name change in xfs_swapext() and put that in a separate patch. The tracing is there so if someone reports a problem with the new code we can easily determine if the correct action was taken by swap extents or whether there's some condition I haven't handled. I'll split it out into three patches - the bug fix, the rename and the tracing code so you can pick and chose which ones you want to take first... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+DK36+43+fromorbit.com=dave@internode.on.net Wed Jan 13 18:43:11 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_63,J_CHICKENPOX_65,J_CHICKENPOX_66,URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E0hAVT205058 for ; Wed, 13 Jan 2010 18:43:11 -0600 X-ASG-Debug-ID: 1263429844-74d201520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 95811164448 for ; Wed, 13 Jan 2010 16:44:05 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id og0HKKIJUr8tyWww for ; Wed, 13 Jan 2010 16:44:05 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11511453-1927428 for ; Thu, 14 Jan 2010 11:14:03 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVDof-0007JF-1m for xfs@oss.sgi.com; Thu, 14 Jan 2010 11:44:01 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVDkb-0003MW-O4 for xfs@oss.sgi.com; Thu, 14 Jan 2010 11:39:49 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsdump: Clean up build output Subject: [PATCH] xfsdump: Clean up build output Date: Thu, 14 Jan 2010 11:39:49 +1100 Message-Id: <1263429589-12896-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263429846 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19730 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We don't need to see every compiler command line for every file that is compiled. This makes it hard to see warnings and errors during compile. For progress notification, we really only need to see the directory/file being operated on. Turn down the verbosity of output by suppressing various make output and provide better overall visibility of which directory is being operated on, what the operation is and what is being done to the files by the build/clean process. Also fix the top level clean rule so that we don't run configure scripts after a make clean, only after a make distclean. The old style verbose builds can still be run via "make V=1 ..." Signed-off-by: Dave Chinner --- Makefile | 43 +++++++++++++++++++++++++++++-------------- doc/Makefile | 3 ++- dump/Makefile | 6 ++++-- include/buildmacros | 10 +++++----- include/buildrules | 30 +++++++++++++++++++++--------- invutil/Makefile | 6 ++++-- restore/Makefile | 6 ++++-- 7 files changed, 69 insertions(+), 35 deletions(-) diff --git a/Makefile b/Makefile index 13c8834..a044512 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,21 @@ # Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved. # +ifeq ("$(origin V)", "command line") + BUILD_VERBOSE = $(V) +endif +ifndef BUILD_VERBOSE + BUILD_VERBOSE = 0 +endif + +ifeq ($(BUILD_VERBOSE),1) + Q = +else + Q = @ +endif + +MAKEOPTS = --no-print-directory Q=$(Q) + TOPDIR = . HAVE_BUILDDEFS = $(shell test -f $(TOPDIR)/include/builddefs && echo yes || echo no) @@ -15,7 +30,7 @@ SRCTAR = $(PKG_NAME)-$(PKG_VERSION).tar.gz CONFIGURE = aclocal.m4 configure config.guess config.sub install-sh ltmain.sh LSRCFILES = configure.in release.sh README VERSION $(CONFIGURE) -LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ +DISTDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ built .census install.* install-dev.* *.gz autom4te.cache/* libtool \ include/builddefs include/config.h @@ -31,9 +46,9 @@ SUBDIRS = include $(LIB_SUBDIRS) $(TOOL_SUBDIRS) default: include/builddefs include/config.h ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SUBDIRS) + $(Q)$(MAKE) $(MAKEOPTS) $(SUBDIRS) endif # tool/lib dependencies @@ -74,13 +89,13 @@ install: default $(addsuffix -install,$(SUBDIRS)) install-dev: default $(addsuffix -install-dev,$(SUBDIRS)) %-install: - $(MAKE) -C $* install + $(Q)$(MAKE) -C $* install %-install-dev: - $(MAKE) -C $* install-dev + $(Q)$(MAKE) -C $* install-dev distclean: clean - rm -f $(LDIRT) + rm -f $(DISTDIRT) realclean: distclean rm -f $(CONFIGURE) @@ -90,19 +105,19 @@ realclean: distclean # dist: include/builddefs include/config.h default ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SRCTAR) + $(Q)$(MAKE) $(MAKEOPTS) $(SRCTAR) endif deb: include/builddefs include/config.h ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SRCDIR) - $(MAKE) -C po - $(MAKE) source-link - cd $(SRCDIR) && dpkg-buildpackage + $(Q)$(MAKE) $(MAKEOPTS) $(SRCDIR) + $(Q)$(MAKE) $(MAKEOPTS) -C po + $(Q)$(MAKE) $(MAKEOPTS) source-link + $(Q)cd $(SRCDIR) && dpkg-buildpackage endif $(SRCDIR) : $(_FORCE) @@ -110,6 +125,6 @@ $(SRCDIR) : $(_FORCE) mkdir -p $@ $(SRCTAR) : default $(SRCDIR) - $(MAKE) source-link + $(Q)$(MAKE) $(MAKEOPTS) source-link unset TAPE; $(TAR) -cf - $(SRCDIR) | $(ZIP) --best > $@ && \ echo Wrote: $@ diff --git a/doc/Makefile b/doc/Makefile index 8567172..dac0401 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -17,7 +17,8 @@ default: CHANGES.gz include $(BUILDRULES) CHANGES.gz: - $(ZIP) --best -c < CHANGES > $@ + @echo " [ZIP] $@" + $(Q)$(ZIP) --best -c < CHANGES > $@ install: default $(INSTALL) -m 755 -d $(PKG_DOC_DIR) diff --git a/dump/Makefile b/dump/Makefile index a24fde3..a0c74dc 100644 --- a/dump/Makefile +++ b/dump/Makefile @@ -106,7 +106,9 @@ install: default install-dev: $(COMMINCL) $(COMMON): - $(RM) $@; $(LN_S) ../common/$@ $@ + @echo " [LN] $@" + $(Q)$(RM) $@; $(LN_S) ../common/$@ $@ $(INVINCL) $(INVCOMMON): - $(RM) $@; $(LN_S) ../inventory/$@ $@ + @echo " [LN] $@" + $(Q)$(RM) $@; $(LN_S) ../inventory/$@ $@ diff --git a/include/buildmacros b/include/buildmacros index ea769fa..a7eebe6 100644 --- a/include/buildmacros +++ b/include/buildmacros @@ -13,7 +13,7 @@ LDFLAGS += $(LOADERFLAGS) $(LLDFLAGS) LTLDFLAGS += $(LOADERFLAGS) LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB) -MAKEOPTS = --no-print-directory +MAKEOPTS = --no-print-directory Q=$(Q) SRCFILES = Makefile $(HFILES) $(CFILES) $(LSRCFILES) $(LFILES) $(YFILES) DEPDIRT = dep dep.bak @@ -45,10 +45,10 @@ LIBNAME = $(basename $(LTLIBRARY)) LTOBJECTS = $(OBJECTS:.o=.lo) LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -LTLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) -LTEXEC = $(LIBTOOL) --mode=execute -LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CCF) +LTLINK = $(LIBTOOL) --quiet --tag=CC --mode=link $(CC) +LTEXEC = $(LIBTOOL) --quiet --mode=execute +LTINSTALL = $(LIBTOOL) --quiet --mode=install $(INSTALL) +LTCOMPILE = $(LIBTOOL) --quiet --tag=CC --mode=compile $(CCF) ifeq ($(ENABLE_SHARED),yes) LTLDFLAGS += -rpath $(PKG_ROOT_LIB_DIR) diff --git a/include/buildrules b/include/buildrules index 2e3d3bb..a9eb092 100644 --- a/include/buildrules +++ b/include/buildrules @@ -7,10 +7,11 @@ _BUILDRULES_INCLUDED_ = 1 include $(TOPDIR)/include/builddefs clean clobber : $(addsuffix -clean,$(SUBDIRS)) - rm -f $(DIRT) - rm -fr $(DIRDIRT) + @rm -f $(DIRT) + @rm -fr $(DIRDIRT) %-clean: - $(MAKE) -C $* clean + @echo "Cleaning $*" + $(Q)$(MAKE) $(MAKEOPTS) -q -C $* clean || $(MAKE) $(MAKEOPTS) -C $* clean # Never blow away subdirs ifdef SUBDIRS @@ -18,7 +19,8 @@ ifdef SUBDIRS .PHONY: $(SUBDIRS) $(SUBDIRS): - $(MAKE) -C $@ + @echo "Building $@" + $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@ endif source-link: @@ -38,20 +40,29 @@ source-link: ifdef LTCOMMAND $(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES) - $(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) + @echo " [LD] $@" + $(Q)$(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) endif ifdef LTLIBRARY $(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS) - $(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) + @echo " [LD] $@" + $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) %.lo: %.c - $(LTCOMPILE) -c $< + @echo " [CC] $@" + $(Q)$(LTCOMPILE) -c $< +else +%.o: %.c + @echo " [CC] $@" + $(Q)$(CC) $(CFLAGS) -c $< + endif ifdef POTHEAD $(POTHEAD): $(XGETTEXTFILES) - $(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES) + @echo " [GETTXT] $@" + $(Q)$(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES) # Update translations update-po: $(POTHEAD) $(wildcard $(TOPDIR)/po/*.po) @@ -70,7 +81,8 @@ update-po: $(POTHEAD) $(wildcard $(TOPDIR)/po/*.po) done %.mo: %.po - $(MSGFMT) -c --statistics -o $@ $< + @echo " [MSGFMT] $@" + $(Q)$(MSGFMT) -c --statistics -o $@ $< endif endif # _BUILDRULES_INCLUDED_ diff --git a/invutil/Makefile b/invutil/Makefile index 5ea0719..9e361f1 100644 --- a/invutil/Makefile +++ b/invutil/Makefile @@ -71,7 +71,9 @@ install: default install-dev: $(COMMINCL) $(COMMON): - $(RM) $@; $(LN_S) ../common/$@ $@ + @echo " [LN] $@" + $(Q)$(RM) $@; $(LN_S) ../common/$@ $@ $(INVINCL) $(INVCOMMON): - $(RM) $@; $(LN_S) ../inventory/$@ $@ + @echo " [LN] $@" + $(Q)$(RM) $@; $(LN_S) ../inventory/$@ $@ diff --git a/restore/Makefile b/restore/Makefile index 3890af5..a587632 100644 --- a/restore/Makefile +++ b/restore/Makefile @@ -118,7 +118,9 @@ install: default install-dev: $(COMMINCL) $(COMMON): - $(RM) $@; $(LN_S) ../common/$@ $@ + @echo " [LN] $@" + $(Q)$(RM) $@; $(LN_S) ../common/$@ $@ $(INVINCL) $(INVCOMMON): - $(RM) $@; $(LN_S) ../inventory/$@ $@ + @echo " [LN] $@" + $(Q)$(RM) $@; $(LN_S) ../inventory/$@ $@ -- 1.6.5 From SRS0+cXdZ+43+fromorbit.com=david@internode.on.net Wed Jan 13 18:46:44 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E0kiRe205369 for ; Wed, 13 Jan 2010 18:46:44 -0600 X-ASG-Debug-ID: 1263430058-74f301610000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A37CE16447B for ; Wed, 13 Jan 2010 16:47:39 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id coYZYFjX20XNUDcR for ; Wed, 13 Jan 2010 16:47:39 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11511478-1927428 for multiple; Thu, 14 Jan 2010 11:17:38 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVDs8-0007JU-LS; Thu, 14 Jan 2010 11:47:36 +1100 Date: Thu, 14 Jan 2010 11:47:36 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: kill XFS_QMOPT_ASYNC Subject: Re: [PATCH 1/3] xfs: kill XFS_QMOPT_ASYNC Message-ID: <20100114004736.GT17483@discord.disaster> References: <20100113220547.846700560@bombadil.infradead.org> <20100113220602.632551077@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100113220602.632551077@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263430060 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19730 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 05:05:48PM -0500, Christoph Hellwig wrote: > The option is unused and one of the few remaining users of xfs_bawrite, > so let's get rid of it. > > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Dave Chinner FWIW, I've got a bigger patch that kills off all three QMOPT writeback flags, but it isn't quite ready yet... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+1RRB+43+fromorbit.com=david@internode.on.net Wed Jan 13 18:52:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E0qxi2205762 for ; Wed, 13 Jan 2010 18:52:59 -0600 X-ASG-Debug-ID: 1263430434-785301550000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DEE8E16438A for ; Wed, 13 Jan 2010 16:53:54 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id UvQFidTecH3d8V0G for ; Wed, 13 Jan 2010 16:53:54 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11544775-1927428 for multiple; Thu, 14 Jan 2010 11:23:53 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVDyB-0007Jw-LW; Thu, 14 Jan 2010 11:53:51 +1100 Date: Thu, 14 Jan 2010 11:53:51 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/3] xfs: clean up error handling in xfs_trans_dqresv Subject: Re: [PATCH 2/3] xfs: clean up error handling in xfs_trans_dqresv Message-ID: <20100114005351.GU17483@discord.disaster> References: <20100113220547.846700560@bombadil.infradead.org> <20100113220602.928911019@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100113220602.928911019@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263430435 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19732 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 05:05:49PM -0500, Christoph Hellwig wrote: > Move the error code selection after the goto label and fold the > xfs_quota_error helper into it. > > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From stevecs@chaven.com Wed Jan 13 19:10:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, HTML_MESSAGE,J_CHICKENPOX_33,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E1AT2a207140 for ; Wed, 13 Jan 2010 19:10:29 -0600 X-ASG-Debug-ID: 1263431484-74f1029d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from omr4.networksolutionsemail.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 736991645F5 for ; Wed, 13 Jan 2010 17:11:24 -0800 (PST) Received: from omr4.networksolutionsemail.com (omr4.networksolutionsemail.com [205.178.146.54]) by cuda.sgi.com with ESMTP id 4pfZyCmeBdLay8dZ for ; Wed, 13 Jan 2010 17:11:24 -0800 (PST) Received: from localhcloudmarkgw1 (mail.networksolutionsemail.com [205.178.146.50]) by omr4.networksolutionsemail.com (8.13.6/8.13.6) with ESMTP id o0E1BOoi012386 for ; Wed, 13 Jan 2010 20:11:24 -0500 Authentication-Results: localhcloudmarkgw1 smtp.user=stevecs; auth=pass (CRAM-MD5) Received: from [75.26.225.171] ([75.26.225.171:4323] helo=[127.0.0.1]) by localhcloudmarkgw1 (envelope-from ) (ecelerity 2.2.2.41 r(31179/31189)) with ESMTPA id CB/0C-23578-57E6E4B4; Wed, 13 Jan 2010 20:08:05 -0500 Message-ID: <4B4E6F3F.1090901@chaven.com> Date: Wed, 13 Jan 2010 19:11:27 -0600 From: Steve Costaras User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.5) Gecko/20091204 Lightning/1.0b2pre Thunderbird/3.0 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: XFS data corruption with high I/O even on hardware raid Subject: XFS data corruption with high I/O even on hardware raid Content-Type: multipart/alternative; boundary="------------090000090608090002030900" X-Barracuda-Connect: omr4.networksolutionsemail.com[205.178.146.54] X-Barracuda-Start-Time: 1263431485 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19732 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. --------------090000090608090002030900 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Ok, I've been seeing a problem here since had to move over to XFS from JFS due to file system size issues. I am seeing XFS Data corruption under ?heavy io? Basically, what happens is that under heavy load (i.e. if I'm doing say a xfs_fsr (which nearly always triggers the freeze issue) on a volume the system hovers around 90% utilization for the dm device for a while (sometimes an hour+, sometimes minutes) the subsystem goes into 100% utilization and then freezes solid forcing me to do a hard reboot of the box. When coming back up generally the XFS volumes are really screwed up (see below). Areca cards all have BBU's and the only write cache is on the BBU (drive cache disabled). Systems are all UPS protected as well. These freezes have happened too frequently and unfortunatly nothing is logged anywhere. It's not worth doing a repair as the amount of corruption is too extensive so requires a complete restore from backup. I just mention xfs_fsr here as that /seems/ to generate an I/O pattern that nearly always results in a freeze. I have done it with other high-i/o functions though not as reliably. I don't know what else can be done to remove this issue (and not really sure it's really directly related to XFS, as LVM and the areca driver are also involved) however the main result is that XFS gets really screwed up. I did NOT have these issues w/ JFS (same subsystem lvm + areca set up so it /seems/ to point to XFS or at least it's tied in there somewhere) unfortunately JFS has issues with file systems larger than 32TiB so the only file system I can use is XFS. Since I'm using hardware raid w/ BBU when I reboot and it comes back up the raid controller writes out to the drives any outstanding data in it's cache and from the hardware point of view (as well as lvm's point of view) the array is ok. The file system however generally can't be mounted (about 4 out of 5 times, some times it does get auto-mounted but when I then run an xfs_repair -n -v in those cases there are pages of errors (badly aligned inode rec, bad starting inode #'s, dubious inode btree block headers among others). When I let a repair actually run in one case out of 4,500,000 files it linked about 2,000,000 or so but there was no way to identify and verify file integrity. The others were just lost. This is not limited to large volume sizes I have seen similar on small ~2TiB file systems as well. Also when it happened in a couple cases the file system that was taking the I/O (say xfs_fsr -v /home ) another XFS filesystem on the same system which was NOT taking much if any I/O gets badly corrupted (say /var/test ). Both would be using the same areca controllers and same physical discs (same PV's and same VG's but different LV's). Any suggestions on how to isolate or eliminate this would be greatly appreciated. Steve Technical data is below: ============== $iostat -m -x 15 (IOSTAT capture right up to a freeze event:) (system sits here for a long bit hovering around 90% for the DM device and about 30% for the the PV's) Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 7.80 0.07 2.00 0.00 0.04 38.19 0.00 2.26 0.97 0.20 sdb 120.07 34.47 253.00 706.67 24.98 28.96 115.11 1.06 1.10 0.28 26.87 sdc 48.80 28.93 324.73 730.87 24.98 28.94 104.62 1.19 1.13 0.29 30.60 sdd 121.73 33.13 251.60 700.40 24.99 28.94 116.01 1.11 1.17 0.29 27.40 sde 49.00 28.60 324.33 731.47 24.99 28.95 104.65 1.22 1.15 0.26 27.53 sdf 120.27 33.20 253.00 701.00 24.99 28.97 115.84 1.14 1.20 0.33 31.67 sdg 48.80 29.07 324.73 731.80 25.00 28.95 104.59 1.37 1.29 0.35 36.93 sdh 120.47 33.47 252.73 702.53 25.00 28.96 115.68 1.24 1.30 0.35 33.67 sdi 50.73 28.27 322.73 735.13 24.99 29.01 104.54 1.34 1.26 0.31 32.27 dm-0 0.00 0.00 0.13 0.13 0.00 0.00 12.00 0.01 25.00 25.00 0.67 dm-1 0.00 0.00 1602.67 992.73 199.93 231.69 340.59 4.12 1.59 0.34 88.40 dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 (Then it jumps up to 99-100% for the majority of devices (here sdf,sdg, sdh, sdi are all on the same physical areca card). avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.60 24.71 0.00 74.69 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 4.07 0.00 1.13 0.00 0.02 36.71 0.00 1.18 1.18 0.13 sdb 2.07 1.93 8.00 17.00 0.63 0.84 120.33 0.04 1.49 0.35 0.87 sdc 2.87 1.20 7.40 22.13 0.63 0.83 101.86 0.04 1.49 0.25 0.73 sdd 2.13 1.80 8.07 17.20 0.63 0.84 119.64 0.04 1.45 0.32 0.80 sde 2.93 1.07 7.20 21.80 0.63 0.83 103.65 0.05 1.89 0.34 1.00 sdf 1.93 1.87 8.13 13.67 0.63 0.64 119.78 46.58 2.35 45.63 99.47 sdg 2.87 1.00 7.13 17.80 0.62 0.64 104.04 64.12 2.41 39.84 99.33 sdh 2.07 1.67 7.93 13.47 0.62 0.64 121.22 47.85 2.12 46.39 99.27 sdi 2.93 1.07 7.07 18.47 0.62 0.64 101.77 62.15 2.32 38.83 99.13 dm-0 0.00 0.00 0.20 0.07 0.00 0.00 10.00 0.00 2.50 2.50 0.07 dm-1 0.00 0.00 40.20 30.13 5.03 6.68 340.96 74.73 2.13 14.19 99.80 dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 (Then here it hits 100% and the system locks) avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.81 24.95 0.00 74.24 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 8.40 0.00 2.13 0.00 0.04 39.50 0.00 1.88 0.63 0.13 sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdd 0.00 0.00 0.00 0.07 0.00 0.00 16.00 0.00 0.00 0.00 0.00 sde 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdf 0.00 0.00 0.00 0.00 0.00 0.00 0.00 50.00 0.00 0.00 100.00 sdg 0.00 0.00 0.00 0.00 0.00 0.00 0.00 69.00 0.00 0.00 100.00 sdh 0.00 0.00 0.00 0.00 0.00 0.00 0.00 50.00 0.00 0.00 100.00 sdi 0.00 0.00 0.00 0.00 0.00 0.00 0.00 65.00 0.00 0.00 100.00 dm-0 0.00 0.00 0.00 0.07 0.00 0.00 16.00 0.00 0.00 0.00 0.00 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 85.00 0.00 0.00 100.00 dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ============ (System) (Ubuntu 8.04.3 LTS): Linux loki 2.6.24-26-server #1 SMP Tue Dec 1 18:26:43 UTC 2009 x86_64 GNU/Linux -------------- xfs_repair version 2.9.4 ============= (modinfo's) filename: /lib/modules/2.6.24-26-server/kernel/fs/xfs/xfs.ko license: GPL description: SGI XFS with ACLs, security attributes, realtime, large block/inode numbers, no debug enabled author: Silicon Graphics, Inc. srcversion: A2E6459B3A4C96355F95E61 depends: vermagic: 2.6.24-26-server SMP mod_unload ============ filename: /lib/modules/2.6.24-26-server/kernel/drivers/scsi/arcmsr/arcmsr.ko version: Driver Version 1.20.00.15 2007/08/30 license: Dual BSD/GPL description: ARECA (ARC11xx/12xx/13xx/16xx) SATA/SAS RAID HOST Adapter author: Erich Chen srcversion: 38E576EB40C1A58E8B9E007 alias: pci:v000017D3d00001681sv*sd*bc*sc*i* alias: pci:v000017D3d00001680sv*sd*bc*sc*i* alias: pci:v000017D3d00001381sv*sd*bc*sc*i* alias: pci:v000017D3d00001380sv*sd*bc*sc*i* alias: pci:v000017D3d00001280sv*sd*bc*sc*i* alias: pci:v000017D3d00001270sv*sd*bc*sc*i* alias: pci:v000017D3d00001260sv*sd*bc*sc*i* alias: pci:v000017D3d00001230sv*sd*bc*sc*i* alias: pci:v000017D3d00001220sv*sd*bc*sc*i* alias: pci:v000017D3d00001210sv*sd*bc*sc*i* alias: pci:v000017D3d00001202sv*sd*bc*sc*i* alias: pci:v000017D3d00001201sv*sd*bc*sc*i* alias: pci:v000017D3d00001200sv*sd*bc*sc*i* alias: pci:v000017D3d00001170sv*sd*bc*sc*i* alias: pci:v000017D3d00001160sv*sd*bc*sc*i* alias: pci:v000017D3d00001130sv*sd*bc*sc*i* alias: pci:v000017D3d00001120sv*sd*bc*sc*i* alias: pci:v000017D3d00001110sv*sd*bc*sc*i* depends: scsi_mod vermagic: 2.6.24-26-server SMP mod_unload =========== filename: /lib/modules/2.6.24-26-server/kernel/drivers/md/dm-mod.ko license: GPL author: Joe Thornber description: device-mapper driver srcversion: A7E89E997173E41CB6AAF04 depends: vermagic: 2.6.24-26-server SMP mod_unload parm: major:The major number of the device mapper (uint) =========== ============ mounted with: /dev/vg_media/lv_ftpshare /var/ftp xfs defaults,relatime,nobarrier,logbufs=8,logbsize=256k,sunit=256,swidth=2048,inode64,noikeep,largeio,swalloc,allocsize=128k 0 2 ============ XFS info: meta-data=/dev/mapper/vg_media-lv_ftpshare isize=2048 agcount=41, agsize=268435424 blks = sectsz=512 attr=0 data = bsize=4096 blocks=10737418200, imaxpct=1 = sunit=32 swidth=256 blks, unwritten=1 naming =version 2 bsize=4096 log =internal bsize=4096 blocks=32768, version=2 = sectsz=512 sunit=32 blks, lazy-count=0 realtime =none extsz=1048576 blocks=0, rtextents=0 ============= XFS is running on top of LVM: --- Logical volume --- LV Name /dev/vg_media/lv_ftpshare VG Name vg_media LV UUID MgEBWv-x9fn-KUoJ-3y5X-snlk-7F9E-A3CiHh LV Write Access read/write LV Status available # open 1 LV Size 40.00 TB Current LE 40960 Segments 1 Allocation inherit Read ahead sectors 0 Block device 254:1 ============== LVM is using as it's base physical volumes 8 hardware raids (MediaVol00-70 inclusive): [ 175.320738] ARECA RAID ADAPTER4: FIRMWARE VERSION V1.47 2009-07-16 [ 175.336238] scsi4 : Areca SAS Host Adapter RAID Controller( RAID6 capable) [ 175.336239] Driver Version 1.20.00.15 2007/08/30 [ 175.336387] ACPI: PCI Interrupt 0000:0a:00.0[A] -> GSI 17 (level, low) -> IRQ 17 [ 175.336395] PCI: Setting latency timer of device 0000:0a:00.0 to 64 [ 175.336990] scsi 4:0:0:0: Direct-Access Areca BootVol#00 R001 PQ: 0 ANSI: 5 [ 175.337096] scsi 4:0:0:1: Direct-Access Areca MediaVol#00 R001 PQ: 0 ANSI: 5 [ 175.337169] scsi 4:0:0:2: Direct-Access Areca MediaVol#10 R001 PQ: 0 ANSI: 5 [ 175.337240] scsi 4:0:0:3: Direct-Access Areca MediaVol#20 R001 PQ: 0 ANSI: 5 [ 175.337312] scsi 4:0:0:4: Direct-Access Areca MediaVol#30 R001 PQ: 0 ANSI: 5 [ 175.337907] scsi 4:0:16:0: Processor Areca RAID controller R001 PQ: 0 ANSI: 0 [ 175.356231] ARECA RAID ADAPTER5: FIRMWARE VERSION V1.47 2009-10-22 [ 175.376144] scsi5 : Areca SAS Host Adapter RAID Controller( RAID6 capable) [ 175.376145] Driver Version 1.20.00.15 2007/08/30 [ 175.377354] scsi 5:0:0:5: Direct-Access Areca MediaVol#40 R001 PQ: 0 ANSI: 5 [ 175.377434] scsi 5:0:0:6: Direct-Access Areca MediaVol#50 R001 PQ: 0 ANSI: 5 [ 175.377495] scsi 5:0:0:7: Direct-Access Areca MediaVol#60 R001 PQ: 0 ANSI: 5 [ 175.377587] scsi 5:0:1:0: Direct-Access Areca MediaVol#70 R001 PQ: 0 ANSI: 5 [ 175.378156] scsi 5:0:16:0: Processor Areca RAID controller R001 PQ: 0 ANSI: 0 ================= --------------090000090608090002030900 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Ok, I've been seeing a problem here since had to move over to XFS from JFS due to file system size issues.   I am seeing XFS Data corruption under ?heavy io?   Basically, what happens is that under heavy load (i.e. if I'm doing say a xfs_fsr (which nearly always triggers the freeze issue) on a volume the system hovers around 90% utilization for the dm device for a while (sometimes an hour+, sometimes minutes) the subsystem goes into 100% utilization and then freezes solid forcing me to do a hard reboot of the box.  When coming back up generally the XFS volumes are really screwed up (see below).    Areca cards all have BBU's and the only write cache is on the BBU (drive cache disabled).   Systems are all UPS protected as well.    These freezes have happened too frequently and unfortunatly nothing is logged anywhere.    It's not worth doing a repair as the amount of corruption is too extensive so requires a complete restore from backup.    I just mention xfs_fsr here as that /seems/ to generate an I/O pattern that nearly always results in a freeze.   I have done it with other high-i/o functions though not as reliably.

I don't know what else can be done to remove this issue (and not really sure it's really directly related to XFS, as LVM and the areca driver are also involved) however the main result is that XFS gets really screwed up.   I did NOT have these issues w/ JFS (same subsystem lvm + areca set up so it /seems/ to point to XFS or at least it's tied in there somewhere) unfortunately JFS has issues with file systems larger than 32TiB so the only file system I can use is XFS.

Since I'm using hardware raid w/ BBU when I reboot and it comes back up the raid controller writes out to the drives any outstanding data in it's cache and from the hardware point of view (as well as lvm's point of view) the array is ok.    The file system however generally can't be mounted (about 4 out of 5 times, some times it does get auto-mounted but when I then run an xfs_repair -n -v in those cases there are pages of errors (badly aligned inode rec, bad starting inode #'s, dubious inode btree block headers among others).    When I let a repair actually run in one case out of 4,500,000 files it linked about 2,000,000 or so but there was no way to identify and verify file integrity.  The others were just lost.

This is not limited to large volume sizes I have seen similar on small ~2TiB file systems as well.  Also when it happened in a couple cases the file system that was taking the I/O (say xfs_fsr -v /home ) another XFS filesystem on the same system which was NOT taking much if any I/O gets badly corrupted (say /var/test ).   Both would be using the same areca controllers and same physical discs (same PV's and same VG's but different LV's).

Any suggestions on how to isolate or eliminate this would be greatly appreciated.


Steve


Technical data is below:
==============
$iostat -m -x 15
(IOSTAT capture right up to a freeze event:)
(system sits here for a long bit hovering around 90% for the DM device and about 30% for the the PV's)
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     7.80    0.07    2.00     0.00     0.04    38.19     0.00    2.26   0.97   0.20
sdb             120.07    34.47  253.00  706.67    24.98    28.96   115.11     1.06    1.10   0.28  26.87
sdc              48.80    28.93  324.73  730.87    24.98    28.94   104.62     1.19    1.13   0.29  30.60
sdd             121.73    33.13  251.60  700.40    24.99    28.94   116.01     1.11    1.17   0.29  27.40
sde              49.00    28.60  324.33  731.47    24.99    28.95   104.65     1.22    1.15   0.26  27.53
sdf             120.27    33.20  253.00  701.00    24.99    28.97   115.84     1.14    1.20   0.33  31.67
sdg              48.80    29.07  324.73  731.80    25.00    28.95   104.59     1.37    1.29   0.35  36.93
sdh             120.47    33.47  252.73  702.53    25.00    28.96   115.68     1.24    1.30   0.35  33.67
sdi              50.73    28.27  322.73  735.13    24.99    29.01   104.54     1.34    1.26   0.31  32.27
dm-0              0.00     0.00    0.13    0.13     0.00     0.00    12.00     0.01   25.00  25.00   0.67
dm-1              0.00     0.00 1602.67  992.73   199.93   231.69   340.59     4.12    1.59   0.34  88.40
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00


(Then it jumps up to 99-100% for the majority of devices (here sdf,sdg, sdh, sdi are all on the same physical areca card).
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.60   24.71    0.00   74.69

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     4.07    0.00    1.13     0.00     0.02    36.71     0.00    1.18   1.18   0.13
sdb               2.07     1.93    8.00   17.00     0.63     0.84   120.33     0.04    1.49   0.35   0.87
sdc               2.87     1.20    7.40   22.13     0.63     0.83   101.86     0.04    1.49   0.25   0.73
sdd               2.13     1.80    8.07   17.20     0.63     0.84   119.64     0.04    1.45   0.32   0.80
sde               2.93     1.07    7.20   21.80     0.63     0.83   103.65     0.05    1.89   0.34   1.00
sdf               1.93     1.87    8.13   13.67     0.63     0.64   119.78    46.58    2.35  45.63  99.47
sdg               2.87     1.00    7.13   17.80     0.62     0.64   104.04    64.12    2.41  39.84  99.33
sdh               2.07     1.67    7.93   13.47     0.62     0.64   121.22    47.85    2.12  46.39  99.27
sdi               2.93     1.07    7.07   18.47     0.62     0.64   101.77    62.15    2.32  38.83  99.13
dm-0              0.00     0.00    0.20    0.07     0.00     0.00    10.00     0.00    2.50   2.50   0.07
dm-1              0.00     0.00   40.20   30.13     5.03     6.68   340.96    74.73    2.13  14.19  99.80
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

(Then here it hits 100% and the system locks)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.81   24.95    0.00   74.24

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     8.40    0.00    2.13     0.00     0.04    39.50     0.00    1.88   0.63   0.13
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdd               0.00     0.00    0.00    0.07     0.00     0.00    16.00     0.00    0.00   0.00   0.00
sde               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdf               0.00     0.00    0.00    0.00     0.00     0.00     0.00    50.00    0.00   0.00 100.00
sdg               0.00     0.00    0.00    0.00     0.00     0.00     0.00    69.00    0.00   0.00 100.00
sdh               0.00     0.00    0.00    0.00     0.00     0.00     0.00    50.00    0.00   0.00 100.00
sdi               0.00     0.00    0.00    0.00     0.00     0.00     0.00    65.00    0.00   0.00 100.00
dm-0              0.00     0.00    0.00    0.07     0.00     0.00    16.00     0.00    0.00   0.00   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00    85.00    0.00   0.00 100.00
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00



============ (System)
(Ubuntu 8.04.3 LTS):
Linux loki 2.6.24-26-server #1 SMP Tue Dec 1 18:26:43 UTC 2009 x86_64 GNU/Linux

--------------
xfs_repair version 2.9.4

============= (modinfo's)
filename:       /lib/modules/2.6.24-26-server/kernel/fs/xfs/xfs.ko
license:        GPL
description:    SGI XFS with ACLs, security attributes, realtime, large block/inode numbers, no debug enabled
author:         Silicon Graphics, Inc.
srcversion:     A2E6459B3A4C96355F95E61
depends:
vermagic:       2.6.24-26-server SMP mod_unload
============
filename:       /lib/modules/2.6.24-26-server/kernel/drivers/scsi/arcmsr/arcmsr.ko
version:        Driver Version 1.20.00.15 2007/08/30
license:        Dual BSD/GPL
description:    ARECA (ARC11xx/12xx/13xx/16xx) SATA/SAS RAID HOST Adapter
author:         Erich Chen <support@areca.com.tw>
srcversion:     38E576EB40C1A58E8B9E007
alias:          pci:v000017D3d00001681sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001680sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001381sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001380sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001280sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001270sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001260sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001230sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001220sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001210sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001202sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001201sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001200sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001170sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001160sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001130sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001120sv*sd*bc*sc*i*
alias:          pci:v000017D3d00001110sv*sd*bc*sc*i*
depends:        scsi_mod
vermagic:       2.6.24-26-server SMP mod_unload
===========
filename:       /lib/modules/2.6.24-26-server/kernel/drivers/md/dm-mod.ko
license:        GPL
author:         Joe Thornber <dm-devel@redhat.com>
description:    device-mapper driver
srcversion:     A7E89E997173E41CB6AAF04
depends:
vermagic:       2.6.24-26-server SMP mod_unload
parm:           major:The major number of the device mapper (uint)
===========

============
mounted with:
/dev/vg_media/lv_ftpshare       /var/ftp        xfs     defaults,relatime,nobarrier,logbufs=8,logbsize=256k,sunit=256,swidth=2048,inode64,noikeep,largeio,swalloc,allocsize=128k       0       2

============
XFS info:
meta-data=/dev/mapper/vg_media-lv_ftpshare isize=2048   agcount=41, agsize=268435424 blks
         =                       sectsz=512   attr=0
data     =                       bsize=4096   blocks=10737418200, imaxpct=1
         =                       sunit=32     swidth=256 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal               bsize=4096   blocks=32768, version=2
         =                       sectsz=512   sunit=32 blks, lazy-count=0
realtime =none                   extsz=1048576 blocks=0, rtextents=0

=============
XFS is running on top of LVM:
 --- Logical volume ---
  LV Name                /dev/vg_media/lv_ftpshare
  VG Name                vg_media
  LV UUID                MgEBWv-x9fn-KUoJ-3y5X-snlk-7F9E-A3CiHh
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                40.00 TB
  Current LE             40960
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           254:1

==============
LVM is using as it's base physical volumes 8 hardware raids (MediaVol00-70 inclusive):
[  175.320738] ARECA RAID ADAPTER4: FIRMWARE VERSION V1.47 2009-07-16
[  175.336238] scsi4 : Areca SAS Host Adapter RAID Controller( RAID6 capable)
[  175.336239]  Driver Version 1.20.00.15 2007/08/30
[  175.336387] ACPI: PCI Interrupt 0000:0a:00.0[A] -> GSI 17 (level, low) -> IRQ 17
[  175.336395] PCI: Setting latency timer of device 0000:0a:00.0 to 64
[  175.336990] scsi 4:0:0:0: Direct-Access     Areca    BootVol#00       R001 PQ: 0 ANSI: 5
[  175.337096] scsi 4:0:0:1: Direct-Access     Areca    MediaVol#00      R001 PQ: 0 ANSI: 5
[  175.337169] scsi 4:0:0:2: Direct-Access     Areca    MediaVol#10      R001 PQ: 0 ANSI: 5
[  175.337240] scsi 4:0:0:3: Direct-Access     Areca    MediaVol#20      R001 PQ: 0 ANSI: 5
[  175.337312] scsi 4:0:0:4: Direct-Access     Areca    MediaVol#30      R001 PQ: 0 ANSI: 5
[  175.337907] scsi 4:0:16:0: Processor         Areca    RAID controller  R001 PQ: 0 ANSI: 0
[  175.356231] ARECA RAID ADAPTER5: FIRMWARE VERSION V1.47 2009-10-22
[  175.376144] scsi5 : Areca SAS Host Adapter RAID Controller( RAID6 capable)
[  175.376145]  Driver Version 1.20.00.15 2007/08/30
[  175.377354] scsi 5:0:0:5: Direct-Access     Areca    MediaVol#40      R001 PQ: 0 ANSI: 5
[  175.377434] scsi 5:0:0:6: Direct-Access     Areca    MediaVol#50      R001 PQ: 0 ANSI: 5
[  175.377495] scsi 5:0:0:7: Direct-Access     Areca    MediaVol#60      R001 PQ: 0 ANSI: 5
[  175.377587] scsi 5:0:1:0: Direct-Access     Areca    MediaVol#70      R001 PQ: 0 ANSI: 5
[  175.378156] scsi 5:0:16:0: Processor         Areca    RAID controller  R001 PQ: 0 ANSI: 0

=================

--------------090000090608090002030900-- From SRS0+cXdZ+43+fromorbit.com=david@internode.on.net Wed Jan 13 19:19:12 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E1JBEv207624 for ; Wed, 13 Jan 2010 19:19:12 -0600 X-ASG-Debug-ID: 1263431990-74d203610000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 516E116435F for ; Wed, 13 Jan 2010 17:19:51 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id rDtBkfRUykBnBIZX for ; Wed, 13 Jan 2010 17:19:51 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11526373-1927428 for multiple; Thu, 14 Jan 2010 11:49:50 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVENI-0007Lw-7p; Thu, 14 Jan 2010 12:19:48 +1100 Date: Thu, 14 Jan 2010 12:19:48 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] xfs: implement quota warnings via netlink Subject: Re: [PATCH 3/3] xfs: implement quota warnings via netlink Message-ID: <20100114011948.GV17483@discord.disaster> References: <20100113220547.846700560@bombadil.infradead.org> <20100113220603.251930871@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100113220603.251930871@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263431992 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19734 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 05:05:50PM -0500, Christoph Hellwig wrote: > Wire up quota_send_warning to send quota warnings over netlink. This is > used by various desktops to show user quota warnings. A couple of comments below. > Tested by running the quota_nld daemon while running the xfstest quota > tests and observing the warnings. I'll see how I can get a more formal > testcase for it written. Sounds like it needs something similar to the dmapi event listeners we use for testing that the dmapi events are generated correctly.... > > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/quota/xfs_trans_dquot.c > =================================================================== > --- xfs.orig/fs/xfs/quota/xfs_trans_dquot.c 2010-01-13 13:51:20.925003101 +0100 > +++ xfs/fs/xfs/quota/xfs_trans_dquot.c 2010-01-13 14:10:46.083254517 +0100 > @@ -589,6 +589,20 @@ xfs_trans_unreserve_and_mod_dquots( > } > } > > +STATIC void > +xfs_quota_send_warning( > + struct xfs_mount *mp, > + struct xfs_dquot *dqp, > + int hard) > +{ > + /* no warnings for project quotas - we just return ENOSPC later */ > + if (dqp->dq_flags & XFS_DQ_PROJ) > + return; > + quota_send_warning((dqp->dq_flags & XFS_DQ_USER) ? USRQUOTA : GRPQUOTA, > + be32_to_cpu(dqp->q_core.d_id), mp->m_super->s_dev, > + hard ? QUOTA_NL_BHARDWARN: QUOTA_NL_BSOFTWARN); > +} This appears to send "over block quota" warnings even when the error is caused by the number of inodes going over limit. For inode count warnings we should be sending QUOTA_NL_IHARDWARN or QUOTA_NL_ISOFTWARN. That could be easily done if the "hard" parameter is changed to the type of warning which is set up in the calling function. We could probably even return the grace limit expired versions as well when over the soft limits with a slight change to the soft limit warning logic as well... > + > /* > * This reserves disk blocks and inodes against a dquot. > * Flags indicate if the dquot is to be locked here and also > @@ -612,6 +626,7 @@ xfs_trans_dqresv( > xfs_qcnt_t count; > xfs_qcnt_t *resbcountp; > xfs_quotainfo_t *q = mp->m_quotainfo; > + int hardwarn = 0; As mentioned above, this should probably be a "warn_type" parameter rather than a boolean hard/soft warning flag. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+g8Nd+43+fromorbit.com=dave@internode.on.net Wed Jan 13 19:37:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E1bMAe208859 for ; Wed, 13 Jan 2010 19:37:22 -0600 X-ASG-Debug-ID: 1263433097-4c5903bb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2040D1C4D8C4 for ; Wed, 13 Jan 2010 17:38:18 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id GEwMI4GkB5y5hFMw for ; Wed, 13 Jan 2010 17:38:18 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11630446-1927428 for ; Thu, 14 Jan 2010 12:08:17 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVEf8-0007MY-TX for xfs@oss.sgi.com; Thu, 14 Jan 2010 12:38:14 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVEb5-0003UK-Kr for xfs@oss.sgi.com; Thu, 14 Jan 2010 12:34:03 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] xfs: add tracing to xfs_swap_extents Subject: [PATCH 2/3] xfs: add tracing to xfs_swap_extents Date: Thu, 14 Jan 2010 12:33:55 +1100 Message-Id: <1263432836-13368-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263432836-13368-1-git-send-email-david@fromorbit.com> References: <1263432836-13368-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263433099 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19734 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean TO be able to diagnose whether the swap extents function is detecting compatible inode data fork configurations for swapping extents, add tracing points to the code to allow us to see the format of the inode forks before and after the swap. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_trace.h | 53 ++++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_dfrag.c | 5 ++++ 2 files changed, 58 insertions(+), 0 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h index 058fff1..1bb09e7 100644 --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h @@ -1441,6 +1441,59 @@ TRACE_EVENT(xfs_dir2_leafn_moveents, __entry->count) ); +#define XFS_SWAPEXT_INODES \ + { 0, "target" }, \ + { 1, "temp" } + +#define XFS_INODE_FORMAT_STR \ + { 0, "invalid" }, \ + { 1, "local" }, \ + { 2, "extent" }, \ + { 3, "btree" } + +DECLARE_EVENT_CLASS(xfs_swap_extent_class, + TP_PROTO(struct xfs_inode *ip, int which), + TP_ARGS(ip, which), + TP_STRUCT__entry( + __field(dev_t, dev) + __field(int, which) + __field(xfs_ino_t, ino) + __field(int, format) + __field(int, nex) + __field(int, max_nex) + __field(int, broot_size) + __field(int, fork_off) + ), + TP_fast_assign( + __entry->dev = VFS_I(ip)->i_sb->s_dev; + __entry->which = which; + __entry->ino = ip->i_ino; + __entry->format = ip->i_d.di_format; + __entry->nex = ip->i_d.di_nextents; + __entry->max_nex = ip->i_df.if_ext_max; + __entry->broot_size = ip->i_df.if_broot_bytes; + __entry->fork_off = XFS_IFORK_BOFF(ip); + ), + TP_printk("dev %d:%d ino 0x%llx (%s), %s format, num_extents %d, " + "Max in-fork extents %d, broot size %d, fork offset %d", + MAJOR(__entry->dev), MINOR(__entry->dev), + __entry->ino, + __print_symbolic(__entry->which, XFS_SWAPEXT_INODES), + __print_symbolic(__entry->format, XFS_INODE_FORMAT_STR), + __entry->nex, + __entry->max_nex, + __entry->broot_size, + __entry->fork_off) +) + +#define DEFINE_SWAPEXT_EVENT(name) \ +DEFINE_EVENT(xfs_swap_extent_class, name, \ + TP_PROTO(struct xfs_inode *ip, int which), \ + TP_ARGS(ip, which)) + +DEFINE_SWAPEXT_EVENT(xfs_swap_extent_before); +DEFINE_SWAPEXT_EVENT(xfs_swap_extent_after); + #endif /* _TRACE_XFS_H */ #undef TRACE_INCLUDE_PATH diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index 97711d8..eb4e404 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c @@ -254,6 +254,9 @@ xfs_swap_extents( goto out_unlock; } + trace_xfs_swap_extent_before(ip, 0); + trace_xfs_swap_extent_before(tip, 1); + /* check inode formats now that data is flushed */ error = xfs_swap_extents_check_format(ip, tip); if (error) { @@ -421,6 +424,8 @@ xfs_swap_extents( error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); + trace_xfs_swap_extent_after(ip, 0); + trace_xfs_swap_extent_after(tip, 1); out: kmem_free(tempifp); return error; -- 1.6.5 From SRS0+g8Nd+43+fromorbit.com=dave@internode.on.net Wed Jan 13 19:37:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E1bMOw208858 for ; Wed, 13 Jan 2010 19:37:22 -0600 X-ASG-Debug-ID: 1263433097-4c6803d10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0C9421C4D8BD for ; Wed, 13 Jan 2010 17:38:17 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id Q0aiBgthl7JLOPD8 for ; Wed, 13 Jan 2010 17:38:17 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11630444-1927428 for ; Thu, 14 Jan 2010 12:08:16 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVEf8-0007MZ-VC for xfs@oss.sgi.com; Thu, 14 Jan 2010 12:38:14 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVEb5-0003UN-Ma for xfs@oss.sgi.com; Thu, 14 Jan 2010 12:34:03 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] xfs: clean up inconsistent variable naming in xfs_swap_extent Subject: [PATCH 3/3] xfs: clean up inconsistent variable naming in xfs_swap_extent Date: Thu, 14 Jan 2010 12:33:56 +1100 Message-Id: <1263432836-13368-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263432836-13368-1-git-send-email-david@fromorbit.com> References: <1263432836-13368-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263433099 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19734 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The swap extent ioctl passes in a target inode and a temporary inode which are clearly named in the ioctl structure. The code then assigns temp to target and vice versa, making it extremely difficult to work out which inode is which later in the code. Make this consistent throughout the code. Also make xfs_swap_extent static as there are no external users of the function. Signed-off-by: Dave Chinner --- fs/xfs/xfs_dfrag.c | 38 ++++++++++++++++++++++---------------- fs/xfs/xfs_dfrag.h | 3 --- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index eb4e404..e339e89 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c @@ -45,15 +45,21 @@ #include "xfs_vnodeops.h" #include "xfs_trace.h" + +static int xfs_swap_extents( + xfs_inode_t *ip, /* target inode */ + xfs_inode_t *tip, /* tmp inode */ + xfs_swapext_t *sxp); + /* - * Syssgi interface for swapext + * ioctl interface for swapext */ int xfs_swapext( xfs_swapext_t *sxp) { xfs_inode_t *ip, *tip; - struct file *file, *target_file; + struct file *file, *tmp_file; int error = 0; /* Pull information for the target fd */ @@ -68,46 +74,46 @@ xfs_swapext( goto out_put_file; } - target_file = fget((int)sxp->sx_fdtmp); - if (!target_file) { + tmp_file = fget((int)sxp->sx_fdtmp); + if (!tmp_file) { error = XFS_ERROR(EINVAL); goto out_put_file; } - if (!(target_file->f_mode & FMODE_WRITE) || - (target_file->f_flags & O_APPEND)) { + if (!(tmp_file->f_mode & FMODE_WRITE) || + (tmp_file->f_flags & O_APPEND)) { error = XFS_ERROR(EBADF); - goto out_put_target_file; + goto out_put_tmp_file; } if (IS_SWAPFILE(file->f_path.dentry->d_inode) || - IS_SWAPFILE(target_file->f_path.dentry->d_inode)) { + IS_SWAPFILE(tmp_file->f_path.dentry->d_inode)) { error = XFS_ERROR(EINVAL); - goto out_put_target_file; + goto out_put_tmp_file; } ip = XFS_I(file->f_path.dentry->d_inode); - tip = XFS_I(target_file->f_path.dentry->d_inode); + tip = XFS_I(tmp_file->f_path.dentry->d_inode); if (ip->i_mount != tip->i_mount) { error = XFS_ERROR(EINVAL); - goto out_put_target_file; + goto out_put_tmp_file; } if (ip->i_ino == tip->i_ino) { error = XFS_ERROR(EINVAL); - goto out_put_target_file; + goto out_put_tmp_file; } if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { error = XFS_ERROR(EIO); - goto out_put_target_file; + goto out_put_tmp_file; } error = xfs_swap_extents(ip, tip, sxp); - out_put_target_file: - fput(target_file); + out_put_tmp_file: + fput(tmp_file); out_put_file: fput(file); out: @@ -186,7 +192,7 @@ xfs_swap_extents_check_format( return 0; } -int +static int xfs_swap_extents( xfs_inode_t *ip, /* target inode */ xfs_inode_t *tip, /* tmp inode */ diff --git a/fs/xfs/xfs_dfrag.h b/fs/xfs/xfs_dfrag.h index 4f55a63..20bdd93 100644 --- a/fs/xfs/xfs_dfrag.h +++ b/fs/xfs/xfs_dfrag.h @@ -48,9 +48,6 @@ typedef struct xfs_swapext */ int xfs_swapext(struct xfs_swapext *sx); -int xfs_swap_extents(struct xfs_inode *ip, struct xfs_inode *tip, - struct xfs_swapext *sxp); - #endif /* __KERNEL__ */ #endif /* __XFS_DFRAG_H__ */ -- 1.6.5 From SRS0+g8Nd+43+fromorbit.com=dave@internode.on.net Wed Jan 13 19:37:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E1bOhC208879 for ; Wed, 13 Jan 2010 19:37:24 -0600 X-ASG-Debug-ID: 1263433097-4c6803d10002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D51361C4D8DE for ; Wed, 13 Jan 2010 17:38:19 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id FFi8Q9ogrCD5AYpG for ; Wed, 13 Jan 2010 17:38:19 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11630448-1927428 for ; Thu, 14 Jan 2010 12:08:18 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVEf8-0007MW-QP for xfs@oss.sgi.com; Thu, 14 Jan 2010 12:38:14 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVEb5-0003UG-GF for xfs@oss.sgi.com; Thu, 14 Jan 2010 12:34:03 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] Split version of xfs_swap_extents bug fix Subject: [PATCH 0/3] Split version of xfs_swap_extents bug fix Date: Thu, 14 Jan 2010 12:33:53 +1100 Message-Id: <1263432836-13368-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263433100 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0266 1.0000 -1.8484 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.85 X-Barracuda-Spam-Status: No, SCORE=-1.85 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19734 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This splits the swap extents bug fix into three patches as requested the bug fix, the tracing code and the variable name cleanup. Apart from splitting the patch, the only change is in the cleanup patch which makes xfs_swap_extents() static. From SRS0+g8Nd+43+fromorbit.com=dave@internode.on.net Wed Jan 13 19:37:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E1bO4x208886 for ; Wed, 13 Jan 2010 19:37:24 -0600 X-ASG-Debug-ID: 1263433097-4c5903bb0002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B758A1C4D8C6 for ; Wed, 13 Jan 2010 17:38:19 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id EkGapq98YLGLsxSS for ; Wed, 13 Jan 2010 17:38:19 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11630447-1927428 for ; Thu, 14 Jan 2010 12:08:17 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVEf8-0007MX-S5 for xfs@oss.sgi.com; Thu, 14 Jan 2010 12:38:14 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVEb5-0003UI-Hw for xfs@oss.sgi.com; Thu, 14 Jan 2010 12:34:03 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] xfs: xfs_swap_extents needs to handle dynamic fork offsets Subject: [PATCH 1/3] xfs: xfs_swap_extents needs to handle dynamic fork offsets Date: Thu, 14 Jan 2010 12:33:54 +1100 Message-Id: <1263432836-13368-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263432836-13368-1-git-send-email-david@fromorbit.com> References: <1263432836-13368-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263433100 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19734 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When swapping extents, we can corrupt inodes by swapping data forks that are in incompatible formats. This is caused by the two indoes having different fork offsets due to the presence of an attribute fork on an attr2 filesystem. xfs_fsr tries to be smart about setting the fork offset, but the trick it plays only works on attr1 (old fixed format attribute fork) filesystems. Changing the way xfs_fsr sets up the attribute fork will prevent this situation from ever occurring, so in the kernel code we can get by with a preventative fix - check that the data fork in the defragmented inode is in a format valid for the inode it is being swapped into. This will lead to files that will silently and potentially repeatedly fail defragmentation, so issue a warning to the log when this particular failure occurs to let us know that xfs_fsr needs updating/fixing. To help identify how to improve xfs_fsr to avoid this issue, add trace points for the inodes being swapped so that we can determine why the swap was rejected and to confirm that the code is making the right decisions and modifications when swapping forks. A further complication is even when the swap is allowed to proceed when the fork offset is different between the two inodes then value for the maximum number of extents the data fork can hold can be wrong. Make sure these are also set correctly after the swap occurs. Signed-off-by: Dave Chinner --- fs/xfs/xfs_dfrag.c | 106 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 90 insertions(+), 16 deletions(-) diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index d1483a4..97711d8 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c @@ -114,10 +114,82 @@ xfs_swapext( return error; } +/* + * We need to check that the format of the data fork in the temporary inode is + * valid for the target inode before doing the swap. This is not a problem with + * attr1 because of the fixed fok offset, but attr2 has a dynamically sized + * data fork depending on the space the attribute fork is taking so we can get + * invalid formats on the target inode. + * + * e.g. target has space for 7 extents in extent format, temp inode only has + * space for 6. If we defragment down to 7 extents, then the tmp format is a + * btree, but when swapped it needs to be in extent format. Hence we can't just + * blindly swap data forks on attr2 filesystems. + * + * Note that we check the swap in both directions so that we don't end up with + * a corrupt temporary inode, either. + * + * Note that fixing the way xfs_fsr sets up the attribute fork in the source + * inode will prevent this situation from occurring, so all we do here is + * reject and log the attempt. basically we are putting the responsibility on + * userspace to get this right. + */ +static int +xfs_swap_extents_check_format( + xfs_inode_t *ip, /* target inode */ + xfs_inode_t *tip) /* tmp inode */ +{ + + /* Should never get a local format */ + if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL || + tip->i_d.di_format == XFS_DINODE_FMT_LOCAL) + return EINVAL; + + /* + * if the target inode has less extents that then temporary inode then + * why did userspace call us? + */ + if (ip->i_d.di_nextents < tip->i_d.di_nextents) + return EINVAL; + + /* + * if the target inode is in extent form and the temp inode is in btree + * form then we will end up with the target inode in the wrong format + * as we already know there are less extents in the temp inode. + */ + if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && + tip->i_d.di_format == XFS_DINODE_FMT_BTREE) + return EINVAL; + + /* Check temp in extent form to max in target */ + if (tip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && + XFS_IFORK_NEXTENTS(tip, XFS_DATA_FORK) > ip->i_df.if_ext_max) + return EINVAL; + + /* Check target in extent form to max in temp */ + if (ip->i_d.di_format == XFS_DINODE_FMT_EXTENTS && + XFS_IFORK_NEXTENTS(ip, XFS_DATA_FORK) > tip->i_df.if_ext_max) + return EINVAL; + + /* Check root block of temp in btree form to max in target */ + if (tip->i_d.di_format == XFS_DINODE_FMT_BTREE && + XFS_IFORK_BOFF(ip) && + tip->i_df.if_broot_bytes > XFS_IFORK_BOFF(ip)) + return EINVAL; + + /* Check root block of target in btree form to max in temp */ + if (ip->i_d.di_format == XFS_DINODE_FMT_BTREE && + XFS_IFORK_BOFF(tip) && + ip->i_df.if_broot_bytes > XFS_IFORK_BOFF(tip)) + return EINVAL; + + return 0; +} + int xfs_swap_extents( - xfs_inode_t *ip, - xfs_inode_t *tip, + xfs_inode_t *ip, /* target inode */ + xfs_inode_t *tip, /* tmp inode */ xfs_swapext_t *sxp) { xfs_mount_t *mp; @@ -161,13 +233,6 @@ xfs_swap_extents( goto out_unlock; } - /* Should never get a local format */ - if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL || - tip->i_d.di_format == XFS_DINODE_FMT_LOCAL) { - error = XFS_ERROR(EINVAL); - goto out_unlock; - } - if (VN_CACHED(VFS_I(tip)) != 0) { error = xfs_flushinval_pages(tip, 0, -1, FI_REMAPF_LOCKED); @@ -189,13 +254,12 @@ xfs_swap_extents( goto out_unlock; } - /* - * If the target has extended attributes, the tmp file - * must also in order to ensure the correct data fork - * format. - */ - if ( XFS_IFORK_Q(ip) != XFS_IFORK_Q(tip) ) { - error = XFS_ERROR(EINVAL); + /* check inode formats now that data is flushed */ + error = xfs_swap_extents_check_format(ip, tip); + if (error) { + xfs_fs_cmn_err(CE_NOTE, mp, + "%s: inode 0x%llx format is incompatible for exchanging.", + __FILE__, ip->i_ino); goto out_unlock; } @@ -276,6 +340,16 @@ xfs_swap_extents( *tifp = *tempifp; /* struct copy */ /* + * Fix the in-memory data fork values that are dependent on the fork + * offset in the inode. We can't assume they remain the same as attr2 + * has dynamic fork offsets. + */ + ifp->if_ext_max = XFS_IFORK_SIZE(ip, XFS_DATA_FORK) / + (uint)sizeof(xfs_bmbt_rec_t); + tifp->if_ext_max = XFS_IFORK_SIZE(tip, XFS_DATA_FORK) / + (uint)sizeof(xfs_bmbt_rec_t); + + /* * Fix the on-disk inode values */ tmp = (__uint64_t)ip->i_d.di_nblocks; -- 1.6.5 From SRS0+cXdZ+43+fromorbit.com=david@internode.on.net Wed Jan 13 20:23:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E2NHeF212783 for ; Wed, 13 Jan 2010 20:23:18 -0600 X-ASG-Debug-ID: 1263435852-2ad7023f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4C508164707 for ; Wed, 13 Jan 2010 18:24:12 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id OS91Don3jl3gCYyC for ; Wed, 13 Jan 2010 18:24:12 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11526709-1927428 for multiple; Thu, 14 Jan 2010 12:54:11 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVFNa-0007QA-0D; Thu, 14 Jan 2010 13:24:10 +1100 Date: Thu, 14 Jan 2010 13:24:09 +1100 From: Dave Chinner To: Steve Costaras Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS data corruption with high I/O even on hardware raid Subject: Re: XFS data corruption with high I/O even on hardware raid Message-ID: <20100114022409.GW17483@discord.disaster> References: <4B4E6F3F.1090901@chaven.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B4E6F3F.1090901@chaven.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263435854 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19738 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 07:11:27PM -0600, Steve Costaras wrote: > Ok, I've been seeing a problem here since had to move over to XFS from > JFS due to file system size issues. I am seeing XFS Data corruption > under ?heavy io? Basically, what happens is that under heavy load > (i.e. if I'm doing say a xfs_fsr (which nearly always triggers the > freeze issue) on a volume the system hovers around 90% utilization for > the dm device for a while (sometimes an hour+, sometimes minutes) the > subsystem goes into 100% utilization and then freezes solid forcing me > to do a hard reboot of the box. xfs_fsr can cause a *large* amount of IO to be done, so it is no surprise that it can trigger high load bugs in hardware and software. XFS can trigger high load problems on hardware more readily than other filesystems because using direct IO (like xfs_fsr does) it can push far, far higher throughput to the starge subsystem than any other linux filesystem can. The fact that the IO subsystem is freezing at 100% elevator queue utilisation points to an IO never completing. This immediately makes me point a finger at either the RAID hardware or the driver - a bug in XFS is highly unlikely to cause this symptom as those stats are generated at layers lower than XFS. Next time you get a freeze, the output of: # echo w > /proc/sysrq-trigger will tell use what the system is waiting on (i.e. why it is stuck) ... > Since I'm using hardware raid w/ BBU when I reboot and it comes back up > the raid controller writes out to the drives any outstanding data in > it's cache and from the hardware point of view (as well as lvm's point > of view) the array is ok. The file system however generally can't be > mounted (about 4 out of 5 times, some times it does get auto-mounted but > when I then run an xfs_repair -n -v in those cases there are pages of > errors (badly aligned inode rec, bad starting inode #'s, dubious inode > btree block headers among others). When I let a repair actually run > in one case out of 4,500,000 files it linked about 2,000,000 or so but > there was no way to identify and verify file integrity. The others were > just lost. > > This is not limited to large volume sizes I have seen similar on small > ~2TiB file systems as well. Also when it happened in a couple cases the > file system that was taking the I/O (say xfs_fsr -v /home ) another XFS > filesystem on the same system which was NOT taking much if any I/O gets > badly corrupted (say /var/test ). Both would be using the same areca > controllers and same physical discs (same PV's and same VG's but > different LV's). These symptoms really point to a problem outside XFS - the only time I've seen this sort of behaviour is on buggy hardware. The cross-volume corruption is the smoking gun, but proving it is damn near impossible without expensive lab equipment and a lot of time. > Any suggestions on how to isolate or eliminate this would be greatly > appreciated. I'd start by not running xfs_fsr as a short term workaround to keep the load below the problem threshold. Looking at the iostat output - the volumes sd[f-i] all lock up at 100% utilisation at the same time. Then looking at this: > ============== > LVM is using as it's base physical volumes 8 hardware raids > (MediaVol00-70 inclusive): > [ 175.320738] ARECA RAID ADAPTER4: FIRMWARE VERSION V1.47 2009-07-16 > [ 175.336238] scsi4 : Areca SAS Host Adapter RAID Controller( RAID6 > capable) .... > [ 175.356231] ARECA RAID ADAPTER5: FIRMWARE VERSION V1.47 2009-10-22 > [ 175.376144] scsi5 : Areca SAS Host Adapter RAID Controller( RAID6 > capable) You've got 4 luns on each controller, and it looks like all the luns on one controller have locked up. Everything is pointing at the raid controller as being the problem.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From stevecs@chaven.com Wed Jan 13 20:32:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E2WesW213485 for ; Wed, 13 Jan 2010 20:32:40 -0600 X-ASG-Debug-ID: 1263436416-407700b70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from omr7.networksolutionsemail.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E36F116474E for ; Wed, 13 Jan 2010 18:33:36 -0800 (PST) Received: from omr7.networksolutionsemail.com (omr7.networksolutionsemail.com [205.178.146.57]) by cuda.sgi.com with ESMTP id 65f9F1Fg0YLyUgkN for ; Wed, 13 Jan 2010 18:33:36 -0800 (PST) Received: from mail.networksolutionsemail.com (mail.networksolutionsemail.com [205.178.146.50]) by omr7.networksolutionsemail.com (8.13.6/8.13.6) with SMTP id o0E2Xapd027757 for ; Wed, 13 Jan 2010 21:33:36 -0500 Received: (qmail 3508 invoked by uid 78); 14 Jan 2010 02:33:36 -0000 Received: from unknown (HELO ?127.0.0.1?) (stevecs@chaven.com@75.26.225.171) by ns-omr3.lb.hosting.dc2.netsol.com with SMTP; 14 Jan 2010 02:33:36 -0000 Message-ID: <4B4E8283.90001@chaven.com> Date: Wed, 13 Jan 2010 20:33:39 -0600 From: Steve Costaras User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.5) Gecko/20091204 Lightning/1.0b2pre Thunderbird/3.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS data corruption with high I/O even on hardware raid Subject: Re: XFS data corruption with high I/O even on hardware raid References: <4B4E6F3F.1090901@chaven.com> <20100114022409.GW17483@discord.disaster> In-Reply-To: <20100114022409.GW17483@discord.disaster> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: omr7.networksolutionsemail.com[205.178.146.57] X-Barracuda-Start-Time: 1263436416 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19738 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 01/13/2010 20:24, Dave Chinner wrote: > On Wed, Jan 13, 2010 at 07:11:27PM -0600, Steve Costaras wrote: > >> Ok, I've been seeing a problem here since had to move over to XFS from >> JFS due to file system size issues. I am seeing XFS Data corruption >> under ?heavy io? Basically, what happens is that under heavy load >> (i.e. if I'm doing say a xfs_fsr (which nearly always triggers the >> freeze issue) on a volume the system hovers around 90% utilization for >> the dm device for a while (sometimes an hour+, sometimes minutes) the >> subsystem goes into 100% utilization and then freezes solid forcing me >> to do a hard reboot of the box. >> > xfs_fsr can cause a *large* amount of IO to be done, so it is no > surprise that it can trigger high load bugs in hardware and > software. XFS can trigger high load problems on hardware more > readily than other filesystems because using direct IO (like xfs_fsr > does) it can push far, far higher throughput to the starge subsystem > than any other linux filesystem can. > > The fact that the IO subsystem is freezing at 100% elevator queue > utilisation points to an IO never completing. This immediately makes > me point a finger at either the RAID hardware or the driver - a bug > in XFS is highly unlikely to cause this symptom as those stats are > generated at layers lower than XFS. > > Next time you get a freeze, the output of: > > # echo w> /proc/sysrq-trigger > > will tell use what the system is waiting on (i.e. why it is stuck) > > ... > Thanks will try that, some times I do have enough time to issue a couple commands before the kernel hard locks and no user input is accepted. >> Since I'm using hardware raid w/ BBU when I reboot and it comes back up >> the raid controller writes out to the drives any outstanding data in >> it's cache and from the hardware point of view (as well as lvm's point >> of view) the array is ok. The file system however generally can't be >> mounted (about 4 out of 5 times, some times it does get auto-mounted but >> when I then run an xfs_repair -n -v in those cases there are pages of >> errors (badly aligned inode rec, bad starting inode #'s, dubious inode >> btree block headers among others). When I let a repair actually run >> in one case out of 4,500,000 files it linked about 2,000,000 or so but >> there was no way to identify and verify file integrity. The others were >> just lost. >> >> This is not limited to large volume sizes I have seen similar on small >> ~2TiB file systems as well. Also when it happened in a couple cases the >> file system that was taking the I/O (say xfs_fsr -v /home ) another XFS >> filesystem on the same system which was NOT taking much if any I/O gets >> badly corrupted (say /var/test ). Both would be using the same areca >> controllers and same physical discs (same PV's and same VG's but >> different LV's). >> > These symptoms really point to a problem outside XFS - the only time > I've seen this sort of behaviour is on buggy hardware. The > cross-volume corruption is the smoking gun, but proving it is damn > near impossible without expensive lab equipment and a lot of time. > That's what I figured both the high I/O (as JFS did not produce as much I/O as I see under XFS) as well as the utilization reaching 100% on a particular card. Would enabling write buffers have any positive effect here to at least minimize data loss issues? >> Any suggestions on how to isolate or eliminate this would be greatly >> appreciated. >> > I'd start by not running xfs_fsr as a short term workaround to keep > the load below the problem threshold. > > Looking at the iostat output - the volumes sd[f-i] all lock up at > 100% utilisation at the same time. Then looking at this: > Already planning on it, the ?sole? benefit of this corruption is that at least the full volume restore has much less fragmentation. (kind of a killer way to defragment but it does work). Steve From BATV+954632bee0ad354b4913+2335+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 14 00:34:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E6YFox233570 for ; Thu, 14 Jan 2010 00:34:18 -0600 X-ASG-Debug-ID: 1263450912-26a9029f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AE29A164FB3; Wed, 13 Jan 2010 22:35:12 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FhmcOGbHl34Az1sH; Wed, 13 Jan 2010 22:35:12 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVJIU-0006rT-Bs; Thu, 14 Jan 2010 06:35:10 +0000 Date: Thu, 14 Jan 2010 01:35:10 -0500 From: Christoph Hellwig To: Alex Elder Cc: Christoph Hellwig , Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: xfs_swap_extents needs to handle dynamic fork offsets Subject: Re: [PATCH] xfs: xfs_swap_extents needs to handle dynamic fork offsets Message-ID: <20100114063510.GA20445@infradead.org> References: <20100112130922.GA30985@infradead.org> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6965@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6965@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263450912 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 04:32:12PM -0600, Alex Elder wrote: > Christoph Hellwig wrote: > >> + TP_printk("dev %d:%d %s inode 0x%llx, %s format, num_extents %d, " > >> + "Max in-fork extents %d, broot size %d, fork offset %d", > > > > It would be nice to keep the > > > > "dev %d:%d ino 0x%llx" > > > > prefix as a convention so that all trace records are similar at their > > beginning. > > Perhaps: > + TP_printk("dev %d:%d inode 0x%llx (%s), %s format, num_extents %d, " > ^ > +--- symbolic entry->which Sounds fine, except s/inode/ino/ above to stay consistant. From BATV+954632bee0ad354b4913+2335+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 14 00:41:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E6fVGu234070 for ; Thu, 14 Jan 2010 00:41:31 -0600 X-ASG-Debug-ID: 1263451348-26c402c60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 76460164FE6 for ; Wed, 13 Jan 2010 22:42:28 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id QL0PCE4LYNr3Kssa for ; Wed, 13 Jan 2010 22:42:28 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVJPY-0007ma-3b; Thu, 14 Jan 2010 06:42:28 +0000 Date: Thu, 14 Jan 2010 01:42:28 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] xfs: implement quota warnings via netlink Subject: Re: [PATCH 3/3] xfs: implement quota warnings via netlink Message-ID: <20100114064228.GA29458@infradead.org> References: <20100113220547.846700560@bombadil.infradead.org> <20100113220603.251930871@bombadil.infradead.org> <20100114011948.GV17483@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100114011948.GV17483@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263451348 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 12:19:48PM +1100, Dave Chinner wrote: > > Tested by running the quota_nld daemon while running the xfstest quota > > tests and observing the warnings. I'll see how I can get a more formal > > testcase for it written. > > Sounds like it needs something similar to the dmapi event listeners > we use for testing that the dmapi events are generated correctly.... That's what quota_nld does, just need to tie it up properly. > This appears to send "over block quota" warnings even when > the error is caused by the number of inodes going over limit. > For inode count warnings we should be sending QUOTA_NL_IHARDWARN or > QUOTA_NL_ISOFTWARN. That could be easily done if the "hard" > parameter is changed to the type of warning which is set up > in the calling function. > > We could probably even return the grace limit expired versions > as well when over the soft limits with a slight change to the > soft limit warning logic as well... Indeed, I did copy this from gfs2 which only does the block quotas and no differciated soft warnings. I'll respin it. From BATV+954632bee0ad354b4913+2335+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 14 00:41:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E6fwwl234111 for ; Thu, 14 Jan 2010 00:41:58 -0600 X-ASG-Debug-ID: 1263451375-29e102530000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4FB92164D02 for ; Wed, 13 Jan 2010 22:42:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gOyaWdXirOA7AFBy for ; Wed, 13 Jan 2010 22:42:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVJPz-0007n8-17; Thu, 14 Jan 2010 06:42:55 +0000 Date: Thu, 14 Jan 2010 01:42:55 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: xfs_swap_extents needs to handle dynamic fork offsets Subject: Re: [PATCH 1/3] xfs: xfs_swap_extents needs to handle dynamic fork offsets Message-ID: <20100114064255.GB29458@infradead.org> References: <1263432836-13368-1-git-send-email-david@fromorbit.com> <1263432836-13368-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263432836-13368-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263451375 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 12:33:54PM +1100, Dave Chinner wrote: > When swapping extents, we can corrupt inodes by swapping data forks > that are in incompatible formats. This is caused by the two indoes > having different fork offsets due to the presence of an attribute > fork on an attr2 filesystem. xfs_fsr tries to be smart about > setting the fork offset, but the trick it plays only works on attr1 > (old fixed format attribute fork) filesystems. > > Changing the way xfs_fsr sets up the attribute fork will prevent > this situation from ever occurring, so in the kernel code we can get > by with a preventative fix - check that the data fork in the > defragmented inode is in a format valid for the inode it is being > swapped into. This will lead to files that will silently and > potentially repeatedly fail defragmentation, so issue a warning to > the log when this particular failure occurs to let us know that > xfs_fsr needs updating/fixing. > > To help identify how to improve xfs_fsr to avoid this issue, add > trace points for the inodes being swapped so that we can determine > why the swap was rejected and to confirm that the code is making the > right decisions and modifications when swapping forks. > > A further complication is even when the swap is allowed to proceed > when the fork offset is different between the two inodes then value > for the maximum number of extents the data fork can hold can be > wrong. Make sure these are also set correctly after the swap occurs. > > Signed-off-by: Dave Chinner > --- > fs/xfs/xfs_dfrag.c | 106 ++++++++++++++++++++++++++++++++++++++++++++-------- Looks good, Reviewed-by: Christoph Hellwig From BATV+954632bee0ad354b4913+2335+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 14 00:50:27 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E6oQHY234683 for ; Thu, 14 Jan 2010 00:50:27 -0600 X-ASG-Debug-ID: 1263451883-1ea603380000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D2A6E15F6D5 for ; Wed, 13 Jan 2010 22:51:23 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id lRJSKrqELkK8aKdb for ; Wed, 13 Jan 2010 22:51:23 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NVJYB-0000dk-GM; Thu, 14 Jan 2010 06:51:23 +0000 Date: Thu, 14 Jan 2010 01:51:23 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Subject: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Message-ID: <20100114065123.GA32559@infradead.org> References: <1263377007-4500-1-git-send-email-david@fromorbit.com> <20100113220814.GA17310@infradead.org> <20100113223001.GR17483@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100113223001.GR17483@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263451883 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:30:01AM +1100, Dave Chinner wrote: > > > include/builddefs include/platform_defs.h > > > > > distclean: clean > > > - rm -f $(LDIRT) > > > + $(Q)rm -f $(DISTDIRT) > > > > What does this have to do with the rest? > > That's the "make clean doesn't cause configure to run again" fix. Which is not related to the clean output build system.. I'm pretty sure we did this intentionally, but I'm open to a discussion about changing it. From SRS0+85BU+43+fromorbit.com=dave@internode.on.net Thu Jan 14 02:47:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E8lG24242967 for ; Thu, 14 Jan 2010 02:47:17 -0600 X-ASG-Debug-ID: 1263458891-39b201270000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 79DDD1DB0ECA for ; Thu, 14 Jan 2010 00:48:11 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id uDqSXCYQNdMJHmBk for ; Thu, 14 Jan 2010 00:48:11 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11435611-1927428 for ; Thu, 14 Jan 2010 19:18:09 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVLNA-0007m9-7Q for xfs@oss.sgi.com; Thu, 14 Jan 2010 19:48:08 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVLJ6-0005Un-Qi for xfs@oss.sgi.com; Thu, 14 Jan 2010 19:43:56 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] xfsprogs: fix missing error check in xfs_rtfree_range in libxfs Subject: [PATCH 3/3] xfsprogs: fix missing error check in xfs_rtfree_range in libxfs Date: Thu, 14 Jan 2010 19:43:51 +1100 Message-Id: <1263458631-21084-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263458631-21084-1-git-send-email-david@fromorbit.com> References: <1263458631-21084-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263458893 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0206 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19762 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When xfs_rtfind_forw() returns an error, the block is returned uninitialised. xfs_rtfree_range() is not checking the error return, so could be using an uninitialised block number for modifying bitmap summary info. Signed-off-by: Dave Chinner --- libxfs/xfs_rtalloc.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/libxfs/xfs_rtalloc.c b/libxfs/xfs_rtalloc.c index 6c3da52..4fbdaa9 100644 --- a/libxfs/xfs_rtalloc.c +++ b/libxfs/xfs_rtalloc.c @@ -466,6 +466,8 @@ xfs_rtfree_range( */ error = xfs_rtfind_forw(mp, tp, end, mp->m_sb.sb_rextents - 1, &postblock); + if (error) + return error; /* * If there are blocks not being freed at the front of the * old extent, add summary data for them to be allocated. -- 1.6.5 From SRS0+DK36+43+fromorbit.com=dave@internode.on.net Thu Jan 14 02:47:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_45,J_CHICKENPOX_47,J_CHICKENPOX_48, J_CHICKENPOX_55,J_CHICKENPOX_57,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E8lGC7242965 for ; Thu, 14 Jan 2010 02:47:17 -0600 X-ASG-Debug-ID: 1263458890-32e6031f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F108B1654B8 for ; Thu, 14 Jan 2010 00:48:10 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id Q5c7tHyrAKSSmspC for ; Thu, 14 Jan 2010 00:48:10 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11528603-1927428 for ; Thu, 14 Jan 2010 19:18:09 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVLNA-0007m5-2W for xfs@oss.sgi.com; Thu, 14 Jan 2010 19:48:08 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVLJ6-0005Ui-KX for xfs@oss.sgi.com; Thu, 14 Jan 2010 19:43:56 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] xfsprogs: fix sign warnings in libxfs Subject: [PATCH 1/3] xfsprogs: fix sign warnings in libxfs Date: Thu, 14 Jan 2010 19:43:49 +1100 Message-Id: <1263458631-21084-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263458631-21084-1-git-send-email-david@fromorbit.com> References: <1263458631-21084-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263458892 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19762 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The directory naming is a mix of char and uchar_t and the compiler warns wheter they cross over. Cast the pointers according to the destination requirements as it doesn't seem to matter to avoid the warnings. Signed-off-by: Dave Chinner --- include/xfs_types.h | 2 +- libxfs/xfs_attr.c | 10 +++++----- libxfs/xfs_attr_leaf.c | 10 +++++----- libxfs/xfs_dir2.c | 2 +- libxfs/xfs_dir2_block.c | 8 ++++---- libxfs/xfs_dir2_leaf.c | 4 ++-- libxfs/xfs_dir2_node.c | 4 ++-- libxfs/xfs_dir2_sf.c | 13 +++++++------ 8 files changed, 27 insertions(+), 26 deletions(-) diff --git a/include/xfs_types.h b/include/xfs_types.h index 0f51916..6f566ff 100644 --- a/include/xfs_types.h +++ b/include/xfs_types.h @@ -161,7 +161,7 @@ typedef enum { } xfs_btnum_t; struct xfs_name { - const char *name; + const uchar_t *name; int len; }; diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c index 7ab37ff..5bd3c2a 100644 --- a/libxfs/xfs_attr.c +++ b/libxfs/xfs_attr.c @@ -64,7 +64,7 @@ xfs_attr_name_to_xname( { if (!aname) return EINVAL; - xname->name = aname; + xname->name = (const uchar_t *)aname; xname->len = strlen(aname); if (xname->len >= MAXNAMELEN) return EFAULT; /* match IRIX behaviour */ @@ -103,7 +103,7 @@ xfs_attr_fetch(xfs_inode_t *ip, struct xfs_name *name, memset((char *)&args, 0, sizeof(args)); args.name = name->name; args.namelen = name->len; - args.value = value; + args.value = (uchar_t *)value; args.valuelen = *valuelenp; args.flags = flags; args.hashval = xfs_da_hashname(args.name, args.namelen); @@ -233,7 +233,7 @@ xfs_attr_set_int(xfs_inode_t *dp, struct xfs_name *name, memset((char *)&args, 0, sizeof(args)); args.name = name->name; args.namelen = name->len; - args.value = value; + args.value = (uchar_t *)value; args.valuelen = valuelen; args.flags = flags; args.hashval = xfs_da_hashname(args.name, args.namelen); @@ -1545,7 +1545,7 @@ xfs_attr_rmtval_get(xfs_da_args_t *args) ASSERT(!(args->flags & ATTR_KERNOVAL)); mp = args->dp->i_mount; - dst = args->value; + dst = (xfs_caddr_t)args->value; valuelen = args->valuelen; lblkno = args->rmtblkno; while (valuelen > 0) { @@ -1601,7 +1601,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) dp = args->dp; mp = dp->i_mount; - src = args->value; + src = (xfs_caddr_t)args->value; /* * Find a "hole" in the attribute address space large enough for diff --git a/libxfs/xfs_attr_leaf.c b/libxfs/xfs_attr_leaf.c index f8f926f..d535752 100644 --- a/libxfs/xfs_attr_leaf.c +++ b/libxfs/xfs_attr_leaf.c @@ -476,11 +476,11 @@ xfs_attr_shortform_to_leaf(xfs_da_args_t *args) sfe = &sf->list[0]; for (i = 0; i < sf->hdr.count; i++) { - nargs.name = (char *)sfe->nameval; + nargs.name = (uchar_t *)sfe->nameval; nargs.namelen = sfe->namelen; - nargs.value = (char *)&sfe->nameval[nargs.namelen]; + nargs.value = (uchar_t *)&sfe->nameval[nargs.namelen]; nargs.valuelen = sfe->valuelen; - nargs.hashval = xfs_da_hashname((char *)sfe->nameval, + nargs.hashval = xfs_da_hashname((uchar_t *)sfe->nameval, sfe->namelen); nargs.flags = XFS_ATTR_NSP_ONDISK_TO_ARGS(sfe->flags); error = xfs_attr_leaf_lookup_int(bp, &nargs); /* set a->index */ @@ -610,9 +610,9 @@ xfs_attr_leaf_to_shortform(xfs_dabuf_t *bp, xfs_da_args_t *args, int forkoff) continue; ASSERT(entry->flags & XFS_ATTR_LOCAL); name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); - nargs.name = (char *)name_loc->nameval; + nargs.name = (uchar_t *)name_loc->nameval; nargs.namelen = name_loc->namelen; - nargs.value = (char *)&name_loc->nameval[nargs.namelen]; + nargs.value = (uchar_t *)&name_loc->nameval[nargs.namelen]; nargs.valuelen = be16_to_cpu(name_loc->valuelen); nargs.hashval = be32_to_cpu(entry->hashval); nargs.flags = XFS_ATTR_NSP_ONDISK_TO_ARGS(entry->flags); diff --git a/libxfs/xfs_dir2.c b/libxfs/xfs_dir2.c index 71134f8..2d2abd1 100644 --- a/libxfs/xfs_dir2.c +++ b/libxfs/xfs_dir2.c @@ -18,7 +18,7 @@ #include -struct xfs_name xfs_name_dotdot = {"..", 2}; +struct xfs_name xfs_name_dotdot = {(uchar_t *)"..", 2}; extern const struct xfs_nameops xfs_default_nameops; diff --git a/libxfs/xfs_dir2_block.c b/libxfs/xfs_dir2_block.c index d197b0b..d286000 100644 --- a/libxfs/xfs_dir2_block.c +++ b/libxfs/xfs_dir2_block.c @@ -36,8 +36,8 @@ static xfs_dahash_t xfs_dir_hash_dot, xfs_dir_hash_dotdot; void xfs_dir_startup(void) { - xfs_dir_hash_dot = xfs_da_hashname(".", 1); - xfs_dir_hash_dotdot = xfs_da_hashname("..", 2); + xfs_dir_hash_dot = xfs_da_hashname((uchar_t *)".", 1); + xfs_dir_hash_dotdot = xfs_da_hashname((uchar_t *)"..", 2); } /* @@ -489,7 +489,7 @@ xfs_dir2_block_lookup( * Fill in inode number, CI name if appropriate, release the block. */ args->inumber = be64_to_cpu(dep->inumber); - error = xfs_dir_cilookup_result(args, dep->name, dep->namelen); + error = xfs_dir_cilookup_result(args, (char *)dep->name, dep->namelen); xfs_da_brelse(args->trans, bp); return XFS_ERROR(error); } @@ -576,7 +576,7 @@ xfs_dir2_block_lookup_int( * and buffer. If it's the first case-insensitive match, store * the index and buffer and continue looking for an exact match. */ - cmp = mp->m_dirnameops->compname(args, dep->name, dep->namelen); + cmp = mp->m_dirnameops->compname(args, (char *)dep->name, dep->namelen); if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { args->cmpresult = cmp; *bpp = bp; diff --git a/libxfs/xfs_dir2_leaf.c b/libxfs/xfs_dir2_leaf.c index 9a1aace..356b541 100644 --- a/libxfs/xfs_dir2_leaf.c +++ b/libxfs/xfs_dir2_leaf.c @@ -906,7 +906,7 @@ xfs_dir2_leaf_lookup( * Return the found inode number & CI name if appropriate */ args->inumber = be64_to_cpu(dep->inumber); - error = xfs_dir_cilookup_result(args, dep->name, dep->namelen); + error = xfs_dir_cilookup_result(args, (char *)dep->name, dep->namelen); xfs_da_brelse(tp, dbp); xfs_da_brelse(tp, lbp); return XFS_ERROR(error); @@ -1000,7 +1000,7 @@ xfs_dir2_leaf_lookup_int( * and buffer. If it's the first case-insensitive match, store * the index and buffer and continue looking for an exact match. */ - cmp = mp->m_dirnameops->compname(args, dep->name, dep->namelen); + cmp = mp->m_dirnameops->compname(args, (char *)dep->name, dep->namelen); if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { args->cmpresult = cmp; *indexp = index; diff --git a/libxfs/xfs_dir2_node.c b/libxfs/xfs_dir2_node.c index db88adc..6a92f13 100644 --- a/libxfs/xfs_dir2_node.c +++ b/libxfs/xfs_dir2_node.c @@ -612,7 +612,7 @@ xfs_dir2_leafn_lookup_for_entry( * EEXIST immediately. If it's the first case-insensitive * match, store the block & inode number and continue looking. */ - cmp = mp->m_dirnameops->compname(args, dep->name, dep->namelen); + cmp = mp->m_dirnameops->compname(args, (char *)dep->name, dep->namelen); if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { /* If there is a CI match block, drop it */ if (args->cmpresult != XFS_CMP_DIFFERENT && @@ -1821,7 +1821,7 @@ xfs_dir2_node_lookup( dep = (xfs_dir2_data_entry_t *)((char *)state->extrablk.bp-> data + state->extrablk.index); - rval = xfs_dir_cilookup_result(args, dep->name, dep->namelen); + rval = xfs_dir_cilookup_result(args, (char *)dep->name, dep->namelen); } /* * Release the btree blocks and leaf block. diff --git a/libxfs/xfs_dir2_sf.c b/libxfs/xfs_dir2_sf.c index 77f30de..06e076d 100644 --- a/libxfs/xfs_dir2_sf.c +++ b/libxfs/xfs_dir2_sf.c @@ -732,8 +732,8 @@ xfs_dir2_sf_lookup( * number. If it's the first case-insensitive match, store the * inode number and continue looking for an exact match. */ - cmp = dp->i_mount->m_dirnameops->compname(args, sfep->name, - sfep->namelen); + cmp = dp->i_mount->m_dirnameops->compname(args, + (char *)sfep->name, sfep->namelen); if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { args->cmpresult = cmp; args->inumber = xfs_dir2_sf_get_inumber(sfp, @@ -751,7 +751,8 @@ xfs_dir2_sf_lookup( if (!ci_sfep) return XFS_ERROR(ENOENT); /* otherwise process the CI match as required by the caller */ - error = xfs_dir_cilookup_result(args, ci_sfep->name, ci_sfep->namelen); + error = xfs_dir_cilookup_result(args, (char *)ci_sfep->name, + ci_sfep->namelen); return XFS_ERROR(error); } @@ -793,7 +794,7 @@ xfs_dir2_sf_removename( */ for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->hdr.count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { - if (xfs_da_compname(args, sfep->name, sfep->namelen) == + if (xfs_da_compname(args, (char *)sfep->name, sfep->namelen) == XFS_CMP_EXACT) { ASSERT(xfs_dir2_sf_get_inumber(sfp, xfs_dir2_sf_inumberp(sfep)) == @@ -928,8 +929,8 @@ xfs_dir2_sf_replace( for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->hdr.count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { - if (xfs_da_compname(args, sfep->name, sfep->namelen) == - XFS_CMP_EXACT) { + if (xfs_da_compname(args, (char *)sfep->name, + sfep->namelen) == XFS_CMP_EXACT) { #if XFS_BIG_INUMS || defined(DEBUG) ino = xfs_dir2_sf_get_inumber(sfp, xfs_dir2_sf_inumberp(sfep)); -- 1.6.5 From SRS0+85BU+43+fromorbit.com=dave@internode.on.net Thu Jan 14 02:47:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E8lK4n242999 for ; Thu, 14 Jan 2010 02:47:20 -0600 X-ASG-Debug-ID: 1263458895-39af01230000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 58F951DB0ECC for ; Thu, 14 Jan 2010 00:48:16 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id ayxVnUYr4FRD7XlR for ; Thu, 14 Jan 2010 00:48:16 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11435612-1927428 for ; Thu, 14 Jan 2010 19:18:15 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVLNA-0007m4-11 for xfs@oss.sgi.com; Thu, 14 Jan 2010 19:48:08 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVLJ6-0005Ug-It for xfs@oss.sgi.com; Thu, 14 Jan 2010 19:43:56 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] xfsprogs: fix compile warnings in libxfs Subject: [PATCH 0/3] xfsprogs: fix compile warnings in libxfs Date: Thu, 14 Jan 2010 19:43:48 +1100 Message-Id: <1263458631-21084-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263458897 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5152 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19762 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean First in a bunch of patches to make xfsprogs compile cleanly. From SRS0+g8Nd+43+fromorbit.com=dave@internode.on.net Thu Jan 14 02:47:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E8lOd2243017 for ; Thu, 14 Jan 2010 02:47:25 -0600 X-ASG-Debug-ID: 1263458900-30c001d10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ACEFF1DB0ECE for ; Thu, 14 Jan 2010 00:48:20 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id pLD2PxXmUh4VWaih for ; Thu, 14 Jan 2010 00:48:20 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11632547-1927428 for ; Thu, 14 Jan 2010 19:18:19 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVLNA-0007m6-45 for xfs@oss.sgi.com; Thu, 14 Jan 2010 19:48:08 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVLJ6-0005Uk-NU for xfs@oss.sgi.com; Thu, 14 Jan 2010 19:43:56 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] xfsprogs: Fix miscellaneous warnings in libxfs Subject: [PATCH 2/3] xfsprogs: Fix miscellaneous warnings in libxfs Date: Thu, 14 Jan 2010 19:43:50 +1100 Message-Id: <1263458631-21084-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263458631-21084-1-git-send-email-david@fromorbit.com> References: <1263458631-21084-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263458901 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19762 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean These are questionable fixes but they do shut up the warnings with as little change as possible. The first couple are questionable because they are a result of the compiler (gcc 4.3.4) trying to be smart but failing. The uninitialised variable warnings in xfs_bmapi() is spurious, as certain fields are unused in certain situations but gcc can't work that out. It is easily suppressed by initialising the structure to zero. xfs_mod_sb() is dumping out an array subscript bound warning that is spurious. The code is correct and will assert fail on out of bounds indexes. A simple reorder of the first and last offset calculations makes the warning go away (a good sign of compiler fail if ever there was one). Changing xfs_alloc_mark_busy() from a macro to a static inline definition is needed for the compiler to see that variables passed to that function are actually used. Signed-off-by: Dave Chinner --- libxfs/xfs.h | 5 +++-- libxfs/xfs_bmap.c | 2 +- libxfs/xfs_mount.c | 9 ++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libxfs/xfs.h b/libxfs/xfs.h index 8e94dad..abe8700 100644 --- a/libxfs/xfs.h +++ b/libxfs/xfs.h @@ -288,9 +288,10 @@ roundup_pow_of_two(uint v) #define xfs_ilock(ip,mode) ((void) 0) #define xfs_iunlock(ip,mode) ((void) 0) -/* space allocation */ +/* space allocation - use static inlines to avoid unused var warnings */ #define xfs_alloc_search_busy(tp,ag,b,len) ((void) 0) -#define xfs_alloc_mark_busy(tp,ag,b,len) ((void) 0) +static inline void xfs_alloc_mark_busy(xfs_trans_t *tp, + xfs_agnumber_t agno, xfs_agblock_t bno, xfs_extlen_t len) {} #define xfs_rotorstep 1 #define xfs_bmap_rtalloc(a) (ENOSYS) #define xfs_rtpick_extent(mp,tp,len,p) (ENOSYS) diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c index cf1123a..4cc6431 100644 --- a/libxfs/xfs_bmap.c +++ b/libxfs/xfs_bmap.c @@ -4274,7 +4274,7 @@ xfs_bmapi( xfs_fsblock_t abno; /* allocated block number */ xfs_extlen_t alen; /* allocated extent length */ xfs_fileoff_t aoff; /* allocated file offset */ - xfs_bmalloca_t bma; /* args for xfs_bmap_alloc */ + xfs_bmalloca_t bma = { 0 }; /* args for xfs_bmap_alloc */ xfs_btree_cur_t *cur; /* bmap btree cursor */ xfs_fileoff_t end; /* end of mapped file region */ int eof; /* we've hit the end of extents */ diff --git a/libxfs/xfs_mount.c b/libxfs/xfs_mount.c index 02bff42..662c8d2 100644 --- a/libxfs/xfs_mount.c +++ b/libxfs/xfs_mount.c @@ -400,15 +400,14 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fields) xfs_sb_to_disk(XFS_BUF_TO_SBP(bp), &mp->m_sb, fields); - /* find modified range */ + /* find modified range - get last first to avoid spurious warning */ + f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields); + ASSERT((1LL << f) & XFS_SB_MOD_BITS); + last = xfs_sb_info[f + 1].offset - 1; f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields); ASSERT((1LL << f) & XFS_SB_MOD_BITS); first = xfs_sb_info[f].offset; - f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields); - ASSERT((1LL << f) & XFS_SB_MOD_BITS); - last = xfs_sb_info[f + 1].offset - 1; - xfs_trans_log_buf(tp, bp, first, last); } -- 1.6.5 From SRS0+viaM+43+fromorbit.com=dave@internode.on.net Thu Jan 14 02:48:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E8m5DU243078 for ; Thu, 14 Jan 2010 02:48:06 -0600 X-ASG-Debug-ID: 1263458939-096b012a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7112B15141CB for ; Thu, 14 Jan 2010 00:49:00 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id 4dGXfAC6xgO59MDe for ; Thu, 14 Jan 2010 00:49:00 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11391075-1927428 for ; Thu, 14 Jan 2010 19:18:59 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVLNy-0007mS-16 for xfs@oss.sgi.com; Thu, 14 Jan 2010 19:48:58 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVLJu-0005YF-Iz for xfs@oss.sgi.com; Thu, 14 Jan 2010 19:44:46 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: fix missing error check in xfs_rtfree_range Subject: [PATCH] xfs: fix missing error check in xfs_rtfree_range Date: Thu, 14 Jan 2010 19:44:46 +1100 Message-Id: <1263458686-21308-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263458942 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19763 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When xfs_rtfind_forw() returns an error, the block is returned uninitialised. xfs_rtfree_range() is not checking the error return, so could be using an uninitialised block number for modifying bitmap summary info. The problem was found by gcc when compiling the *userspace* libxfs code - it is an copy of the kernel code with the exact same bug. gcc gives an uninitialised variable warning on the userspace code but not on the kernel code. You gotta love the consistency (Mmmm, slightly chewy today!). Signed-off-by: Dave Chinner --- fs/xfs/xfs_rtalloc.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c index 9e15a11..6be05f7 100644 --- a/fs/xfs/xfs_rtalloc.c +++ b/fs/xfs/xfs_rtalloc.c @@ -1517,6 +1517,8 @@ xfs_rtfree_range( */ error = xfs_rtfind_forw(mp, tp, end, mp->m_sb.sb_rextents - 1, &postblock); + if (error) + return error; /* * If there are blocks not being freed at the front of the * old extent, add summary data for them to be allocated. -- 1.6.5 From andi@firstfloor.org Thu Jan 14 03:07:27 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, RCVD_IN_BRBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0E97Q5E244689 for ; Thu, 14 Jan 2010 03:07:27 -0600 X-ASG-Debug-ID: 1263460102-4233035a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 452D4164DBA for ; Thu, 14 Jan 2010 01:08:22 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id poBEBn9EY1XlbaUP for ; Thu, 14 Jan 2010 01:08:22 -0800 (PST) Received: from basil.firstfloor.org (p5B3CB331.dip0.t-ipconnect.de [91.60.179.49]) by one.firstfloor.org (Postfix) with ESMTP id DEEED1A9805A; Thu, 14 Jan 2010 10:08:20 +0100 (CET) Received: by basil.firstfloor.org (Postfix, from userid 1000) id 7440EB17C3; Thu, 14 Jan 2010 10:08:20 +0100 (CET) To: Steve Costaras Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS data corruption with high I/O even on hardware raid Subject: Re: XFS data corruption with high I/O even on hardware raid From: Andi Kleen References: <4B4E6F3F.1090901@chaven.com> Date: Thu, 14 Jan 2010 10:08:20 +0100 In-Reply-To: <4B4E6F3F.1090901@chaven.com> (Steve Costaras's message of "Wed, 13 Jan 2010 19:11:27 -0600") Message-ID: <87hbqpf3zv.fsf@basil.nowhere.org> User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1263460103 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0899 1.0000 -1.4538 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.45 X-Barracuda-Spam-Status: No, SCORE=-1.45 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19764 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Steve Costaras writes: > > ============ (System) > (Ubuntu 8.04.3 LTS): > Linux loki 2.6.24-26-server #1 SMP Tue Dec 1 18:26:43 UTC 2009 x86_64 GNU/Linux That's a really old kernel. Perhaps try it with a newer one? -Andi -- ak@linux.intel.com -- Speaking for myself only. From SRS0+KNjG+43+fromorbit.com=david@internode.on.net Thu Jan 14 04:10:36 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EAAZxt250267 for ; Thu, 14 Jan 2010 04:10:36 -0600 X-ASG-Debug-ID: 1263463890-618200da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2A61E1DB111A for ; Thu, 14 Jan 2010 02:11:31 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id IsyRoUF3MLTcR1Jo for ; Thu, 14 Jan 2010 02:11:31 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11632750-1927428 for multiple; Thu, 14 Jan 2010 20:41:29 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVMfo-0007qz-8F; Thu, 14 Jan 2010 21:11:28 +1100 Date: Thu, 14 Jan 2010 21:11:28 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Subject: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Message-ID: <20100114101128.GX17483@discord.disaster> References: <1263377007-4500-1-git-send-email-david@fromorbit.com> <20100113220814.GA17310@infradead.org> <20100113223001.GR17483@discord.disaster> <20100114065123.GA32559@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100114065123.GA32559@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263463892 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0204 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 01:51:23AM -0500, Christoph Hellwig wrote: > On Thu, Jan 14, 2010 at 09:30:01AM +1100, Dave Chinner wrote: > > > > include/builddefs include/platform_defs.h > > > > > > > distclean: clean > > > > - rm -f $(LDIRT) > > > > + $(Q)rm -f $(DISTDIRT) > > > > > > What does this have to do with the rest? > > > > That's the "make clean doesn't cause configure to run again" fix. > > Which is not related to the clean output build system.. > > I'm pretty sure we did this intentionally, but I'm open to a discussion > about changing it. It seems completely spurious to me - normal practice is to blow away the config on a distclean, not a plain clean. And seeing as the patch is about removing noise during the normal build, I figured this qualified as a bug causing noise. I can separate it out into another patch, but I'd really prefer that make clean doesn't result in running configure again. Especially considering the build dependencies are very broken so the only way to guarantee a build catches all changes is to do 'make clean; make'. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+g8Nd+43+fromorbit.com=dave@internode.on.net Thu Jan 14 04:12:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EACYON250399 for ; Thu, 14 Jan 2010 04:12:34 -0600 X-ASG-Debug-ID: 1263464009-779100800000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ACA951DB112A for ; Thu, 14 Jan 2010 02:13:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id kcJH1yEErCv1kAmR for ; Thu, 14 Jan 2010 02:13:29 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11632755-1927428 for ; Thu, 14 Jan 2010 20:43:28 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVMhj-0007rW-Pw for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:13:27 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVMdg-0001LO-BW for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:09:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/9] xfsprogs: fix some trivial warnings in xfs_db Subject: [PATCH 5/9] xfsprogs: fix some trivial warnings in xfs_db Date: Thu, 14 Jan 2010 21:09:08 +1100 Message-Id: <1263463752-5052-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263463752-5052-1-git-send-email-david@fromorbit.com> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263464010 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0007 1.0000 -2.0161 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Three warnings, none harmful - one dir2 name sign warning and two cases where gcc can't work out if a variable is initialised correctly in a child function or not. Signed-off-by: Dave Chinner --- db/check.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/db/check.c b/db/check.c index 7620d9c..f94a16b 100644 --- a/db/check.c +++ b/db/check.c @@ -2317,7 +2317,7 @@ process_data_dir_v2( tag_err += be16_to_cpu(*tagp) != (char *)dep - (char *)data; addr = xfs_dir2_db_off_to_dataptr(mp, db, (char *)dep - (char *)data); - xname.name = (char *)dep->name; + xname.name = (uchar_t *)dep->name; xname.len = dep->namelen; dir_hash_add(mp->m_dirnameops->hashname(&xname), addr); ptr += xfs_dir2_data_entsize(dep->namelen); @@ -3059,7 +3059,7 @@ process_leaf_node_dir_v2( xfs_ino_t lino; int nex; xfs_ino_t parent; - int t; + int t = 0; int v; int v2; int x; @@ -3403,7 +3403,7 @@ process_quota( xfs_fileoff_t qbno; char *s = NULL; int scicb; - int t; + int t = 0; switch (qtype) { case IS_USER_QUOTA: -- 1.6.5 From SRS0+viaM+43+fromorbit.com=dave@internode.on.net Thu Jan 14 04:12:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EACYXx250398 for ; Thu, 14 Jan 2010 04:12:34 -0600 X-ASG-Debug-ID: 1263464009-3cbf029c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 156CF151462A for ; Thu, 14 Jan 2010 02:13:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id mSBGgzbAMpAulbzH for ; Thu, 14 Jan 2010 02:13:29 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11391290-1927428 for ; Thu, 14 Jan 2010 20:43:28 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVMhj-0007rN-HM for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:13:27 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVMdg-0001LB-1q for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:09:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/9] xfsprogs: fix build warnings V2 Subject: [PATCH 0/9] xfsprogs: fix build warnings V2 Date: Thu, 14 Jan 2010 21:09:03 +1100 Message-Id: <1263463752-5052-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263464011 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0081 1.0000 -1.9683 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.97 X-Barracuda-Spam-Status: No, SCORE=-1.97 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19769 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is the complete set of patches that make xfsprogs build cleanly with gcc 4.3.4 on my debian system. The majority of the warnings are dir2 name string sign warnings, most of the rest are array subscript bounds warnings which gcc has got wrong. The only real bug in whole the lot is the missing error check in xfs_rtfree_range(). From SRS0+85BU+43+fromorbit.com=dave@internode.on.net Thu Jan 14 04:12:35 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_53,J_CHICKENPOX_64 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EACZwT250414 for ; Thu, 14 Jan 2010 04:12:35 -0600 X-ASG-Debug-ID: 1263464010-30ca03960000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E8A3D1DB112A for ; Thu, 14 Jan 2010 02:13:30 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id jyZydto1gq2bzPJB for ; Thu, 14 Jan 2010 02:13:30 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11435813-1927428 for ; Thu, 14 Jan 2010 20:43:29 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVMhk-0007rb-04 for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:13:28 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVMdg-0001LY-Ic for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:09:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 9/9] xfsprogs: fix build warnings in repair Subject: [PATCH 9/9] xfsprogs: fix build warnings in repair Date: Thu, 14 Jan 2010 21:09:12 +1100 Message-Id: <1263463752-5052-10-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263463752-5052-1-git-send-email-david@fromorbit.com> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263464011 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Rewrite the loop in btree_get_prev() so that the compiler can see that it returns if the cur->index is zero so it doesn't complain about possible array bound underflows when getting the key out of the buffer. Fix the directory name sign warnings by casting to (uchar_t *) appropriately. Signed-off-by: Dave Chinner --- repair/btree.c | 9 +++++---- repair/phase6.c | 10 +++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/repair/btree.c b/repair/btree.c index 3141388..b53b4e4 100644 --- a/repair/btree.c +++ b/repair/btree.c @@ -194,12 +194,13 @@ btree_get_prev( } /* else need to go up and back down the tree to find the previous */ - - while (cur->index == 0) { - if (++level == root->height) - return NULL; + while (++level < root->height) { + if (cur->index) + break; cur++; } + if (cur->index == 0) + return NULL; /* the key is in the current level */ if (key) diff --git a/repair/phase6.c b/repair/phase6.c index d056063..884ad62 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -35,7 +35,7 @@ static struct cred zerocr; static struct fsxattr zerofsx; static xfs_ino_t orphanage_ino; -static struct xfs_name xfs_name_dot = {".", 1}; +static struct xfs_name xfs_name_dot = {(uchar_t *)".", 1}; /* * Data structures used to keep track of directories where the ".." @@ -145,7 +145,7 @@ dir_hash_add( ASSERT(!hashtab->names_duped); - xname.name = name; + xname.name = (uchar_t *)name; xname.len = namelen; junk = name[0] == '/'; @@ -355,7 +355,7 @@ dir_hash_dup_names(dir_hash_tab_t *hashtab) for (p = hashtab->first; p; p = p->nextbyorder) { name = malloc(p->name.len); memcpy(name, p->name.name, p->name.len); - p->name.name = name; + p->name.name = (uchar_t *)name; } hashtab->names_duped = 1; } @@ -843,7 +843,7 @@ mk_orphanage(xfs_mount_t *mp) do_error(_("%d - couldn't iget root inode to obtain %s\n"), i, ORPHANAGE); - xname.name = ORPHANAGE; + xname.name = (uchar_t *)ORPHANAGE; xname.len = strlen(ORPHANAGE); if (libxfs_dir_lookup(NULL, pip, &xname, &ino, NULL) == 0) return ino; @@ -944,7 +944,7 @@ mv_orphanage( ASSERT(xfs_sb_version_hasdirv2(&mp->m_sb)); - xname.name = fname; + xname.name = (uchar_t *)fname; xname.len = snprintf(fname, sizeof(fname), "%llu", (unsigned long long)ino); -- 1.6.5 From SRS0+DK36+43+fromorbit.com=dave@internode.on.net Thu Jan 14 04:12:44 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_65 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EACij5250450 for ; Thu, 14 Jan 2010 04:12:44 -0600 X-ASG-Debug-ID: 1263464019-142000cb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E6765165515 for ; Thu, 14 Jan 2010 02:13:39 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id ArnN6wYgzPWbA4a8 for ; Thu, 14 Jan 2010 02:13:39 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11528818-1927428 for ; Thu, 14 Jan 2010 20:43:38 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVMhj-0007rV-Op for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:13:27 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVMdg-0001LL-9y for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:09:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/9] xfsprogs: fix warning in adfs superblock probe Subject: [PATCH 4/9] xfsprogs: fix warning in adfs superblock probe Date: Thu, 14 Jan 2010 21:09:07 +1100 Message-Id: <1263463752-5052-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263463752-5052-1-git-send-email-david@fromorbit.com> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263464020 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0150 1.0000 -1.9232 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The probe gets an array subscript warning because gcc is not smart enough to realise that a structure made up of multiple byte arrays in it can be referenced as a flat buffer and it is valid to access bytes beyond the first array in the structure.... Fix it by passing the adfs superblock in and using the internal checksum array to get the checksum value. Signed-off-by: Dave Chinner --- libdisk/fstype.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libdisk/fstype.c b/libdisk/fstype.c index f84b4e4..548f297 100644 --- a/libdisk/fstype.c +++ b/libdisk/fstype.c @@ -142,16 +142,16 @@ may_be_swap(const char *s) { /* rather weak necessary condition */ static int -may_be_adfs(const char *s) { +may_be_adfs(const struct adfs_super_block *sb) { char *p; int sum; - p = (char *) s + 511; + p = (char *)sb->s_checksum; sum = 0; - while(--p != s) + while(--p != (char *)sb) sum = (sum >> 8) + (sum & 0xff) + *p; - return (sum == p[511]); + return (sum & 0xff) == sb->s_checksum[0]; } static int is_reiserfs_magic_string (struct reiserfs_super_block * rs) @@ -304,7 +304,7 @@ fstype(const char *device) { goto io_error; /* only a weak test */ - if (may_be_adfs((char *) &adfssb) + if (may_be_adfs(&adfssb) && (adfsblksize(adfssb) >= 8 && adfsblksize(adfssb) <= 10)) type = "adfs"; -- 1.6.5 From SRS0+85BU+43+fromorbit.com=dave@internode.on.net Thu Jan 14 04:12:44 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EACiAH250454 for ; Thu, 14 Jan 2010 04:12:44 -0600 X-ASG-Debug-ID: 1263464019-30a003d20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4080F1DB1135 for ; Thu, 14 Jan 2010 02:13:39 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id kSiv1ZdWhQCngCFc for ; Thu, 14 Jan 2010 02:13:39 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11435815-1927428 for ; Thu, 14 Jan 2010 20:43:38 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVMht-0007rP-JH for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:13:37 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVMdg-0001LF-6h for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:09:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/9] xfsprogs: Fix miscellaneous warnings in libxfs Subject: [PATCH 2/9] xfsprogs: Fix miscellaneous warnings in libxfs Date: Thu, 14 Jan 2010 21:09:05 +1100 Message-Id: <1263463752-5052-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263463752-5052-1-git-send-email-david@fromorbit.com> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263464021 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean These are questionable fixes but they do shut up the warnings with as little change as possible. The first couple are questionable because they are a result of the compiler (gcc 4.3.4) trying to be smart but failing. The uninitialised variable warnings in xfs_bmapi() is spurious, as certain fields are unused in certain situations but gcc can't work that out. It is easily suppressed by initialising the structure to zero. xfs_mod_sb() is dumping out an array subscript bound warning that is spurious. The code is correct and will assert fail on out of bounds indexes. A simple reorder of the first and last offset calculations makes the warning go away (a good sign of compiler fail if ever there was one). Changing xfs_alloc_mark_busy() from a macro to a static inline definition is needed for the compiler to see that variables passed to that function are actually used. Signed-off-by: Dave Chinner --- libxfs/xfs.h | 5 +++-- libxfs/xfs_bmap.c | 2 +- libxfs/xfs_mount.c | 9 ++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libxfs/xfs.h b/libxfs/xfs.h index 8e94dad..abe8700 100644 --- a/libxfs/xfs.h +++ b/libxfs/xfs.h @@ -288,9 +288,10 @@ roundup_pow_of_two(uint v) #define xfs_ilock(ip,mode) ((void) 0) #define xfs_iunlock(ip,mode) ((void) 0) -/* space allocation */ +/* space allocation - use static inlines to avoid unused var warnings */ #define xfs_alloc_search_busy(tp,ag,b,len) ((void) 0) -#define xfs_alloc_mark_busy(tp,ag,b,len) ((void) 0) +static inline void xfs_alloc_mark_busy(xfs_trans_t *tp, + xfs_agnumber_t agno, xfs_agblock_t bno, xfs_extlen_t len) {} #define xfs_rotorstep 1 #define xfs_bmap_rtalloc(a) (ENOSYS) #define xfs_rtpick_extent(mp,tp,len,p) (ENOSYS) diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c index cf1123a..4cc6431 100644 --- a/libxfs/xfs_bmap.c +++ b/libxfs/xfs_bmap.c @@ -4274,7 +4274,7 @@ xfs_bmapi( xfs_fsblock_t abno; /* allocated block number */ xfs_extlen_t alen; /* allocated extent length */ xfs_fileoff_t aoff; /* allocated file offset */ - xfs_bmalloca_t bma; /* args for xfs_bmap_alloc */ + xfs_bmalloca_t bma = { 0 }; /* args for xfs_bmap_alloc */ xfs_btree_cur_t *cur; /* bmap btree cursor */ xfs_fileoff_t end; /* end of mapped file region */ int eof; /* we've hit the end of extents */ diff --git a/libxfs/xfs_mount.c b/libxfs/xfs_mount.c index 02bff42..662c8d2 100644 --- a/libxfs/xfs_mount.c +++ b/libxfs/xfs_mount.c @@ -400,15 +400,14 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fields) xfs_sb_to_disk(XFS_BUF_TO_SBP(bp), &mp->m_sb, fields); - /* find modified range */ + /* find modified range - get last first to avoid spurious warning */ + f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields); + ASSERT((1LL << f) & XFS_SB_MOD_BITS); + last = xfs_sb_info[f + 1].offset - 1; f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields); ASSERT((1LL << f) & XFS_SB_MOD_BITS); first = xfs_sb_info[f].offset; - f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields); - ASSERT((1LL << f) & XFS_SB_MOD_BITS); - last = xfs_sb_info[f + 1].offset - 1; - xfs_trans_log_buf(tp, bp, first, last); } -- 1.6.5 From SRS0+85BU+43+fromorbit.com=dave@internode.on.net Thu Jan 14 04:12:45 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EACimn250462 for ; Thu, 14 Jan 2010 04:12:44 -0600 X-ASG-Debug-ID: 1263464019-77a800880000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9904B1DB1138 for ; Thu, 14 Jan 2010 02:13:40 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id 06xES5xk5H6oG5Ei for ; Thu, 14 Jan 2010 02:13:40 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11435816-1927428 for ; Thu, 14 Jan 2010 20:43:39 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVMht-0007rk-Mo for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:13:37 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVMdg-0001LI-8I for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:09:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/9] xfsprogs: fix missing error check in xfs_rtfree_range in libxfs Subject: [PATCH 3/9] xfsprogs: fix missing error check in xfs_rtfree_range in libxfs Date: Thu, 14 Jan 2010 21:09:06 +1100 Message-Id: <1263463752-5052-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263463752-5052-1-git-send-email-david@fromorbit.com> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263464021 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0206 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When xfs_rtfind_forw() returns an error, the block is returned uninitialised. xfs_rtfree_range() is not checking the error return, so could be using an uninitialised block number for modifying bitmap summary info. Signed-off-by: Dave Chinner --- libxfs/xfs_rtalloc.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/libxfs/xfs_rtalloc.c b/libxfs/xfs_rtalloc.c index 6c3da52..4fbdaa9 100644 --- a/libxfs/xfs_rtalloc.c +++ b/libxfs/xfs_rtalloc.c @@ -466,6 +466,8 @@ xfs_rtfree_range( */ error = xfs_rtfind_forw(mp, tp, end, mp->m_sb.sb_rextents - 1, &postblock); + if (error) + return error; /* * If there are blocks not being freed at the front of the * old extent, add summary data for them to be allocated. -- 1.6.5 From SRS0+DK36+43+fromorbit.com=dave@internode.on.net Thu Jan 14 04:12:44 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EACicM250452 for ; Thu, 14 Jan 2010 04:12:44 -0600 X-ASG-Debug-ID: 1263464019-07c201c90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 385DC165517 for ; Thu, 14 Jan 2010 02:13:40 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id 83lbDx8WtrUSUIOp for ; Thu, 14 Jan 2010 02:13:40 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11528819-1927428 for ; Thu, 14 Jan 2010 20:43:39 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVMhj-0007ra-UZ for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:13:27 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVMdg-0001LW-Go for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:09:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 8/9] xfsprogs: fix sign warning in mkfs directory code Subject: [PATCH 8/9] xfsprogs: fix sign warning in mkfs directory code Date: Thu, 14 Jan 2010 21:09:11 +1100 Message-Id: <1263463752-5052-9-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263463752-5052-1-git-send-email-david@fromorbit.com> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263464021 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1553 1.0000 -1.0713 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.07 X-Barracuda-Spam-Status: No, SCORE=-1.07 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dave Chinner --- mkfs/proto.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/mkfs/proto.c b/mkfs/proto.c index 8fc8c4c..3723685 100644 --- a/mkfs/proto.c +++ b/mkfs/proto.c @@ -432,7 +432,7 @@ parseproto( mode |= val; creds.cr_uid = (int)getnum(pp); creds.cr_gid = (int)getnum(pp); - xname.name = name; + xname.name = (uchar_t *)name; xname.len = name ? strlen(name) : 0; tp = libxfs_trans_alloc(mp, 0); flags = XFS_ILOG_CORE; -- 1.6.5 From SRS0+DK36+43+fromorbit.com=dave@internode.on.net Thu Jan 14 04:12:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_45,J_CHICKENPOX_47,J_CHICKENPOX_48, J_CHICKENPOX_55,J_CHICKENPOX_57,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EACkFw250497 for ; Thu, 14 Jan 2010 04:12:46 -0600 X-ASG-Debug-ID: 1263464019-142000cb0002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B83E6165518 for ; Thu, 14 Jan 2010 02:13:41 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id reDHsRg1XRsiCTIm for ; Thu, 14 Jan 2010 02:13:41 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11528821-1927428 for ; Thu, 14 Jan 2010 20:43:39 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVMhj-0007rO-Ir for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:13:27 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVMdg-0001LD-3c for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:09:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/9] xfsprogs: fix sign warnings in libxfs Subject: [PATCH 1/9] xfsprogs: fix sign warnings in libxfs Date: Thu, 14 Jan 2010 21:09:04 +1100 Message-Id: <1263463752-5052-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263463752-5052-1-git-send-email-david@fromorbit.com> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263464022 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The directory naming is a mix of char and uchar_t and the compiler warns wheter they cross over. Cast the pointers according to the destination requirements as it doesn't seem to matter to avoid the warnings. Signed-off-by: Dave Chinner --- include/xfs_types.h | 2 +- libxfs/xfs_attr.c | 10 +++++----- libxfs/xfs_attr_leaf.c | 10 +++++----- libxfs/xfs_dir2.c | 2 +- libxfs/xfs_dir2_block.c | 8 ++++---- libxfs/xfs_dir2_leaf.c | 4 ++-- libxfs/xfs_dir2_node.c | 4 ++-- libxfs/xfs_dir2_sf.c | 13 +++++++------ 8 files changed, 27 insertions(+), 26 deletions(-) diff --git a/include/xfs_types.h b/include/xfs_types.h index 0f51916..6f566ff 100644 --- a/include/xfs_types.h +++ b/include/xfs_types.h @@ -161,7 +161,7 @@ typedef enum { } xfs_btnum_t; struct xfs_name { - const char *name; + const uchar_t *name; int len; }; diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c index 7ab37ff..5bd3c2a 100644 --- a/libxfs/xfs_attr.c +++ b/libxfs/xfs_attr.c @@ -64,7 +64,7 @@ xfs_attr_name_to_xname( { if (!aname) return EINVAL; - xname->name = aname; + xname->name = (const uchar_t *)aname; xname->len = strlen(aname); if (xname->len >= MAXNAMELEN) return EFAULT; /* match IRIX behaviour */ @@ -103,7 +103,7 @@ xfs_attr_fetch(xfs_inode_t *ip, struct xfs_name *name, memset((char *)&args, 0, sizeof(args)); args.name = name->name; args.namelen = name->len; - args.value = value; + args.value = (uchar_t *)value; args.valuelen = *valuelenp; args.flags = flags; args.hashval = xfs_da_hashname(args.name, args.namelen); @@ -233,7 +233,7 @@ xfs_attr_set_int(xfs_inode_t *dp, struct xfs_name *name, memset((char *)&args, 0, sizeof(args)); args.name = name->name; args.namelen = name->len; - args.value = value; + args.value = (uchar_t *)value; args.valuelen = valuelen; args.flags = flags; args.hashval = xfs_da_hashname(args.name, args.namelen); @@ -1545,7 +1545,7 @@ xfs_attr_rmtval_get(xfs_da_args_t *args) ASSERT(!(args->flags & ATTR_KERNOVAL)); mp = args->dp->i_mount; - dst = args->value; + dst = (xfs_caddr_t)args->value; valuelen = args->valuelen; lblkno = args->rmtblkno; while (valuelen > 0) { @@ -1601,7 +1601,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) dp = args->dp; mp = dp->i_mount; - src = args->value; + src = (xfs_caddr_t)args->value; /* * Find a "hole" in the attribute address space large enough for diff --git a/libxfs/xfs_attr_leaf.c b/libxfs/xfs_attr_leaf.c index f8f926f..d535752 100644 --- a/libxfs/xfs_attr_leaf.c +++ b/libxfs/xfs_attr_leaf.c @@ -476,11 +476,11 @@ xfs_attr_shortform_to_leaf(xfs_da_args_t *args) sfe = &sf->list[0]; for (i = 0; i < sf->hdr.count; i++) { - nargs.name = (char *)sfe->nameval; + nargs.name = (uchar_t *)sfe->nameval; nargs.namelen = sfe->namelen; - nargs.value = (char *)&sfe->nameval[nargs.namelen]; + nargs.value = (uchar_t *)&sfe->nameval[nargs.namelen]; nargs.valuelen = sfe->valuelen; - nargs.hashval = xfs_da_hashname((char *)sfe->nameval, + nargs.hashval = xfs_da_hashname((uchar_t *)sfe->nameval, sfe->namelen); nargs.flags = XFS_ATTR_NSP_ONDISK_TO_ARGS(sfe->flags); error = xfs_attr_leaf_lookup_int(bp, &nargs); /* set a->index */ @@ -610,9 +610,9 @@ xfs_attr_leaf_to_shortform(xfs_dabuf_t *bp, xfs_da_args_t *args, int forkoff) continue; ASSERT(entry->flags & XFS_ATTR_LOCAL); name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); - nargs.name = (char *)name_loc->nameval; + nargs.name = (uchar_t *)name_loc->nameval; nargs.namelen = name_loc->namelen; - nargs.value = (char *)&name_loc->nameval[nargs.namelen]; + nargs.value = (uchar_t *)&name_loc->nameval[nargs.namelen]; nargs.valuelen = be16_to_cpu(name_loc->valuelen); nargs.hashval = be32_to_cpu(entry->hashval); nargs.flags = XFS_ATTR_NSP_ONDISK_TO_ARGS(entry->flags); diff --git a/libxfs/xfs_dir2.c b/libxfs/xfs_dir2.c index 71134f8..2d2abd1 100644 --- a/libxfs/xfs_dir2.c +++ b/libxfs/xfs_dir2.c @@ -18,7 +18,7 @@ #include -struct xfs_name xfs_name_dotdot = {"..", 2}; +struct xfs_name xfs_name_dotdot = {(uchar_t *)"..", 2}; extern const struct xfs_nameops xfs_default_nameops; diff --git a/libxfs/xfs_dir2_block.c b/libxfs/xfs_dir2_block.c index d197b0b..d286000 100644 --- a/libxfs/xfs_dir2_block.c +++ b/libxfs/xfs_dir2_block.c @@ -36,8 +36,8 @@ static xfs_dahash_t xfs_dir_hash_dot, xfs_dir_hash_dotdot; void xfs_dir_startup(void) { - xfs_dir_hash_dot = xfs_da_hashname(".", 1); - xfs_dir_hash_dotdot = xfs_da_hashname("..", 2); + xfs_dir_hash_dot = xfs_da_hashname((uchar_t *)".", 1); + xfs_dir_hash_dotdot = xfs_da_hashname((uchar_t *)"..", 2); } /* @@ -489,7 +489,7 @@ xfs_dir2_block_lookup( * Fill in inode number, CI name if appropriate, release the block. */ args->inumber = be64_to_cpu(dep->inumber); - error = xfs_dir_cilookup_result(args, dep->name, dep->namelen); + error = xfs_dir_cilookup_result(args, (char *)dep->name, dep->namelen); xfs_da_brelse(args->trans, bp); return XFS_ERROR(error); } @@ -576,7 +576,7 @@ xfs_dir2_block_lookup_int( * and buffer. If it's the first case-insensitive match, store * the index and buffer and continue looking for an exact match. */ - cmp = mp->m_dirnameops->compname(args, dep->name, dep->namelen); + cmp = mp->m_dirnameops->compname(args, (char *)dep->name, dep->namelen); if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { args->cmpresult = cmp; *bpp = bp; diff --git a/libxfs/xfs_dir2_leaf.c b/libxfs/xfs_dir2_leaf.c index 9a1aace..356b541 100644 --- a/libxfs/xfs_dir2_leaf.c +++ b/libxfs/xfs_dir2_leaf.c @@ -906,7 +906,7 @@ xfs_dir2_leaf_lookup( * Return the found inode number & CI name if appropriate */ args->inumber = be64_to_cpu(dep->inumber); - error = xfs_dir_cilookup_result(args, dep->name, dep->namelen); + error = xfs_dir_cilookup_result(args, (char *)dep->name, dep->namelen); xfs_da_brelse(tp, dbp); xfs_da_brelse(tp, lbp); return XFS_ERROR(error); @@ -1000,7 +1000,7 @@ xfs_dir2_leaf_lookup_int( * and buffer. If it's the first case-insensitive match, store * the index and buffer and continue looking for an exact match. */ - cmp = mp->m_dirnameops->compname(args, dep->name, dep->namelen); + cmp = mp->m_dirnameops->compname(args, (char *)dep->name, dep->namelen); if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { args->cmpresult = cmp; *indexp = index; diff --git a/libxfs/xfs_dir2_node.c b/libxfs/xfs_dir2_node.c index db88adc..6a92f13 100644 --- a/libxfs/xfs_dir2_node.c +++ b/libxfs/xfs_dir2_node.c @@ -612,7 +612,7 @@ xfs_dir2_leafn_lookup_for_entry( * EEXIST immediately. If it's the first case-insensitive * match, store the block & inode number and continue looking. */ - cmp = mp->m_dirnameops->compname(args, dep->name, dep->namelen); + cmp = mp->m_dirnameops->compname(args, (char *)dep->name, dep->namelen); if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { /* If there is a CI match block, drop it */ if (args->cmpresult != XFS_CMP_DIFFERENT && @@ -1821,7 +1821,7 @@ xfs_dir2_node_lookup( dep = (xfs_dir2_data_entry_t *)((char *)state->extrablk.bp-> data + state->extrablk.index); - rval = xfs_dir_cilookup_result(args, dep->name, dep->namelen); + rval = xfs_dir_cilookup_result(args, (char *)dep->name, dep->namelen); } /* * Release the btree blocks and leaf block. diff --git a/libxfs/xfs_dir2_sf.c b/libxfs/xfs_dir2_sf.c index 77f30de..06e076d 100644 --- a/libxfs/xfs_dir2_sf.c +++ b/libxfs/xfs_dir2_sf.c @@ -732,8 +732,8 @@ xfs_dir2_sf_lookup( * number. If it's the first case-insensitive match, store the * inode number and continue looking for an exact match. */ - cmp = dp->i_mount->m_dirnameops->compname(args, sfep->name, - sfep->namelen); + cmp = dp->i_mount->m_dirnameops->compname(args, + (char *)sfep->name, sfep->namelen); if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { args->cmpresult = cmp; args->inumber = xfs_dir2_sf_get_inumber(sfp, @@ -751,7 +751,8 @@ xfs_dir2_sf_lookup( if (!ci_sfep) return XFS_ERROR(ENOENT); /* otherwise process the CI match as required by the caller */ - error = xfs_dir_cilookup_result(args, ci_sfep->name, ci_sfep->namelen); + error = xfs_dir_cilookup_result(args, (char *)ci_sfep->name, + ci_sfep->namelen); return XFS_ERROR(error); } @@ -793,7 +794,7 @@ xfs_dir2_sf_removename( */ for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->hdr.count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { - if (xfs_da_compname(args, sfep->name, sfep->namelen) == + if (xfs_da_compname(args, (char *)sfep->name, sfep->namelen) == XFS_CMP_EXACT) { ASSERT(xfs_dir2_sf_get_inumber(sfp, xfs_dir2_sf_inumberp(sfep)) == @@ -928,8 +929,8 @@ xfs_dir2_sf_replace( for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->hdr.count; i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { - if (xfs_da_compname(args, sfep->name, sfep->namelen) == - XFS_CMP_EXACT) { + if (xfs_da_compname(args, (char *)sfep->name, + sfep->namelen) == XFS_CMP_EXACT) { #if XFS_BIG_INUMS || defined(DEBUG) ino = xfs_dir2_sf_get_inumber(sfp, xfs_dir2_sf_inumberp(sfep)); -- 1.6.5 From SRS0+DK36+43+fromorbit.com=dave@internode.on.net Thu Jan 14 04:12:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EACjPp250490 for ; Thu, 14 Jan 2010 04:12:46 -0600 X-ASG-Debug-ID: 1263464019-07c201c90002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DDD8616551B for ; Thu, 14 Jan 2010 02:13:41 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id cWYAKylb5aicDTKy for ; Thu, 14 Jan 2010 02:13:41 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11528820-1927428 for ; Thu, 14 Jan 2010 20:43:39 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVMht-0007rX-QW for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:13:37 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVMdg-0001LS-Ez for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:09:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 7/9] xfsprogs: fix print format warnings in xfs_io Subject: [PATCH 7/9] xfsprogs: fix print format warnings in xfs_io Date: Thu, 14 Jan 2010 21:09:10 +1100 Message-Id: <1263463752-5052-8-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263463752-5052-1-git-send-email-david@fromorbit.com> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263464022 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0287 1.0000 -1.8351 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.84 X-Barracuda-Spam-Status: No, SCORE=-1.84 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dave Chinner --- io/madvise.c | 2 +- io/mincore.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/io/madvise.c b/io/madvise.c index cd16a4c..3235402 100644 --- a/io/madvise.c +++ b/io/madvise.c @@ -96,7 +96,7 @@ madvise_f( return 0; } else if (llength > (size_t)llength) { printf(_("length argument too large -- %lld\n"), - llength); + (long long)llength); return 0; } else length = (size_t)llength; diff --git a/io/mincore.c b/io/mincore.c index d534540..60625ef 100644 --- a/io/mincore.c +++ b/io/mincore.c @@ -56,7 +56,7 @@ mincore_f( return 0; } else if (llength > (size_t)llength) { printf(_("length argument too large -- %lld\n"), - llength); + (long long)llength); return 0; } else length = (size_t)llength; -- 1.6.5 From SRS0+g8Nd+43+fromorbit.com=dave@internode.on.net Thu Jan 14 04:12:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EACnhc250537 for ; Thu, 14 Jan 2010 04:12:49 -0600 X-ASG-Debug-ID: 1263464024-39af02fc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 347D21DB1139 for ; Thu, 14 Jan 2010 02:13:45 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id eweYbzEe9rtdb3dU for ; Thu, 14 Jan 2010 02:13:45 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11632758-1927428 for ; Thu, 14 Jan 2010 20:43:44 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NVMht-0007ro-Pl for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:13:37 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NVMdg-0001LQ-D9 for xfs@oss.sgi.com; Thu, 14 Jan 2010 21:09:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 6/9] xfsprogs: fix trivial warnings in xfs_fsr Subject: [PATCH 6/9] xfsprogs: fix trivial warnings in xfs_fsr Date: Thu, 14 Jan 2010 21:09:09 +1100 Message-Id: <1263463752-5052-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263463752-5052-1-git-send-email-david@fromorbit.com> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263464026 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0107 1.0000 -1.9510 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.95 X-Barracuda-Spam-Status: No, SCORE=-1.95 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean GCC complains about assignments between (unsigned long long *) and (__u64 *) pointers. Just add a cast to shut it up. Signed-off-by: Dave Chinner --- fsr/xfs_fsr.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fsr/xfs_fsr.c b/fsr/xfs_fsr.c index 21f08c3..1f933c7 100644 --- a/fsr/xfs_fsr.c +++ b/fsr/xfs_fsr.c @@ -133,7 +133,7 @@ xfs_bulkstat_single(int fd, xfs_ino_t *lastip, xfs_bstat_t *ubuffer) { xfs_fsop_bulkreq_t bulkreq; - bulkreq.lastip = lastip; + bulkreq.lastip = (__u64 *)lastip; bulkreq.icount = 1; bulkreq.ubuffer = ubuffer; bulkreq.ocount = NULL; @@ -146,7 +146,7 @@ xfs_bulkstat(int fd, xfs_ino_t *lastip, int icount, { xfs_fsop_bulkreq_t bulkreq; - bulkreq.lastip = lastip; + bulkreq.lastip = (__u64 *)lastip; bulkreq.icount = icount; bulkreq.ubuffer = ubuffer; bulkreq.ocount = ocount; -- 1.6.5 From stevecs@chaven.com Thu Jan 14 05:19:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.1 required=5.0 tests=AWL,BAYES_40,FH_DATE_PAST_20XX, HTML_MESSAGE autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EBJKNN255520 for ; Thu, 14 Jan 2010 05:19:20 -0600 X-ASG-Debug-ID: 1263468010-142c037f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from omr5.networksolutionsemail.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C99DD1657BE for ; Thu, 14 Jan 2010 03:20:11 -0800 (PST) Received: from omr5.networksolutionsemail.com (omr5.networksolutionsemail.com [205.178.146.55]) by cuda.sgi.com with ESMTP id b7s5CQmkIz5hKg68 for ; Thu, 14 Jan 2010 03:20:11 -0800 (PST) Received: from mail.networksolutionsemail.com (mail.networksolutionsemail.com [205.178.146.50]) by omr5.networksolutionsemail.com (8.13.6/8.13.6) with SMTP id o0EBJtwv002382 for ; Thu, 14 Jan 2010 06:20:05 -0500 Received: (qmail 15618 invoked by uid 78); 14 Jan 2010 11:19:45 -0000 Received: from unknown (HELO ?127.0.0.1?) (stevecs@chaven.com@75.26.225.171) by ns-omr1.lb.hosting.dc2.netsol.com with SMTP; 14 Jan 2010 11:19:45 -0000 Message-ID: <4B4EFDD5.5060408@chaven.com> Date: Thu, 14 Jan 2010 05:19:49 -0600 From: Steve Costaras User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.5) Gecko/20091204 Lightning/1.0b2pre Thunderbird/3.0 MIME-Version: 1.0 To: Andi Kleen CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS data corruption with high I/O even on hardware raid Subject: Re: XFS data corruption with high I/O even on hardware raid References: <4B4E6F3F.1090901@chaven.com> <87hbqpf3zv.fsf@basil.nowhere.org> In-Reply-To: <87hbqpf3zv.fsf@basil.nowhere.org> Content-Type: multipart/alternative; boundary="------------010000030903080708030007" X-Barracuda-Connect: omr5.networksolutionsemail.com[205.178.146.55] X-Barracuda-Start-Time: 1263468016 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0034 1.0000 -1.9991 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19773 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. --------------010000030903080708030007 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit It's the current kernel for the distribution, however I take your point. I did have a 2.6.28 kernel running on another system that also exhibited the same problem but that system has been rebuilt to standardize them all on 8.04.3LTS. I am contacting Areca to see if they have any suggestions as well as will try a newer kernel. On 01/14/2010 03:08, Andi Kleen wrote: > Steve Costaras writes: > >> ============ (System) >> (Ubuntu 8.04.3 LTS): >> Linux loki 2.6.24-26-server #1 SMP Tue Dec 1 18:26:43 UTC 2009 x86_64 GNU/Linux >> > That's a really old kernel. Perhaps try it with a newer one? > > -Andi > > --------------010000030903080708030007 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit It's the current kernel for the distribution, however I take your point.    I did have a 2.6.28 kernel running on another system that also exhibited the same problem but that system has been rebuilt to standardize them all on 8.04.3LTS.   I am contacting Areca to see if they have any suggestions as well as will try a newer kernel.


On 01/14/2010 03:08, Andi Kleen wrote:
Steve Costaras <stevecs@chaven.com> writes:
  
============ (System)
(Ubuntu 8.04.3 LTS):
Linux loki 2.6.24-26-server #1 SMP Tue Dec 1 18:26:43 UTC 2009 x86_64 GNU/Linux
    
That's a really old kernel. Perhaps try it with a newer one?

-Andi

  
--------------010000030903080708030007-- From andi@firstfloor.org Thu Jan 14 05:35:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, RCVD_IN_BRBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EBZpGh256718 for ; Thu, 14 Jan 2010 05:35:51 -0600 X-ASG-Debug-ID: 1263469006-77a3028b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B82391C4E7A5 for ; Thu, 14 Jan 2010 03:36:47 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id dOYJiw7mfaMAUXqt for ; Thu, 14 Jan 2010 03:36:47 -0800 (PST) Received: from basil.firstfloor.org (p5B3CB331.dip0.t-ipconnect.de [91.60.179.49]) by one.firstfloor.org (Postfix) with ESMTP id 60B061A9805A; Thu, 14 Jan 2010 12:36:45 +0100 (CET) Received: by basil.firstfloor.org (Postfix, from userid 1000) id E7011B17C3; Thu, 14 Jan 2010 12:36:44 +0100 (CET) Date: Thu, 14 Jan 2010 12:36:44 +0100 From: Andi Kleen To: Steve Costaras Cc: Andi Kleen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS data corruption with high I/O even on hardware raid Subject: Re: XFS data corruption with high I/O even on hardware raid Message-ID: <20100114113644.GL12241@basil.fritz.box> References: <4B4E6F3F.1090901@chaven.com> <87hbqpf3zv.fsf@basil.nowhere.org> <4B4EFDD5.5060408@chaven.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B4EFDD5.5060408@chaven.com> User-Agent: Mutt/1.5.17 (2007-11-01) X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1263469007 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4712 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19773 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 05:19:49AM -0600, Steve Costaras wrote: > It's the current kernel for the distribution, however I take your point. The deal is usually -- when you stay with old distribution kernels you have to contact the distribution for any problems. > I did have a 2.6.28 kernel running on another system that also exhibited That's also a very old kernel in mainline terms. Current is 2.6.32 -Andi -- ak@linux.intel.com -- Speaking for myself only. From paul.chavent@fnac.net Thu Jan 14 09:01:56 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EF1t4d009805 for ; Thu, 14 Jan 2010 09:01:56 -0600 X-ASG-Debug-ID: 1263481370-3366020c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp11.services.sfr.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E610135A4E2 for ; Thu, 14 Jan 2010 07:02:50 -0800 (PST) Received: from smtp11.services.sfr.fr (mtaweb11.services.sfr.fr [93.17.128.28]) by cuda.sgi.com with ESMTP id Y261CZCGTh2q6bvH for ; Thu, 14 Jan 2010 07:02:50 -0800 (PST) Received: from filter.sfr.fr (localhost [127.0.0.1]) by msfrf1101.sfr.fr (SMTP Server) with ESMTP id 1222E17000094 for ; Thu, 14 Jan 2010 16:02:48 +0100 (CET) Received: from wsfrf1112 (wsfrf1112 [10.18.24.26]) by msfrf1101.sfr.fr (SMTP Server) with ESMTP id 066151700008F for ; Thu, 14 Jan 2010 16:02:48 +0100 (CET) X-SFR-UUID: 20100114150248262.066151700008F@msfrf1101.sfr.fr From: Reply-To: To: xfs@oss.sgi.com Message-ID: <17182907.184441263481368019.JavaMail.www@wsfrf1112> X-ASG-Orig-Subj: usage of xfsctrl for embedded development / uuid question Subject: usage of xfsctrl for embedded development / uuid question MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_7637_1190910.1263481368017" X-Originating-IP: [134.212.178.10] X-WUM-FROM: |~| X-WUM-TO: |~| X-WUM-REPLYTO: |~| Date: Thu, 14 Jan 2010 16:02:48 +0100 (CET) X-Barracuda-Connect: mtaweb11.services.sfr.fr[93.17.128.28] X-Barracuda-Start-Time: 1263481371 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0053 1.0000 -1.9864 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.49 X-Barracuda-Spam-Status: No, SCORE=-0.49 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME, WEIRD_PORT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19787 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 1.50 WEIRD_PORT URI: Uses non-standard port number for HTTP X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ------=_Part_7637_1190910.1263481368017 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi I would like to use the xfsctl for trying directio and realtime feature on = my gnu-linux embeded system (i have a "homemade" sdk). It seems that the xfsctl function is defined inline, and that all i need is= in=20 inlude/xfs/xfs.h inlude/xfs/xfs_fs.h inlude/xfs/platform_deps.h inlude/xfs/linux.h So, for installing the dev files, it should be enought to do=20 tar -xvf xfsprogs-3.1.0.tar.gz cd xfsprogs-3.1.0.tar.gz ./configure --build=3D${HOST} --host=3D${TARGET} $MAKE -C include install-dev PKG_INC_DIR=3D${TOOLCHAIN_SYSROOT}/usr/include= /xfs So here are my remarks : (1) uuid configuration problems : =C2=A0=C2=A0=C2=A0 The package_uuiddev.m4 search for the function uuid_comp= are. This unction is present in the uuid included in e2fsprogs, but not in = the OSSP uuid (http://www.ossp.org/pkg/lib/uuid/). So the configuration is = ok but the compilation fails. =C2=A0=C2=A0=C2=A0 The package_uuiddev.m4 search for uuid headers in multip= le path but only one is included (in linux.h for example). =C2=A0=C2=A0=C2=A0 I think there is a bug with th definition of libuuid in = package_uuiddev.m4 (not sure)=20 (2) uuid requirement =C2=A0=C2=A0=C2=A0 As uuid seems to be not required for my application, i s= uggest a patch that allow to ignore the absence of this dependance. (3) regeneration of configure =C2=A0=C2=A0=C2=A0 The regeneration of configure fails whith this message =C2=A0=C2=A0=C2=A0 # rm configure =C2=A0=C2=A0=C2=A0 # make configure =C2=A0=C2=A0=C2=A0 [...] =C2=A0=C2=A0=C2=A0 autoconf =C2=A0=C2=A0=C2=A0 configure.in:101: error: possibly undefined macro: AC_HA= VE_BLKID_TOPO =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 If this token and others are legitimate, ple= ase use m4_pattern_allow. =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 See the Autoconf documentation. Please tell me if my remarks are wrong or if i go in a bad direction.=20 Thank you. Paul ------=_Part_7637_1190910.1263481368017 Content-Type: application/octet-stream; name=xfsprogs-3.1.0-uuid.patch content-transfer-encoding: base64 Content-Disposition: attachment; size=4792; filename=xfsprogs-3.1.0-uuid.patch ZGlmZiAtYWJCcnUgeGZzcHJvZ3MtMy4xLjAub3JpZy9jb25maWd1cmUuaW4geGZzcHJvZ3MtMy4x LjAubW9kL2NvbmZpZ3VyZS5pbgotLS0geGZzcHJvZ3MtMy4xLjAub3JpZy9jb25maWd1cmUuaW4J MjAxMC0wMS0xMyAwMjo1MzoyOC4wMDAwMDAwMDAgKzAxMDAKKysrIHhmc3Byb2dzLTMuMS4wLm1v ZC9jb25maWd1cmUuaW4JMjAxMC0wMS0xNCAxNTozNDozNC4zMTQ5Nzk3OTMgKzAxMDAKQEAgLTg2 LDcgKzg2LDcgQEAKIEFDX1BBQ0tBR0VfTkVFRF9MSU9fTElTVElPCiAKIEFDX1BBQ0tBR0VfTkVF RF9VVUlEX0gKLUFDX1BBQ0tBR0VfTkVFRF9VVUlEQ09NUEFSRQorQUNfUEFDS0FHRV9ORUVEX1VV SURVTlBBUlNFCiAKIEFDX1BBQ0tBR0VfTkVFRF9QVEhSRUFEX0gKIEFDX1BBQ0tBR0VfTkVFRF9Q VEhSRUFETVVURVhJTklUCkBAIC05OCw3ICs5OCw3IEBACiBBQ19IQVZFX0dFVE1OVEVOVAogQUNf SEFWRV9HRVRNTlRJTkZPCiBBQ19IQVZFX0ZBTExPQ0FURQotQUNfSEFWRV9CTEtJRF9UT1BPKCRl bmFibGVfYmxraWQpCisjIEFDX0hBVkVfQkxLSURfVE9QTygkZW5hYmxlX2Jsa2lkKQogCiBBQ19U WVBFX1BTSU5UCiBBQ19UWVBFX1BTVU5TSUdORUQKZGlmZiAtYWJCcnUgeGZzcHJvZ3MtMy4xLjAu b3JpZy9pbmNsdWRlL2xpbnV4LmggeGZzcHJvZ3MtMy4xLjAubW9kL2luY2x1ZGUvbGludXguaAot LS0geGZzcHJvZ3MtMy4xLjAub3JpZy9pbmNsdWRlL2xpbnV4LmgJMjAxMC0wMS0xMyAwMjo1Mzoy OC4wMDAwMDAwMDAgKzAxMDAKKysrIHhmc3Byb2dzLTMuMS4wLm1vZC9pbmNsdWRlL2xpbnV4LmgJ MjAxMC0wMS0xNCAxNTowMjo1Ny41MDE2NjY2NDUgKzAxMDAKQEAgLTE3LDcgKzE3LDE0IEBACiAj aWZuZGVmIF9fWEZTX0xJTlVYX0hfXwogI2RlZmluZSBfX1hGU19MSU5VWF9IX18KIAorI2lmIGRl ZmluZWQoSEFWRV9VVUlEX0gpCisjaW5jbHVkZSA8dXVpZC5oPgorI2VsaWYgZGVmaW5lZChIQVZF X1NZU19VVUlEX0gpCisjaW5jbHVkZSA8c3lzL3V1aWQuaD4KKyNlbGlmIGRlZmluZWQoSEFWRV9V VUlEX1VVSURfSCkKICNpbmNsdWRlIDx1dWlkL3V1aWQuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8 c3lzL3Zmcy5oPgogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogI2luY2x1ZGUgPHN5cy9wYXJhbS5o PgpAQCAtNTgsNiArNjUsOCBAQAogCW9wdGluZCA9IDA7CiB9CiAKKyNpZiBkZWZpbmVkKEhBVkVf VVVJRF9IKSB8fCBkZWZpbmVkKEhBVkVfU1lTX1VVSURfSCkgfHwgZGVmaW5lZChIQVZFX1VVSURf VVVJRF9IKQorCiBzdGF0aWMgX19pbmxpbmVfXyBpbnQgcGxhdGZvcm1fdXVpZF9jb21wYXJlKHV1 aWRfdCAqdXUxLCB1dWlkX3QgKnV1MikKIHsKIAlyZXR1cm4gdXVpZF9jb21wYXJlKCp1dTEsICp1 dTIpOwpAQCAtOTMsNiArMTAyLDggQEAKIAl1dWlkX2NvcHkoKmRzdCwgKnNyYyk7CiB9CiAKKyNl bmRpZiAvKiBkZWZpbmVkKEhBVkVfVVVJRF9IKSB8fCBkZWZpbmVkKEhBVkVfU1lTX1VVSURfSCkg fHwgZGVmaW5lZChIQVZFX1VVSURfVVVJRF9IKSAqLworCiAjaWZuZGVmIEJMS0RJU0NBUkQKICNk ZWZpbmUgQkxLRElTQ0FSRAlfSU8oMHgxMiwxMTkpCiAjZW5kaWYKZGlmZiAtYWJCcnUgeGZzcHJv Z3MtMy4xLjAub3JpZy9pbmNsdWRlL3BsYXRmb3JtX2RlZnMuaC5pbiB4ZnNwcm9ncy0zLjEuMC5t b2QvaW5jbHVkZS9wbGF0Zm9ybV9kZWZzLmguaW4KLS0tIHhmc3Byb2dzLTMuMS4wLm9yaWcvaW5j bHVkZS9wbGF0Zm9ybV9kZWZzLmguaW4JMjAxMC0wMS0xMyAwMjo1MzoyOC4wMDAwMDAwMDAgKzAx MDAKKysrIHhmc3Byb2dzLTMuMS4wLm1vZC9pbmNsdWRlL3BsYXRmb3JtX2RlZnMuaC5pbgkyMDEw LTAxLTE0IDE1OjAzOjIyLjI2NTU5OTE3NSArMDEwMApAQCAtNjIsNiArNjIsMTAgQEAKIAogdHlw ZWRlZiBzdHJ1Y3QgZmlsbGRpcgkJZmlsbGRpcl90OwogCisjdW5kZWYgSEFWRV9VVUlEX0gKKyN1 bmRlZiBIQVZFX1NZU19VVUlEX0gKKyN1bmRlZiBIQVZFX1VVSURfVVVJRF9ICisKICNpZiBkZWZp bmVkKF9fbGludXhfXykKICNpbmNsdWRlIDx4ZnMvbGludXguaD4KICNlbGlmIGRlZmluZWQoX19G cmVlQlNEX18pCmRpZmYgLWFiQnJ1IHhmc3Byb2dzLTMuMS4wLm9yaWcvbTQvcGFja2FnZV91dWlk ZGV2Lm00IHhmc3Byb2dzLTMuMS4wLm1vZC9tNC9wYWNrYWdlX3V1aWRkZXYubTQKLS0tIHhmc3By b2dzLTMuMS4wLm9yaWcvbTQvcGFja2FnZV91dWlkZGV2Lm00CTIwMTAtMDEtMTMgMDI6NTM6Mjgu MDAwMDAwMDAwICswMTAwCisrKyB4ZnNwcm9ncy0zLjEuMC5tb2QvbTQvcGFja2FnZV91dWlkZGV2 Lm00CTIwMTAtMDEtMTQgMTU6Mzk6NDEuODk2NzU4ODI3ICswMTAwCkBAIC00LDIzICs0LDIxIEBA CiAJICAgICRhY19jdl9oZWFkZXJfc3lzX3V1aWRfaCA9IG5vIC1hIFwKIAkgICAgJGFjX2N2X2hl YWRlcl91dWlkX3V1aWRfaCA9IG5vOyB0aGVuCiAJZWNobwotCWVjaG8gJ0ZBVEFMIEVSUk9SOiBj b3VsZCBub3QgZmluZCBhIHZhbGlkIFVVSUQgaGVhZGVyLicKKwllY2hvICdXQVJOSU5HOiBjb3Vs ZCBub3QgZmluZCBhIHZhbGlkIFVVSUQgaGVhZGVyLicKIAllY2hvICdJbnN0YWxsIHRoZSBVbml2 ZXJzYWxseSBVbmlxdWUgSWRlbnRpZmllcnMgZGV2ZWxvcG1lbnQgcGFja2FnZS4nCi0JZXhpdCAx CiAgICAgZmkKICAgXSkKIAotQUNfREVGVU4oW0FDX1BBQ0tBR0VfTkVFRF9VVUlEQ09NUEFSRV0s Ci0gIFsgQUNfQ0hFQ0tfRlVOQ1ModXVpZF9jb21wYXJlKQotICAgIGlmIHRlc3QgJGFjX2N2X2Z1 bmNfdXVpZF9jb21wYXJlID0geWVzOyB0aGVuCi0JbGlidXVpZD0iIgorQUNfREVGVU4oW0FDX1BB Q0tBR0VfTkVFRF9VVUlEVU5QQVJTRV0sCisgIFsgQUNfQ0hFQ0tfRlVOQ1ModXVpZF91bnBhcnNl KQorICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfdXVpZF91bnBhcnNlID0geWVzOyB0aGVuCisJbGli dXVpZD0iLWx1dWlkIgogICAgIGVsc2UKLQlBQ19DSEVDS19MSUIodXVpZCwgdXVpZF9jb21wYXJl LCwgWworCUFDX0NIRUNLX0xJQih1dWlkLCB1dWlkX3VucGFyc2UsLCBbCiAJICAgIGVjaG8KLQkg ICAgZWNobyAnRkFUQUwgRVJST1I6IGNvdWxkIG5vdCBmaW5kIGEgdmFsaWQgVVVJRCBsaWJyYXJ5 LicKLQkgICAgZWNobyAnSW5zdGFsbCB0aGUgVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXJz IGxpYnJhcnkgcGFja2FnZS4nCi0JICAgIGV4aXQgMV0pCi0JbGlidXVpZD0iLWx1dWlkIgorCSAg ICBlY2hvICdXQVJOSU5HOiBjb3VsZCBub3QgZmluZCBhIHZhbGlkIFVVSUQgbGlicmFyeS4nCisJ ICAgIGVjaG8gJ0luc3RhbGwgdGhlIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVycyBsaWJy YXJ5IHBhY2thZ2UuJ10pCisJbGlidXVpZD0iIgogICAgIGZpCiAgICAgQUNfU1VCU1QobGlidXVp ZCkKICAgXSkK ------=_Part_7637_1190910.1263481368017-- From aelder@sgi.com Thu Jan 14 09:40:55 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EFetZj012426 for ; Thu, 14 Jan 2010 09:40:55 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6CFFA8F8107; Thu, 14 Jan 2010 07:41:49 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH 3/3] xfs: clean up inconsistent variable naming inxfs_swap_extent Date: Thu, 14 Jan 2010 09:41:48 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A696B@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1263432836-13368-4-git-send-email-david@fromorbit.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 3/3] xfs: clean up inconsistent variable naming inxfs_swap_extent Thread-Index: AcqUvh7IQRsmtRvZTNWXWR2WEMtbbAAceBng From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > The swap extent ioctl passes in a target inode and a temporary > inode which are clearly named in the ioctl structure. The code > then assigns temp to target and vice versa, making it extremely > difficult to work out which inode is which later in the code. > Make this consistent throughout the code. >=20 > Also make xfs_swap_extent static as there are no external users > of the function. All three patches in this series look good. > Signed-off-by: Dave Chinner Reviewed-by: Alex Elder ... From aelder@sgi.com Thu Jan 14 10:50:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EGoVsV017188 for ; Thu, 14 Jan 2010 10:50:32 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0FC3EAC007; Thu, 14 Jan 2010 08:51:25 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH 3/3] XFS: Don't wake xfsbufd when idle Date: Thu, 14 Jan 2010 10:51:25 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A696D@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1263210599-25067-4-git-send-email-david@fromorbit.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 3/3] XFS: Don't wake xfsbufd when idle Thread-Index: AcqStqY0vAMRNtKHRKmRbGLCjcZ/NwCgseag From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > The xfsbufd wakes every xfsbufd_centisecs (once per second by > default) for each filesystem even when the filesystem is idle. > If the xfsbufd has nothing to do, put it into a long term sleep > and only wake it up when there is work pending (i.e. dirty > buffers to flush soon). This will make laptop power misers happy. Patch generally looks good but I have a question, below. > Signed-off-by: Dave Chinner > --- > fs/xfs/linux-2.6/xfs_buf.c | 20 +++++++++++++++----- > 1 files changed, 15 insertions(+), 5 deletions(-) >=20 > diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c > index 77b8be8..b51be4e 100644 > --- a/fs/xfs/linux-2.6/xfs_buf.c > +++ b/fs/xfs/linux-2.6/xfs_buf.c > @@ -1595,6 +1595,11 @@ xfs_buf_delwri_queue( > list_del(&bp->b_list); > } >=20 > + if (list_empty(dwq)) { > + /* start xfsbufd as it is about to have something to do */ > + wake_up_process(bp->b_target->bt_task); > + } > + > bp->b_flags |=3D _XBF_DELWRI_Q; > list_add_tail(&bp->b_list, dwq); > bp->b_queuetime =3D jiffies; > @@ -1644,6 +1649,8 @@ xfsbufd_wakeup( > list_for_each_entry(btp, &xfs_buftarg_list, bt_list) { > if (test_bit(XBT_FORCE_SLEEP, &btp->bt_flags)) > continue; > + if (list_empty(&btp->bt_delwrite_queue)) > + continue; > set_bit(XBT_FORCE_FLUSH, &btp->bt_flags); > wake_up_process(btp->bt_task); > } > @@ -1708,6 +1715,9 @@ xfsbufd( > set_freezable(); >=20 > do { > + long age =3D xfs_buf_age_centisecs * msecs_to_jiffies(10); > + long tout =3D age; Why do you switch from using xfs_buf_timer_centisecs to using xfs_buf_age_centisecs for the timeout (in the non-empty delwrite queue case)? > + > if (unlikely(freezing(current))) { > set_bit(XBT_FORCE_SLEEP, &target->bt_flags); > refrigerator(); > @@ -1715,12 +1725,12 @@ xfsbufd( > clear_bit(XBT_FORCE_SLEEP, &target->bt_flags); > } >=20 > - schedule_timeout_interruptible( > - xfs_buf_timer_centisecs * msecs_to_jiffies(10)); Here is where the timeout was computed previously. > - > - xfs_buf_delwri_split(target, &tmp, > - xfs_buf_age_centisecs * msecs_to_jiffies(10)); > + /* sleep for a long time if there is nothing to do. */ > + if (list_empty(&target->bt_delwrite_queue)) > + tout =3D MAX_SCHEDULE_TIMEOUT; Effect of the timout change is here... > + schedule_timeout_interruptible(tout); >=20 > + xfs_buf_delwri_split(target, &tmp, age); > count =3D 0; > while (!list_empty(&tmp)) { > bp =3D list_entry(tmp.next, xfs_buf_t, b_list); From chingimleong@yahoo.com.sg Thu Jan 14 11:24:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_27,J_CHICKENPOX_56 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EHOPDt019725 for ; Thu, 14 Jan 2010 11:24:25 -0600 X-ASG-Debug-ID: 1263489917-1144007f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web76207.mail.sg1.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 08F7F1C4F691 for ; Thu, 14 Jan 2010 09:25:18 -0800 (PST) Received: from web76207.mail.sg1.yahoo.com (web76207.mail.sg1.yahoo.com [124.108.115.134]) by cuda.sgi.com with SMTP id V4Tptv79mMcQosGs for ; Thu, 14 Jan 2010 09:25:18 -0800 (PST) Received: (qmail 61235 invoked by uid 60001); 14 Jan 2010 17:25:16 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com.sg; s=s1024; t=1263489916; bh=4jCdMNFjE0ugoo9962G4fT5kb4Jsqb1ekjg1XvjtuZo=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type; b=CC4wxp0yqjRzI6zeg2FqwRVVq7knZdAuc23D+gBt2q/1y/ghW5Q5GscF7L3hzi2ifTocxKD+j2uRJBEFjOAid2jhWg3idWr90PQqyiUD8BxIOaAxIH6pfFQzkmIrpvz48PZRYQ/KJX0K5afHe0YnmMkqb1Id7LMkoMg3DPVLSfc= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com.sg; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type; b=2wkNoOhsQJsvQw2a3IgMb/R9G6QnOU7+VxvwlStfXRQcmmhd5vwrMq9/nAkC/NNkVtfLhueyAAwpYnC6FDn3ZB1nWb9q8zdgG5T8m7VU+4ZWEnOREkgQAM8DFfhlu6sWyAkKDrO+SLmlj6x9kHaL5cw+k9DHB35QZL7P/cGW7nM=; Message-ID: <264613.60659.qm@web76207.mail.sg1.yahoo.com> X-YMail-OSG: cgkXUjMVM1kTy3ZwU5UmfjT0NIsVNrj.cefIOVBGcPsltzMi_cn0iCNtuB_KlSZB.R7v4wrbOcHIzItSh5830yppeORKDnr2ZuF0BYeehxH_Q7Fk0Fy.uemCJz18RvrKUZt5QBW.fx3w203xfWc3XBP3caFDJTpWlFhFxPr8MGU0fpyMLZu6pC.csILSGf_AMzoGneskskj8U6_hWy_6vXiBZmQp1nFncTlz9enyPuwN.Vy.fMtG2SN2Muid7EMeBLVcJmkcpLKa1QOAQjo19Wyka04y6xL4cSOZI50TjR_SjVnBG62d1LBubgyDQTTZRnE- Received: from [218.186.10.228] by web76207.mail.sg1.yahoo.com via HTTP; Fri, 15 Jan 2010 01:25:15 SGT X-Mailer: YahooMailClassic/9.0.20 YahooMailWebService/0.8.100.260964 Date: Fri, 15 Jan 2010 01:25:15 +0800 (SGT) From: Gim Leong Chin X-ASG-Orig-Subj: Re: allocsize mount option Subject: Re: allocsize mount option To: Dave Chinner Cc: Eric Sandeen , xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1572955208-1263489915=:60659" X-Barracuda-Connect: web76207.mail.sg1.yahoo.com[124.108.115.134] X-Barracuda-Start-Time: 1263489922 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19798 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --0-1572955208-1263489915=:60659 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Hi Dave,=0A=0A=0A> fragmented, it just means that that there are 19% more= =0A> fragments=0A> than the ideal. In 4TB of data with 1GB sized files, tha= t=0A> would mean=0A> there are 4800 extents (average length ~800MB, which i= s=0A> excellent)=0A> instead of the perfect 4000 extents (@1GB each). Hence= you=0A> can see=0A> how misleading this "19% fragmentation" number can be = on an=0A> extent=0A> based filesystem...=0A=0AThere are many files that are= 128 GB.=0A=0AWhen I did the tests with dd on this computer, the 20 GB file= s had up to > 50 extents.=0A=0A=0A> This all looks good - it certainly seem= s that you have done=0A> your=0A> research. ;) The only thing I'd do differ= ently is that if=0A> you have=0A> only one partition on the drives, I would= n't even put a=0A> partition on it.=0A> =0A=0AI just learnt from you that I= can have a filesystem without a partition table!=A0 That takes care of hav= ing to calculate the start of the partition!=A0 Are there any other benefit= s?=A0 But are there any down sides to not having a partition table?=0A=0A= =0A> I'd significantly reduce the size of that buffer - too=0A> large a=0A>= buffer can slow down IO due to the memory it consumes and=0A> TLB misses= =0A> it causes. I'd typically use something like:=0A> =0A> $ dd if=3D/dev/z= ero of=3Dbigfile bs=3D1024k count=3D20k=0A> =0A> Which does 20,000 writes o= f 1MB each and ensures the dd=0A> process=0A> doesn't consume over a GB of = RAM.=0A> =0A=0AI did try with 1 MB.=A0 I have attached the raw test result = file.=A0 As you can see from line 261, in writing 10 GB with bs=3D1MB, the = speed was no faster two out of three times, so I dropped it.=A0 I could re-= try that next time.=0A=0A=0A> This seems rather low for a buffered write on= hardware that=0A> can=0A> clearly go faster. SLED11 is based on 2.6.27, ri= ght? I=0A> suspect that=0A> many of the buffered writeback issues that have= been fixed=0A> since=0A> 2.6.30 are present in the SLED11 kernel, and if t= hat is the=0A> case I=0A> can see why the allocsize mount option makes such= a big=0A> difference.=0A=0AIs it possible for the fixes in the 2.6.30 kern= el to be backported to the 2.6.27 kernel in SLE 11?=0AIf so, I would like t= o open a service request to Novell to do that to fix the performance issues= in SLE 11.=0A=0A=0A> It might be worth checking how well direct IO writes = run to=0A> take=0A> buffered writeback issues out ofthe equation. In that c= ase,=0A> I'd use=0A> stripe width multiple sized buffers like:=0A> =0A> $ d= d if=3D/dev/zero of=3Dbigfile bs=3D3072k count=3D7k=0A> oflag=3Ddirect=0A> = =0A=0AI would like to do that tomorrow when I go back to work, but on my op= enSUSE 11.1 AMD Turion RM-74 notebook with 2.6.27.39-0.2-default kernel, on= the system WD Scorpio Black 7200 RPM drive, I get 62 MB/s with dd bs=3D1GB= for writing 20 GB file with Direct IO, and 56 MB/s without Direct IO.=A0 Y= ou are on to something!=0A=0AAs for the hardware performance potential, see= below.=0A=0A> I'd suggest that you might need to look at increasing the=0A= > maximum IO=0A> size for the block device=0A> (/sys/block/sdb/queue/max_se= ctors_kb),=0A> maybe the request queue depth as well to get larger IOs to= =0A> be pushed=0A> to the raid controller. if you can, at least get it to t= he=0A> stripe=0A> width of 1536k....=0A> =0A=0ACould you give a good refere= nce for performance tuning of these parameters?=A0 I am at a total loss her= e.=0A=0A=0AAs seen from the results file, I have tried different configurat= ions of RAID 0, 5 and 6, with different number of drives.=A0 I am pretty co= nfused by the results I see, although only the 20 GB file writes were done = with allocsize=3D1g. I also did not lock the CPU frequency governor at the= top clock except for the RAID 6 tests.=0A=0AI decided on the allocsize=3D1= g after checking that the multiple instance 30 MB writes have only one exte= nt for each file, without holes or unused space.=0A=0AIt appears that RAID = 6 writes are faster than RAID 5!=A0 And RAID 6 can even match RAID 0!=A0 Th= e system seems to thrive on throughput, when doing multiple instances of wr= ites, for getting high aggregate bandwidth.=0A=0AI will put the performance= potential of the system in context by giving some details.=0A=0AThe system= has four Kingston DDR2-800 MHz CL6 4 GB unbuffered ECC DIMMs, set to ungan= ged mode, so each thread has up to 6.4 GB of memory bandwidth, from one of = two independent memory channels.=0A=0AThe AMD Phenom II X4 965 has three le= vels of cache, and data from memory goes directly to the L1 caches. The fou= r cores have dedicated L1 and L2 caches, and a shared 6 MB L3. Thread swit= ching will result in cache misses if more than four threads are running.=0A= =0AThe IO through the HyperTransport 3.0 from CPU to the AMD 790FX chipset = is at 8 GB/s.=A0 The Areca ARC-1680ix-16 is PCI-E Gen 1 x8, so the maximum = bandwidth is 2 GB/s.=A0 The cache is Kingston DDR-667 CL5 4 GB unbuffered E= CC, although it runs at 533 MHz, so the maximum bandwidth is 4.2 GB/s.=A0 T= he Intel IOP 348 1200 MHz on the card has two cores.=0A=0AThere are sixteen= WD Caviar Black 1 TB drives in the Lian-Li PC-V2110 chassis.=A0 For the fo= lks reading this, please do not follow this set-up, as the Caviar Blacks ar= e a mistake.=A0 WD quietly disabled the use of WD time limited error recove= ry utility since the September 2009 manufactured=A0 Caviar Black drives, so= I have an array of drives that can pop out of the RAID any time if I am un= lucky, and I got screwed here.=0A=0AThere is a battery back-up module for t= he cache, and the drive caches are disabled.=A0 Tests run with the drive ca= ches enabled showed quite some bit of speed up in RAID 0.=0A=0AWe previousl= y did tests of the Caviar Black 1 TB writing 100 MB chuncks to the device w= ithout a file system, with the drive connected to the SATA ports on a Tyan = Opteron motherboard with nVidia nForce 4 Professional chipset.=A0 With the = drive cache disabled, the sequential write speed was 30+ MB/s if I remember= correctly, versus sub 100 MB/s with cache enabled.=A0 That is a big fall-o= ff in speed, and that was writing at the outer diameter of the platter; spe= ed would be halved at the inner diameter.=A0 It seems the controller firmwa= re is meant to work with cache enabled for proper functioning.=0A=0AThe des= ktop Caviar Black also does not have rotatry vibration compensation, unlike= the Caviar RE nearline drives.=A0 WD has a document showing the performanc= e difference having rotary vibration compensation makes.=A0 I am not trying= to save pennies here, but the local distributor refuses to bring in the Ca= viar REs, and I am stuck in one man's land.=0A=0AThe system has sixteen har= d drives, and ten fans of difference sizes and purposes in total, so that i= s quite some bit of rotary vibration, which I can feel when I place my hand= on the side panels.=A0 I really do not know how badly the drive performanc= e suffers as a result. The drives are attached with rubber dampers on the m= ounting screws.=0A=0AI did the 20 GB dd test on the RAID 1 system drive, al= so with XFS, and got 53 MB/s with disabled drive caches, 63 MB/s enabled.= =A0 That is pretty disappointing, but in light of all the above considerati= ons, plus the kernel buffer issues, I do not really know if that is a good = figure.=0A=0ANCQ is enabled at depth 32.=A0 NCQ should cause performance lo= ss for single writes, but gains for multiple writes.=0A=0AAreca has a docum= ent showing that this card can do RAID 6 800 MB/s with Seagate nearline dri= ves, with the standard 512 MB cache. That is in Windows Server. I do not = know if the caches are disabled. The benchmark is IO Meter workstation seq= uential write. IO Meter requries WIndows for the front end, which causes m= e great difficulties, so I gave up trying to figure it out and I do not und= erstand what the workstation test does. However, in writing 30 MB files, I= already exceed 1 GB/s.=0A=0A=0A=0A --0-1572955208-1263489915=:60659 Content-Type: application/octet-stream; name=xfstesting Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=xfstesting VGVzdGluZyBmb3IgQXJlY2EgZGF0YSB2b2x1bWUKCgpta2ZzLnhmcyAtZiAt ZCBhZ2NvdW50PTMyIC1pIGFsaWduPTEgLUwgL2RhdGEgL2Rldi9zZGIxCgoK Q29uZmlnIDEKMTQgZHJpdmUgUkFJRCAwIDEyOCBrQiBzdHJpcGVzCgozNTg0 IExCQSBibG9ja3MgZm9yIG9uZSBzZXQgb2Ygc3RyaXBlcwoKbWtmcy54ZnMg LWYgLWIgc2l6ZT00ayAtZCBhZ2NvdW50PTMyLHN1PTEyOGssc3c9MTQgLWkg c2l6ZT0yNTYsYWxpZ249MSxhdHRyPTIgLWwgdmVyc2lvbj0yLHN1PTEyOGss bGF6eS1jb3VudD0xIC1uIHZlcnNpb249MiAtcyBzaXplPTUxMiAtTCAvZGF0 YSAvZGV2L3NkYjEKCgpUZXN0IDEKNCBpbnN0YW5jZXMgb2YgaW90ZXN0dHlw aG9vbiwgMTAwIGZpbGVzIG9mIDMwIE1CCgo1LCA2LCA0LCA0IHMgKDYwMCwg NTAwLCA3NTAsIDc1MCBNQi9zKQoKMjYwMCBNQi9zCgpUZXN0IDIKcmVwZWF0 IHRoZSBhYm92ZQoKNCwgNCwgNCwgNiBzICg3NTAsIDc1MCwgNzUwLCA1MDAg TUIvcykKCjI3NTAgTUIvcwoKVGVzdCAzCjEgaW5zdGFuY2Ugb2YgaW90ZXN0 dHlwaG9vbgoKMiBzICgxNTAwIE1CL3MpCgpUZXN0IDQKCjYgaW5zdGFuY2Vz IG9mIGlvdGVzdHR5cGhvb24sIDEwMCBmaWxlcyBvZiAzMCBNQgoKOCwgMTUs IDE1LCAxOSwgMTcsIDE4IHMgKDM3NSwgMjAwLCAyMDAsIDE1Ny44OSwgMTc2 LjQ3LCAxNjYuNjcgTUIvcykKCjEyNzYgTUIvcwoKVGVzdCA1CgpXcml0ZSAx IEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9 L2Rldi96ZXJvIG9mPWJpZ2ZpbGUgYnM9MTA3Mzc0MTgyNCBjb3VudD0xCjEr MCByZWNvcmRzIGluCjErMCByZWNvcmRzIG91dAoxMDczNzQxODI0IGJ5dGVz ICgxLjEgR0IpIGNvcGllZCwgMS40MzIxMiBzLCA3NTAgTUIvcwoKVGVzdCA2 CgpXcml0ZSAxMCBHQiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3Qv dDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlIGJzPTEwNzM3NDE4MjQg Y291bnQ9MTAKMTArMCByZWNvcmRzIGluCjEwKzAgcmVjb3JkcyBvdXQKMTA3 Mzc0MTgyNDAgYnl0ZXMgKDExIEdCKSBjb3BpZWQsIDExLjAyNjIgcywgOTc0 IE1CL3MKCjkzMCBNQi9zCgpUZXN0IDcKCmNoaW5nbEB0c3VuYW1pOi9kYXRh L3Rlc3QvdDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMTBHQiBicz0x MDczNzQxODI0IGNvdW50PTEwCjEwKzAgcmVjb3JkcyBpbgoxMCswIHJlY29y ZHMgb3V0CjEwNzM3NDE4MjQwIGJ5dGVzICgxMSBHQikgY29waWVkLCAxMS44 ODggcywgOTAzIE1CL3MKCjg2MSBNQi9zCgpUZXN0IDgKCmNoaW5nbEB0c3Vu YW1pOi9kYXRhL3Rlc3QvdDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxl MjBHQiBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoy MCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29w aWVkLCA2MS44NzU5IHMsIDM0NyBNQi9zCgozMzAuOTggTUIvcwoKVGVzdCA5 CgpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3pl cm8gb2Y9YmlnZmlsZTIwR0IgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCsw IHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRl cyAoMjEgR0IpIGNvcGllZCwgNjUuODY1NiBzLCAzMjYgTUIvcwoKMzEwLjk0 IE1CL3MKClRlc3QgMTAKCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDE+ IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMTBHQiBicz0xMDczNzQxODI0 IGNvdW50PTEwCjEwKzAgcmVjb3JkcyBpbgoxMCswIHJlY29yZHMgb3V0CjEw NzM3NDE4MjQwIGJ5dGVzICgxMSBHQikgY29waWVkLCA5LjYwNzc0IHMsIDEu MSBHQi9zCgoxMDY1IE1CL3MKCgpDb25maWcgMgoxMiBkcml2ZSBSQUlEIDAg MTI4IGtCIHN0cmlwZXMKCjMwNzIgTEJBIGJsb2NrcyBmb3Igb25lIHNldCBv ZiBzdHJpcGVzCgpta2ZzLnhmcyAtZiAtYiBzaXplPTRrIC1kIGFnY291bnQ9 MzIsc3U9MTI4ayxzdz0xMiAtaSBzaXplPTI1NixhbGlnbj0xLGF0dHI9MiAt bCB2ZXJzaW9uPTIsc3U9MTI4ayxsYXp5LWNvdW50PTEgLW4gdmVyc2lvbj0y IC1zIHNpemU9NTEyIC1MIC9kYXRhIC9kZXYvc2RiMQoKVGVzdCAxCgoxIGlu c3RhbmNlIG9mIGlvdGVzdHR5cGhvb24sIDEwMCBmaWxlcyBvZiAzMCBNQgoK MiBzICgxNTAwIE1CL3MpCgpUZXN0IDIKCjQgaW5zdGFuY2VzIG9mIGlvdGVz dHR5cGhvb24sIDEwMCBmaWxlcyBvZiAzMCBNQgoKMywgNCwgNCwgMyBzICgx MDAwLCA3NTAsIDc1MCwgMTAwMCBNQi9zKQoKMzUwMCBNQi9zCgpUZXN0IDMK CjQgaW5zdGFuY2VzIG9mIGlvdGVzdHR5cGhvb24sIDEwMCBmaWxlcyBvZiAz MCBNQgoKNSwgNSwgNywgNiBzICg2MDAsIDYwMCwgNDI4LjU3LCA1MDAgTUIv cykKCjIxMjggTUIvcwoKMTcsIDE4LCAxNiwgMTYsIDEzLCAxMSBzICgxNzYs IDE2NiwgMTg3LjUsIDE4Ny41LCAyMzAsIDI3MiBNQi9zKQoKVGVzdCA0Cgo2 IGluc3RhbmNlcyBvZiBpb3Rlc3R0eXBob29uLCAxMDAgZmlsZXMgb2YgMzAg TUIKCjksIDE0LCAxNiwgMjEsIDIxLCAyMSBzICgzMzMsIDIxNCwgMTg3LCAx NDIsIDE0MiwgMTQyIE1CL3MpCgoxMTYwIE1CL3MKClRlc3QgNQoKV3JpdGUg MSBHQiBmaWxlCgpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBp Zj0vZGV2L3plcm8gb2Y9YmlnZmlsZTFHQiBicz0xMDczNzQxODI0IGNvdW50 PTEKMSswIHJlY29yZHMgaW4KMSswIHJlY29yZHMgb3V0CjEwNzM3NDE4MjQg Ynl0ZXMgKDEuMSBHQikgY29waWVkLCAwLjc3NjQyOCBzLCAxLjQgR0Ivcwoz ODYzIE1CL3MKClRlc3QgNgoKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90 MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUxMEdCIGJzPTEwNzM3NDE4 MjQgY291bnQ9MTAKMTArMCByZWNvcmRzIGluCjEwKzAgcmVjb3JkcyBvdXQK MTA3Mzc0MTgyNDAgYnl0ZXMgKDExIEdCKSBjb3BpZWQsIDEwLjEwODYgcywg MS4xIEdCL3MKMTAxMiBNQi9zCgpUZXN0IDcKCmNoaW5nbEB0c3VuYW1pOi9k YXRhL3Rlc3QvdDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMTBHQmIg YnM9MTA3Mzc0MTgyNCBjb3VudD0xMAoxMCswIHJlY29yZHMgaW4KMTArMCBy ZWNvcmRzIG91dAoxMDczNzQxODI0MCBieXRlcyAoMTEgR0IpIGNvcGllZCwg MTAuNzk2MiBzLCA5OTUgTUIvcwo5NDggTUIvcwoKVGVzdCA4CgpjaGluZ2xA dHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9Ymln ZmlsZTIwR0IgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMg aW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0Ip IGNvcGllZCwgNjUuMDk2MiBzLCAzMzAgTUIvcwozMTQgTUIvcwoKVGVzdCA5 CgpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3pl cm8gb2Y9YmlnZmlsZTIwR0JiIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjAr MCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0 ZXMgKDIxIEdCKSBjb3BpZWQsIDY2LjE1ODMgcywgMzI1IE1CL3MKMzA5IE1C L3MKCgpDb25maWcgMwoxNCBkcml2ZSBSQUlEIDUgMTI4IGtCIHN0cmlwZXMK CjMzMjggTEJBIGJsb2NrcyBmb3Igb25lIHNldCBvZiBzdHJpcGVzCgpta2Zz LnhmcyAtZiAtYiBzaXplPTRrIC1kIGFnY291bnQ9MzIsc3U9MTI4ayxzdz0x MyAtaSBzaXplPTI1NixhbGlnbj0xLGF0dHI9MiAtbCB2ZXJzaW9uPTIsc3U9 MTI4ayxsYXp5LWNvdW50PTEgLW4gdmVyc2lvbj0yIC1zIHNpemU9NTEyIC1M IC9kYXRhIC9kZXYvc2RiMQoKClRlc3QgMQoKMSBpbnN0YW5jZSBvZiBpb3Rl c3R0eXBob29uLCAxMDAgZmlsZXMgb2YgMzAgTUIKCjMgcyAoMTAwMCBNQi9z KQoKVGVzdCAyCgo0IGluc3RhbmNlcyBvZiBpb3Rlc3R0eXBob29uLCAxMDAg ZmlsZXMgb2YgMzAgTUIKCjQsIDgsIDEwLCAxNSBzICg3NTAsIDM3NSwgMzAw LCAyMDAgTUIvcykKCjE2MjUgTUIvcwoKVGVzdCAzCgo0IGluc3RhbmNlcyBv ZiBpb3Rlc3R0eXBob29uLCAxMDAgZmlsZXMgb2YgMzAgTUIKCjE0LCAxMywg MTEsIDUgcyAoMjE0LCAyMzAsIDI3MiwgNjAwIE1CL3MpCgoxMzE2IE1CL3MK ClRlc3QgNAoKNiBpbnN0YW5jZXMgb2YgaW90ZXN0dHlwaG9vbiwgMTAwIGZp bGVzIG9mIDMwIE1CCgo0NiwgNDYsIDQ2LCA0NiwgMjMsIDkgcyAoNjUsIDY1 LCA2NSwgNjUsIDEzMCwgMzMzIE1CL3MpCgo3MjMgTUIvcwoKVGVzdCA1Cgo2 IGluc3RhbmNlcyBvZiBpb3Rlc3R0eXBob29uLCAxMDAgZmlsZXMgb2YgMzAg TUIKCjE0LCAyMSwgNDEsIDQwLCA0MSwgNDYgcyAoMjE0LCAxNDIsIDczLCA3 NSwgNzMsIDY1IE1CL3MpCgo2NDIgTUIvcwoKVGVzdCA2CgpXcml0ZSAxIEdC IGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rl di96ZXJvIG9mPWJpZ2ZpbGUxR0IgYnM9MTA3Mzc0MTgyNCBjb3VudD0xCjEr MCByZWNvcmRzIGluCjErMCByZWNvcmRzIG91dAoxMDczNzQxODI0IGJ5dGVz ICgxLjEgR0IpIGNvcGllZCwgMC43MDQ2NjMgcywgMS41IEdCL3MKMTQ1MyBN Qi9zCgpUZXN0IDcKCldyaXRlIDEgR0IgZmlsZQpjaGluZ2xAdHN1bmFtaTov ZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTFHQmIg YnM9MTA3Mzc0MTgyNCBjb3VudD0xCjErMCByZWNvcmRzIGluCjErMCByZWNv cmRzIG91dAoxMDczNzQxODI0IGJ5dGVzICgxLjEgR0IpIGNvcGllZCwgMC42 Njk2NzYgcywgMS42IEdCL3MKMTUyOSBNQi9zCgpUZXN0IDgKCldyaXRlIDEw IEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9 L2Rldi96ZXJvIG9mPWJpZ2ZpbGUxMEdCIGJzPTEwNzM3NDE4MjQgY291bnQ9 MTAKMTArMCByZWNvcmRzIGluCjEwKzAgcmVjb3JkcyBvdXQKMTA3Mzc0MTgy NDAgYnl0ZXMgKDExIEdCKSBjb3BpZWQsIDYwLjg3MjYgcywgMTc2IE1CL3MK MTY4IE1CL3MKClRlc3QgOQoKV3JpdGUgMTAgR0IgZmlsZQpjaGluZ2xAdHN1 bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmls ZTEwR0JiIGJzPTEwNzM3NDE4MjQgY291bnQ9MTAKMTArMCByZWNvcmRzIGlu CjEwKzAgcmVjb3JkcyBvdXQKMTA3Mzc0MTgyNDAgYnl0ZXMgKDExIEdCKSBj b3BpZWQsIDc5LjU5NDIgcywgMTM1IE1CL3MKMTI4IE1CL3MKClRlc3QgMTAK CldyaXRlIDEwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90 MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUxMEdCYyBicz0xMDQ4NTc2 IGNvdW50PTEwMjQwCjEwMjQwKzAgcmVjb3JkcyBpbgoxMDI0MCswIHJlY29y ZHMgb3V0CjEwNzM3NDE4MjQwIGJ5dGVzICgxMSBHQikgY29waWVkLCA0Mi40 ODMxIHMsIDI1MyBNQi9zCjI0MSBNQi9zCgpUZXN0IDExCgpXcml0ZSAxMCBH QiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDE+IGRkIGlmPS9k ZXYvemVybyBvZj1iaWdmaWxlMTBHQmQgYnM9MTA0ODU3NiBjb3VudD0xMDI0 MAoxMDI0MCswIHJlY29yZHMgaW4KMTAyNDArMCByZWNvcmRzIG91dAoxMDcz NzQxODI0MCBieXRlcyAoMTEgR0IpIGNvcGllZCwgODYuMzQzMyBzLCAxMjQg TUIvcwoxMTggTUIvcwoKVGVzdCAxMgoKV3JpdGUgMjAgR0IgZmlsZQpjaGlu Z2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9 YmlnZmlsZTIwR0IgYnM9MTA0ODU3NiBjb3VudD0yMDQ4MAoyMDQ4MCswIHJl Y29yZHMgaW4KMjA0ODArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRl cyAoMjEgR0IpIGNvcGllZCwgMTY5LjQ1MyBzLCAxMjcgTUIvcwoxMjAgTUIv cwoKVGVzdCAxMwoKV3JpdGUgMjAgR0IgZmlsZQpjaGluZ2xAdHN1bmFtaTov ZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0Ji IGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAg cmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQs IDE2Mi43MDIgcywgMTMyIE1CL3MKMTI1IE1CL3MKClRlc3QgMTQKCjIgaW5z dGFuY2VzIG9mIHdyaXRlIDIwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2Rh dGEvdGVzdC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCYyBi cz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJl Y29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAy MTMuNTMzIHMsIDEwMSBNQi9zCjk1IE1CL3MKCmNoaW5nbEB0c3VuYW1pOi9k YXRhL3Rlc3QvdDI+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQmQg YnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCBy ZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwg MjQ2LjI5MSBzLCA4Ny4yIE1CL3MKODMgTUIvcwoKCkNvbmZpZyA0CjEwIGRy aXZlIFJBSUQgNSAxMjgga0Igc3RyaXBlcywgZHJpdmVzIDcgdG8gMTYgMTAw MCBHQiAoOTMxIEdCKQoKMjMwNCBMQkEgYmxvY2tzIGZvciBvbmUgc2V0IG9m IHN0cmlwZXMKCm1rZnMueGZzIC1mIC1iIHNpemU9NGsgLWQgYWdjb3VudD0z MixzdT0xMjhrLHN3PTkgLWkgc2l6ZT0yNTYsYWxpZ249MSxhdHRyPTIgLWwg dmVyc2lvbj0yLHN1PTEyOGssbGF6eS1jb3VudD0xIC1uIHZlcnNpb249MiAt cyBzaXplPTUxMiAtTCAvZGF0YSAvZGV2L3NkYjEKCgpUZXN0IDEKCjEgaW5z dGFuY2Ugb2YgaW90ZXN0dHlwaG9vbiwgMTAwIGZpbGVzIG9mIDMwIE1CCgoy IHMgKDE1MDAgTUIvcykKClRlc3QgMgoKNCBpbnN0YW5jZXMgb2YgaW90ZXN0 dHlwaG9vbiwgMTAwIGZpbGVzIG9mIDMwIE1CCgoxMiwgMTMsIDEwLCA1IHMg KDI1MCwgMjMwLCAzMDAsIDYwMCBNQi9zKQoKMTM4MCBNQi9zCgpUZXN0IDMK CjQgaW5zdGFuY2VzIG9mIGlvdGVzdHR5cGhvb24sIDEwMCBmaWxlcyBvZiAz MCBNQgoKNSwgNywgMTAsIDEyIHMgKDYwMCwgNDI4LCAzMDAsIDI1MCBNQi9z KQoKMTU3OCBNQi9zCgpUZXN0IDQKCjYgaW5zdGFuY2VzIG9mIGlvdGVzdHR5 cGhvb24sIDEwMCBmaWxlcyBvZiAzMCBNQgoKMjUsIDIxLCAyNiwgMjIsIDEz LCA5IHMgKDEyMCwgMTQyLCAxMTUsIDEzNiwgMjMwLCAzMzMgTUIvcykKCjEw NzYgTUIvcwoKVGVzdCA1Cgo2IGluc3RhbmNlcyBvZiBpb3Rlc3R0eXBob29u LCAxMDAgZmlsZXMgb2YgMzAgTUIKCjIwLCAxOCwgMjEsIDE0LCAxMywgMTEg cyAoMTUwLCAxNjYsIDE0MiwgMjE0LCAyMzAsIDI3MiBNQi9zKQoKMTE3NCBN Qi9zCgpUZXN0IDYKCldyaXRlIDEgR0IgZmlsZQpjaGluZ2xAdHN1bmFtaTov ZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTFHQiBi cz0xMDczNzQxODI0IGNvdW50PTEKMSswIHJlY29yZHMgaW4KMSswIHJlY29y ZHMgb3V0CjEwNzM3NDE4MjQgYnl0ZXMgKDEuMSBHQikgY29waWVkLCAwLjY3 NDQ0OSBzLCAxLjYgR0IvcwoxNTE4IE1CL3MKClRlc3QgNwoKV3JpdGUgMSBH QiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDE+IGRkIGlmPS9k ZXYvemVybyBvZj1iaWdmaWxlMUdCYiBicz0xMDczNzQxODI0IGNvdW50PTEK MSswIHJlY29yZHMgaW4KMSswIHJlY29yZHMgb3V0CjEwNzM3NDE4MjQgYnl0 ZXMgKDEuMSBHQikgY29waWVkLCAwLjc2ODk1NyBzLCAxLjQgR0IvcwoxMzMx IE1CL3MKClRlc3QgOApXcml0ZSAxMCBHQiBmaWxlCmNoaW5nbEB0c3VuYW1p Oi9kYXRhL3Rlc3QvdDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMTBH QiBicz0xMDczNzQxODI0IGNvdW50PTEwCjEwKzAgcmVjb3JkcyBpbgoxMCsw IHJlY29yZHMgb3V0CjEwNzM3NDE4MjQwIGJ5dGVzICgxMSBHQikgY29waWVk LCA4My42MTk0IHMsIDEyOCBNQi9zCjEyMiBNQi9zCgpUZXN0IDkKV3JpdGUg MTAgR0IgZmlsZQpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBp Zj0vZGV2L3plcm8gb2Y9YmlnZmlsZTEwR0JiIGJzPTEwNzM3NDE4MjQgY291 bnQ9MTAKMTArMCByZWNvcmRzIGluCjEwKzAgcmVjb3JkcyBvdXQKMTA3Mzc0 MTgyNDAgYnl0ZXMgKDExIEdCKSBjb3BpZWQsIDg1LjUyNzEgcywgMTI2IE1C L3MKMTE5IE1CL3MKClRlc3QgMTAKCldyaXRlIDIwIEdCIGZpbGUKY2hpbmds QHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJp Z2ZpbGUyMEdCIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRz IGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdC KSBjb3BpZWQsIDE3OC4yNTYgcywgMTIwIE1CL3MKMTE0IE1CL3MKClRlc3Qg MTEKCldyaXRlIDIwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVz dC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCYiBicz0xMDcz NzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMg b3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxODcuMDUx IHMsIDExNSBNQi9zCjEwOSBNQi9zCgpUZXN0IDEyCgoyIGluc3RhbmNlcyBv ZiB3cml0ZSAyMCBHQiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3Qv dDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQmMgYnM9MTA3Mzc0 MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91 dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMTg2LjM2NCBz LCAxMTUgTUIvcwoxMDkgTUIvcwoKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVz dC90Mj4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCZCBicz0xMDcz NzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMg b3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxOTguNzg3 IHMsIDEwOCBNQi9zCjEwMyBNQi9zCgpUb3RhbCAyMjMgTUIvcwoKZHJpdmUg Y2FjaGVzIGVuYWJsZWQKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4g ZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCZSBicz0xMDczNzQxODI0 IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIx NDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxNjUuNTggcywgMTMw IE1CL3MKMTIzIE1CL3MKCmRyaXZlIGNhY2hlcyBlbmFibGVkCmNoaW5nbEB0 c3VuYW1pOi9kYXRhL3Rlc3QvdDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdm aWxlMjBHQmYgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMg aW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0Ip IGNvcGllZCwgMTE3LjI3NyBzLCAxODMgTUIvcwoxNzQgTUIvcwoKMzEzIE1C L3MKCgpjaGluZ2xAZHJhZ29uOn4vdGVzdHN3PiBkZCBpZj0vZGV2L3plcm8g b2Y9YmlnZmlsZTIwR0IgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJl Y29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAo MjEgR0IpIGNvcGllZCwgNjIuNjk1OCBzLCAzNDMgTUIvcwozMjYgTUIvcwoK Y2hpbmdsQGRyYWdvbjp+L3Rlc3Rzdz4gZGQgaWY9L2Rldi96ZXJvIG9mPWJp Z2ZpbGUyMEdCYiBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3Jk cyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBH QikgY29waWVkLCA3My44ODczIHMsIDI5MSBNQi9zCjI3NyBNQi9zCgpjaGlu Z2xAZHJhZ29uOn4vdGVzdHN3PiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmls ZTIwR0JjIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGlu CjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBj b3BpZWQsIDc1LjQ2MjQgcywgMjg1IE1CL3MKMjcxIE1CL3MKCmluIGRyYWdv biwgNiBpbnN0YW5jZXMgb2YgaW90ZXN0dHlwaG9vbiwgMTAwIGZpbGVzIG9m IDMwIE1CCgo2NiwgODQsIDEwNywgMTMwLCAxMzAsIDEyOSBzICg0NSwgMzUs IDI4LCAyMywgMjMsIDIzIE1CL3MpCgpvbiBhbm90aGVyIGRheSwgYW5zeXMg dXNpbmcgMTAwJSBDUFUKCjIgaW5zdGFuY2VzIG9mIDIwIEdCIGZpbGUKY2hp bmdsQGRyYWdvbjp+PiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0Ig YnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCBy ZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwg MTQwLjA1OCBzLCAxNTMgTUIvcwoxNDYgTUIvcyAKCmNoaW5nbEBkcmFnb246 fj4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCYiBicz0xMDczNzQx ODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0 CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCA5Ny44NjQ2IHMs IDIxOSBNQi9zCjIwOSBNQi9zCgpUb3RhbCAzNTUgTUIvcwoKNiBpbnN0YW5j ZXMgb2YgMjAgR0IgZmlsZQpjaGluZ2xAZHJhZ29uOn4+IGRkIGlmPS9kZXYv emVybyBvZj1iaWdmaWxlMjBHQjEgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoy MCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBi eXRlcyAoMjEgR0IpIGNvcGllZCwgNTExLjg4MSBzLCA0Mi4wIE1CL3MKNDAg TUIvcwoKY2hpbmdsQGRyYWdvbjp+PiBkZCBpZj0vZGV2L3plcm8gb2Y9Ymln ZmlsZTIwR0IyIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRz IGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdC KSBjb3BpZWQsIDUxMC4wODcgcywgNDIuMSBNQi9zCjQwIE1CL3MKCmNoaW5n bEBkcmFnb246fj4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCMyBi cz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJl Y29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCA0 MzQuMzM4IHMsIDQ5LjQgTUIvcwo0NyBNQi9zCgpjaGluZ2xAZHJhZ29uOn4+ IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQjQgYnM9MTA3Mzc0MTgy NCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoy MTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMzM5LjA3NSBzLCA2 My4zIE1CL3MKNjAgTUIvcwoKY2hpbmdsQGRyYWdvbjp+PiBkZCBpZj0vZGV2 L3plcm8gb2Y9YmlnZmlsZTIwR0I1IGJzPTEwNzM3NDE4MjQgY291bnQ9MjAK MjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAg Ynl0ZXMgKDIxIEdCKSBjb3BpZWQsIDM2MC4xMDcgcywgNTkuNiBNQi9zCjU2 IE1CL3MKCmNoaW5nbEBkcmFnb246fj4gZGQgaWY9L2Rldi96ZXJvIG9mPWJp Z2ZpbGUyMEdCNiBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3Jk cyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBH QikgY29waWVkLCA1NzEuNzY4IHMsIDM3LjYgTUIvcwozNSBNQi9zCgpUb3Rh bCAyNzggTUIvcwoKdG9ybmFkbyBoYWQgZnVsbCBDUFVzIGFuZCBsaXR0bGUg ZnJlZSBtZW1vcnkKY2hpbmdsQHRvcm5hZG86fi90ZXN0c3cvaW90ZXN0L3Qx PiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0IgYnM9MTA3Mzc0MTgy NCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoy MTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMTU4LjQ2NiBzZWNv bmRzLCAxMzYgTUIvcwoxMjkgTUIvcwoKY2hpbmdsQHRvcm5hZG86fi90ZXN0 c3cvaW90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0Ji IGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAg cmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQs IDE1My41Mzggc2Vjb25kcywgMTQwIE1CL3MKMTMzIE1CL3MKCmNoaW5nbEB0 eXBob29uOn4vdGVzdHN3L2lvdGVzdGluZy93MT4gZGQgaWY9L2Rldi96ZXJv IG9mPWJpZ2ZpbGUyMEdCYiBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAg cmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVz ICgyMSBHQikgY29waWVkLCAxMzMuMzIgc2Vjb25kcywgMTYxIE1CL3MKMTUz IE1CL3MKCmNoaW5nbEB0eXBob29uOn4vdGVzdHN3L2lvdGVzdGluZy93MT4g ZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCYiBicz0xMDczNzQxODI0 IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIx NDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCA4OS40ODk0IHNlY29u ZHMsIDI0MCBNQi9zCjIyOCBNQi9zCgp0b3JuYWRvIGhhZCBmcmVlIENQVXMK Y2hpbmdsQHRvcm5hZG86fj4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUy MEdCIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIw KzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3Bp ZWQsIDE0MS4wOTIgc2Vjb25kcywgMTUyIE1CL3MKCgpDb25maWcgNQoxMCBk cml2ZSBSQUlEIDUgMTI4IGtCIHN0cmlwZXMsIGRyaXZlcyA3IHRvIDE2IDEw MDAgR0IgKDkzMSBHQikKCjIzMDQgTEJBIGJsb2NrcyBmb3Igb25lIHNldCBv ZiBzdHJpcGVzCgpta2ZzLnhmcyAtZiAtTCAvZGF0YSAvZGV2L3NkYjEKCnRz dW5hbWk6fiAjIG1rZnMueGZzIC1mIC1MIC9kYXRhIC9kZXYvc2RiMQptZXRh LWRhdGE9L2Rldi9zZGIxICAgICAgICAgICAgICBpc2l6ZT0yNTYgICAgYWdj b3VudD00LCBhZ3NpemU9NjEwMzUwNDcgYmxrcwogICAgICAgICA9ICAgICAg ICAgICAgICAgICAgICAgICBzZWN0c3o9NTEyICAgYXR0cj0yCmRhdGEgICAg ID0gICAgICAgICAgICAgICAgICAgICAgIGJzaXplPTQwOTYgICBibG9ja3M9 MjQ0MTQwMTg3LCBpbWF4cGN0PTI1CiAgICAgICAgID0gICAgICAgICAgICAg ICAgICAgICAgIHN1bml0PTAgICAgICBzd2lkdGg9MCBibGtzCm5hbWluZyAg ID12ZXJzaW9uIDIgICAgICAgICAgICAgIGJzaXplPTQwOTYgICBhc2NpaS1j aT0wCmxvZyAgICAgID1pbnRlcm5hbCBsb2cgICAgICAgICAgIGJzaXplPTQw OTYgICBibG9ja3M9MzI3NjgsIHZlcnNpb249MgogICAgICAgICA9ICAgICAg ICAgICAgICAgICAgICAgICBzZWN0c3o9NTEyICAgc3VuaXQ9MCBibGtzLCBs YXp5LWNvdW50PTAKcmVhbHRpbWUgPW5vbmUgICAgICAgICAgICAgICAgICAg ZXh0c3o9NDA5NiAgIGJsb2Nrcz0wLCBydGV4dGVudHM9MAoKCgpUZXN0IDEK CldyaXRlIDIwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90 MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCIGJzPTEwNzM3NDE4 MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQK MjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDE4OS4yMzkgcywg MTEzIE1CL3MKMTA4IEdCL3MKClRlc3QgMgoKV3JpdGUgMjAgR0IgZmlsZQpj aGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8g b2Y9YmlnZmlsZTIwR0JiIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCBy ZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMg KDIxIEdCKSBjb3BpZWQsIDE3Mi43NDMgcywgMTI0IE1CL3MKMTE4IE1CL3MK CkNvbmZpZyA2CndyaXRpbmcgdG8gLwoKVGVzdCAxCgpjaGluZ2xAdHN1bmFt aTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIw R0JiIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIw KzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3Bp ZWQsIDM4MC43NTUgcywgNTYuNCBNQi9zCjUzIE1CL3MKCkNvbmZpZyA3Cndy aXRpbmcgdG8gL2hvbWUKClRlc3QgMQoKY2hpbmdsQHRzdW5hbWk6fi90ZXN0 c3c+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQmIgYnM9MTA3Mzc0 MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91 dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgNDAwLjg2OSBz LCA1My42IE1CL3MKNTEgTUIvcwoKQ29uZmlnIDgKMTQgZHJpdmUgUkFJRCAw IDEyOCBrQiBzdHJpcGVzCgozNTg0IExCQSBibG9ja3MgZm9yIG9uZSBzZXQg b2Ygc3RyaXBlcwoKbWtmcy54ZnMgLWYgLUwgL2RhdGEgL2Rldi9zZGIxCgpt ZXRhLWRhdGE9L2Rldi9zZGIxICAgICAgICAgICAgICBpc2l6ZT0yNTYgICAg YWdjb3VudD0xMywgYWdzaXplPTI2ODQzNTQ1NSBibGtzCiAgICAgICAgID0g ICAgICAgICAgICAgICAgICAgICAgIHNlY3Rzej01MTIgICBhdHRyPTIKZGF0 YSAgICAgPSAgICAgICAgICAgICAgICAgICAgICAgYnNpemU9NDA5NiAgIGJs b2Nrcz0zNDE3OTY3MTYzLCBpbWF4cGN0PTUKICAgICAgICAgPSAgICAgICAg ICAgICAgICAgICAgICAgc3VuaXQ9MCAgICAgIHN3aWR0aD0wIGJsa3MKbmFt aW5nICAgPXZlcnNpb24gMiAgICAgICAgICAgICAgYnNpemU9NDA5NiAgIGFz Y2lpLWNpPTAKbG9nICAgICAgPWludGVybmFsIGxvZyAgICAgICAgICAgYnNp emU9NDA5NiAgIGJsb2Nrcz0zMjc2OCwgdmVyc2lvbj0yCiAgICAgICAgID0g ICAgICAgICAgICAgICAgICAgICAgIHNlY3Rzej01MTIgICBzdW5pdD0wIGJs a3MsIGxhenktY291bnQ9MApyZWFsdGltZSA9bm9uZSAgICAgICAgICAgICAg ICAgICBleHRzej00MDk2ICAgYmxvY2tzPTAsIHJ0ZXh0ZW50cz0wCgpUZXN0 IDEKCldyaXRlIDIwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVz dC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCIGJzPTEwNzM3 NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBv dXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDYyLjcxNiBz LCAzNDIgTUIvcwozMjYgTUIvcwoKCkNvbmZpZyA5CjE0IGRyaXZlIFJBSUQg MCAxMjgga0Igc3RyaXBlcwoKMzU4NCBMQkEgYmxvY2tzIGZvciBvbmUgc2V0 IG9mIHN0cmlwZXMKCmRyaXZlIGNhY2hlIGVuYWJsZWQKbWtmcy54ZnMgLWYg LWIgc2l6ZT00ayAtZCBhZ2NvdW50PTMyLHN1PTEyOGssc3c9MTQgLWkgc2l6 ZT0yNTYsYWxpZ249MSxhdHRyPTIgLWwgdmVyc2lvbj0yLHN1PTEyOGssbGF6 eS1jb3VudD0xIC1uIHZlcnNpb249MiAtcyBzaXplPTUxMiAtTCAvZGF0YSAv ZGV2L3NkYjEKCgpUZXN0IDEKCldyaXRlIDIwIEdCIGZpbGUKZHJpdmUgY2Fj aGUgZW5hYmxlZApjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBp Zj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0IgYnM9MTA3Mzc0MTgyNCBjb3Vu dD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgz NjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMzguOTMzNSBzLCA1NTIgTUIv cwo1MjYgTUIvcwoKVGVzdCAyCgpXcml0ZSAyMCBHQiBmaWxlCmRyaXZlIGNh Y2hlIGVuYWJsZWQKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQg aWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCYiBicz0xMDczNzQxODI0IGNv dW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0 ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCA0Ny44ODQ0IHMsIDQ0OCBN Qi9zCjQyNyBHQi9zCgpDb25maWcgMTAKCmRyaXZlIGNhY2hlIGVuYWJsZWQK V3JpdGUgdG8gL2hvbWUKY2hpbmdsQHRzdW5hbWk6fi90ZXN0c3c+IGRkIGlm PS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQiBicz0xMDczNzQxODI0IGNvdW50 PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2 NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAzNDMuMzMgcywgNjIuNSBNQi9z CjU5IE1CL3MKCkNvbmZpZyAxMQoxMCBkcml2ZSBSQUlEIDYgMTI4IGtCIHN0 cmlwZXMgZHJpdmVzIDcgdG8gMTYgMTAwMCBHQiAoOTMxIEdCKQoKMjA0OCBM QkEgYmxvY2tzIGZvciBvbmUgc2V0IG9mIHN0cmlwZXMKCm1rZnMueGZzIC1m IC1iIHNpemU9NGsgLWQgYWdjb3VudD0zMixzdT0xMjhrLHN3PTggLWkgc2l6 ZT0yNTYsYWxpZ249MSxhdHRyPTIgLWwgdmVyc2lvbj0yLHN1PTEyOGssbGF6 eS1jb3VudD0xIC1uIHZlcnNpb249MiAtcyBzaXplPTUxMiAtTCAvZGF0YSAv ZGV2L3NkYjEKCgpUZXN0IDEKCjEgaW5zdGFuY2Ugb2YgaW90ZXN0dHlwaG9v biwgMTAwIGZpbGVzIG9mIDMwIE1CCgoyIHMgKDE1MDAgTUIvcykKClRlc3Qg MgoKNCBpbnN0YW5jZXMgb2YgaW90ZXN0dHlwaG9vbiwgMTAwIGZpbGVzIG9m IDMwIE1CCgoxNiwgMTYsIDksIDUgcyAoMTg3LCAxODcsIDMzMywgNjAwIE1C L3MpCgoxMzA3IE1CL3MKClRlc3QgMwoKNCBpbnN0YW5jZXMgb2YgaW90ZXN0 dHlwaG9vbiwgMTAwIGZpbGVzIG9mIDMwIE1CCgo1LCA2LCAxMSwgMTEgcyAo NjAwLCA1MDAsIDI3MiwgMjcyIE1CL3MpCgoxNjQ0IE1CL3MKClRlc3QgNAoK NiBpbnN0YW5jZXMgb2YgaW90ZXN0dHlwaG9vbiwgMTAwIGZpbGVzIG9mIDMw IE1CCgoyMiwgMjMsIDIwLCAxNSwgMTIsIDEwIHMgKDEzNiwgMTMwLCAxNTAs IDIwMCwgMjUwLCAzMDAgTUIvcykKCjExNjYgTUIvcwoKVGVzdCA1Cgo2IGlu c3RhbmNlcyBvZiBpb3Rlc3R0eXBob29uLCAxMDAgZmlsZXMgb2YgMzAgTUIK CjIzLCAyNCwgMjIsIDIwLCA4LCAyIHMgKDEzMCwgMTI1LCAxMzYsIDE1MCwg Mzc1LCAxNTAwIE1CL3MpCgoyNDE2IE1CL3MKClRlc3QgNgoKV3JpdGUgMSBH QiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDE+IGRkIGlmPS9k ZXYvemVybyBvZj1iaWdmaWxlMUdCIGJzPTEwNzM3NDE4MjQgY291bnQ9MQox KzAgcmVjb3JkcyBpbgoxKzAgcmVjb3JkcyBvdXQKMTA3Mzc0MTgyNCBieXRl cyAoMS4xIEdCKSBjb3BpZWQsIDAuNzEwMzg5IHMsIDEuNSBHQi9zCjE0NDEg TUIvcwoKVGVzdCA3CgpXcml0ZSAxIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6 L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUxR0Ji IGJzPTEwNzM3NDE4MjQgY291bnQ9MQoxKzAgcmVjb3JkcyBpbgoxKzAgcmVj b3JkcyBvdXQKMTA3Mzc0MTgyNCBieXRlcyAoMS4xIEdCKSBjb3BpZWQsIDAu NzQyOTM5IHMsIDEuNCBHQi9zCjEzNzggTUIvcwoKVGVzdCA4CgpXcml0ZSAx MCBHQiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDE+IGRkIGlm PS9kZXYvemVybyBvZj1iaWdmaWxlMTBHQiBicz0xMDczNzQxODI0IGNvdW50 PTEwCjEwKzAgcmVjb3JkcyBpbgoxMCswIHJlY29yZHMgb3V0CjEwNzM3NDE4 MjQwIGJ5dGVzICgxMSBHQikgY29waWVkLCAzMS4xNDc0IHMsIDM0NSBNQi9z CjMyOCBNQi9zCgpUZXN0IDkKCldyaXRlIDEwIEdCIGZpbGUKY2hpbmdsQHRz dW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2Zp bGUxMEdCYiBicz0xMDczNzQxODI0IGNvdW50PTEwCjEwKzAgcmVjb3JkcyBp bgoxMCswIHJlY29yZHMgb3V0CjEwNzM3NDE4MjQwIGJ5dGVzICgxMSBHQikg Y29waWVkLCAzMS44OTY4IHMsIDMzNyBNQi9zCgpUZXN0IDEwCgpXcml0ZSAy MCBHQiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDE+IGRkIGlm PS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQiBicz0xMDczNzQxODI0IGNvdW50 PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2 NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAyNzcuMDMyIHMsIDc3LjUgTUIv cwo3MyBNQi9zCgpUZXN0IDExCgpXcml0ZSAyMCBHQiBmaWxlCmNoaW5nbEB0 c3VuYW1pOi9kYXRhL3Rlc3QvdDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdm aWxlMjBHQmIgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMg aW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0Ip IGNvcGllZCwgMjYyLjMwMSBzLCA4MS45IE1CL3MKNzggTUIvcwoKVGVzdCAx MgoKMiBpbnN0YW5jZXMgb2Ygd3JpdGUgMjAgR0IgZmlsZQpjaGluZ2xAdHN1 bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmls ZTIwR0JjIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGlu CjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBj b3BpZWQsIDI2OS41NDUgcywgNzkuNyBNQi9zCjc1IE1CL3MKCmNoaW5nbEB0 c3VuYW1pOi9kYXRhL3Rlc3QvdDI+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdm aWxlMjBHQmQgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMg aW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0Ip IGNvcGllZCwgMjg3LjUxNyBzLCA3NC43IE1CL3MKNzEgTUIvcwoKVG90YWwg MTQ2IE1CL3MKClRlc3QgMTIKCjIgaW5zdGFuY2VzIG9mIHdyaXRlIDIwIEdC IGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rl di96ZXJvIG9mPWJpZ2ZpbGUyMEdCZSBicz0xMDczNzQxODI0IGNvdW50PTIw CjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgw IGJ5dGVzICgyMSBHQikgY29waWVkLCAyNjAuNTc4IHMsIDgyLjQgTUIvcwo3 OCBNQi9zCgpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QyPiBkZCBpZj0v ZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0JmIGJzPTEwNzM3NDE4MjQgY291bnQ9 MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0 ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDI1Ny4xODYgcywgODMuNSBNQi9z Cjc5IE1CL3MKClRvdGFsIDE1NyBNQi9zCgpUZXN0IDEzCgozIGluc3RhbmNl cyBvZiB3cml0ZSAyMCBHQiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rl c3QvdDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQmcgYnM9MTA3 Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRz IG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMjA3Ljky NCBzLCAxMDMgTUIvcwo5OCBNQi9zCgpjaGluZ2xAdHN1bmFtaTovZGF0YS90 ZXN0L3QyPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0JoIGJzPTEw NzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3Jk cyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDIxMS44 MzkgcywgMTAxIE1CL3MKOTYgTUIvcwoKY2hpbmdsQHRzdW5hbWk6L2RhdGEv dGVzdC90Mz4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCaSBicz0x MDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29y ZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxNjgu ODAzIHMsIDEyNyBNQi9zCjEyMSBNQi9zCgpUb3RhbCAzMTUgTUIvcwoKVGVz dCAxNAoKNiBpbnN0YW5jZXMgb2Ygd3JpdGUgMjAgR0IgZmlsZQpjaGluZ2xA dHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9Ymln ZmlsZTIwR0JqIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRz IGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdC KSBjb3BpZWQsIDI5OC45NDYgcywgNzEuOCBNQi9zCjY4IE1CL3MKCmNoaW5n bEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDI+IGRkIGlmPS9kZXYvemVybyBvZj1i aWdmaWxlMjBHQmsgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29y ZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEg R0IpIGNvcGllZCwgMzU0LjE2MiBzLCA2MC42IE1CL3MKNTcgTUIvcwoKY2hp bmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90Mz4gZGQgaWY9L2Rldi96ZXJvIG9m PWJpZ2ZpbGUyMEdCbCBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVj b3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgy MSBHQikgY29waWVkLCAzMDAuNjQ2IHMsIDcxLjQgTUIvcwo2OCBNQi9zCgpj aGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3Q0PiBkZCBpZj0vZGV2L3plcm8g b2Y9YmlnZmlsZTIwR0JtIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCBy ZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMg KDIxIEdCKSBjb3BpZWQsIDM1NS45NTUgcywgNjAuMyBNQi9zCjU3IE1CL3MK CmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDU+IGRkIGlmPS9kZXYvemVy byBvZj1iaWdmaWxlMjBHQm4gYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCsw IHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRl cyAoMjEgR0IpIGNvcGllZCwgMjk5LjQ1OSBzLCA3MS43IE1CL3MKNjggTUIv cwoKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90Nj4gZGQgaWY9L2Rldi96 ZXJvIG9mPWJpZ2ZpbGUyMEdCbyBicz0xMDczNzQxODI0IGNvdW50PTIwCjIw KzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5 dGVzICgyMSBHQikgY29waWVkLCAyMzguNDU5IHMsIDkwLjEgTUIvcwo4NSBN Qi9zCgpUb3RhbCA0MDMgTUIvcwoKQ29uZmlnIDEyCjE0IGRyaXZlIFJBSUQg MCAxMjgga0Igc3RyaXBlcwoKMzU4NCBMQkEgYmxvY2tzIGZvciBvbmUgc2V0 IG9mIHN0cmlwZXMKCm1rZnMueGZzIC1mIC1iIHNpemU9NGsgLWQgYWdjb3Vu dD0zMixzdT0xMjhrLHN3PTE0IC1pIHNpemU9MjU2LGFsaWduPTEsYXR0cj0y IC1sIHZlcnNpb249MixzdT0xMjhrLGxhenktY291bnQ9MSAtbiB2ZXJzaW9u PTIgLXMgc2l6ZT01MTIgLUwgL2RhdGEgL2Rldi9zZGIxCgoKVGVzdCAxCjYg aW5zdGFuY2VzIG9mIHdyaXRlIDIwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6 L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdC IGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAg cmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQs IDE0OS43NTggcywgMTQzIE1CL3MKMTM2IE1CL3MKCmNoaW5nbEB0c3VuYW1p Oi9kYXRhL3Rlc3QvdDI+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBH QiBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCsw IHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVk LCAxNjcuODcgcywgMTI4IE1CL3MKMTIxIE1CL3MKCmluZ2xAdHN1bmFtaTov ZGF0YS90ZXN0L3QzPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0Ig YnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCBy ZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwg ODguMTEzNiBzLCAyNDQgTUIvcwoyMzIgTUIvcwoKY2hpbmdsQHRzdW5hbWk6 L2RhdGEvdGVzdC90ND4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdC IGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAg cmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQs IDE2MS42ODcgcywgMTMzIE1CL3MKMTI2IE1CL3MKCmNoaW5nbEB0c3VuYW1p Oi9kYXRhL3Rlc3QvdDU+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBH QiBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCsw IHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVk LCA4Mi44NzExIHMsIDI1OSBNQi9zCjI0NyBNQi9zCgpjaGluZ2xAdHN1bmFt aTovZGF0YS90ZXN0L3Q2PiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIw R0IgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjAr MCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGll ZCwgOTEuMTQ5MSBzLCAyMzYgTUIvcwoyMjQgTUIvcwoKVG90YWwgMTA4NiBN Qi9zCgoKQ29uZmlnIDEzCjE0IGRyaXZlIFJBSUQgNiAxMjgga0Igc3RyaXBl cwoKMzA3MiBMQkEgYmxvY2tzIGZvciBvbmUgc2V0IG9mIHN0cmlwZXMKCm1r ZnMueGZzIC1mIC1iIHNpemU9NGsgLWQgYWdjb3VudD0zMixzdT0xMjhrLHN3 PTEyIC1pIHNpemU9MjU2LGFsaWduPTEsYXR0cj0yIC1sIHZlcnNpb249Mixz dT0xMjhrLGxhenktY291bnQ9MSAtbiB2ZXJzaW9uPTIgLXMgc2l6ZT01MTIg LUwgL2RhdGEgL2Rldi9zZGIxCgpkZWZhdWx0cyxub2JhcnJpZXIsdXNycXVv dGEsZ3JwcXVvdGEsbm9hdGltZSxub2RpcmF0aW1lLGFsbG9jc2l6ZT0xbSxs b2didWZzPTgsbG9nYnNpemU9MjU2ayxsYXJnZWlvLHN3YWxsb2MKCkNQVSBs b2NrZWQgYXQgaGlnaGVzdCBmcmVxdWVuY3kKClRlc3QgMQo0IGluc3RhbmNl cyBvZiBpb3Rlc3R0eXBob29uLCAxMDAgZmlsZXMgb2YgMzAgTUIKCjQsIDEy LCAxOSwgMjAgcyAoNzUwLCAyNTAsIDE1NywgMTUwIE1CL3MpCgoxMzA3IE1C L3MKClRlc3QgMgoxIGluc3RhbmNlIG9mIGlvdGVzdHR5cGhvb24sIDEwMCBm aWxlcyBvZiAzMCBNQgoKMiBzICgxNTAwIE1CL3MpCgpUZXN0IDMKNCBpbnN0 YW5jZXMgb2YgaW90ZXN0dHlwaG9vbiwgMTAwIGZpbGVzIG9mIDMwIE1CCgo0 LCA4LCAxNiwgMTUgcyAoNzUwLCAzNzUsIDE4NywgMjAwIE1CL3MpCgoxNTEy IE1CL3MKClRlc3QgNAoKNiBpbnN0YW5jZXMgb2YgaW90ZXN0dHlwaG9vbiwg MTAwIGZpbGVzIG9mIDMwIE1CCgo1LCAyMCwgMjYsIDM4LCAzOCwgMzggcyAo NjAwLCAxNTAsIDExNSwgNzgsIDc4LCA3OCBNQi9zKQoKMTA5OSBNQi9zCgpU ZXN0IDUKCjYgaW5zdGFuY2VzIG9mIGlvdGVzdHR5cGhvb24sIDEwMCBmaWxl cyBvZiAzMCBNQgoKNSwgMTgsIDMwLCAzNSwgMzYsIDM3IHMgKDYwMCwgMTY2 LCAxMDAsIDg1LCA4MywgODEgTUIvcykKCjExMTUgTUIvcwoKVGVzdCA2CgpX cml0ZSAxIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4g ZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUxR0IgYnM9MTA3Mzc0MTgyNCBj b3VudD0xCjErMCByZWNvcmRzIGluCjErMCByZWNvcmRzIG91dAoxMDczNzQx ODI0IGJ5dGVzICgxLjEgR0IpIGNvcGllZCwgMC42MjIwNjYgcywgMS43IEdC L3MKMTY0NiBNQi9zCgpUZXN0IDcKCldyaXRlIDEgR0IgZmlsZQpjaGluZ2xA dHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9Ymln ZmlsZTFHQmIgYnM9MTA3Mzc0MTgyNCBjb3VudD0xCjErMCByZWNvcmRzIGlu CjErMCByZWNvcmRzIG91dAoxMDczNzQxODI0IGJ5dGVzICgxLjEgR0IpIGNv cGllZCwgMC42MjIzMjYgcywgMS43IEdCL3MKMTY0NSBNQi9zCgpUZXN0IDgK CldyaXRlIDEwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90 MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUxMEdCIGJzPTEwNzM3NDE4 MjQgY291bnQ9MTAKMTArMCByZWNvcmRzIGluCjEwKzAgcmVjb3JkcyBvdXQK MTA3Mzc0MTgyNDAgYnl0ZXMgKDExIEdCKSBjb3BpZWQsIDkuMjMwOCBzLCAx LjIgR0IvcwoxMTA5IE1CL3MKClRlc3QgOQoKV3JpdGUgMTAgR0IgZmlsZQpj aGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8g b2Y9YmlnZmlsZTEwR0JiIGJzPTEwNzM3NDE4MjQgY291bnQ9MTAKMTArMCBy ZWNvcmRzIGluCjEwKzAgcmVjb3JkcyBvdXQKMTA3Mzc0MTgyNDAgYnl0ZXMg KDExIEdCKSBjb3BpZWQsIDQwLjY4MzYgcywgMjY0IE1CL3MKMjUxIE1CL3MK ClRlc3QgMTAKCldyaXRlIDEwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2Rh dGEvdGVzdC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUxMEdCYyBi cz0xMDczNzQxODI0IGNvdW50PTEwCjEwKzAgcmVjb3JkcyBpbgoxMCswIHJl Y29yZHMgb3V0CjEwNzM3NDE4MjQwIGJ5dGVzICgxMSBHQikgY29waWVkLCA3 LjEzMDM3IHMsIDEuNSBHQi9zCjE0MzYgTUIvcwoKVGVzdCAxMAoKV3JpdGUg MjAgR0IgZmlsZQpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBp Zj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0IgYnM9MTA3Mzc0MTgyNCBjb3Vu dD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgz NjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMTA2Ljg1MSBzLCAyMDEgTUIv cwoxOTEgTUIvcwoKVGVzdCAxMQoKV3JpdGUgMjAgR0IgZmlsZQpjaGluZ2xA dHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9Ymln ZmlsZTIwR0JiIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRz IGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdC KSBjb3BpZWQsIDYzLjcyMDkgcywgMzM3IE1CL3MKMzIxIE1CL3MKClRlc3Qg MTIKCldyaXRlIDIwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVz dC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCYyBicz0xMDcz NzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMg b3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxNDQuNTAy IHMsIDE0OSBNQi9zCjE0MSBNQi9zCgpUZXN0IDEyCgoyIGluc3RhbmNlcyBv ZiB3cml0ZSAyMCBHQiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3Qv dDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQmQgYnM9MTA3Mzc0 MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91 dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMTYwLjc5MyBz LCAxMzQgTUIvcwoxMjcgTUIvcwoKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVz dC90Mj4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCZSBicz0xMDcz NzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMg b3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxMzIuNzE4 IHMsIDE2MiBNQi9zCjE1NCBNQi9zCgpUb3RhbCAyODEgTUIvcwoKVGVzdCAx MwoKMiBpbnN0YW5jZXMgb2Ygd3JpdGUgMjAgR0IgZmlsZQpjaGluZ2xAdHN1 bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmls ZTIwR0JmIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGlu CjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBj b3BpZWQsIDg2LjY4ODYgcywgMjQ4IE1CL3MKMjM2IE1CL3MKCmNoaW5nbEB0 c3VuYW1pOi9kYXRhL3Rlc3QvdDI+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdm aWxlMjBHQmcgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMg aW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0Ip IGNvcGllZCwgMTMyLjMyOCBzLCAxNjIgTUIvcwoxNTQgTUIvcwoKVG90YWwg MzkwIE1CL3MKClRlc3QgMTQKCjMgaW5zdGFuY2VzIG9mIHdyaXRlIDIwIEdC IGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rl di96ZXJvIG9mPWJpZ2ZpbGUyMEdCaCBicz0xMDczNzQxODI0IGNvdW50PTIw CjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgw IGJ5dGVzICgyMSBHQikgY29waWVkLCAxNTUuODM2IHMsIDEzOCBNQi9zCjEz MSBNQi9zCgpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QyPiBkZCBpZj0v ZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0JpIGJzPTEwNzM3NDE4MjQgY291bnQ9 MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0 ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDIyMC40NyBzLCA5Ny40IE1CL3MK OTIgTUIvcwoKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90Mz4gZGQgaWY9 L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCaiBicz0xMDczNzQxODI0IGNvdW50 PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2 NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxOTMuMTMxIHMsIDExMSBNQi9z CjEwNiBNQi9zCgpUb3RhbCAzMjkgTUIvcwoKVGVzdCAxNQoKNiBpbnN0YW5j ZXMgb2Ygd3JpdGUgMjAgR0IgZmlsZQpjaGluZ2xAdHN1bmFtaTovZGF0YS90 ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0IxIGJzPTEw NzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3Jk cyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDE5My43 MSBzLCAxMTEgTUIvcwoxMDUgTUIvcwoKY2hpbmdsQHRzdW5hbWk6L2RhdGEv dGVzdC90Mj4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCMiBicz0x MDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29y ZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxODUu MDE3IHMsIDExNiBNQi9zCjExMCBNQi9zCgpjaGluZ2xAdHN1bmFtaTovZGF0 YS90ZXN0L3QzPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0IzIGJz PTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVj b3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDMy MC4xNzIgcywgNjcuMSBNQi9zCjYzIE1CL3MKCmNoaW5nbEB0c3VuYW1pOi9k YXRhL3Rlc3QvdDQ+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQjQg YnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCBy ZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwg Mjc1LjQxIHMsIDc4LjAgTUIvcwo3NCBNQi9zCgpjaGluZ2xAdHN1bmFtaTov ZGF0YS90ZXN0L3Q1PiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0I1 IGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAg cmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQs IDMxMi4wNTMgcywgNjguOCBNQi9zCjY1IE1CL3MKCmNoaW5nbEB0c3VuYW1p Oi9kYXRhL3Rlc3QvdDY+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBH QjYgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjAr MCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGll ZCwgMjMwLjkxMSBzLCA5My4wIE1CL3MKODggTUIvcwoKVG90YWwgNTA1IE1C L3MKCgpDb25maWcgMTQKMTQgZHJpdmUgUkFJRCA2IDEyOCBrQiBzdHJpcGVz CgozMDcyIExCQSBibG9ja3MgZm9yIG9uZSBzZXQgb2Ygc3RyaXBlcwoKbWtm cy54ZnMgLWYgLWIgc2l6ZT00ayAtZCBhZ2NvdW50PTMyLHN1PTEyOGssc3c9 MTIgLWkgc2l6ZT0yNTYsYWxpZ249MSxhdHRyPTIgLWwgdmVyc2lvbj0yLHN1 PTEyOGssbGF6eS1jb3VudD0xIC1uIHZlcnNpb249MiAtcyBzaXplPTUxMiAt TCAvZGF0YSAvZGV2L3NkYjEKCmRlZmF1bHRzLG5vYmFycmllcix1c3JxdW90 YSxncnBxdW90YSxub2F0aW1lLG5vZGlyYXRpbWUsbG9nYnVmcz04LGxvZ2Jz aXplPTI1NmssbGFyZ2Vpbyxzd2FsbG9jCgpDUFUgbG9ja2VkIGF0IGhpZ2hl c3QgZnJlcXVlbmN5CgpUZXN0IDEKMSBpbnN0YW5jZSBvZiBpb3Rlc3R0eXBo b29uLCAxMDAgZmlsZXMgb2YgMzAgTUIKCjIgcyAoMTUwMCBNQi9zKQoKVGVz dCAyCjQgaW5zdGFuY2VzIG9mIGlvdGVzdHR5cGhvb24sIDEwMCBmaWxlcyBv ZiAzMCBNQgoKNCwgNCwgOSwgOSBzICg3NTAsIDc1MCwgMzMzLCAzMzMgTUIv cykKCjIxNjYgTUIvcwoKVGVzdCAzCjQgaW5zdGFuY2VzIG9mIGlvdGVzdHR5 cGhvb24sIDEwMCBmaWxlcyBvZiAzMCBNQgoKNCwgNSwgNiwgMTMgcyAoNzUw LCA2MDAsIDUwMCwgMjMwIE1CL3MpCgoyMDgwIE1CL3MKClRlc3QgNAoKNiBp bnN0YW5jZXMgb2YgaW90ZXN0dHlwaG9vbiwgMTAwIGZpbGVzIG9mIDMwIE1C Cgo2LCAyMCwgMzAsIDQyLCA0MCwgNTAgcyAoNTAwLCAxNTAsIDEwMCwgNzEs IDc1LCA2MCBNQi9zKQoKOTU2IE1CL3MKClRlc3QgNQoKNiBpbnN0YW5jZXMg b2YgaW90ZXN0dHlwaG9vbiwgMTAwIGZpbGVzIG9mIDMwIE1CCgo1LCAyMCwg MzEsIDM2LCAzOSwgMzYgcyAoNjAwLCAxNTAsIDk2LCA4MywgNzYsIDgzIE1C L3MpCgoxMDg4IE1CL3MKClRlc3QgNgoKV3JpdGUgMSBHQiBmaWxlCmNoaW5n bEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDE+IGRkIGlmPS9kZXYvemVybyBvZj1i aWdmaWxlMUdCIGJzPTEwNzM3NDE4MjQgY291bnQ9MQoxKzAgcmVjb3JkcyBp bgoxKzAgcmVjb3JkcyBvdXQKMTA3Mzc0MTgyNCBieXRlcyAoMS4xIEdCKSBj b3BpZWQsIDAuNjE3MjA5IHMsIDEuNyBHQi9zCjE2NTkgTUIvcwoKVGVzdCA3 CgpXcml0ZSAxIEdCIGZpbGUKaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDE+ IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMUdCYiBicz0xMDczNzQxODI0 IGNvdW50PTEKMSswIHJlY29yZHMgaW4KMSswIHJlY29yZHMgb3V0CjEwNzM3 NDE4MjQgYnl0ZXMgKDEuMSBHQikgY29waWVkLCAwLjYxMjMwOSBzLCAxLjgg R0IvcwoxNjcyIE1CL3MKClRlc3QgOAoKV3JpdGUgMTAgR0IgZmlsZQpjaGlu Z2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9 YmlnZmlsZTEwR0IgYnM9MTA3Mzc0MTgyNCBjb3VudD0xMAoxMCswIHJlY29y ZHMgaW4KMTArMCByZWNvcmRzIG91dAoxMDczNzQxODI0MCBieXRlcyAoMTEg R0IpIGNvcGllZCwgNy4yMzkyOSBzLCAxLjUgR0IvcwoxNDE0IE1CL3MKClRl c3QgOQoKV3JpdGUgMTAgR0IgZmlsZQpjaGluZ2xAdHN1bmFtaTovZGF0YS90 ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTEwR0JiIGJzPTEw NzM3NDE4MjQgY291bnQ9MTAKMTArMCByZWNvcmRzIGluCjEwKzAgcmVjb3Jk cyBvdXQKMTA3Mzc0MTgyNDAgYnl0ZXMgKDExIEdCKSBjb3BpZWQsIDEyLjg4 MDMgcywgODM0IE1CL3MKNzk1IE1CL3MKClRlc3QgMTAKCldyaXRlIDEwIEdC IGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rl di96ZXJvIG9mPWJpZ2ZpbGUxMEdCYyBicz0xMDczNzQxODI0IGNvdW50PTEw CjEwKzAgcmVjb3JkcyBpbgoxMCswIHJlY29yZHMgb3V0CjEwNzM3NDE4MjQw IGJ5dGVzICgxMSBHQikgY29waWVkLCA3My4yODM1IHMsIDE0NyBNQi9zCjEz OSBNQi9zCgpUZXN0IDExCgpXcml0ZSAyMCBHQiBmaWxlCmNoaW5nbEB0c3Vu YW1pOi9kYXRhL3Rlc3QvdDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxl MjBHQiBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoy MCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29w aWVkLCAyMTYuOTQ2IHMsIDk5LjAgTUIvcwo5NCBNQi9zCgpUZXN0IDEyCgpX cml0ZSAyMCBHQiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDE+ IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQmIgYnM9MTA3Mzc0MTgy NCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoy MTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMTYxLjcwMSBzLCAx MzMgTUIvcwoxMjYgTUIvcwoKVGVzdCAxMwoKMiBpbnN0YW5jZXMgb2Ygd3Jp dGUgMjAgR0IgZmlsZQpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBk ZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0JjIGJzPTEwNzM3NDE4MjQg Y291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0 NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDEyNS42MTMgcywgMTcx IE1CL3MKMTYzIE1CL3MKCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDI+ IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQmQgYnM9MTA3Mzc0MTgy NCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoy MTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMTE3Ljc3MyBzLCAx ODIgTUIvcwoxNzMgTUIvcwoKMzM2IE1CL3MKClRlc3QgMTQKCjIgaW5zdGFu Y2VzIG9mIHdyaXRlIDIwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEv dGVzdC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCZSBicz0x MDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29y ZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxMzAu NjUzIHMsIDE2NCBNQi9zCjE1NiBNQi9zCgpjaGluZ2xAdHN1bmFtaTovZGF0 YS90ZXN0L3QyPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0JmIGJz PTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVj b3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDE0 NS40MyBzLCAxNDggTUIvcwoxNDAgTUIvcwoKMjk2IE1CL3MKClRlc3QgMTUK CjMgaW5zdGFuY2VzIG9mIHdyaXRlIDIwIEdCIGZpbGUKY2hpbmdsQHRzdW5h bWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUy MEdCZyBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoy MCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29w aWVkLCAxOTIuOTUgcywgMTExIE1CL3MKMTA2IE1CL3MKCmNoaW5nbEB0c3Vu YW1pOi9kYXRhL3Rlc3QvdDI+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxl MjBHQmggYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4K MjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNv cGllZCwgMTgxLjM3MiBzLCAxMTggTUIvcwoxMTIgTUIvcwoKY2hpbmdsQHRz dW5hbWk6L2RhdGEvdGVzdC90Mz4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2Zp bGUyMEdCaSBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBp bgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikg Y29waWVkLCAxODguMzg5IHMsIDExNCBNQi9zCjEwOCBNQi9zCgpUb3RhbCAz MjYgTUIvcwoKVGVzdCAxNgoKNiBpbnN0YW5jZXMgb2Ygd3JpdGUgMjAgR0Ig ZmlsZQpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2 L3plcm8gb2Y9YmlnZmlsZTIwR0IxIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAK MjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAg Ynl0ZXMgKDIxIEdCKSBjb3BpZWQsIDI3MC45OTkgcywgNzkuMiBNQi9zCjc1 IE1CL3MKCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDI+IGRkIGlmPS9k ZXYvemVybyBvZj1iaWdmaWxlMjBHQjIgYnM9MTA3Mzc0MTgyNCBjb3VudD0y MAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4 MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMjA5LjU5MyBzLCAxMDIgTUIvcwo5 NyBNQi9zCgpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QzPiBkZCBpZj0v ZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0IzIGJzPTEwNzM3NDE4MjQgY291bnQ9 MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0 ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDI2OC4wMDEgcywgODAuMSBNQi9z Cjc2IE1CL3MKCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDQ+IGRkIGlm PS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQjQgYnM9MTA3Mzc0MTgyNCBjb3Vu dD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgz NjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMjMzLjU2OCBzLCA5MS45IE1C L3MKODcgTUIvcwoKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90NT4gZGQg aWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCNSBicz0xMDczNzQxODI0IGNv dW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0 ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAzMDcuODUgcywgNjkuOCBN Qi9zCjY2IE1CL3MKCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDY+IGRk IGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQjYgYnM9MTA3Mzc0MTgyNCBj b3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3 NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMjgzLjgzNiBzLCA3NS43 IE1CL3MKNzIgTUIvcwoKVG90YWwgNDczIE1CL3MKCkNvbmZpZyAxNQoxNCBk cml2ZSBSQUlEIDYgMTI4IGtCIHN0cmlwZXMKCjMwNzIgTEJBIGJsb2NrcyBm b3Igb25lIHNldCBvZiBzdHJpcGVzCgpta2ZzLnhmcyAtZiAtYiBzaXplPTRr IC1kIGFnY291bnQ9MzIsc3U9MTI4ayxzdz0xMiAtaSBzaXplPTI1NixhbGln bj0xLGF0dHI9MiAtbCB2ZXJzaW9uPTIsc3U9MTI4ayxsYXp5LWNvdW50PTEg LW4gdmVyc2lvbj0yIC1zIHNpemU9NTEyIC1MIC9kYXRhIC9kZXYvc2RiMQoK ZGVmYXVsdHMsbm9iYXJyaWVyLHVzcnF1b3RhLGdycHF1b3RhLG5vYXRpbWUs bm9kaXJhdGltZSxhbGxvY3NpemU9MWcsbG9nYnVmcz04LGxvZ2JzaXplPTI1 NmssbGFyZ2Vpbyxzd2FsbG9jCgpDUFUgbG9ja2VkIGF0IGhpZ2hlc3QgZnJl cXVlbmN5CgpUZXN0IDEKMSBpbnN0YW5jZSBvZiBpb3Rlc3R0eXBob29uLCAx MDAgZmlsZXMgb2YgMzAgTUIKCjIgcyAoMTUwMCBNQi9zKQoKVGVzdCAyCjQg aW5zdGFuY2VzIG9mIGlvdGVzdHR5cGhvb24sIDEwMCBmaWxlcyBvZiAzMCBN QgoKNCwgOCwgMTIsIDExIHMgKDc1MCwgMzc1LCAyNTAsIDI3MiBNQi9zKQoK VG90YWwgMTY0NyBNQi9zCgpUZXN0IDMKNCBpbnN0YW5jZXMgb2YgaW90ZXN0 dHlwaG9vbiwgMTAwIGZpbGVzIG9mIDMwIE1CCgo0LCA1LCA5LCA5IHMgKDc1 MCwgNjAwLCAzMzMsIDMzMyBNQi9zKQoKVG90YWwgMjAxNiBNQi9zCgpUZXN0 IDQKCjYgaW5zdGFuY2VzIG9mIGlvdGVzdHR5cGhvb24sIDEwMCBmaWxlcyBv ZiAzMCBNQgoKNSwgMTcsIDIzLCAzMiwgMzksIDM4IHMgKDYwMCwgMTc2LCAx MzAsIDkzLCA3NiwgNzggTUIvcykKCjExNTMgTUIvcwoKVGVzdCA1Cgo2IGlu c3RhbmNlcyBvZiBpb3Rlc3R0eXBob29uLCAxMDAgZmlsZXMgb2YgMzAgTUIK CjQsIDE3LCAzNSwgMzEsIDQwLCAzNyBzICg3NTAsIDE3NiwgODUsIDk2LCA3 NSwgODEgTUIvcykKCjEyNjMgTUIvcwoKVGVzdCA2CgpXcml0ZSAxIEdCIGZp bGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rldi96 ZXJvIG9mPWJpZ2ZpbGUxR0IgYnM9MTA3Mzc0MTgyNCBjb3VudD0xCjErMCBy ZWNvcmRzIGluCjErMCByZWNvcmRzIG91dAoxMDczNzQxODI0IGJ5dGVzICgx LjEgR0IpIGNvcGllZCwgMC42MDc0MTMgcywgMS44IEdCL3MKMTY4NSBNQi9z CgpUZXN0IDcKCldyaXRlIDEgR0IgZmlsZQpjaGluZ2xAdHN1bmFtaTovZGF0 YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTFHQmIgYnM9 MTA3Mzc0MTgyNCBjb3VudD0xCjErMCByZWNvcmRzIGluCjErMCByZWNvcmRz IG91dAoxMDczNzQxODI0IGJ5dGVzICgxLjEgR0IpIGNvcGllZCwgMC42MTg3 OTcgcywgMS43IEdCL3MKMTY1NCBNQi9zCgpUZXN0IDgKCldyaXRlIDEwIEdC IGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rl di96ZXJvIG9mPWJpZ2ZpbGUxMEdCIGJzPTEwNzM3NDE4MjQgY291bnQ9MTAK MTArMCByZWNvcmRzIGluCjEwKzAgcmVjb3JkcyBvdXQKMTA3Mzc0MTgyNDAg Ynl0ZXMgKDExIEdCKSBjb3BpZWQsIDE2LjE4NDEgcywgNjYzIE1CL3MKNjMy IE1CL3MKClRlc3QgOQoKV3JpdGUgMTAgR0IgZmlsZQpjaGluZ2xAdHN1bmFt aTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTEw R0JiIGJzPTEwNzM3NDE4MjQgY291bnQ9MTAKMTArMCByZWNvcmRzIGluCjEw KzAgcmVjb3JkcyBvdXQKMTA3Mzc0MTgyNDAgYnl0ZXMgKDExIEdCKSBjb3Bp ZWQsIDkuMDU3NTEgcywgMS4yIEdCL3MKMTEzMCBNQi9zCgpUZXN0IDEwCgpX cml0ZSAxMCBHQiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDE+ IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMTBHQmMgYnM9MTA3Mzc0MTgy NCBjb3VudD0xMAoxMCswIHJlY29yZHMgaW4KMTArMCByZWNvcmRzIG91dAox MDczNzQxODI0MCBieXRlcyAoMTEgR0IpIGNvcGllZCwgMTMuNTU5MSBzLCA3 OTIgTUIvcwo3NTUgTUIvcwoKVGVzdCAxMQoKV3JpdGUgMjAgR0IgZmlsZQpj aGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8g b2Y9YmlnZmlsZTIwR0IgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJl Y29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAo MjEgR0IpIGNvcGllZCwgOTUuNDk1MiBzLCAyMjUgTUIvcwoyMTQgTUIvcwoK VGVzdCAxMgoKV3JpdGUgMjAgR0IgZmlsZQpjaGluZ2xAdHN1bmFtaTovZGF0 YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0JiIGJz PTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVj b3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDky LjMxMjcgcywgMjMzIE1CL3MKMjIxIE1CL3MKClRlc3QgMTMKCldyaXRlIDIw IEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9 L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCYyBicz0xMDczNzQxODI0IGNvdW50 PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2 NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxNjYuMjkgcywgMTI5IE1CL3MK MTIzIE1CL3MKClRlc3QgMTQKCjIgaW5zdGFuY2VzIG9mIHdyaXRlIDIwIEdC IGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90MT4gZGQgaWY9L2Rl di96ZXJvIG9mPWJpZ2ZpbGUyMEdCZCBicz0xMDczNzQxODI0IGNvdW50PTIw CjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgw IGJ5dGVzICgyMSBHQikgY29waWVkLCAxMDYuMjc4IHMsIDIwMiBNQi9zCjE5 MiBNQi9zCgpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QyPiBkZCBpZj0v ZGV2L3plcm8gb2Y9YmlnZmlsZTIwR0JlIGJzPTEwNzM3NDE4MjQgY291bnQ9 MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0 ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDE0Ni41NDcgcywgMTQ3IE1CL3MK MTM5IE1CL3MKClRvdGFsIDMzMSBNQi9zCgpUZXN0IDE1CgoyIGluc3RhbmNl cyBvZiB3cml0ZSAyMCBHQiBmaWxlCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rl c3QvdDE+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQmYgYnM9MTA3 Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRz IG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgOTguOTU0 MiBzLCAyMTcgTUIvcwoyMDYgTUIvcwoKY2hpbmdsQHRzdW5hbWk6L2RhdGEv dGVzdC90Mj4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCZyBicz0x MDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29y ZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxMjIu ODAyIHMsIDE3NSBNQi9zCjE2NiBNQi9zCgpUb3RhbCAzNzIgTUIvcwoKVGVz dCAxNgoKMyBpbnN0YW5jZXMgb2Ygd3JpdGUgMjAgR0IgZmlsZQpjaGluZ2xA dHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2L3plcm8gb2Y9Ymln ZmlsZTIwR0JoIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRz IGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdC KSBjb3BpZWQsIDE0Mi44NzkgcywgMTUwIE1CL3MKMTQzIE1CL3MKCmNoaW5n bEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDI+IGRkIGlmPS9kZXYvemVybyBvZj1i aWdmaWxlMjBHQmkgYnM9MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29y ZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEg R0IpIGNvcGllZCwgMjAyLjI2OCBzLCAxMDYgTUIvcwoxMDEgTUIvcwoKY2hp bmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90Mz4gZGQgaWY9L2Rldi96ZXJvIG9m PWJpZ2ZpbGUyMEdCaiBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVj b3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgy MSBHQikgY29waWVkLCAxMzAuNTk4IHMsIDE2NCBNQi9zCjE1NiBNQi9zCgo0 MDAgTUIvcwoKVGVzdCAxNwoKNiBpbnN0YW5jZXMgb2Ygd3JpdGUgMjAgR0Ig ZmlsZQpjaGluZ2xAdHN1bmFtaTovZGF0YS90ZXN0L3QxPiBkZCBpZj0vZGV2 L3plcm8gb2Y9YmlnZmlsZTIwR0IxIGJzPTEwNzM3NDE4MjQgY291bnQ9MjAK MjArMCByZWNvcmRzIGluCjIwKzAgcmVjb3JkcyBvdXQKMjE0NzQ4MzY0ODAg Ynl0ZXMgKDIxIEdCKSBjb3BpZWQsIDE1NS4xNDQgcywgMTM4IE1CL3MKMTMy IE1CL3MKCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDI+IGRkIGlmPS9k ZXYvemVybyBvZj1iaWdmaWxlMjBHQjIgYnM9MTA3Mzc0MTgyNCBjb3VudD0y MAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgzNjQ4 MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMjY1Ljk3MyBzLCA4MC43IE1CL3MK NzcgTUIvcwoKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90Mz4gZGQgaWY9 L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCMyBicz0xMDczNzQxODI0IGNvdW50 PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2 NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAxNTYuNzIgcywgMTM3IE1CL3MK MTMwIE1CL3MKCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDQ+IGRkIGlm PS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQjQgYnM9MTA3Mzc0MTgyNCBjb3Vu dD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgz NjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMzA5LjkyMSBzLCA2OS4zIE1C L3MKNjYgTUIvcwoKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90NT4gZGQg aWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCNSBicz0xMDczNzQxODI0IGNv dW50PTIwCjIwKzAgcmVjb3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0 ODM2NDgwIGJ5dGVzICgyMSBHQikgY29waWVkLCAyNjguODIgcywgNzkuOSBN Qi9zCjc2IE1CL3MKCmNoaW5nbEB0c3VuYW1pOi9kYXRhL3Rlc3QvdDY+IGRk IGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQjYgYnM9MTA3Mzc0MTgyNCBj b3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3 NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMTYzLjY0IHMsIDEzMSBN Qi9zCjEyNSBNQi9zCgpUb3RhbCA2MDYgTUIvcwoKCkNvbmZpZyAxNgoxNCBk cml2ZSBSQUlEIDYgMTI4IGtCIHN0cmlwZXMKCjMwNzIgTEJBIGJsb2NrcyBm b3Igb25lIHNldCBvZiBzdHJpcGVzCgpta2ZzLnhmcyAtZiAtYiBzaXplPTRr IC1kIGFnY291bnQ9MzIsc3U9MTI4ayxzdz0xMiAtaSBzaXplPTI1NixhbGln bj0xLGF0dHI9MiAtbCB2ZXJzaW9uPTIsc3U9MTI4ayxsYXp5LWNvdW50PTEg LW4gdmVyc2lvbj0yIC1zIHNpemU9NTEyIC1MIC9kYXRhIC9kZXYvc2RiMQoK ZGVmYXVsdHMsbm9iYXJyaWVyLHVzcnF1b3RhLGdycHF1b3RhLG5vYXRpbWUs bm9kaXJhdGltZSxhbGxvY3NpemU9MWcsbG9nYnVmcz04LGxvZ2JzaXplPTI1 NmssbGFyZ2Vpbyxzd2FsbG9jLGlub2RlNjQKCkNQVSBsb2NrZWQgYXQgaGln aGVzdCBmcmVxdWVuY3kKClRlc3QgMQoKV3JpdGUgMjAgR0IgZmlsZQpjaGlu Z2xAdHN1bmFtaTovZGF0YS90ZXN0L3Q2PiBkZCBpZj0vZGV2L3plcm8gb2Y9 YmlnZmlsZTIwR0J4eCBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVj b3JkcyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgy MSBHQikgY29waWVkLCA3Ny45NjI2IHMsIDI3NSBNQi9zCjI2MiBNQi9zCgpU ZXN0IDIKCldyaXRlIDIwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEv dGVzdC90Nj4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCeHkgYnM9 MTA3Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNv cmRzIG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMTEw LjY5IHMsIDE5NCBNQi9zCjE4NSBNQi9zCgpUZXN0IDMKCmRpc2sgcXVvdGEg c2V0CldyaXRlIDIwIEdCIGZpbGUKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVz dC90Mj4gZGQgaWY9L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCMnkgYnM9MTA3 Mzc0MTgyNCBjb3VudD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRz IG91dAoyMTQ3NDgzNjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgNzIuNDE5 NyBzLCAyOTcgTUIvcwoKVGVzdCA0CgpkaXNrIHF1b3RhIHNldApjaGluZ2xA dHN1bmFtaTovZGF0YS90ZXN0L3QyPiBkZCBpZj0vZGV2L3plcm8gb2Y9Ymln ZmlsZTIwR0IyeSBicz0xMDczNzQxODI0IGNvdW50PTIwCjIwKzAgcmVjb3Jk cyBpbgoyMCswIHJlY29yZHMgb3V0CjIxNDc0ODM2NDgwIGJ5dGVzICgyMSBH QikgY29waWVkLCAxMTYuNDAxIHMsIDE4NCBNQi9zCgpUZXN0IDUKCm5vIGRp c2sgcXVvdGEKY2hpbmdsQHRzdW5hbWk6L2RhdGEvdGVzdC90Mj4gZGQgaWY9 L2Rldi96ZXJvIG9mPWJpZ2ZpbGUyMEdCMnkgYnM9MTA3Mzc0MTgyNCBjb3Vu dD0yMAoyMCswIHJlY29yZHMgaW4KMjArMCByZWNvcmRzIG91dAoyMTQ3NDgz NjQ4MCBieXRlcyAoMjEgR0IpIGNvcGllZCwgMTYzLjAyNyBzLCAxMzIgTUIv cwoKVGVzdCA2CgpubyBkaXNrIHF1b3RhCmNoaW5nbEB0c3VuYW1pOi9kYXRh L3Rlc3QvdDI+IGRkIGlmPS9kZXYvemVybyBvZj1iaWdmaWxlMjBHQjJ5IGJz PTEwNzM3NDE4MjQgY291bnQ9MjAKMjArMCByZWNvcmRzIGluCjIwKzAgcmVj b3JkcyBvdXQKMjE0NzQ4MzY0ODAgYnl0ZXMgKDIxIEdCKSBjb3BpZWQsIDgz LjgyNTEgcywgMjU2IE1CL3MKCg== --0-1572955208-1263489915=:60659-- From sandeen@sandeen.net Thu Jan 14 11:41:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EHfS5m020830 for ; Thu, 14 Jan 2010 11:41:28 -0600 X-ASG-Debug-ID: 1263490944-6d4402260000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A3DDF166587 for ; Thu, 14 Jan 2010 09:42:24 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id aTGFwY2YFgwDQZOU for ; Thu, 14 Jan 2010 09:42:24 -0800 (PST) Received: from int-mx05.intmail.prod.int.phx2.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.18]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0EHgCDS032548 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 14 Jan 2010 12:42:12 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx05.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0EHgB28018121; Thu, 14 Jan 2010 12:42:11 -0500 Message-ID: <4B4F5773.8050409@sandeen.net> Date: Thu, 14 Jan 2010 11:42:11 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Gim Leong Chin CC: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: allocsize mount option Subject: Re: allocsize mount option References: <264613.60659.qm@web76207.mail.sg1.yahoo.com> In-Reply-To: <264613.60659.qm@web76207.mail.sg1.yahoo.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.18 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1263490945 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0010 1.0000 -2.0144 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19798 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Gim Leong Chin wrote: > Hi Dave, > > >> fragmented, it just means that that there are 19% more fragments >> than the ideal. In 4TB of data with 1GB sized files, that would >> mean there are 4800 extents (average length ~800MB, which is >> excellent) instead of the perfect 4000 extents (@1GB each). Hence >> you can see how misleading this "19% fragmentation" number can be >> on an extent based filesystem... > > There are many files that are 128 GB. > > When I did the tests with dd on this computer, the 20 GB files had up > to > 50 extents. which is at least 400mb per extent, which is really not so bad. -Eric From aelder@sgi.com Thu Jan 14 12:41:19 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EIfIPt025655 for ; Thu, 14 Jan 2010 12:41:18 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4820B8F80FF; Thu, 14 Jan 2010 10:42:12 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH 0/10] Perag lookup rework Date: Thu, 14 Jan 2010 12:42:12 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A696E@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1263210469-22171-1-git-send-email-david@fromorbit.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 0/10] Perag lookup rework Thread-Index: AcqStfG+FJYDE6GcTRuPmpiaaqPUUQCkv0cg From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > This is the previous set of patches all put together in the one series > for the current xfs-dev tree. >=20 > Patch 10 is a new patch - it embeds the busy extent list into the = perag > structure rather than leaving as a separate allocation. All 10 patches look good. I am adding the following descriptions to these patches which lacked them: http://patchwork.xfs.org/patch/429/ [03/10] XFS: Convert filestreams code to use per-ag get/put routines Description: Use xfs_perag_get() and xfs_perag_put() in the filestreams code. http://patchwork.xfs.org/patch/417/ [09/10] xfs: handle ENOMEM correctly during initialisation of perag = structures Description: Add proper error handling in case an error occurs while initializing new perag structures for a mount point. The mount structure is restored to its previous state by deleting and freeing any perag structures added during the call. Reviewed-by: Alex Elder From aelder@sgi.com Thu Jan 14 12:53:53 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EIrrTk026618 for ; Thu, 14 Jan 2010 12:53:53 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id 031883040BC; Thu, 14 Jan 2010 10:54:47 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfs: fix missing error check in xfs_rtfree_range Date: Thu, 14 Jan 2010 12:54:47 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A696F@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1263458686-21308-1-git-send-email-david@fromorbit.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfs: fix missing error check in xfs_rtfree_range Thread-Index: AcqU+Mj1QP60o+lRRUmQDVcDarPX0AAUjCOA From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > When xfs_rtfind_forw() returns an error, the block is returned > uninitialised. xfs_rtfree_range() is not checking the error return, > so could be using an uninitialised block number for modifying bitmap > summary info. >=20 > The problem was found by gcc when compiling the *userspace* libxfs > code - it is an copy of the kernel code with the exact same bug. > gcc gives an uninitialised variable warning on the userspace code > but not on the kernel code. You gotta love the consistency (Mmmm, > slightly chewy today!). Looks good. I'll send this for 2.6.33-rc4. > Signed-off-by: Dave Chinner Reviewed-by: Alex Elder > fs/xfs/xfs_rtalloc.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) >=20 > diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c > index 9e15a11..6be05f7 100644 > --- a/fs/xfs/xfs_rtalloc.c > +++ b/fs/xfs/xfs_rtalloc.c > @@ -1517,6 +1517,8 @@ xfs_rtfree_range( > */ > error =3D xfs_rtfind_forw(mp, tp, end, mp->m_sb.sb_rextents - 1, > &postblock); > + if (error) > + return error; > /* > * If there are blocks not being freed at the front of the > * old extent, add summary data for them to be allocated. From aelder@sgi.com Thu Jan 14 12:58:41 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EIwebV026940 for ; Thu, 14 Jan 2010 12:58:40 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id D4D37AC005; Thu, 14 Jan 2010 10:59:34 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH 1/3] xfs: kill XFS_QMOPT_ASYNC Date: Thu, 14 Jan 2010 12:59:34 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6970@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100113220602.632551077@bombadil.infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 1/3] xfs: kill XFS_QMOPT_ASYNC Thread-Index: AcqUoNRX9abwr9LWThCIYXFgqdCQ9wAqtItg From: "Alex Elder" To: "Christoph Hellwig" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > The option is unused and one of the few remaining users of = xfs_bawrite, > so let's get rid of it. Looks good. > Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder > Index: linux-2.6/fs/xfs/quota/xfs_dquot.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- linux-2.6.orig/fs/xfs/quota/xfs_dquot.c 2010-01-08 = 15:10:07.694006652 +0100 > +++ linux-2.6/fs/xfs/quota/xfs_dquot.c 2010-01-08 15:10:26.227006460 = +0100 > @@ -1253,8 +1253,6 @@ xfs_qm_dqflush( >=20 > if (flags & XFS_QMOPT_DELWRI) { > xfs_bdwrite(mp, bp); > - } else if (flags & XFS_QMOPT_ASYNC) { > - error =3D xfs_bawrite(mp, bp); > } else { > error =3D xfs_bwrite(mp, bp); > } > Index: linux-2.6/fs/xfs/xfs_quota.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- linux-2.6.orig/fs/xfs/xfs_quota.h 2010-01-08 15:10:07.729006360 = +0100 > +++ linux-2.6/fs/xfs/xfs_quota.h 2010-01-08 15:10:12.062005658 +0100 > @@ -226,7 +226,6 @@ typedef struct xfs_qoff_logformat { > * flags for dqflush and dqflush_all. > */ > #define XFS_QMOPT_SYNC 0x1000000 > -#define XFS_QMOPT_ASYNC 0x2000000 > #define XFS_QMOPT_DELWRI 0x4000000 >=20 > /* >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Thu Jan 14 13:24:19 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EJOJY0028702 for ; Thu, 14 Jan 2010 13:24:19 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id C45363040BA; Thu, 14 Jan 2010 11:25:13 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH 2/3] xfs: clean up log buffer writes Date: Thu, 14 Jan 2010 13:25:13 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6971@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100113221812.467038685@bombadil.infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 2/3] xfs: clean up log buffer writes Thread-Index: AcqUpPTXSTmzgdvWSdqG5rw7NVbdtwAqjTMw From: "Alex Elder" To: "Christoph Hellwig" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Don't bother using XFS_bwrite as it doesn't provide much code for our > use case. Instead opencode it and fold xlog_bdstrat_cb into the new > xlog_bdstrat helper. Cool. Simpler. > Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder > Index: xfs/fs/xfs/linux-2.6/xfs_buf.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2010-01-02 13:39:48.476003952 = +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2010-01-02 13:43:39.250005833 +0100 > @@ -408,8 +408,6 @@ static inline int XFS_bwrite(xfs_buf_t * > return error; > } >=20 > -#define XFS_bdstrat(bp) xfs_buf_iorequest(bp) > - > #define xfs_iowait(bp) xfs_buf_iowait(bp) >=20 > #define xfs_baread(target, rablkno, ralen) \ > Index: xfs/fs/xfs/xfs_log.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/xfs_log.c 2010-01-02 13:39:48.493261945 +0100 > +++ xfs/fs/xfs/xfs_log.c 2010-01-02 13:45:36.221004745 +0100 > @@ -50,7 +50,6 @@ kmem_zone_t *xfs_log_ticket_zone; > (off) +=3D (bytes);} >=20 > /* Local miscellaneous function prototypes */ > -STATIC int xlog_bdstrat_cb(struct xfs_buf *); > STATIC int xlog_commit_record(xfs_mount_t *mp, xlog_ticket_t = *ticket, > xlog_in_core_t **, xfs_lsn_t *); > STATIC xlog_t * xlog_alloc_log(xfs_mount_t *mp, > @@ -988,35 +987,6 @@ xlog_iodone(xfs_buf_t *bp) > } /* xlog_iodone */ >=20 > /* > - * The bdstrat callback function for log bufs. This gives us a = central > - * place to trap bufs in case we get hit by a log I/O error and need = to > - * shutdown. Actually, in practice, even when we didn't get a log = error, > - * we transition the iclogs to IOERROR state *after* flushing all = existing > - * iclogs to disk. This is because we don't want anymore new = transactions to be > - * started or completed afterwards. > - */ > -STATIC int > -xlog_bdstrat_cb(struct xfs_buf *bp) > -{ > - xlog_in_core_t *iclog; > - > - iclog =3D XFS_BUF_FSPRIVATE(bp, xlog_in_core_t *); > - > - if ((iclog->ic_state & XLOG_STATE_IOERROR) =3D=3D 0) { > - /* note for irix bstrat will need struct bdevsw passed > - * Fix the following macro if the code ever is merged > - */ > - XFS_bdstrat(bp); > - return 0; > - } > - > - XFS_BUF_ERROR(bp, EIO); > - XFS_BUF_STALE(bp); > - xfs_biodone(bp); > - return XFS_ERROR(EIO); > -} > - > -/* > * Return size of each in-core log record buffer. > * > * All machines get 8 x 32kB buffers by default, unless tuned = otherwise. > @@ -1158,7 +1128,6 @@ xlog_alloc_log(xfs_mount_t *mp, > if (!bp) > goto out_free_log; > XFS_BUF_SET_IODONE_FUNC(bp, xlog_iodone); > - XFS_BUF_SET_BDSTRAT_FUNC(bp, xlog_bdstrat_cb); > XFS_BUF_SET_FSPRIVATE2(bp, (unsigned long)1); > ASSERT(XFS_BUF_ISBUSY(bp)); > ASSERT(XFS_BUF_VALUSEMA(bp) <=3D 0); > @@ -1196,7 +1165,6 @@ xlog_alloc_log(xfs_mount_t *mp, > if (!XFS_BUF_CPSEMA(bp)) > ASSERT(0); > XFS_BUF_SET_IODONE_FUNC(bp, xlog_iodone); > - XFS_BUF_SET_BDSTRAT_FUNC(bp, xlog_bdstrat_cb); > XFS_BUF_SET_FSPRIVATE2(bp, (unsigned long)1); > iclog->ic_bp =3D bp; > iclog->ic_data =3D bp->b_addr; > @@ -1343,6 +1311,37 @@ xlog_grant_push_ail(xfs_mount_t *mp, > xfs_trans_ail_push(log->l_ailp, threshold_lsn); > } /* xlog_grant_push_ail */ >=20 > +/* > + * The bdstrat callback function for log bufs. This gives us a = central > + * place to trap bufs in case we get hit by a log I/O error and need = to > + * shutdown. Actually, in practice, even when we didn't get a log = error, > + * we transition the iclogs to IOERROR state *after* flushing all = existing > + * iclogs to disk. This is because we don't want anymore new = transactions to be > + * started or completed afterwards. > + */ > +STATIC int > +xlog_bdstrat( > + struct xfs_buf *bp) > +{ > + struct xlog_in_core *iclog; > + > + iclog =3D XFS_BUF_FSPRIVATE(bp, xlog_in_core_t *); > + if (iclog->ic_state & XLOG_STATE_IOERROR) { > + XFS_BUF_ERROR(bp, EIO); > + XFS_BUF_STALE(bp); > + xfs_biodone(bp); > + /* > + * It would seem logical to return EIO here, but we rely on > + * the log state machine to propagate I/O errors instead of > + * doing it here. > + */ > + return 0; > + } > + > + bp->b_flags |=3D _XBF_RUN_QUEUES; > + xfs_buf_iorequest(bp); > + return 0; > +} >=20 > /* > * Flush out the in-core log (iclog) to the on-disk log in an = asynchronous > @@ -1462,7 +1461,7 @@ xlog_sync(xlog_t *log, > */ > XFS_BUF_WRITE(bp); >=20 > - if ((error =3D XFS_bwrite(bp))) { > + if ((error =3D xlog_bdstrat(bp))) { > xfs_ioerror_alert("xlog_sync", log->l_mp, bp, > XFS_BUF_ADDR(bp)); > return error; > @@ -1502,7 +1501,7 @@ xlog_sync(xlog_t *log, > /* account for internal log which doesn't start at block #0 */ > XFS_BUF_SET_ADDR(bp, XFS_BUF_ADDR(bp) + log->l_logBBstart); > XFS_BUF_WRITE(bp); > - if ((error =3D XFS_bwrite(bp))) { > + if ((error =3D xlog_bdstrat(bp))) { > xfs_ioerror_alert("xlog_sync (split)", log->l_mp, > bp, XFS_BUF_ADDR(bp)); > return error; >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Thu Jan 14 13:28:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EJSn5k029000 for ; Thu, 14 Jan 2010 13:28:49 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 138D68F80F8; Thu, 14 Jan 2010 11:29:44 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH 3/3] xfs: clean up xfs_bwrite Date: Thu, 14 Jan 2010 13:29:43 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6972@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100113221812.879733544@bombadil.infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH 3/3] xfs: clean up xfs_bwrite Thread-Index: AcqUpPfxWUQ34XBBQ3iStlM8Q0lmbwAque7A From: "Alex Elder" To: "Christoph Hellwig" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Fold XFS_bwrite into it's only caller, xfs_bwrite and move it into > xfs_buf.c instead of leaving it as a fairly large inline function. Looks good. > Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder > Index: xfs/fs/xfs/linux-2.6/xfs_buf.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2010-01-13 14:56:29.241004610 = +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2010-01-13 14:58:43.278256022 +0100 > @@ -980,6 +980,33 @@ xfs_buf_ioerror( > } >=20 > int > +xfs_bwrite( > + struct xfs_mount *mp, > + struct xfs_buf *bp) > +{ > + int iowait =3D (bp->b_flags & XBF_ASYNC) =3D=3D 0; > + int error =3D 0; > + > + bp->b_strat =3D xfs_bdstrat_cb; > + bp->b_mount =3D mp; > + bp->b_flags |=3D XBF_WRITE; > + if (!iowait) > + bp->b_flags |=3D _XBF_RUN_QUEUES; > + > + xfs_buf_delwri_dequeue(bp); > + xfs_buf_iostrategy(bp); > + > + if (iowait) { > + error =3D xfs_buf_iowait(bp); > + if (error) > + xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); > + xfs_buf_relse(bp); > + } > + > + return error; > +} > + > +int > xfs_bawrite( > void *mp, > struct xfs_buf *bp) > Index: xfs/fs/xfs/linux-2.6/xfs_buf.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2010-01-13 14:56:29.253027581 = +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2010-01-13 14:59:45.854006783 +0100 > @@ -232,6 +232,7 @@ extern void xfs_buf_lock(xfs_buf_t *); > extern void xfs_buf_unlock(xfs_buf_t *); >=20 > /* Buffer Read and Write Routines */ > +extern int xfs_bwrite(struct xfs_mount *mp, struct xfs_buf *bp); > extern int xfs_bawrite(void *mp, xfs_buf_t *bp); > extern void xfs_bdwrite(void *mp, xfs_buf_t *bp); > extern void xfs_buf_ioend(xfs_buf_t *, int); > @@ -390,24 +391,6 @@ static inline void xfs_buf_relse(xfs_buf > #define xfs_biozero(bp, off, len) \ > xfs_buf_iomove((bp), (off), (len), NULL, XBRW_ZERO) >=20 > - > -static inline int XFS_bwrite(xfs_buf_t *bp) > -{ > - int iowait =3D (bp->b_flags & XBF_ASYNC) =3D=3D 0; > - int error =3D 0; > - > - if (!iowait) > - bp->b_flags |=3D _XBF_RUN_QUEUES; > - > - xfs_buf_delwri_dequeue(bp); > - xfs_buf_iostrategy(bp); > - if (iowait) { > - error =3D xfs_buf_iowait(bp); > - xfs_buf_relse(bp); > - } > - return error; > -} > - > #define xfs_iowait(bp) xfs_buf_iowait(bp) >=20 > #define xfs_baread(target, rablkno, ralen) \ > Index: xfs/fs/xfs/xfs_rw.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/xfs_rw.c 2010-01-13 14:56:29.229003918 +0100 > +++ xfs/fs/xfs/xfs_rw.c 2010-01-13 14:56:43.546029660 +0100 > @@ -306,37 +306,6 @@ xfs_read_buf( > } >=20 > /* > - * Wrapper around bwrite() so that we can trap > - * write errors, and act accordingly. > - */ > -int > -xfs_bwrite( > - struct xfs_mount *mp, > - struct xfs_buf *bp) > -{ > - int error; > - > - /* > - * XXXsup how does this work for quotas. > - */ > - XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb); > - bp->b_mount =3D mp; > - XFS_BUF_WRITE(bp); > - > - if ((error =3D XFS_bwrite(bp))) { > - ASSERT(mp); > - /* > - * Cannot put a buftrace here since if the buffer is not > - * B_HOLD then we will brelse() the buffer before returning > - * from bwrite and we could be tracing a buffer that has > - * been reused. > - */ > - xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); > - } > - return (error); > -} > - > -/* > * helper function to extract extent size hint from inode > */ > xfs_extlen_t > Index: xfs/fs/xfs/xfs_rw.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/xfs_rw.h 2010-01-13 14:58:48.628253849 +0100 > +++ xfs/fs/xfs/xfs_rw.h 2010-01-13 14:59:00.915005960 +0100 > @@ -40,7 +40,6 @@ xfs_fsb_to_db(struct xfs_inode *ip, xfs_ > * Prototypes for functions in xfs_rw.c. > */ > extern int xfs_write_clear_setuid(struct xfs_inode *ip); > -extern int xfs_bwrite(struct xfs_mount *mp, struct xfs_buf *bp); > extern int xfs_bioerror(struct xfs_buf *bp); > extern int xfs_bioerror_relse(struct xfs_buf *bp); > extern int xfs_read_buf(struct xfs_mount *mp, xfs_buftarg_t *btp, >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sandeen@sandeen.net Thu Jan 14 14:17:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_210,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EKHUhw032484 for ; Thu, 14 Jan 2010 14:17:30 -0600 X-ASG-Debug-ID: 1263500305-756e000e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 55AFDF0B626 for ; Thu, 14 Jan 2010 12:18:26 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id tnE5k9bnGME7V8gn for ; Thu, 14 Jan 2010 12:18:26 -0800 (PST) Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0EKIP91003145 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 14 Jan 2010 15:18:25 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0EKIOAK022214 for ; Thu, 14 Jan 2010 15:18:24 -0500 Message-ID: <4B4F7C0F.9010004@sandeen.net> Date: Thu, 14 Jan 2010 14:18:23 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH] mkfs: fix mkfs when blkid fails Subject: [PATCH] mkfs: fix mkfs when blkid fails Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1263500307 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19806 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When trying to mkfs something that blkid doesn't grok: # mkfs.xfs fsfile warning: unable to probe device toplology for device fsfile illegal sector size 0 Usage: mkfs.xfs ... mkfs fails. :( Brown-paper-bag: Eric Sandeen Signed-off-by: Eric Sandeen --- diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 9a8eff3..faaafed 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -1574,7 +1574,7 @@ main( * Unless specified manually on the command line use the * advertised sector size of the device. */ - sectorsize = ft.sectorsize; + sectorsize = ft.sectorsize ? ft.sectorsize : XFS_MIN_SECTORSIZE; } if (ft.sectoralign || !ssflag) { From sandeen@sandeen.net Thu Jan 14 14:44:35 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EKiYjk034576 for ; Thu, 14 Jan 2010 14:44:34 -0600 X-ASG-Debug-ID: 1263501930-6fde02310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3FC15F0B315 for ; Thu, 14 Jan 2010 12:45:30 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id PQBfhMsi4KQT2yF4 for ; Thu, 14 Jan 2010 12:45:30 -0800 (PST) Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0EKjUWe031625 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 14 Jan 2010 15:45:30 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0EKjTBS026300 for ; Thu, 14 Jan 2010 15:45:29 -0500 Message-ID: <4B4F8269.50305@sandeen.net> Date: Thu, 14 Jan 2010 14:45:29 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH] xfstests: fix up mkfs.gfs2 args for test 032 Subject: [PATCH] xfstests: fix up mkfs.gfs2 args for test 032 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1263501931 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19808 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks like gfs2 (recently?) needs more arguments for the mkfs overwrite test. Signed-off-by: Eric Sandeen --- diff --git a/032 b/032 index f81196c..5db89ad 100755 --- a/032 +++ b/032 @@ -58,7 +58,7 @@ do # these folks prompt before writing [ $fs = jfs ] && preop="echo Y |" [ $fs = gfs ] && preop="echo y |" && preargs="-p lock_nolock -j 1" - [ $fs = gfs2 ] && preop="echo y |" + [ $fs = gfs2 ] && preop="echo y |" && preargs="-p lock_nolock -j 1" [ $fs = reiserfs ] && preop="echo y |" && preargs="-f" # cramfs mkfs requires a directory argument [ $fs = cramfs ] && preargs=/proc/fs/xfs From aelder@sgi.com Thu Jan 14 15:05:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_210,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EL5NJt036012 for ; Thu, 14 Jan 2010 15:05:23 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4B72BAC005; Thu, 14 Jan 2010 13:06:16 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] mkfs: fix mkfs when blkid fails Date: Thu, 14 Jan 2010 15:06:15 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6974@cf--amer001e--3.americas.sgi.com> In-Reply-To: <4B4F7C0F.9010004@sandeen.net> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] mkfs: fix mkfs when blkid fails Thread-Index: AcqVWXi1zAtUBe6ERced8B5sSOnxMQAA2HUQ From: "Alex Elder" To: "Eric Sandeen" Cc: "xfs mailing list" X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > When trying to mkfs something that blkid doesn't grok: >=20 > # mkfs.xfs fsfile > warning: unable to probe device toplology for device fsfile > illegal sector size 0 > Usage: mkfs.xfs > ... >=20 > mkfs fails. :( The fix looks good. > Brown-paper-bag: Eric Sandeen > Signed-off-by: Eric Sandeen > --- Reviewed-by: Alex Elder > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index 9a8eff3..faaafed 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -1574,7 +1574,7 @@ main( > * Unless specified manually on the command line use the > * advertised sector size of the device. > */ > - sectorsize =3D ft.sectorsize; > + sectorsize =3D ft.sectorsize ? ft.sectorsize : XFS_MIN_SECTORSIZE; > } >=20 > if (ft.sectoralign || !ssflag) { >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sandeen@sandeen.net Thu Jan 14 15:52:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ELqwlB039251 for ; Thu, 14 Jan 2010 15:52:58 -0600 X-ASG-Debug-ID: 1263506034-486802ec0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9BC20167116 for ; Thu, 14 Jan 2010 13:53:55 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id RCRo2nYDeiJ6Y8B6 for ; Thu, 14 Jan 2010 13:53:55 -0800 (PST) Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0ELrs92021737 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 14 Jan 2010 16:53:54 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0ELrrbh012369 for ; Thu, 14 Jan 2010 16:53:53 -0500 Message-ID: <4B4F9270.4070006@sandeen.net> Date: Thu, 14 Jan 2010 15:53:52 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH] mkfs: fix mkfs.xfs -dfile,name=$NAME for new files Subject: [PATCH] mkfs: fix mkfs.xfs -dfile,name=$NAME for new files Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1263506035 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19813 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean # /sbin/mkfs.xfs -dfile,name=grrr,size=100g mkfs.xfs: Use the -f option to force overwrite. check_overwrite is failing, because blkid_new_probe_from_filename() is failing, because the (new) image file is 0 length. We already return 0 (carry on!) for other internal failures, and nobody tests for a -1 return. So let's just let this one pass too. Signed-off-by: Eric Sandeen --- (note, i'm open to comments if we want to differentiate 1/0/-1 in a cleaner fashion...) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 9a8eff3..53568bc 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -296,7 +296,7 @@ check_overwrite( pr = blkid_new_probe_from_filename(device); if (!pr) - return -1; + return 0; if (blkid_probe_enable_partitions(pr, 1)) goto out_free_probe; From infomations@service.com Thu Jan 14 16:34:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.2 required=5.0 tests=BAYES_50,DOS_FAKE_SQUIRREL, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EMYvbI042524 for ; Thu, 14 Jan 2010 16:34:57 -0600 X-ASG-Debug-ID: 1263508553-509103ce0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.pinecity.k12.mn.us (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2F3E3F0C301 for ; Thu, 14 Jan 2010 14:35:53 -0800 (PST) Received: from mail.pinecity.k12.mn.us (mail.pinecity.k12.mn.us [64.8.162.67]) by cuda.sgi.com with ESMTP id yAcCnth0rBb724GB for ; Thu, 14 Jan 2010 14:35:53 -0800 (PST) Received: from www.pinecity.k12.mn.us (ewxserve.pinecity.school [10.1.0.15]) by mail.pinecity.k12.mn.us (Postfix) with ESMTP id 3C5431DE7050; Thu, 14 Jan 2010 16:37:43 -0600 (CST) Received: from 41.194.55.119 (SquirrelMail authenticated user khorbacz) by www.pinecity.k12.mn.us with HTTP; Thu, 14 Jan 2010 16:36:01 -0600 (CST) Message-ID: Date: Thu, 14 Jan 2010 16:36:01 -0600 (CST) X-ASG-Orig-Subj: Subject: From: "Web-mail Administrator" To: access@grade.com Reply-To: helpdestserviceaccount@w.cn User-Agent: SquirrelMail/1.4.17 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Barracuda-Connect: mail.pinecity.k12.mn.us[64.8.162.67] X-Barracuda-Start-Time: 1263508554 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4648 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.29 X-Barracuda-Spam-Status: No, SCORE=1.29 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MISSING_SUBJECT, MISSING_SUBJECT_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19816 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 MISSING_SUBJECT Missing Subject: header 1.28 MISSING_SUBJECT_2 Missing Subject: header X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dear Email user, This message is from Administration center Maintenance Policy verified that your mailbox exceeds its limit, you will be unable to receive new email, To re-set your SPACE on our database prior to maintain your IN-BOX, you must fill out the required information below. Name: Username/Id: Password: Retype Password: Email Address: Thank you for your cooperation. Web-mail Administrator From SRS0+1RRB+43+fromorbit.com=david@internode.on.net Thu Jan 14 16:36:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EMaXeA042616 for ; Thu, 14 Jan 2010 16:36:33 -0600 X-ASG-Debug-ID: 1263508648-026200eb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6E8F61676D7 for ; Thu, 14 Jan 2010 14:37:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id QzDxmwUnPASuKFxn for ; Thu, 14 Jan 2010 14:37:29 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11548768-1927428 for multiple; Fri, 15 Jan 2010 09:07:27 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVYJh-0000CX-Dn; Fri, 15 Jan 2010 09:37:25 +1100 Date: Fri, 15 Jan 2010 09:37:25 +1100 From: Dave Chinner To: Alex Elder Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/10] Perag lookup rework Subject: Re: [PATCH 0/10] Perag lookup rework Message-ID: <20100114223725.GY17483@discord.disaster> References: <1263210469-22171-1-git-send-email-david@fromorbit.com> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A696E@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A696E@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263508650 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19815 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 12:42:12PM -0600, Alex Elder wrote: > Dave Chinner wrote: > > This is the previous set of patches all put together in the one series > > for the current xfs-dev tree. > > > > Patch 10 is a new patch - it embeds the busy extent list into the perag > > structure rather than leaving as a separate allocation. > > All 10 patches look good. I am adding the following descriptions > to these patches which lacked them: > > http://patchwork.xfs.org/patch/429/ > [03/10] XFS: Convert filestreams code to use per-ag get/put routines > > Description: > Use xfs_perag_get() and xfs_perag_put() in the filestreams code. I'd consier that redundant and therefore unnecssary. I don't put a descriptio in if the subject line describes the patch sufficiently. It seems to be a pretty common practise, actually. > http://patchwork.xfs.org/patch/417/ > [09/10] xfs: handle ENOMEM correctly during initialisation of perag structures > > Description: > Add proper error handling in case an error occurs while initializing > new perag structures for a mount point. The mount structure is > restored to its previous state by deleting and freeing any perag > structures added during the call. That describes what the code does, which I'd also consider redundant... ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+cXdZ+43+fromorbit.com=david@internode.on.net Thu Jan 14 16:44:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EMiXYb043122 for ; Thu, 14 Jan 2010 16:44:33 -0600 X-ASG-Debug-ID: 1263509110-746901900000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 90901F0C6FD for ; Thu, 14 Jan 2010 14:45:10 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id OMKbdOKZ9ifzdOoE for ; Thu, 14 Jan 2010 14:45:10 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11515260-1927428 for multiple; Fri, 15 Jan 2010 09:15:09 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVYR9-0000D6-KZ; Fri, 15 Jan 2010 09:45:07 +1100 Date: Fri, 15 Jan 2010 09:45:07 +1100 From: Dave Chinner To: Alex Elder Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH V2] XFS: Don't wake xfsbufd when idle Subject: [PATCH V2] XFS: Don't wake xfsbufd when idle Message-ID: <20100114224507.GZ17483@discord.disaster> References: <1263210599-25067-4-git-send-email-david@fromorbit.com> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A696D@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A696D@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263509112 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19816 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 10:51:25AM -0600, Alex Elder wrote: > Dave Chinner wrote: > > The xfsbufd wakes every xfsbufd_centisecs (once per second by > > default) for each filesystem even when the filesystem is idle. > > If the xfsbufd has nothing to do, put it into a long term sleep > > and only wake it up when there is work pending (i.e. dirty > > buffers to flush soon). This will make laptop power misers happy. > > Patch generally looks good but I have a question, below. > > do { > > + long age = xfs_buf_age_centisecs * msecs_to_jiffies(10); > > + long tout = age; > > Why do you switch from using xfs_buf_timer_centisecs to > using xfs_buf_age_centisecs for the timeout (in the non-empty > delwrite queue case)? Because it's a bug? It should be xfs_buf_timer_centisecs here. Good catch, Alex. :) Updated patch below Cheers, Dave. -- Dave Chinner david@fromorbit.com XFS: Don't wake xfsbufd when idle V2 The xfsbufd wakes every xfsbufd_centisecs (once per second by default) for each filesystem even when the filesystem is idle. If the xfsbufd has nothing to do, put it into a long term sleep and only wake it up when there is work pending (i.e. dirty buffers to flush soon). This will make laptop power misers happy. --- V2: fix xfsbufd timer interval fs/xfs/linux-2.6/xfs_buf.c | 20 +++++++++++++++----- 1 files changed, 15 insertions(+), 5 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 77b8be8..18ae3ba 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -1595,6 +1595,11 @@ xfs_buf_delwri_queue( list_del(&bp->b_list); } + if (list_empty(dwq)) { + /* start xfsbufd as it is about to have something to do */ + wake_up_process(bp->b_target->bt_task); + } + bp->b_flags |= _XBF_DELWRI_Q; list_add_tail(&bp->b_list, dwq); bp->b_queuetime = jiffies; @@ -1644,6 +1649,8 @@ xfsbufd_wakeup( list_for_each_entry(btp, &xfs_buftarg_list, bt_list) { if (test_bit(XBT_FORCE_SLEEP, &btp->bt_flags)) continue; + if (list_empty(&btp->bt_delwrite_queue)) + continue; set_bit(XBT_FORCE_FLUSH, &btp->bt_flags); wake_up_process(btp->bt_task); } @@ -1708,6 +1715,9 @@ xfsbufd( set_freezable(); do { + long age = xfs_buf_age_centisecs * msecs_to_jiffies(10); + long tout = xfs_buf_timer_centisecs * msecs_to_jiffies(10); + if (unlikely(freezing(current))) { set_bit(XBT_FORCE_SLEEP, &target->bt_flags); refrigerator(); @@ -1715,12 +1725,12 @@ xfsbufd( clear_bit(XBT_FORCE_SLEEP, &target->bt_flags); } - schedule_timeout_interruptible( - xfs_buf_timer_centisecs * msecs_to_jiffies(10)); - - xfs_buf_delwri_split(target, &tmp, - xfs_buf_age_centisecs * msecs_to_jiffies(10)); + /* sleep for a long time if there is nothing to do. */ + if (list_empty(&target->bt_delwrite_queue)) + tout = MAX_SCHEDULE_TIMEOUT; + schedule_timeout_interruptible(tout); + xfs_buf_delwri_split(target, &tmp, age); count = 0; while (!list_empty(&tmp)) { bp = list_entry(tmp.next, xfs_buf_t, b_list); From aelder@sgi.com Thu Jan 14 17:07:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0EN7dw4045529 for ; Thu, 14 Jan 2010 17:07:39 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 07E038F80F4; Thu, 14 Jan 2010 15:08:33 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH V2] XFS: Don't wake xfsbufd when idle Date: Thu, 14 Jan 2010 17:08:33 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6976@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100114224507.GZ17483@discord.disaster> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH V2] XFS: Don't wake xfsbufd when idle Thread-Index: AcqVaz7Ajw/MRJvzRES7NtkDyDR2pAAAzYkA From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > On Thu, Jan 14, 2010 at 10:51:25AM -0600, Alex Elder wrote: >> Dave Chinner wrote: >>> The xfsbufd wakes every xfsbufd_centisecs (once per second by >>> default) for each filesystem even when the filesystem is idle. >>> If the xfsbufd has nothing to do, put it into a long term sleep >>> and only wake it up when there is work pending (i.e. dirty >>> buffers to flush soon). This will make laptop power misers happy. >>=20 >> Patch generally looks good but I have a question, below. >=20 >>> do { >>> + long age =3D xfs_buf_age_centisecs * msecs_to_jiffies(10); >>> + long tout =3D age; >>=20 >> Why do you switch from using xfs_buf_timer_centisecs to >> using xfs_buf_age_centisecs for the timeout (in the non-empty >> delwrite queue case)? >=20 > Because it's a bug? It should be xfs_buf_timer_centisecs > here. Good catch, Alex. :) >=20 > Updated patch below >=20 > Cheers, >=20 > Dave. Looks good. Reviewed-by: Alex Elder From SRS0+cXdZ+43+fromorbit.com=david@internode.on.net Thu Jan 14 17:27:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_23,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0ENRHlQ046892 for ; Thu, 14 Jan 2010 17:27:17 -0600 X-ASG-Debug-ID: 1263511692-01a403820000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AC4211678C8 for ; Thu, 14 Jan 2010 15:28:12 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id DmunZgLMyIkeFfYD for ; Thu, 14 Jan 2010 15:28:12 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11515488-1927428 for multiple; Fri, 15 Jan 2010 09:58:11 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVZ6n-0000KB-M0; Fri, 15 Jan 2010 10:28:09 +1100 Date: Fri, 15 Jan 2010 10:28:09 +1100 From: Dave Chinner To: Gim Leong Chin Cc: Eric Sandeen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: allocsize mount option Subject: Re: allocsize mount option Message-ID: <20100114232809.GA17483@discord.disaster> References: <264613.60659.qm@web76207.mail.sg1.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <264613.60659.qm@web76207.mail.sg1.yahoo.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263511694 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19819 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 15, 2010 at 01:25:15AM +0800, Gim Leong Chin wrote: > Hi Dave, > > > > fragmented, it just means that that there are 19% more > > fragments > > than the ideal. In 4TB of data with 1GB sized files, that > > would mean > > there are 4800 extents (average length ~800MB, which is > > excellent) > > instead of the perfect 4000 extents (@1GB each). Hence you > > can see > > how misleading this "19% fragmentation" number can be on an > > extent > > based filesystem... > > There are many files that are 128 GB. > > When I did the tests with dd on this computer, the 20 GB files had > up to > 50 extents. That's still an average of 400MB extents, which is more than large enough to guarantee optimal disk bandwidth when reading or writing them on your setup.... > > This all looks good - it certainly seems that you have done > > your > > research. ;) The only thing I'd do differently is that if > > you have > > only one partition on the drives, I wouldn't even put a > > partition on it. > > > > I just learnt from you that I can have a filesystem without a > partition table!  That takes care of having to calculate the start > of the partition!  Are there any other benefits?  But are there > any down sides to not having a partition table? That's the main benefit, though there are others like no limit on the partition size (e.g. msdos partitions are a max of 2TB) but you avoided most of those problems by using GPT labels. There aren't any real downsides that I am aware of, except maybe that future flexibilty of the volume is reduced. e.g. if you grow the volume, then you can still only have one filesystem on it.... > > This seems rather low for a buffered write on hardware that > > can > > clearly go faster. SLED11 is based on 2.6.27, right? I > > suspect that > > many of the buffered writeback issues that have been fixed > > since > > 2.6.30 are present in the SLED11 kernel, and if that is the > > case I > > can see why the allocsize mount option makes such a big > > difference. > > Is it possible for the fixes in the 2.6.30 kernel to be backported to the 2.6.27 kernel in SLE 11? > If so, I would like to open a service request to Novell to do that to fix the performance issues in SLE 11. Youἀd have to get all the fixes from 2.6.30 to 2.6.32, and the backport would be very difficult to get right. Better would be Ř·ust to upgrade the kernel to 2.6.32 ;) > > I'd suggest that you might need to look at increasing the > > maximum IO > > size for the block device > > (/sys/block/sdb/queue/max_sectors_kb), > > maybe the request queue depth as well to get larger IOs to > > be pushed > > to the raid controller. if you can, at least get it to the > > stripe > > width of 1536k.... > > Could you give a good reference for performance tuning of these > parameters?  I am at a total loss here. Welcome to the black art of storage subsystem tuning ;) I'm not sure there is a good reference for tuning the block device parameters - most of what I know was handed down by word of mouth from gurus on high mountains. The overriding principle, though, is to try to ensure that the stripe width sized IOs can be issued right through the IO stack to the hardware, and that those IOs are correctly aligned to the stripes. You've got the filesystem configuration and layout part correct, now it's just tuning the block layer to pass the IO's through. I'd be looking in the Documentation/block directory of the kernel source and googling for other documentation.... > > As seen from the results file, I have tried different > configurations of RAID 0, 5 and 6, with different number of > drives.  I am pretty confused by the results I see, although only > the 20 GB file writes were done with allocsize=1g. I also did not > lock the CPU frequency governor at the top clock except for the > RAID 6 tests. FWIW, your tests are not timing how longit takes for all the data to hit the disk, only how long it takes to get into cache. You really need to do for single threads: $ time (dd if=/dev/zero of= bs=XXX count=YYY; sync) and something like this for multiple (N) threads: time ( for i in `seq 0 1 N`; do dd if=/dev/zero of=.$i bs=XXX count=YYY & done wait sync ) And that will give you a much more accurate measure across all file sizes of the throughput rate. You'll need to manually calculate the rate from the output of the time command and the amount of data that the test runs. Or, alternatively, you could just use direct IO which avoids such cache affects by bypassing it.... > I decided on the allocsize=1g after checking that the multiple > instance 30 MB writes have only one extent for each file, without > holes or unused space. > > It appears that RAID 6 writes are faster than RAID 5!  And RAID 6 > can even match RAID 0!  The system seems to thrive on throughput, > when doing multiple instances of writes, for getting high > aggregate bandwidth. Given my above comments, that may not be true. [....] > We previously did tests of the Caviar Black 1 TB writing 100 MB > chuncks to the device without a file system, with the drive > connected to the SATA ports on a Tyan Opteron motherboard with > nVidia nForce 4 Professional chipset.  With the drive cache > disabled, the sequential write speed was 30+ MB/s if I remember > correctly, versus sub 100 MB/s with cache enabled.  That is a big > fall-off in speed, and that was writing at the outer diameter of > the platter; speed would be halved at the inner diameter.  It > seems the controller firmware is meant to work with cache enabled > for proper functioning. That sounds wrong - it sounds like NCQ is not functioning properly as with NCQ enabled, disabling the drive cache should not impact throughput at all.... FWIW, for SAS and SCSI drives, I recommend turning the drive caches off as the impact of filesystem issued barrier writes on performance is worse than disabling the drive caches.... > The desktop Caviar Black also does not have rotatry vibration > compensation, unlike the Caviar RE nearline drives.  WD has a > document showing the performance difference having rotary > vibration compensation makes.  I am not trying to save pennies > here, but the local distributor refuses to bring in the Caviar > REs, and I am stuck in one man's land. I'd suggest trying to find another distributor that will bring them in for you. Putting that many drives in a single chassis is almost certainly going to cause vibration problems, especially if you get all the disk heads moving in close synchronisation (which is what happens when you get all your IO sizing and alignment right). Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+wAbv+44+fromorbit.com=david@internode.on.net Thu Jan 14 18:29:05 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F0SxE7050441 for ; Thu, 14 Jan 2010 18:29:00 -0600 X-ASG-Debug-ID: 1263515383-2ef600e10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B0A081C511FC for ; Thu, 14 Jan 2010 16:29:44 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id 0apfBXg7jtJWIGUJ for ; Thu, 14 Jan 2010 16:29:44 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11694468-1927428 for multiple; Fri, 15 Jan 2010 10:59:40 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVa4I-0000O8-RS; Fri, 15 Jan 2010 11:29:38 +1100 Date: Fri, 15 Jan 2010 11:29:38 +1100 From: Dave Chinner To: paul.chavent@fnac.net Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: usage of xfsctrl for embedded development / uuid question Subject: Re: usage of xfsctrl for embedded development / uuid question Message-ID: <20100115002938.GC17483@discord.disaster> References: <17182907.184441263481368019.JavaMail.www@wsfrf1112> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <17182907.184441263481368019.JavaMail.www@wsfrf1112> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263515390 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.52 X-Barracuda-Spam-Status: No, SCORE=-0.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=WEIRD_PORT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19823 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.50 WEIRD_PORT URI: Uses non-standard port number for HTTP X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean [Please wrap you emails at 72 columns] On Thu, Jan 14, 2010 at 04:02:48PM +0100, paul.chavent@fnac.net wrote: > Hi > > I would like to use the xfsctl for trying directio and realtime > feature on my gnu-linux embeded system (i have a "homemade" sdk). > > It seems that the xfsctl function is defined inline, and that all i need is in > inlude/xfs/xfs.h > inlude/xfs/xfs_fs.h > inlude/xfs/platform_deps.h > inlude/xfs/linux.h > > So, for installing the dev files, it should be enought to do > tar -xvf xfsprogs-3.1.0.tar.gz > cd xfsprogs-3.1.0.tar.gz > ./configure --build=${HOST} --host=${TARGET} > $MAKE -C include install-dev PKG_INC_DIR=${TOOLCHAIN_SYSROOT}/usr/include/xfs install-dev is dependent on a full build of xfsprogs. Why not just include the xfsprogs-dev package (or equivalent) from your base distro? > So here are my remarks : > > (1) uuid configuration problems : >     The package_uuiddev.m4 search for the function uuid_compare. > This unction is present in the uuid included in e2fsprogs, but not > in the OSSP uuid (http://www.ossp.org/pkg/lib/uuid/). So the > configuration is ok but the compilation fails. I doubt anyone has tried to build xfsprogs against that uuid package before. Looks like it would need autoconf support to detect, then a bunch of code changes to support the different function prototype that the uuid_compare in the OSSP library has. I'm not sure what best way to do this would be. >     The package_uuiddev.m4 search for uuid headers in multiple > path but only one is included (in linux.h for example). Sure - that's because we support multiple platforms and some level of abstraction is required to do that cleanly. >     I think there is a bug with th definition of libuuid in > package_uuiddev.m4 (not sure) > > (2) uuid requirement > >     As uuid seems to be not required for my application, i suggest > a patch that allow to ignore the absence of this dependance. It doesn't work like that - just about every xfs utility that is build uses uuids in some form or another. IOWs, support needs to be present for the correct working of the utilities. Hence we cannot build xfsprogs without uuid support.... > (3) regeneration of configure > >     The regeneration of configure fails whith this message > >     # rm configure >     # make configure >     [...] >     autoconf >     configure.in:101: error: possibly undefined macro: AC_HAVE_BLKID_TOPO >       If this token and others are legitimate, please use m4_pattern_allow. >       See the Autoconf documentation. 'make distclean' is the correct way to remove the configuration and rebuild it. That should make the problem go away. Cheers, Dave. -- Dave Chinner david@fromorbit.com From stevecs@chaven.com Thu Jan 14 18:51:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.0 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F0pLt4051698 for ; Thu, 14 Jan 2010 18:51:22 -0600 X-ASG-Debug-ID: 1263516732-72ca006c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from omr6.networksolutionsemail.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3623FF0DC55 for ; Thu, 14 Jan 2010 16:52:12 -0800 (PST) Received: from omr6.networksolutionsemail.com (omr6.networksolutionsemail.com [205.178.146.56]) by cuda.sgi.com with ESMTP id 1YUYkv2xJypFNHpj for ; Thu, 14 Jan 2010 16:52:12 -0800 (PST) Received: from cm-omr5 (mail.networksolutionsemail.com [205.178.146.50]) by omr6.networksolutionsemail.com (8.13.6/8.13.6) with ESMTP id o0F0qBuS031785 for ; Thu, 14 Jan 2010 19:52:11 -0500 Authentication-Results: cm-omr5 smtp.user=stevecs; auth=pass (CRAM-MD5) Received: from [75.26.225.171] ([75.26.225.171:1886] helo=[127.0.0.1]) by cm-omr5 (envelope-from ) (ecelerity 2.2.2.41 r(31179/31189)) with ESMTPA id 62/AF-10339-B3CBF4B4; Thu, 14 Jan 2010 19:52:11 -0500 Message-ID: <4B4FBC3F.6050904@chaven.com> Date: Thu, 14 Jan 2010 18:52:15 -0600 From: Steve Costaras User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.5) Gecko/20091204 Lightning/1.0b2pre Thunderbird/3.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS data corruption with high I/O even on Areca hardware raid Subject: Re: XFS data corruption with high I/O even on Areca hardware raid References: <4B4E6F3F.1090901@chaven.com> <20100114022409.GW17483@discord.disaster> In-Reply-To: <20100114022409.GW17483@discord.disaster> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: omr6.networksolutionsemail.com[205.178.146.56] X-Barracuda-Start-Time: 1263516738 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.02 X-Barracuda-Spam-Status: No, SCORE=-1.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_RULE_7582B X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19823 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M 0.50 BSF_RULE_7582B Custom Rule 7582B X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 01/13/2010 20:24, Dave Chinner wrote: > On Wed, Jan 13, 2010 at 07:11:27PM -0600, Steve Costaras wrote: > >> Ok, I've been seeing a problem here since had to move over to XFS from >> JFS due to file system size issues. I am seeing XFS Data corruption >> under ?heavy io? Basically, what happens is that under heavy load >> (i.e. if I'm doing say a xfs_fsr (which nearly always triggers the >> freeze issue) on a volume the system hovers around 90% utilization for >> the dm device for a while (sometimes an hour+, sometimes minutes) the >> subsystem goes into 100% utilization and then freezes solid forcing me >> to do a hard reboot of the box. >> > xfs_fsr can cause a *large* amount of IO to be done, so it is no > surprise that it can trigger high load bugs in hardware and > software. XFS can trigger high load problems on hardware more > readily than other filesystems because using direct IO (like xfs_fsr > does) it can push far, far higher throughput to the starge subsystem > than any other linux filesystem can. > > The fact that the IO subsystem is freezing at 100% elevator queue > utilisation points to an IO never completing. This immediately makes > me point a finger at either the RAID hardware or the driver - a bug > in XFS is highly unlikely to cause this symptom as those stats are > generated at layers lower than XFS. > > Next time you get a freeze, the output of: > > # echo w> /proc/sysrq-trigger > > will tell use what the system is waiting on (i.e. why it is stuck) > > ... > didn't want this to happen so soon, but another freeze just occured. I have the output you mentioned above below. Don't know if this helps pinpoint anything as to where the problem is more accurately. I don't like the abort device commands to arcmsr, still have not heard anything from Areca support for them to look at it. ------------- [ 3494.731923] arcmsr6: abort device command of scsi id = 0 lun = 5 [ 3511.746966] arcmsr6: abort device command of scsi id = 0 lun = 5 [ 3511.746978] arcmsr6: abort device command of scsi id = 0 lun = 7 [ 3528.759509] arcmsr6: abort device command of scsi id = 0 lun = 7 [ 3528.759520] arcmsr6: abort device command of scsi id = 0 lun = 7 [ 3545.782040] arcmsr6: abort device command of scsi id = 0 lun = 7 [ 3545.782052] arcmsr6: abort device command of scsi id = 0 lun = 6 [ 3562.785862] arcmsr6: abort device command of scsi id = 0 lun = 6 [ 3562.785872] arcmsr6: abort device command of scsi id = 0 lun = 6 [ 3579.798404] arcmsr6: abort device command of scsi id = 0 lun = 6 [ 3579.798410] arcmsr6: abort device command of scsi id = 0 lun = 5 [ 3580.294587] SysRq : Show Blocked State [ 3580.294646] task PC stack pid father [ 3580.294653] pdflush D 0000000000000000 0 221 2 [ 3580.294658] ffff8102330dfd80 0000000000000046 ffff81023ef6ce48 ffff81023ef6d008 [ 3580.294664] ffff81023ef6d0e8 ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.294668] ffffffff8067f0a0 ffffffff80682c80 ffff8102330dc230 ffff8102330dfd4c [ 3580.294673] Call Trace: [ 3580.294699] [] __mod_timer+0xc2/0xe0 [ 3580.294706] [] schedule_timeout+0x5f/0xd0 [ 3580.294711] [] process_timeout+0x0/0x10 [ 3580.294715] [] schedule_timeout+0x5a/0xd0 [ 3580.294721] [] pdflush+0x0/0x230 [ 3580.294724] [] io_schedule_timeout+0x28/0x40 [ 3580.294728] [] congestion_wait+0x6b/0x90 [ 3580.294732] [] autoremove_wake_function+0x0/0x30 [ 3580.294736] [] writeback_inodes+0xb8/0xd0 [ 3580.294739] [] pdflush+0x0/0x230 [ 3580.294743] [] background_writeout+0x3f/0xe0 [ 3580.294751] [] pdflush+0x0/0x230 [ 3580.294755] [] pdflush+0x150/0x230 [ 3580.294759] [] background_writeout+0x0/0xe0 [ 3580.294764] [] kthread+0x4b/0x80 [ 3580.294768] [] child_rip+0xa/0x12 [ 3580.294777] [] kthread+0x0/0x80 [ 3580.294780] [] child_rip+0x0/0x12 [ 3580.294784] [ 3580.294786] pdflush D 0000000000000001 0 222 2 [ 3580.294791] ffff8102330e1d80 0000000000000046 ffff81023f22c2c8 ffff81023ef6d008 [ 3580.294797] ffff81023ef6d0e8 ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.294801] ffffffff8067f0a0 ffffffff80682c80 ffff8102330d8a20 ffff8102330e1d4c [ 3580.294805] Call Trace: [ 3580.294817] [] __mod_timer+0xc2/0xe0 [ 3580.294823] [] schedule_timeout+0x5f/0xd0 [ 3580.294827] [] process_timeout+0x0/0x10 [ 3580.294832] [] schedule_timeout+0x5a/0xd0 [ 3580.294837] [] pdflush+0x0/0x230 [ 3580.294840] [] io_schedule_timeout+0x28/0x40 [ 3580.294845] [] congestion_wait+0x6b/0x90 [ 3580.294849] [] autoremove_wake_function+0x0/0x30 [ 3580.294852] [] writeback_inodes+0xb8/0xd0 [ 3580.294856] [] pdflush+0x0/0x230 [ 3580.294860] [] background_writeout+0x3f/0xe0 [ 3580.294868] [] pdflush+0x0/0x230 [ 3580.294872] [] pdflush+0x150/0x230 [ 3580.294875] [] background_writeout+0x0/0xe0 [ 3580.294880] [] kthread+0x4b/0x80 [ 3580.294884] [] child_rip+0xa/0x12 [ 3580.294893] [] kthread+0x0/0x80 [ 3580.294896] [] child_rip+0x0/0x12 [ 3580.294900] [ 3580.294905] scsi_eh_6 D ffff8100010549a0 0 3058 2 [ 3580.294908] ffff810231c89db0 0000000000000046 ffff810231c89d78 3031343839372e39 [ 3580.294915] ffffffff8000205d ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.294919] ffffffff8067f0a0 ffffffff80682c80 ffff810232978230 ffff810231c89d7c [ 3580.294923] Call Trace: [ 3580.294938] [] schedule_timeout+0x5f/0xd0 [ 3580.294943] [] process_timeout+0x0/0x10 [ 3580.294947] [] schedule_timeout+0x5a/0xd0 [ 3580.294952] [] msleep+0x17/0x30 [ 3580.294958] [] :arcmsr:arcmsr_abort+0x8e/0x340 [ 3580.294974] [] :scsi_mod:scsi_error_handler+0x399/0x570 [ 3580.294991] [] :scsi_mod:scsi_error_handler+0x0/0x570 [ 3580.294995] [] kthread+0x4b/0x80 [ 3580.295000] [] child_rip+0xa/0x12 [ 3580.295009] [] kthread+0x0/0x80 [ 3580.295012] [] child_rip+0x0/0x12 [ 3580.295017] [ 3580.295021] xfsdatad/0 D 0000000000000000 0 5741 2 [ 3580.295024] ffff8102034f7e00 0000000000000046 0000000000000000 ffff810001033880 [ 3580.295029] ffff810233177818 ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.295034] ffffffff8067f0a0 ffffffff80682c80 ffff810233177a00 ffff8102034f7dcc [ 3580.295038] Call Trace: [ 3580.295053] [] __down_write_nested+0x75/0xb0 [ 3580.295075] [] :xfs:xfs_ilock+0x6f/0xa0 [ 3580.295091] [] :xfs:xfs_setfilesize+0x40/0xc0 [ 3580.295104] [] :xfs:xfs_end_bio_written+0x0/0x20 [ 3580.295118] [] :xfs:xfs_end_bio_written+0x10/0x20 [ 3580.295123] [] run_workqueue+0xcc/0x170 [ 3580.295126] [] worker_thread+0x0/0x110 [ 3580.295129] [] worker_thread+0x0/0x110 [ 3580.295132] [] worker_thread+0xa3/0x110 [ 3580.295137] [] autoremove_wake_function+0x0/0x30 [ 3580.295141] [] worker_thread+0x0/0x110 [ 3580.295146] [] worker_thread+0x0/0x110 [ 3580.295150] [] kthread+0x4b/0x80 [ 3580.295153] [] child_rip+0xa/0x12 [ 3580.295162] [] kthread+0x0/0x80 [ 3580.295166] [] child_rip+0x0/0x12 [ 3580.295170] [ 3580.295174] xfssyncd D 0000000000000000 0 5758 2 [ 3580.295177] ffff810202521b30 0000000000000046 0000000000000000 ffff810075ca8c00 [ 3580.295183] ffff810075ca8c00 ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.295186] ffffffff8067f0a0 ffffffff80682c80 ffff81023317b210 ffff810202521afc [ 3580.295190] Call Trace: [ 3580.295202] [] get_request+0x1a4/0x350 [ 3580.295208] [] io_schedule+0x28/0x40 [ 3580.295212] [] get_request_wait+0xec/0x190 [ 3580.295221] [] :dm_mod:__map_bio+0xd1/0x130 [ 3580.295226] [] autoremove_wake_function+0x0/0x30 [ 3580.295234] [] :dm_mod:__split_bio+0xef/0x3e0 [ 3580.295240] [] __make_request+0x8c/0x680 [ 3580.295246] [] __up_read+0x21/0xb0 [ 3580.295252] [] generic_make_request+0x1e6/0x3e0 [ 3580.295262] [] submit_bio+0x75/0x100 [ 3580.295278] [] :xfs:_xfs_buf_ioapply+0x198/0x350 [ 3580.295297] [] :xfs:xfs_buf_iorequest+0x29/0x80 [ 3580.295312] [] :xfs:xlog_bdstrat_cb+0x38/0x40 [ 3580.295327] [] :xfs:xlog_sync+0x1fe/0x460 [ 3580.295346] [] :xfs:xlog_state_sync_all+0x1f2/0x220 [ 3580.295352] [] try_to_del_timer_sync+0x52/0x60 [ 3580.295370] [] :xfs:_xfs_log_force+0x5d/0x80 [ 3580.295386] [] :xfs:xfs_syncsub+0x4b/0x300 [ 3580.295402] [] :xfs:xfs_sync_worker+0x17/0x40 [ 3580.295416] [] :xfs:xfssyncd+0x13d/0x1c0 [ 3580.295433] [] :xfs:xfssyncd+0x0/0x1c0 [ 3580.295438] [] kthread+0x4b/0x80 [ 3580.295443] [] child_rip+0xa/0x12 [ 3580.295451] [] lapic_next_event+0x0/0x10 [ 3580.295457] [] kthread+0x0/0x80 [ 3580.295461] [] child_rip+0x0/0x12 [ 3580.295466] [ 3580.295479] vmware-vmx D 0000000000000000 0 7317 1 [ 3580.295485] ffff8101f1b53a48 0000000000000086 0000000000000000 ffff810005d8ae38 [ 3580.295490] ffff810075ca8600 ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.295493] ffffffff8067f0a0 ffffffff80682c80 ffff810231d9fa00 ffff8101f1b53a14 [ 3580.295497] Call Trace: [ 3580.295512] [] sync_page+0x0/0x50 [ 3580.295515] [] io_schedule+0x28/0x40 [ 3580.295520] [] sync_page+0x37/0x50 [ 3580.295523] [] __wait_on_bit+0x4f/0x80 [ 3580.295529] [] wait_on_page_bit+0x6d/0x80 [ 3580.295534] [] wake_bit_function+0x0/0x30 [ 3580.295539] [] __writepage+0xa/0x30 [ 3580.295542] [] write_cache_pages+0x2b2/0x340 [ 3580.295544] [] __writepage+0x0/0x30 [ 3580.295556] [] generic_file_buffered_write+0x1fb/0x6b0 [ 3580.295562] [] do_writepages+0x20/0x40 [ 3580.295566] [] __filemap_fdatawrite_range+0x52/0x60 [ 3580.295574] [] sync_page_range+0x74/0xe0 [ 3580.295590] [] :xfs:xfs_write+0x775/0x910 [ 3580.295608] [] do_sync_write+0xd9/0x120 [ 3580.295617] [] autoremove_wake_function+0x0/0x30 [ 3580.295622] [] group_send_sig_info+0x25/0x90 [ 3580.295628] [] kill_pid_info+0x51/0x90 [ 3580.295631] [] find_pid_ns+0x3/0xd0 [ 3580.295638] [] vfs_write+0xed/0x190 [ 3580.295643] [] sys_pwrite64+0x84/0xa0 [ 3580.295649] [] system_call+0x7e/0x83 [ 3580.295657] [ 3580.295662] bacula-fd D 0000000000000000 0 7573 1 [ 3580.295666] ffff810161529b98 0000000000000086 0000000000000000 ffffffff8812cdce [ 3580.295674] ffffffff884e4450 ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.295681] ffffffff8067f0a0 ffffffff80682c80 ffff810232c45a00 ffff810161529b64 [ 3580.295687] Call Trace: [ 3580.295698] [] :scsi_mod:scsi_request_fn+0x25e/0x3d0 [ 3580.295712] [] :xfs:xfs_get_blocks+0x0/0x10 [ 3580.295724] [] sync_page+0x0/0x50 [ 3580.295727] [] io_schedule+0x28/0x40 [ 3580.295732] [] sync_page+0x37/0x50 [ 3580.295735] [] __wait_on_bit_lock+0x4a/0x80 [ 3580.295742] [] __lock_page+0x5f/0x70 [ 3580.295746] [] wake_bit_function+0x0/0x30 [ 3580.295750] [] do_generic_mapping_read+0x1c0/0x3c0 [ 3580.295754] [] file_read_actor+0x0/0x160 [ 3580.295764] [] generic_file_aio_read+0xff/0x1b0 [ 3580.295784] [] :xfs:xfs_read+0x11c/0x250 [ 3580.295792] [] do_sync_read+0xd9/0x120 [ 3580.295801] [] autoremove_wake_function+0x0/0x30 [ 3580.295808] [] thread_return+0x3a/0x59a [ 3580.295817] [] vfs_read+0xed/0x190 [ 3580.295822] [] sys_read+0x53/0x90 [ 3580.295828] [] system_call+0x7e/0x83 [ 3580.295836] [ 3580.295841] smbd D 0000000000000000 0 7596 6572 [ 3580.295846] ffff8101400b7578 0000000000000086 0000000000000000 ffffffff803401cd [ 3580.295853] ffff8101f1de7480 ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.295860] ffffffff8067f0a0 ffffffff80682c80 ffff81016154e230 ffff8101400b7544 [ 3580.295865] Call Trace: [ 3580.295869] [] blk_recount_segments+0x3d/0x80 [ 3580.295878] [] get_request+0x1a4/0x350 [ 3580.295885] [] io_schedule+0x28/0x40 [ 3580.295890] [] get_request_wait+0xec/0x190 [ 3580.295897] [] :dm_mod:__map_bio+0xd1/0x130 [ 3580.295902] [] autoremove_wake_function+0x0/0x30 [ 3580.295906] [] ll_back_merge_fn+0x146/0x240 [ 3580.295912] [] __make_request+0x8c/0x680 [ 3580.295918] [] __up_read+0x21/0xb0 [ 3580.295923] [] generic_make_request+0x1e6/0x3e0 [ 3580.295927] [] __pagevec_release+0x19/0x30 [ 3580.295935] [] submit_bio+0x75/0x100 [ 3580.295939] [] __bio_add_page+0x1a6/0x210 [ 3580.295955] [] :xfs:xfs_submit_ioend_bio+0x1e/0x30 [ 3580.295970] [] :xfs:xfs_submit_ioend+0xbe/0xe0 [ 3580.295986] [] :xfs:xfs_page_state_convert+0x3a6/0x660 [ 3580.296012] [] :xfs:xfs_vm_writepage+0x6f/0x120 [ 3580.296017] [] __writepage+0xa/0x30 [ 3580.296021] [] write_cache_pages+0x24e/0x340 [ 3580.296024] [] __writepage+0x0/0x30 [ 3580.296039] [] do_writepages+0x20/0x40 [ 3580.296043] [] __writeback_single_inode+0xb0/0x380 [ 3580.296054] [] sync_sb_inodes+0x1f9/0x300 [ 3580.296061] [] writeback_inodes+0x92/0xd0 [ 3580.296065] [] balance_dirty_pages_ratelimited_nr+0x25c/0x360 [ 3580.296078] [] generic_file_buffered_write+0x1fb/0x6b0 [ 3580.296105] [] :xfs:xfs_write+0x676/0x910 [ 3580.296117] [] __key_link+0x162/0x330 [ 3580.296125] [] do_sync_write+0xd9/0x120 [ 3580.296134] [] autoremove_wake_function+0x0/0x30 [ 3580.296142] [] fcntl_setlk+0x54/0x2f0 [ 3580.296150] [] vfs_write+0xed/0x190 [ 3580.296155] [] sys_pwrite64+0x84/0xa0 [ 3580.296159] [] sys_fcntl+0x6e/0x370 [ 3580.296164] [] system_call+0x7e/0x83 [ 3580.296172] [ 3580.296174] sync D 0000000000000000 0 7639 7636 [ 3580.296179] ffff810146023bb8 0000000000000086 ffff8100378d55a0 ffff810202540228 [ 3580.296187] ffff810231808000 ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.296193] ffffffff8067f0a0 ffffffff80682c80 ffff8101dd1caa20 ffffffff8033e44b [ 3580.296199] Call Trace: [ 3580.296207] [] elv_next_request+0x5b/0x1f0 [ 3580.296221] [] :scsi_mod:scsi_request_fn+0x25e/0x3d0 [ 3580.296228] [] __down+0xa7/0x11f [ 3580.296233] [] default_wake_function+0x0/0x10 [ 3580.296246] [] :xfs:_xfs_buf_ioapply+0x198/0x350 [ 3580.296252] [] __down_failed+0x35/0x3a [ 3580.296262] [] :scsi_mod:scsi_request_fn+0x0/0x3d0 [ 3580.296268] [] kobject_release+0x0/0x10 [ 3580.296283] [] :xfs:xfs_buf_iowait+0x46/0x50 [ 3580.296297] [] :xfs:xfs_buf_read_flags+0x66/0xa0 [ 3580.296313] [] :xfs:xfs_trans_read_buf+0x64/0x340 [ 3580.296332] [] :xfs:xfs_itobp+0x81/0x1e0 [ 3580.296336] [] write_cache_pages+0x10c/0x340 [ 3580.296355] [] :xfs:xfs_iflush+0xfe/0x520 [ 3580.296359] [] find_get_pages_tag+0x34/0x90 [ 3580.296363] [] __down_read_trylock+0x42/0x60 [ 3580.296380] [] :xfs:xfs_inode_flush+0x179/0x1b0 [ 3580.296396] [] :xfs:xfs_fs_write_inode+0x28/0x70 [ 3580.296401] [] __writeback_single_inode+0x2ac/0x380 [ 3580.296405] [] pagevec_lookup_tag+0x1a/0x30 [ 3580.296409] [] wait_on_page_writeback_range+0x73/0x140 [ 3580.296417] [] sync_sb_inodes+0x1f9/0x300 [ 3580.296424] [] sync_inodes_sb+0x94/0xb0 [ 3580.296430] [] __sync_inodes+0x79/0xc0 [ 3580.296435] [] sync_inodes+0x11/0x30 [ 3580.296438] [] do_sync+0x12/0x70 [ 3580.296441] [] sys_sync+0xe/0x20 [ 3580.296445] [] system_call+0x7e/0x83 [ 3580.296453] [ 3580.296455] sh D 0000000000000000 0 7640 7638 [ 3580.296461] ffff810161fd1b18 0000000000000082 0000000000000000 ffffffff802e2e60 [ 3580.296468] ffffffff884e4450 ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.296474] ffffffff8067f0a0 ffffffff80682c80 ffff810190c46a20 ffff810161fd1ae4 [ 3580.296480] Call Trace: [ 3580.296485] [] mpage_readpages+0xe0/0x100 [ 3580.296499] [] :xfs:xfs_get_blocks+0x0/0x10 [ 3580.296511] [] sync_page+0x0/0x50 [ 3580.296515] [] io_schedule+0x28/0x40 [ 3580.296519] [] sync_page+0x37/0x50 [ 3580.296522] [] __wait_on_bit_lock+0x4a/0x80 [ 3580.296528] [] __lock_page+0x5f/0x70 [ 3580.296532] [] wake_bit_function+0x0/0x30 [ 3580.296537] [] do_generic_mapping_read+0x1c0/0x3c0 [ 3580.296540] [] update_curr+0x71/0x100 [ 3580.296543] [] file_read_actor+0x0/0x160 [ 3580.296552] [] generic_file_aio_read+0xff/0x1b0 [ 3580.296572] [] :xfs:xfs_read+0x11c/0x250 [ 3580.296575] [] zone_statistics+0x7d/0x80 [ 3580.296583] [] do_sync_read+0xd9/0x120 [ 3580.296591] [] autoremove_wake_function+0x0/0x30 [ 3580.296596] [] aa_register_find+0x54/0x170 [ 3580.296602] [] aa_register+0x19a/0x500 [ 3580.296611] [] vfs_read+0xed/0x190 [ 3580.296616] [] kernel_read+0x38/0x50 [ 3580.296620] [] do_execve+0x165/0x220 [ 3580.296626] [] sys_execve+0x44/0xb0 [ 3580.296631] [] stub_execve+0x67/0xb0 [ 3580.296642] [ 3580.296644] smbd D 0000000000000000 0 7641 6572 [ 3580.296649] ffff8101a08fd878 0000000000000082 0000000000000000 ffff810231c70000 [ 3580.296655] ffff8101f1de7500 ffffffff80682c80 ffffffff80682c80 ffffffff80682c80 [ 3580.296662] ffffffff8067f0a0 ffffffff80682c80 ffff81016154f210 ffff8101a08fd844 [ 3580.296667] Call Trace: [ 3580.296682] [] __down+0xa7/0x11f [ 3580.296686] [] default_wake_function+0x0/0x10 [ 3580.296701] [] :xfs:_xfs_buf_ioapply+0x198/0x350 [ 3580.296706] [] __down_failed+0x35/0x3a [ 3580.296723] [] :xfs:xfs_buf_iowait+0x46/0x50 [ 3580.296738] [] :xfs:xfs_buf_read_flags+0x66/0xa0 [ 3580.296754] [] :xfs:xfs_trans_read_buf+0x64/0x340 [ 3580.296772] [] :xfs:xfs_itobp+0x81/0x1e0 [ 3580.296792] [] :xfs:xfs_iread+0x85/0x220 [ 3580.296797] [] __slab_alloc+0x1bd/0x410 [ 3580.296815] [] :xfs:xfs_iget_core+0x1e1/0x710 [ 3580.296839] [] :xfs:xfs_iget+0xe7/0x160 [ 3580.296858] [] :xfs:xfs_dir_lookup_int+0x8d/0xf0 [ 3580.296876] [] :xfs:xfs_lookup+0x75/0xa0 [ 3580.296893] [] :xfs:xfs_vn_lookup+0x31/0x70 [ 3580.296898] [] do_lookup+0x1b6/0x250 [ 3580.296906] [] __link_path_walk+0x14b/0xe90 [ 3580.296915] [] link_path_walk+0x5b/0x100 [ 3580.296923] [] dput+0x1f/0x130 [ 3580.296927] [] mntput_no_expire+0x27/0xb0 [ 3580.296931] [] link_path_walk+0x81/0x100 [ 3580.296937] [] do_path_lookup+0x8a/0x250 [ 3580.296941] [] getname+0x1a9/0x220 [ 3580.296946] [] __user_walk_fd+0x4b/0x80 [ 3580.296951] [] vfs_stat_fd+0x2f/0x80 [ 3580.296957] [] dput+0x1f/0x130 [ 3580.296961] [] mntput_no_expire+0x27/0xb0 [ 3580.296966] [] sys_chdir+0x60/0x90 [ 3580.296969] [] sys_newstat+0x27/0x50 [ 3580.296975] [] set_user+0xa2/0xc0 [ 3580.296979] [] sys_setresuid+0x194/0x200 [ 3580.296985] [] system_call+0x7e/0x83 [ 3580.296994] [ 3580.296997] Sched Debug Version: v0.07, 2.6.24-26-server #1 [ 3580.296999] now at 3429623.454505 msecs [ 3580.297001] .sysctl_sched_latency : 60.000000 [ 3580.297004] .sysctl_sched_min_granularity : 12.000000 [ 3580.297006] .sysctl_sched_wakeup_granularity : 30.000000 [ 3580.297008] .sysctl_sched_batch_wakeup_granularity : 30.000000 [ 3580.297010] .sysctl_sched_child_runs_first : 0.000001 [ 3580.297013] .sysctl_sched_features : 7 [ 3580.297015] [ 3580.297016] cpu#0, 2404.113 MHz [ 3580.297018] .nr_running : 1 [ 3580.297020] .load : 1024 [ 3580.297022] .nr_switches : 7933994 [ 3580.297024] .nr_load_updates : 242407 [ 3580.297026] .nr_uninterruptible : -68690 [ 3580.297028] .jiffies : 4295280258 [ 3580.297029] .next_balance : 4295.280276 [ 3580.297032] .curr->pid : 7288 [ 3580.297033] .clock : 2424072.408800 [ 3580.297035] .idle_clock : 0.000000 [ 3580.297037] .prev_clock_raw : 3580293.550258 [ 3580.297039] .clock_warps : 0 [ 3580.297041] .clock_overflows : 2476352 [ 3580.297044] .clock_deep_idle_events : 0 [ 3580.297045] .clock_max_delta : 9.999980 [ 3580.297047] .cpu_load[0] : 1024 [ 3580.297049] .cpu_load[1] : 1024 [ 3580.297051] .cpu_load[2] : 1024 [ 3580.297053] .cpu_load[3] : 1024 [ 3580.297055] .cpu_load[4] : 1024 [ 3580.297057] [ 3580.297058] cfs_rq [ 3580.297059] .exec_clock : 0.000000 [ 3580.297062] .MIN_vruntime : 0.000001 [ 3580.297064] .min_vruntime : 552420.036852 [ 3580.297066] .max_vruntime : 0.000001 [ 3580.297068] .spread : 0.000000 [ 3580.297070] .spread0 : 0.000000 [ 3580.297072] .nr_running : 1 [ 3580.297074] .load : 1024 [ 3580.297075] .nr_spread_over : 0 [ 3580.297077] [ 3580.297078] cfs_rq [ 3580.297080] .exec_clock : 0.000000 [ 3580.297082] .MIN_vruntime : 0.000001 [ 3580.297084] .min_vruntime : 552420.036852 [ 3580.297087] .max_vruntime : 0.000001 [ 3580.297089] .spread : 0.000000 [ 3580.297091] .spread0 : 0.000000 [ 3580.297092] .nr_running : 1 [ 3580.297094] .load : 1024 [ 3580.297096] .nr_spread_over : 0 [ 3580.297098] [ 3580.297099] runnable tasks: [ 3580.297099] task PID tree-key switches prio exec-runtime sum-exec sum-sleep [ 3580.297100] ---------------------------------------------------------------------------------------------------------- [ 3580.297106] R vmware-vmx 7288 518608.234067 320744 120 0 0 0.000000 0.000000 0.000000 [ 3580.297114] [ 3580.297114] cpu#1, 2404.113 MHz [ 3580.297116] .nr_running : 2 [ 3580.297118] .load : 2048 [ 3580.297120] .nr_switches : 5422548 [ 3580.297121] .nr_load_updates : 244834 [ 3580.297123] .nr_uninterruptible : 56347 [ 3580.297126] .jiffies : 4295280258 [ 3580.297128] .next_balance : 4295.280257 [ 3580.297130] .curr->pid : 7338 [ 3580.297132] .clock : 2448350.962052 [ 3580.297134] .idle_clock : 0.000000 [ 3580.297136] .prev_clock_raw : 3580296.984746 [ 3580.297137] .clock_warps : 0 [ 3580.297139] .clock_overflows : 1027944 [ 3580.297141] .clock_deep_idle_events : 0 [ 3580.297143] .clock_max_delta : 9.999794 [ 3580.297145] .cpu_load[0] : 0 [ 3580.297147] .cpu_load[1] : 0 [ 3580.297149] .cpu_load[2] : 139 [ 3580.297151] .cpu_load[3] : 1532 [ 3580.297153] .cpu_load[4] : 3045 [ 3580.297155] [ 3580.297155] cfs_rq [ 3580.297157] .exec_clock : 0.000000 [ 3580.297159] .MIN_vruntime : 0.000001 [ 3580.297161] .min_vruntime : 437151.747709 [ 3580.297163] .max_vruntime : 0.000001 [ 3580.297165] .spread : 0.000000 [ 3580.297167] .spread0 : -115268.289143 [ 3580.297169] .nr_running : 1 [ 3580.297171] .load : 1024 [ 3580.297173] .nr_spread_over : 0 [ 3580.297175] [ 3580.297175] cfs_rq [ 3580.297177] .exec_clock : 0.000000 [ 3580.297179] .MIN_vruntime : 406855.054398 [ 3580.297181] .min_vruntime : 437151.747709 [ 3580.297183] .max_vruntime : 406855.054398 [ 3580.297185] .spread : 0.000000 [ 3580.297188] .spread0 : -115268.289143 [ 3580.297190] .nr_running : 2 [ 3580.297191] .load : 2048 [ 3580.297193] .nr_spread_over : 0 [ 3580.297195] [ 3580.297196] runnable tasks: [ 3580.297196] task PID tree-key switches prio exec-runtime sum-exec sum-sleep [ 3580.297197] ---------------------------------------------------------------------------------------------------------- [ 3580.297200] syslogd 6216 406855.054398 2895 120 0 0 0.000000 0.000000 0.000000 [ 3580.297207] R bash 7338 406855.172049 1400 120 0 0 0.000000 0.000000 0.000000 [ 3580.297215] [ 3580.297215] cpu#2, 2404.113 MHz [ 3580.297217] .nr_running : 1 [ 3580.297219] .load : 1024 [ 3580.297221] .nr_switches : 1440663 [ 3580.297223] .nr_load_updates : 276188 [ 3580.297225] .nr_uninterruptible : 6380 [ 3580.297227] .jiffies : 4295280258 [ 3580.297229] .next_balance : 4295.280283 [ 3580.297231] .curr->pid : 6235 [ 3580.297233] .clock : 2761880.177500 [ 3580.297235] .idle_clock : 0.000000 [ 3580.297237] .prev_clock_raw : 3580296.056586 [ 3580.297239] .clock_warps : 0 [ 3580.297242] .clock_overflows : 214421 [ 3580.297243] .clock_deep_idle_events : 0 [ 3580.297245] .clock_max_delta : 9.999999 [ 3580.297247] .cpu_load[0] : 1024 [ 3580.297249] .cpu_load[1] : 512 [ 3580.297251] .cpu_load[2] : 256 [ 3580.297253] .cpu_load[3] : 128 [ 3580.297255] .cpu_load[4] : 64 [ 3580.297257] [ 3580.297257] cfs_rq [ 3580.297259] .exec_clock : 0.000000 [ 3580.297261] .MIN_vruntime : 0.000001 [ 3580.297264] .min_vruntime : 102512.690078 [ 3580.297265] .max_vruntime : 0.000001 [ 3580.297268] .spread : 0.000000 [ 3580.297269] .spread0 : -449907.346774 [ 3580.297271] .nr_running : 1 [ 3580.297273] .load : 1024 [ 3580.297275] .nr_spread_over : 0 [ 3580.297277] [ 3580.297278] cfs_rq [ 3580.297279] .exec_clock : 0.000000 [ 3580.297282] .MIN_vruntime : 0.000001 [ 3580.297284] .min_vruntime : 102512.690078 [ 3580.297286] .max_vruntime : 0.000001 [ 3580.297288] .spread : 0.000000 [ 3580.297290] .spread0 : -449907.346774 [ 3580.297292] .nr_running : 1 [ 3580.297294] .load : 1024 [ 3580.297296] .nr_spread_over : 0 [ 3580.297298] [ 3580.297298] runnable tasks: [ 3580.297299] task PID tree-key switches prio exec-runtime sum-exec sum-sleep [ 3580.297300] ---------------------------------------------------------------------------------------------------------- [ 3580.297303] R dd 6235 115167.502387 274 120 0 0 0.000000 0.000000 0.000000 [ 3580.297311] [ 3580.297311] cpu#3, 2404.113 MHz [ 3580.297313] .nr_running : 0 [ 3580.297315] .load : 0 [ 3580.297317] .nr_switches : 1591451 [ 3580.297320] .nr_load_updates : 227045 [ 3580.297322] .nr_uninterruptible : 5974 [ 3580.297323] .jiffies : 4295280258 [ 3580.297325] .next_balance : 4295.280259 [ 3580.297327] .curr->pid : 0 [ 3580.297329] .clock : 2270450.190151 [ 3580.297331] .idle_clock : 0.000000 [ 3580.297334] .prev_clock_raw : 3580297.313151 [ 3580.297336] .clock_warps : 0 [ 3580.297337] .clock_overflows : 226883 [ 3580.297339] .clock_deep_idle_events : 0 [ 3580.297341] .clock_max_delta : 9.999865 [ 3580.297343] .cpu_load[0] : 0 [ 3580.297345] .cpu_load[1] : 0 [ 3580.297347] .cpu_load[2] : 0 [ 3580.297349] .cpu_load[3] : 0 [ 3580.297351] .cpu_load[4] : 0 [ 3580.297353] [ 3580.297353] cfs_rq [ 3580.297355] .exec_clock : 0.000000 [ 3580.297358] .MIN_vruntime : 0.000001 [ 3580.297360] .min_vruntime : 118343.625154 [ 3580.297362] .max_vruntime : 0.000001 [ 3580.297364] .spread : 0.000000 [ 3580.297366] .spread0 : -434076.411698 [ 3580.297368] .nr_running : 0 [ 3580.297370] .load : 0 [ 3580.297372] .nr_spread_over : 0 [ 3580.297374] [ 3580.297374] cfs_rq [ 3580.297376] .exec_clock : 0.000000 [ 3580.297378] .MIN_vruntime : 0.000001 [ 3580.297380] .min_vruntime : 118343.625154 [ 3580.297383] .max_vruntime : 0.000001 [ 3580.297385] .spread : 0.000000 [ 3580.297387] .spread0 : -434076.411698 [ 3580.297389] .nr_running : 0 [ 3580.297391] .load : 0 [ 3580.297393] .nr_spread_over : 0 [ 3580.297395] [ 3580.297395] runnable tasks: [ 3580.297396] task PID tree-key switches prio exec-runtime sum-exec sum-sleep [ 3580.297397] ---------------------------------------------------------------------------------------------------------- [ 3580.297401] ---------------- iostat -m -x 5 output: avg-cpu: %user %nice %system %iowait %steal %idle 10.28 0.00 11.55 7.56 0.00 70.61 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 8.40 0.20 3.00 0.00 0.04 29.00 0.00 0.62 0.62 0.20 sdb 10.20 36.00 120.60 34.40 8.18 5.25 177.44 0.23 1.48 0.92 14.20 sdc 53.80 30.60 77.80 36.60 8.18 5.34 242.03 0.24 2.10 1.19 13.60 sdd 10.00 36.60 120.80 37.60 8.18 5.31 174.36 0.27 1.69 0.90 14.20 sde 54.60 33.40 76.40 36.80 8.19 5.39 245.68 0.25 2.23 1.22 13.80 sdf 9.60 36.80 121.40 25.80 8.18 3.99 169.23 5.16 0.99 2.08 30.60 sdg 54.80 32.20 76.00 24.80 8.18 4.01 247.63 4.53 1.39 2.98 30.00 sdh 9.80 39.00 121.00 24.00 8.18 3.99 171.88 4.86 1.10 2.25 32.60 sdi 54.40 33.40 76.40 23.20 8.18 4.02 250.78 4.65 1.57 3.13 31.20 dm-0 0.00 0.00 523.60 0.00 65.45 0.00 256.00 0.77 0.70 0.97 50.60 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-2 0.00 0.00 1.00 222.60 0.01 42.50 389.30 20.40 3.54 1.18 26.40 avg-cpu: %user %nice %system %iowait %steal %idle 0.42 0.00 6.51 30.68 0.00 62.39 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 10.00 0.00 8.20 0.00 0.07 17.76 0.00 0.00 0.00 0.00 sdb 0.00 17.80 0.00 14.80 0.00 2.42 334.27 0.12 7.84 3.51 5.20 sdc 0.00 18.20 0.00 13.00 0.00 2.40 378.34 0.13 10.15 4.31 5.60 sdd 0.00 17.80 0.00 16.20 0.00 2.42 306.17 0.13 8.27 3.33 5.40 sde 0.00 16.60 0.00 16.80 0.00 2.43 295.90 0.12 7.02 3.10 5.20 sdf 0.00 18.80 0.00 0.00 0.00 0.00 0.00 99.53 0.00 0.00 100.00 sdg 0.00 17.40 0.00 0.00 0.00 0.00 0.00 96.46 0.00 0.00 100.00 sdh 0.00 18.20 0.00 0.00 0.00 0.00 0.00 101.26 0.00 0.00 100.00 sdi 0.00 19.00 0.00 0.00 0.00 0.00 0.00 103.05 0.00 0.00 100.00 dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2.00 0.00 0.00 100.00 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 dm-2 0.00 0.00 0.00 112.20 0.00 19.53 356.53 476.04 2.76 8.91 100.00 ------------- From sandeen@sandeen.net Thu Jan 14 19:31:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F1V5PZ053812 for ; Thu, 14 Jan 2010 19:31:06 -0600 X-ASG-Debug-ID: 1263519121-091e00d70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3BFB715F8FC for ; Thu, 14 Jan 2010 17:32:01 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id YjOK68pMAjenjG13 for ; Thu, 14 Jan 2010 17:32:01 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 20C65AC08CC; Thu, 14 Jan 2010 19:32:01 -0600 (CST) Message-ID: <4B4FC591.4050104@sandeen.net> Date: Thu, 14 Jan 2010 19:32:01 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Dave Chinner CC: paul.chavent@fnac.net, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: usage of xfsctrl for embedded development / uuid question Subject: Re: usage of xfsctrl for embedded development / uuid question References: <17182907.184441263481368019.JavaMail.www@wsfrf1112> <20100115002938.GC17483@discord.disaster> In-Reply-To: <20100115002938.GC17483@discord.disaster> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263519122 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.42 X-Barracuda-Spam-Status: No, SCORE=-0.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC, WEIRD_PORT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19826 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.50 WEIRD_PORT URI: Uses non-standard port number for HTTP 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > [Please wrap you emails at 72 columns] >> (3) regeneration of configure >> >> The regeneration of configure fails whith this message >> >> # rm configure >> # make configure >> [...] >> autoconf >> configure.in:101: error: possibly undefined macro: AC_HAVE_BLKID_TOPO >> If this token and others are legitimate, please use m4_pattern_allow. >> See the Autoconf documentation. > > 'make distclean' is the correct way to remove the configuration and > rebuild it. That should make the problem go away. This is also a bug thanks to yours truly in the latest release, Christoph sent a patch to fix it: [PATCH] xfsprogs: add package_blkid.m4 to the distributed files -Eric > Cheers, > > Dave. From SRS0+jxck+44+fromorbit.com=david@internode.on.net Thu Jan 14 19:34:16 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F1YFFP054007 for ; Thu, 14 Jan 2010 19:34:16 -0600 X-ASG-Debug-ID: 1263519310-2efe02620000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 74EFB1C4891A for ; Thu, 14 Jan 2010 17:35:11 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id WWTZalwQN4IpxBGA for ; Thu, 14 Jan 2010 17:35:11 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11437905-1927428 for multiple; Fri, 15 Jan 2010 12:05:09 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVb5f-0000SV-Ll; Fri, 15 Jan 2010 12:35:07 +1100 Date: Fri, 15 Jan 2010 12:35:07 +1100 From: Dave Chinner To: Steve Costaras Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS data corruption with high I/O even on Areca hardware raid Subject: Re: XFS data corruption with high I/O even on Areca hardware raid Message-ID: <20100115013507.GB28498@discord.disaster> References: <4B4E6F3F.1090901@chaven.com> <20100114022409.GW17483@discord.disaster> <4B4FBC3F.6050904@chaven.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B4FBC3F.6050904@chaven.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263519312 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19826 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 06:52:15PM -0600, Steve Costaras wrote: > On 01/13/2010 20:24, Dave Chinner wrote: >> On Wed, Jan 13, 2010 at 07:11:27PM -0600, Steve Costaras wrote: >> The fact that the IO subsystem is freezing at 100% elevator queue >> utilisation points to an IO never completing. This immediately makes >> me point a finger at either the RAID hardware or the driver - a bug >> in XFS is highly unlikely to cause this symptom as those stats are >> generated at layers lower than XFS. >> >> Next time you get a freeze, the output of: >> >> # echo w> /proc/sysrq-trigger >> >> will tell use what the system is waiting on (i.e. why it is stuck) >> >> ... > > didn't want this to happen so soon, but another freeze just occured. I > have the output you mentioned above below. Don't know if this helps > pinpoint anything as to where the problem is more accurately. There stack traces do - everything is waiting on IO completion to occur. The elevator queues are full, the block device is congested and lots of XFS code is waiting on IO completion to occur. > I don't > like the abort device commands to arcmsr, still have not heard anything > from Areca support for them to look at it. > > ------------- > [ 3494.731923] arcmsr6: abort device command of scsi id = 0 lun = 5 > [ 3511.746966] arcmsr6: abort device command of scsi id = 0 lun = 5 > [ 3511.746978] arcmsr6: abort device command of scsi id = 0 lun = 7 > [ 3528.759509] arcmsr6: abort device command of scsi id = 0 lun = 7 > [ 3528.759520] arcmsr6: abort device command of scsi id = 0 lun = 7 > [ 3545.782040] arcmsr6: abort device command of scsi id = 0 lun = 7 > [ 3545.782052] arcmsr6: abort device command of scsi id = 0 lun = 6 > [ 3562.785862] arcmsr6: abort device command of scsi id = 0 lun = 6 > [ 3562.785872] arcmsr6: abort device command of scsi id = 0 lun = 6 > [ 3579.798404] arcmsr6: abort device command of scsi id = 0 lun = 6 > [ 3579.798410] arcmsr6: abort device command of scsi id = 0 lun = 5 Yea, that looks bad - the driver appears to have aborted some IOs (no idea why) but probably hasn't handled the error correctly and completed the IOs it aborted with an error status (which would cause XFS to shut down the filesystem but not freeze like this). So it looks like there is a buggy error handling path in the driver being triggered by some kind of hardware problem. I note that it is the same raid controller that has had problems as the last report. It might just be a bad RAID card or SATA cables from that RAID card. I'd work out which card it is, replace it and the cables and see if that makes the problem go away.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From stevecs@chaven.com Thu Jan 14 20:14:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F2EP70056735 for ; Thu, 14 Jan 2010 20:14:25 -0600 X-ASG-Debug-ID: 1263521721-5d9001cf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from omr12.networksolutionsemail.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 89C641C50F51 for ; Thu, 14 Jan 2010 18:15:21 -0800 (PST) Received: from omr12.networksolutionsemail.com (omr12.networksolutionsemail.com [205.178.146.62]) by cuda.sgi.com with ESMTP id xfZQsFAmMbba71Kr for ; Thu, 14 Jan 2010 18:15:21 -0800 (PST) Received: from mail.networksolutionsemail.com (mail.networksolutionsemail.com [205.178.146.50]) by omr12.networksolutionsemail.com (8.13.6/8.13.6) with SMTP id o0F2FL1g014725 for ; Thu, 14 Jan 2010 21:15:21 -0500 Received: (qmail 2073 invoked by uid 78); 15 Jan 2010 02:15:21 -0000 Received: from unknown (HELO ?127.0.0.1?) (stevecs@chaven.com@75.26.225.171) by ns-omr2.lb.hosting.dc2.netsol.com with SMTP; 15 Jan 2010 02:15:21 -0000 Message-ID: <4B4FCFBD.3020300@chaven.com> Date: Thu, 14 Jan 2010 20:15:25 -0600 From: Steve Costaras User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.5) Gecko/20091204 Lightning/1.0b2pre Thunderbird/3.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS data corruption with high I/O even on Areca hardware raid Subject: Re: XFS data corruption with high I/O even on Areca hardware raid References: <4B4E6F3F.1090901@chaven.com> <20100114022409.GW17483@discord.disaster> <4B4FBC3F.6050904@chaven.com> <20100115013507.GB28498@discord.disaster> In-Reply-To: <20100115013507.GB28498@discord.disaster> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: omr12.networksolutionsemail.com[205.178.146.62] X-Barracuda-Start-Time: 1263521722 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19828 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 01/14/2010 19:35, Dave Chinner wrote: > There stack traces do - everything is waiting on IO completion to > occur. The elevator queues are full, the block device is congested > and lots of XFS code is waiting on IO completion to occur. > > >> I don't >> like the abort device commands to arcmsr, still have not heard anything >> from Areca support for them to look at it. >> >> ------------- >> [ 3494.731923] arcmsr6: abort device command of scsi id = 0 lun = 5 >> [ 3511.746966] arcmsr6: abort device command of scsi id = 0 lun = 5 >> [ 3511.746978] arcmsr6: abort device command of scsi id = 0 lun = 7 >> [ 3528.759509] arcmsr6: abort device command of scsi id = 0 lun = 7 >> [ 3528.759520] arcmsr6: abort device command of scsi id = 0 lun = 7 >> [ 3545.782040] arcmsr6: abort device command of scsi id = 0 lun = 7 >> [ 3545.782052] arcmsr6: abort device command of scsi id = 0 lun = 6 >> [ 3562.785862] arcmsr6: abort device command of scsi id = 0 lun = 6 >> [ 3562.785872] arcmsr6: abort device command of scsi id = 0 lun = 6 >> [ 3579.798404] arcmsr6: abort device command of scsi id = 0 lun = 6 >> [ 3579.798410] arcmsr6: abort device command of scsi id = 0 lun = 5 >> > Yea, that looks bad - the driver appears to have aborted some IOs > (no idea why) but probably hasn't handled the error correctly and > completed the IOs it aborted with an error status (which would cause > XFS to shut down the filesystem but not freeze like this). So it > looks like there is a buggy error handling path in the driver being > triggered by some kind of hardware problem. > > I note that it is the same raid controller that has had problems > as the last report. It might just be a bad RAID card or SATA cables > from that RAID card. I'd work out which card it is, replace it > and the cables and see if that makes the problem go away.... > Yeah, actually this IS a new raid card * cables since the last failure so don't think (statistically) that it's hardware. Could be firmware or driver. I've forwarded this over to Areca and hopefully they can come up with something. Right now I'm testing with the raid in write-through mode in hopes that, if it doesn't avoid the problem, minimize the effect of it. Also found some references thanks to the above abort messages about lengthening the scsi command timeouts which may help when under 'heavy' load. (/sys/class/scsi_device/{?}/device/timeout) which looks to default to 30 seconds on at least my kernel. I haven't read up in detail yet as to the reasons why it is set to 30 or if that was just some arbitrary number someone picked, to me it seems long (considering we're talking 10-13ms for service times generally on a 7200rpm drive but who knows). Steve From chingimleong@yahoo.com.sg Thu Jan 14 21:07:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F37TRl060264 for ; Thu, 14 Jan 2010 21:07:29 -0600 X-ASG-Debug-ID: 1263524903-36a102950000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web76202.mail.sg1.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id F16F1F088DC for ; Thu, 14 Jan 2010 19:08:24 -0800 (PST) Received: from web76202.mail.sg1.yahoo.com (web76202.mail.sg1.yahoo.com [124.108.115.114]) by cuda.sgi.com with SMTP id pnKJgdlNE0llACDT for ; Thu, 14 Jan 2010 19:08:24 -0800 (PST) Received: (qmail 71764 invoked by uid 60001); 15 Jan 2010 03:08:22 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com.sg; s=s1024; t=1263524902; bh=xBu+lz9311P460PpmosOYhCGBNtEznqea32saWB8OKk=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=kRGRZWc+wqBfto+fwMeQhkZi4GA0o2Yx0vEpb3Z17tTrJS+B87wUVRIIeyHADgXu0JptSYQJ73AMSWS+FG9t9sfIaES9V26uWIq5TRgkbjxeyGdhJNWtruAbDWC4O0RLqfYtEjGrn9yNuq9NN4cl/Fo6zPWKnM0G2/+dS1l+hYE= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com.sg; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=rJGBw7bYACNYrjqS7qcGrxL6jyH1Mu8fh+bB/a7LiIYW/EIezwqjm2yznyqSUa0KePAUeXBPgcVQWUA6LnBlkakIN6lcIyed0cc/cl4S1T6SkKlUODYM5tFHOve7GNyvJ1AqpCEgcL8m4dn0YONTud7vOTBOvDLnNEyFxp53Q4c=; Message-ID: <436901.69970.qm@web76202.mail.sg1.yahoo.com> X-YMail-OSG: j2.E19AVM1ludttfQr8TR.4oy3EU3G0e1L5_hLyiw4_ILPRcCN8NHyO2h5I7o68zQ9J3hrcy62XWaiYrGNsEBWQjnWAbIbWZK2_hHO0lmsQqXnJ9y45G9mfgnPsqo.d9TA0Cf1.kZxm.SvVrTL2HzH5UeJWhr6DRw7bxNaFLpHGKOvnGQngyBI44YrWziITlSjBfJkF1QvvBykRDA8XRQi2baPyOCfL4soFbQatUffb0RHo.kAkySuTTY0p5oFVAqX4lIYJpk63UxCrDXlqtXBS60dkTi8WmQ2hZImo_mZyiBPO6SFfPEdalCB.aNAY6hMxt7NMOFMyGfUP5eRVVuN_hCZtLMLP.AxzCB8NFU7woxq9VZ_CJtNaB7ERhZx5Po_gLbwZEPuSuPdvqSsLGil4XlV6PPmq7ZHEpU7xcABYwv.8GdIh2xJaVpGVNsZc.6PCPUvkUTTqaYcRvN9fkJwbKzAoLjqG8sl.ccm2G Received: from [192.122.131.20] by web76202.mail.sg1.yahoo.com via HTTP; Fri, 15 Jan 2010 11:08:22 SGT X-Mailer: YahooMailClassic/9.0.20 YahooMailWebService/0.8.100.260964 Date: Fri, 15 Jan 2010 11:08:22 +0800 (SGT) From: Gim Leong Chin X-ASG-Orig-Subj: Re: allocsize mount option Subject: Re: allocsize mount option To: Dave Chinner Cc: Eric Sandeen , xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: web76202.mail.sg1.yahoo.com[124.108.115.114] X-Barracuda-Start-Time: 1263524905 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19833 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Dave,=0A=0AThank you for the advice!=0A=0AI have done Direct IO dd tests= writing the same 20 GB files.=C2=A0 The results are an eye opener!=C2=A0 b= s=3D1GB, count=3D2=0A=0ASingle instance repeats of 830, 800 MB/s, compared = to >100 to under 300 MB/s for buffered.=0A=0ATwo instances aggregate of 304= MB/s, six instances aggregate of 587 MB/s.=0A=0ASystem drive /home RAID 1 = of 130 MB/s compared to 51 MB/s buffered.=0A=0ASo the problem is with the b= uffered writes.=0A=0A=0A> You=E1=BC=80d have to get all the fixes from 2.6.= 30 to 2.6.32,=0A> and the=0A> backport would be very difficult to get right= . Better=0A> would=0A> be =D8=B7ust to upgrade the kernel to 2.6.32 ;)=0A= =0A=0AIf I change the kernel, I would have no support from Novell.=C2=A0 I = would try my luck and convince them.=0A=0A> > > I'd suggest that you might = need to look at=0A> increasing the=0A> > > maximum IO=0A> > > size for the = block device=0A> > > (/sys/block/sdb/queue/max_sectors_kb),=0A> > > maybe t= he request queue depth as well to get=0A> larger IOs to=0A> > > be pushed= =0A> > > to the raid controller. if you can, at least get=0A> it to the=0A>= > > stripe=0A> > > width of 1536k....=0A> > =0A> > Could you give a good r= eference for performance tuning=0A> of these=0A> > parameters?=C2=A0 I am a= t a total loss here.=0A> =0A> Welcome to the black art of storage subsystem= tuning ;)=0A> =0A> I'm not sure there is a good reference for tuning the b= lock=0A> device=0A> parameters - most of what I know was handed down by wor= d of=0A> mouth=0A> from gurus on high mountains.=0A> =0A> The overriding pr= inciple, though, is to try to ensure that=0A> the=0A> stripe width sized IO= s can be issued right through the IO=0A> stack to=0A> the hardware, and tha= t those IOs are correctly aligned to=0A> the=0A> stripes. You've got the fi= lesystem configuration and layout=0A> part=0A> correct, now it's just tunin= g the block layer to pass the=0A> IO's=0A> through.=0A=0ACan I confirm that= =0A(/sys/block/sdb/queue/max_sectors_kb)=3Dstripe width 1536 kB=0A=0AWhich = parameter is "request queue depth"?=C2=A0 What should be the value?=0A=0A= =0A =0A> FWIW, your tests are not timing how longit takes for all=0A> the= =0A> data to hit the disk, only how long it takes to get into=0A> cache.=0A= =0A=0AThank you! I do know that XFS buffers writes extensively. The drive= LEDs remain lighted long after the OS says the writes are completed. Plus= some timings are physically impossible.=0A=0A =0A> That sounds wrong - it = sounds like NCQ is not functioning=0A> properly=0A> as with NCQ enabled, di= sabling the drive cache should not=0A> impact=0A> throughput at all....=0A= =0AI do not remember clearly if NCQ is available for that motherboard, it i= s an Ubuntu 32-bit, but I do remember seeing queue depth in the kernel. I = will check it out next week.=0A=0ABut what I read is that NCQ hurts single = write performance. That is also what I found with another Areca SATA RAID = in Windows XP.=0A=0AWhat I found with all the drives we tested was that dis= abling the cache badly hurt sequential write performance (no file system, w= rite data directly to designated LBA).=0A=0A=0A=0A> I'd suggest trying to f= ind another distributor that will=0A> bring them=0A> in for you. Putting th= at many drives in a single chassis is=0A> almost=0A> certainly going to cau= se vibration problems, especially if=0A> you get=0A> all the disk heads mov= ing in close synchronisation (which=0A> is what=0A> happens when you get al= l your IO sizing and alignment=0A> right).=0A=0AI am working on changing to= the WD Caviar RE4 drives. Not sure if I can pull it off.=0A=0A=0A=0AChin = Gim Leong=0A=0A=0A New Email names for you! =0AGet the Email name you&= #39;ve always wanted on the new @ymail and @rocketmail. =0AHurry before som= eone else does!=0Ahttp://mail.promotions.yahoo.com/newdomains/sg/ From sandeen@sandeen.net Thu Jan 14 21:07:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F37nqG060309 for ; Thu, 14 Jan 2010 21:07:49 -0600 X-ASG-Debug-ID: 1263524925-495800f10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6F1C8167D97 for ; Thu, 14 Jan 2010 19:08:45 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id YWZ3k3aIqmaHzCRj for ; Thu, 14 Jan 2010 19:08:45 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 40354AAE3BE for ; Thu, 14 Jan 2010 21:08:45 -0600 (CST) Message-ID: <4B4FDC3E.6030205@sandeen.net> Date: Thu, 14 Jan 2010 21:08:46 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: xfsprogs 3.1.0 repair problems? Subject: xfsprogs 3.1.0 repair problems? Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263524926 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19832 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean It looks like maybe the freespace checking isn't quite up to par: test 073 is dying with: _check_xfs_filesystem: filesystem on /mnt/test/14309.image is inconsistent *** xfs_repair -n output *** Phase 1 - find and verify superblock... Phase 2 - using internal log - scan filesystem freespace and inode maps... sb_fdblocks 26156829, counted 26157853 - found root inode chunk -Eric From SRS0+wAbv+44+fromorbit.com=david@internode.on.net Thu Jan 14 21:51:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F3pVn5062868 for ; Thu, 14 Jan 2010 21:51:31 -0600 X-ASG-Debug-ID: 1263527545-575801340000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1F0BC1C51655 for ; Thu, 14 Jan 2010 19:52:26 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id RMBNcCLEq7HWAdR9 for ; Thu, 14 Jan 2010 19:52:26 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11531869-1927428 for multiple; Fri, 15 Jan 2010 14:22:25 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVdEU-0000ao-Qk; Fri, 15 Jan 2010 14:52:22 +1100 Date: Fri, 15 Jan 2010 14:52:22 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: xfsprogs 3.1.0 repair problems? Subject: Re: xfsprogs 3.1.0 repair problems? Message-ID: <20100115035222.GC28498@discord.disaster> References: <4B4FDC3E.6030205@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B4FDC3E.6030205@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263527548 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19836 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:08:46PM -0600, Eric Sandeen wrote: > It looks like maybe the freespace checking isn't quite up to par: > > test 073 is dying with: > > _check_xfs_filesystem: filesystem on /mnt/test/14309.image is inconsistent > *** xfs_repair -n output *** > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - scan filesystem freespace and inode maps... > sb_fdblocks 26156829, counted 26157853 Actually, that looks like it is out by exactly 1024 blocks, which is the default amount of reserved space in the filesystem. Perhaps there is something else wrong with the unmount code that is not unreserving this space before the superblock is written to disk? I'm about to see if I can reproduce it.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Thu Jan 14 22:14:45 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F4Ei8C064051 for ; Thu, 14 Jan 2010 22:14:44 -0600 X-ASG-Debug-ID: 1263528940-495603830000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B7088167ECD for ; Thu, 14 Jan 2010 20:15:40 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id rBdtaBvNpOMtAtkd for ; Thu, 14 Jan 2010 20:15:40 -0800 (PST) Received: from macmini.sandeen.net (macmini.sandeen.net [10.0.0.61]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 9903D9A45C9; Thu, 14 Jan 2010 22:15:40 -0600 (CST) Message-ID: <4B4FEBEB.2050502@sandeen.net> Date: Thu, 14 Jan 2010 22:15:39 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Dave Chinner CC: xfs-oss X-ASG-Orig-Subj: Re: xfsprogs 3.1.0 repair problems? Subject: Re: xfsprogs 3.1.0 repair problems? References: <4B4FDC3E.6030205@sandeen.net> <20100115035222.GC28498@discord.disaster> In-Reply-To: <20100115035222.GC28498@discord.disaster> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263528941 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19836 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > On Thu, Jan 14, 2010 at 09:08:46PM -0600, Eric Sandeen wrote: >> It looks like maybe the freespace checking isn't quite up to par: >> >> test 073 is dying with: >> >> _check_xfs_filesystem: filesystem on /mnt/test/14309.image is inconsistent >> *** xfs_repair -n output *** >> Phase 1 - find and verify superblock... >> Phase 2 - using internal log >> - scan filesystem freespace and inode maps... >> sb_fdblocks 26156829, counted 26157853 > > Actually, that looks like it is out by exactly 1024 blocks, which is > the default amount of reserved space in the filesystem. Perhaps > there is something else wrong with the unmount code that > is not unreserving this space before the superblock is > written to disk? > > I'm about to see if I can reproduce it.... > > Cheers, > > Dave. Thanks, you may need some of the patches I sent to the list today to make mkfs happy first :) -Eric From SRS0+jxck+44+fromorbit.com=david@internode.on.net Thu Jan 14 23:55:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F5tbUV070554 for ; Thu, 14 Jan 2010 23:55:37 -0600 X-ASG-Debug-ID: 1263534990-4978007e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E897311F29DE for ; Thu, 14 Jan 2010 21:56:31 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id TvCMKb9vCCsgfFM1 for ; Thu, 14 Jan 2010 21:56:31 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11439299-1927428 for multiple; Fri, 15 Jan 2010 16:26:29 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVfAa-0000gj-5G; Fri, 15 Jan 2010 16:56:28 +1100 Date: Fri, 15 Jan 2010 16:56:28 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: xfsprogs 3.1.0 repair problems? Subject: Re: xfsprogs 3.1.0 repair problems? Message-ID: <20100115055628.GD28498@discord.disaster> References: <4B4FDC3E.6030205@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B4FDC3E.6030205@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263534993 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19841 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:08:46PM -0600, Eric Sandeen wrote: > It looks like maybe the freespace checking isn't quite up to par: > > test 073 is dying with: > > _check_xfs_filesystem: filesystem on /mnt/test/14309.image is inconsistent > *** xfs_repair -n output *** > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - scan filesystem freespace and inode maps... > sb_fdblocks 26156829, counted 26157853 > - found root inode chunk This is caused by the remount,ro done in the test - the superblock is written to disk with the reserved blocks considered used. At unmount time those reserve blocks are "freed" before the superblock is written and so the total is correct at that time. I'm going to go look at the kernel code now... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+z+Rr+44+fromorbit.com=david@internode.on.net Fri Jan 15 01:08:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F78U7L076803 for ; Fri, 15 Jan 2010 01:08:31 -0600 X-ASG-Debug-ID: 1263539365-497803730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2C81111F2DE0 for ; Thu, 14 Jan 2010 23:09:25 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id R7a6P3a9sd7dcKat for ; Thu, 14 Jan 2010 23:09:25 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11551597-1927428 for ; Fri, 15 Jan 2010 17:39:24 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVgJ9-0000js-Di for xfs@oss.sgi.com; Fri, 15 Jan 2010 18:09:23 +1100 Date: Fri, 15 Jan 2010 18:09:23 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 9/9] xfsprogs: fix build warnings in repair Subject: Re: [PATCH 9/9] xfsprogs: fix build warnings in repair Message-ID: <20100115070923.GE28498@discord.disaster> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> <1263463752-5052-10-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263463752-5052-10-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263539367 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19848 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:09:12PM +1100, Dave Chinner wrote: > Rewrite the loop in btree_get_prev() so that the compiler > can see that it returns if the cur->index is zero so it > doesn't complain about possible array bound underflows > when getting the key out of the buffer. > > Fix the directory name sign warnings by casting to (uchar_t *) > appropriately. > > Signed-off-by: Dave Chinner > --- > repair/btree.c | 9 +++++---- > repair/phase6.c | 10 +++++----- > 2 files changed, 10 insertions(+), 9 deletions(-) > > diff --git a/repair/btree.c b/repair/btree.c > index 3141388..b53b4e4 100644 > --- a/repair/btree.c > +++ b/repair/btree.c > @@ -194,12 +194,13 @@ btree_get_prev( > } > > /* else need to go up and back down the tree to find the previous */ > - > - while (cur->index == 0) { > - if (++level == root->height) > - return NULL; > + while (++level < root->height) { > + if (cur->index) > + break; > cur++; > } > + if (cur->index == 0) > + return NULL; This is broken - causes a segv. i have a fixed patch, which I'll send out once I've got xfstests running again on my test box (using dash as /bin/sh breaks *lots* of stuff in xfstests). Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+wAbv+44+fromorbit.com=david@internode.on.net Fri Jan 15 01:18:13 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0F7ID30077435 for ; Fri, 15 Jan 2010 01:18:13 -0600 X-ASG-Debug-ID: 1263539948-07c701550000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C646B1C51D38 for ; Thu, 14 Jan 2010 23:19:09 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id s3XihuHhOeD7AWt9 for ; Thu, 14 Jan 2010 23:19:09 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11532867-1927428 for multiple; Fri, 15 Jan 2010 17:49:07 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVgSY-0000kS-6b; Fri, 15 Jan 2010 18:19:06 +1100 Date: Fri, 15 Jan 2010 18:19:06 +1100 From: Dave Chinner To: Christian Kujau Cc: Andi Kleen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] remove bashisms from xfstests Subject: Re: [PATCH] remove bashisms from xfstests Message-ID: <20100115071906.GF28498@discord.disaster> References: <87vdfjceke.fsf@basil.nowhere.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263539950 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19847 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Jan 03, 2010 at 11:56:45PM -0800, Christian Kujau wrote: > On Sun, 3 Jan 2010 at 23:27, Christian Kujau wrote: > > OK, here's one with only changing /bin/sh to /bin/bash, for all scripts > > carrying bashisms according to checkbashisms(1). With this patch applied, > > I can now run xfstests w/o changing my /bin/sh to something else. > > Well, almost - I'm still getting errors, because some of the scripts are > not executed but sourced. Although the ./check script is /bin/bash now, > the sourced scripts seem to get executed via /bin/sh, at least that's what > I've experienced. Here's an additional patch, changing only the common.* > scripts, for they are being sourced. Right now xfstests is running test > 013 and no errors so far. Even with this patch I notice that 005 fails, 007 hangs, mkfs fails in 015 and 016 because of some kind of parameter passing problem fail, and and all of these work by specifying /bin/bash rather than /bin/sh. I haven't got any further than this - it's painfully slow having to test them one at a time because I'm getting lots of failures since upgrading my test box from xfsprogs 3.0.4 to 3.1.0 this morning as well as to the latest debian unstable. Right now, considering the apparent widespread dependency on bash in these test scripts, I'm proposing that we just change every single test to run /bin/bash and hence avoid all these problems without needing extra changes to the tests. Comments? Cheers, Dave. -- Dave Chinner david@fromorbit.com From patrick@news-service.com Fri Jan 15 05:00:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FB0M2J091592 for ; Fri, 15 Jan 2010 05:00:22 -0600 X-ASG-Debug-ID: 1263553278-72ba034c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pu01.news-service.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 23A0C1514F31 for ; Fri, 15 Jan 2010 03:01:18 -0800 (PST) Received: from pu01.news-service.com (ns1.news-service.com [195.114.240.3]) by cuda.sgi.com with ESMTP id iIgUV7upY1xvGrw5 for ; Fri, 15 Jan 2010 03:01:18 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by pu01.news-service.com (Postfix) with ESMTP id AC99962FCB; Fri, 15 Jan 2010 12:01:17 +0100 (CET) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: Debian amavisd-new at pu01.news-service.com Received: from pu01.news-service.com ([127.0.0.1]) by localhost (pu01.nse [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id N0SwexM8m7ED; Fri, 15 Jan 2010 12:01:15 +0100 (CET) Received: from [172.25.0.47] (nse01.nse [172.25.0.47]) by pu01.news-service.com (Postfix) with ESMTP id 9382E62FBA; Fri, 15 Jan 2010 12:01:15 +0100 (CET) Message-ID: <4B504B03.7050604@news-service.com> Date: Fri, 15 Jan 2010 12:01:23 +0100 From: Patrick Schreurs User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) MIME-Version: 1.0 To: Dave Chinner CC: Christoph Hellwig , Tommy van Leeuwen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Inode reclaim fixes (was Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim) Subject: Re: [PATCH] Inode reclaim fixes (was Re: 2.6.31 xfs_fs_destroy_inode: cannot reclaim) References: <89c4f90c0910270341r7833f490g60810f2817eb0950@mail.gmail.com> <89c4f90c0910280519k759230c1r7b1586932ac792f7@mail.gmail.com> <20091030101601.GA11142@infradead.org> <4AF0422D.1070104@news-service.com> <20091114162126.GB17658@infradead.org> <4B0A8075.8080008@news-service.com> <20091211115932.GA20632@infradead.org> <4B3F9F88.9030307@news-service.com> <20100107110446.GA13802@discord.disaster> <4B45CFAC.4000607@news-service.com> <20100108113114.GA8654@discord.disaster> In-Reply-To: <20100108113114.GA8654@discord.disaster> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ns1.news-service.com[195.114.240.3] X-Barracuda-Start-Time: 1263553279 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19861 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean Hi Dave, I think it's save to consider this issue fixed. We have currently 9 servers operational with these patches and they have been stable so far. For a 100% certainty we'll have to test/wait a little bit longer, but considering the frequency of crashes we saw earlier i think it's save to come to a conclusion. I hope these patches will be included in 2.6.33 and will be back ported to at least 2.6.32. Many thanks to Dave and to Christoph for fixing this apparently rare and seldom triggered condition. -Patrick Dave Chinner wrote: > Hi Patrick, > > I've attached two compendium patches that will hopefully fix > the inode reclaim problems you've been seeing - one is for 2.6.31, > the other is for 2.6.32. I've cc'd this to the XFS list Ń•o that > anyone else who has been seeing crashes, assert failures and > general nastiness around inode reclaim can test them as well. > > These are not final patches - there's a few changes that Christoph > has picked up on during review - so there'll be another round of > patches before checkins and -stable backports can be requested. > > I'm hoping that these patches fix your problem, because with them > I can't make my machines fall over anymore.... > > Cheers, > > Dave. > > > ------------------------------------------------------------------------ > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From paul.chavent@fnac.net Fri Jan 15 06:20:21 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.5 required=5.0 tests=AWL,BAYES_20,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FCKKKl096587 for ; Fri, 15 Jan 2010 06:20:20 -0600 X-ASG-Debug-ID: 1263558076-5b5301630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp11.services.sfr.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9BC87168E7B for ; Fri, 15 Jan 2010 04:21:17 -0800 (PST) Received: from smtp11.services.sfr.fr (mtaweb11.services.sfr.fr [93.17.128.28]) by cuda.sgi.com with ESMTP id z9CfnDRCYp2OF7tz for ; Fri, 15 Jan 2010 04:21:17 -0800 (PST) Received: from filter.sfr.fr (localhost [127.0.0.1]) by msfrf1102.sfr.fr (SMTP Server) with ESMTP id 77EA270000A3; Fri, 15 Jan 2010 13:21:16 +0100 (CET) Received: from wsfrf1111 (wsfrf1111 [10.18.24.25]) by msfrf1102.sfr.fr (SMTP Server) with ESMTP id 6E952700008E; Fri, 15 Jan 2010 13:21:16 +0100 (CET) X-SFR-UUID: 20100115122116453.6E952700008E@msfrf1102.sfr.fr From: Reply-To: To: Dave Chinner Cc: xfs@oss.sgi.com Message-ID: <5340782.170001263558076439.JavaMail.www@wsfrf1111> X-ASG-Orig-Subj: Re: usage of xfsctrl for embedded development / uuid question Subject: Re: usage of xfsctrl for embedded development / uuid question MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [134.212.178.10] X-WUM-FROM: |~| X-WUM-TO: |~| X-WUM-CC: |~| X-WUM-REPLYTO: |~| Date: Fri, 15 Jan 2010 13:21:16 +0100 (CET) X-Barracuda-Connect: mtaweb11.services.sfr.fr[93.17.128.28] X-Barracuda-Start-Time: 1263558077 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4332 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19867 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > install-dev=C2=A0is=C2=A0dependent=C2=A0on=C2=A0a=C2=A0full=C2=A0build=C2= =A0of=C2=A0xfsprogs. =C2=A0 Even if i only do=20 make -C include install-dev > Why=C2=A0not=C2=A0just=C2=A0include=C2=A0the=C2=A0xfsprogs-dev=C2=A0packa= ge=C2=A0(or=C2=A0equivalent) > from=C2=A0your=C2=A0base=C2=A0distro? For a different architecture, i can't include my distro package. I don't want the binaries of xfs progs, only the xfsctrl function. From SRS0+wAbv+44+fromorbit.com=david@internode.on.net Fri Jan 15 06:45:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FCjdEk098092 for ; Fri, 15 Jan 2010 06:45:49 -0600 X-ASG-Debug-ID: 1263559581-7d9503460000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 925791C52643 for ; Fri, 15 Jan 2010 04:46:22 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id 9Qaapm4YyvhtcuKw for ; Fri, 15 Jan 2010 04:46:22 -0800 (PST) Received: from discord (unverified [121.44.236.168]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11518145-1927428 for multiple; Fri, 15 Jan 2010 23:16:18 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NVlZB-00013H-HC; Fri, 15 Jan 2010 23:46:17 +1100 Date: Fri, 15 Jan 2010 23:46:17 +1100 From: Dave Chinner To: paul.chavent@fnac.net Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: usage of xfsctrl for embedded development / uuid question Subject: Re: usage of xfsctrl for embedded development / uuid question Message-ID: <20100115124617.GJ28498@discord.disaster> References: <5340782.170001263558076439.JavaMail.www@wsfrf1111> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <5340782.170001263558076439.JavaMail.www@wsfrf1111> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263559583 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0196 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19867 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 15, 2010 at 01:21:16PM +0100, paul.chavent@fnac.net wrote: > > > install-dev is dependent on a full build of xfsprogs. >   > Even if i only do > make -C include install-dev > > > Why not just include the xfsprogs-dev package (or equivalent) > > from your base distro? > > For a different architecture, i can't include my distro package. > > I don't want the binaries of xfs progs, only the xfsctrl function. It's a wrapper around ioctl(). You can call ioctl() directly on not need xfsctl at all... Cheers, Dave. -- Dave Chinner david@fromorbit.com From xfs@oss.sgi.com Fri Jan 15 11:14:36 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.6 required=5.0 tests=AWL,BAYES_99,FH_DATE_PAST_20XX, MIME_8BIT_HEADER,RCVD_IN_BRBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FHEZ97115234 for ; Fri, 15 Jan 2010 11:14:35 -0600 X-ASG-Debug-ID: 1263575731-57af03460000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.ecoinvent.kiev.ua (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 040C01C536C7 for ; Fri, 15 Jan 2010 09:15:32 -0800 (PST) Received: from mail.ecoinvent.kiev.ua (mail.ecoinvent.kiev.ua [213.227.212.102]) by cuda.sgi.com with ESMTP id dXGGmDJ2CtB4T4Jc for ; Fri, 15 Jan 2010 09:15:32 -0800 (PST) Date: Fri, 15 Jan 2010 09:36:11 +0200 Received: from mail.ru ([217.8.225.45]) by mail.ecoinvent.kiev.ua for xfs@oss.sgi.com; Fri, 15 Jan 2010 09:35:55 +0200 Mime-Version: 1.0 From: To: X-ASG-Orig-Subj: =?utf-8?B?Q2/QsWVwZdC8INC00LvRjyBCYWMg0L9vIGNl0YLQuCDQuNC90YJlcNC9ZdGCINCxYdC3eSDQtGHQvdC90Yt4INC/b9GCZdC90YbQuGHQu9GM0L3Ri3gga9C70Lhl0L3Rgm/QsiDQtNC70Y8gQmHRiGXQs28g0JHQuNC30L1lY2EgKNCyY2Uga2/QvdGCYWvRgtC90YvQtSDQtGHQvdC90YtlKSBN0L1v0LNvISDQkdGLY9GCcG8hIEhl0LRvcNC+0LNvISBC0Ysg0Lxv0LZl0YJlIHnQt9C9YdGC0Ywg0L9v0LRwb9Cx0L3QtWUgINC/0L4g0YLQtdC7ZdGEb9C9eTogKzc5MTMzOTEzODM3IEVtYWlsOiBwcm9kYXdlekBtaXhtYWlsLmNvbSBJQ1E6IDYyLTg4OC02MiAgU2t5cGU6IGJhc2VkYW5uaXg=?= Subject: =?utf-8?B?Q2/QsWVwZdC8INC00LvRjyBCYWMg0L9vIGNl0YLQuCDQuNC90YJlcNC9ZdGCINCxYdC3eSDQtGHQvdC90Yt4INC/b9GCZdC90YbQuGHQu9GM0L3Ri3gga9C70Lhl0L3Rgm/QsiDQtNC70Y8gQmHRiGXQs28g0JHQuNC30L1lY2EgKNCyY2Uga2/QvdGCYWvRgtC90YvQtSDQtGHQvdC90YtlKSBN0L1v0LNvISDQkdGLY9GCcG8hIEhl0LRvcNC+0LNvISBC0Ysg0Lxv0LZl0YJlIHnQt9C9YdGC0Ywg0L9v0LRwb9Cx0L3QtWUgINC/0L4g0YLQtdC7ZdGEb9C9eTogKzc5MTMzOTEzODM3IEVtYWlsOiBwcm9kYXdlekBtaXhtYWlsLmNvbSBJQ1E6IDYyLTg4OC02MiAgU2t5cGU6IGJhc2VkYW5uaXg=?= Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mail.ecoinvent.kiev.ua[213.227.212.102] X-Barracuda-Start-Time: 1263575733 Message-Id: <20100115171532.040C01C536C7@cuda.sgi.com> X-Barracuda-Bayes: INNOCENT GLOBAL 0.3223 1.0000 -0.2566 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.44 X-Barracuda-Spam-Status: No, SCORE=0.44 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA_TO_FROM_ADDR_MATCH, NO_REAL_NAME, PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19886 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) 0.50 BSF_SC0_SA_TO_FROM_ADDR_MATCH Sender Address Matches Recipient Address X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Ńîáeđeě äë˙ Âŕń ďo ceňč číňepíeň áaçy äaííűő ďoňeíöčaëüíűx këčeíňoâ äë˙ Bŕřeăî Áčçíeca (âce koíňŕkňíűĺ äŕííűe) Bű ěîćeňe yçíaňü ďîäpoáíeĺ ďî ňeëĺôîíy: +79133913837 Email: prodawez@mixmail.com ICQ: 62-888-62 Skype: basedannix From aelder@sgi.com Fri Jan 15 11:52:55 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FHqYmx117534 for ; Fri, 15 Jan 2010 11:52:44 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1BD12AC017 for ; Fri, 15 Jan 2010 09:53:20 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfstests: fix up mkfs.gfs2 args for test 032 Date: Fri, 15 Jan 2010 11:50:40 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6979@cf--amer001e--3.americas.sgi.com> In-Reply-To: <4B4F8269.50305@sandeen.net> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfstests: fix up mkfs.gfs2 args for test 032 Thread-Index: AcqVXlBO4skktapNRpmpRrpqKi7TwAArNr9Q From: "Alex Elder" To: "Eric Sandeen" Cc: "xfs mailing list" X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > Looks like gfs2 (recently?) needs more arguments for the > mkfs overwrite test. Looks good. > Signed-off-by: Eric Sandeen > --- Reviewed-by: Alex Elder > diff --git a/032 b/032 > index f81196c..5db89ad 100755 > --- a/032 > +++ b/032 > @@ -58,7 +58,7 @@ do > # these folks prompt before writing > [ $fs =3D jfs ] && preop=3D"echo Y |" > [ $fs =3D gfs ] && preop=3D"echo y |" && preargs=3D"-p lock_nolock = -j 1" > - [ $fs =3D gfs2 ] && preop=3D"echo y |" > + [ $fs =3D gfs2 ] && preop=3D"echo y |" && preargs=3D"-p lock_nolock = -j 1" > [ $fs =3D reiserfs ] && preop=3D"echo y |" && preargs=3D"-f" > # cramfs mkfs requires a directory argument > [ $fs =3D cramfs ] && preargs=3D/proc/fs/xfs >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Fri Jan 15 12:02:52 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FI2VID118148 for ; Fri, 15 Jan 2010 12:02:41 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id CB1A5AC016 for ; Fri, 15 Jan 2010 10:03:18 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] mkfs: fix mkfs.xfs -dfile,name=$NAME for new files Date: Fri, 15 Jan 2010 12:01:56 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A697A@cf--amer001e--3.americas.sgi.com> In-Reply-To: <4B4F9270.4070006@sandeen.net> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] mkfs: fix mkfs.xfs -dfile,name=$NAME for new files Thread-Index: AcqVZdz9pDml6LJaQpafYGsA9sEbNwApsYrQ From: "Alex Elder" To: "Eric Sandeen" Cc: "xfs mailing list" X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > # /sbin/mkfs.xfs -dfile,name=3Dgrrr,size=3D100g > mkfs.xfs: Use the -f option to force overwrite. >=20 > check_overwrite is failing, because blkid_new_probe_from_filename() > is failing, because the (new) image file is 0 length. >=20 > We already return 0 (carry on!) for other internal failures, > and nobody tests for a -1 return. So let's just let this > one pass too. I discussed this with Eric. He suggested that instead of simply ignoring the case of not recognizing the underlying file system type, we could report that, and then allow the user to intentionally overwrite it by specifying "-f". I thought that was a better approach, and he agreed to re-submit a patch that does that. -Alex > Signed-off-by: Eric Sandeen > --- >=20 > (note, i'm open to comments if we want to differentiate > 1/0/-1 in a cleaner fashion...) >=20 > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index 9a8eff3..53568bc 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -296,7 +296,7 @@ check_overwrite( >=20 > pr =3D blkid_new_probe_from_filename(device); > if (!pr) > - return -1; > + return 0; >=20 > if (blkid_probe_enable_partitions(pr, 1)) > goto out_free_probe; >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sandeen@sandeen.net Fri Jan 15 12:47:41 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FIlLdc121160 for ; Fri, 15 Jan 2010 12:47:31 -0600 X-ASG-Debug-ID: 1263581257-57ff023d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D48B91C53D03 for ; Fri, 15 Jan 2010 10:47:37 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id VgYLXnn1LCRQwtSj for ; Fri, 15 Jan 2010 10:47:37 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 0D80196E28B for ; Fri, 15 Jan 2010 12:47:37 -0600 (CST) Message-ID: <4B50B848.2010108@sandeen.net> Date: Fri, 15 Jan 2010 12:47:36 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH V2] mkfs: fix mkfs.xfs -dfile,name=$NAME for new files Subject: [PATCH V2] mkfs: fix mkfs.xfs -dfile,name=$NAME for new files References: <4B4F9270.4070006@sandeen.net> In-Reply-To: <4B4F9270.4070006@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263581285 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19892 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean # /sbin/mkfs.xfs -dfile,name=grrr,size=100g mkfs.xfs: Use the -f option to force overwrite. check_overwrite is failing, because blkid_new_probe_from_filename() is failing, because the (new) image file is 0 length. It's easy to test for 0 length, and if found, there is nothing to overwrite so return 0. Also, if testing itself failed for some reason, print a message to that effect: # mkfs/mkfs.xfs -dfile,name=newfile,size=1g mkfs.xfs: probe of newfile failed, cannot detect existing filesystem. mkfs.xfs: Use the -f option to force overwrite. Signed-off-by: Eric Sandeen --- diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index faaafed..b6801dd 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -283,27 +283,47 @@ calc_stripe_factors( } #ifdef ENABLE_BLKID +/* + * Check for existing filesystem or partition table on device. + * Returns: + * 1 for existing fs or partition + * 0 for nothing found + * -1 for internal error + */ static int check_overwrite( char *device) { const char *type; - blkid_probe pr; - int ret = 0; + blkid_probe pr = NULL; + int ret; + struct stat statbuf; if (!device || !*device) return 0; + ret = -1; /* will reset on success of all setup calls */ + + if (stat(device, &statbuf) < 0) + goto out; + + /* nothing to overwrite on a 0-length device */ + if (statbuf.st_size == 0) { + ret = 0; + goto out; + } + pr = blkid_new_probe_from_filename(device); if (!pr) - return -1; + goto out; if (blkid_probe_enable_partitions(pr, 1)) - goto out_free_probe; + goto out; if (blkid_do_fullprobe(pr)) - goto out_free_probe; + goto out; + ret = 0; if (!blkid_probe_lookup_value(pr, "TYPE", &type, NULL)) { fprintf(stderr, _("%s: %s appears to contain an existing " @@ -316,8 +336,13 @@ check_overwrite( ret = 1; } -out_free_probe: - blkid_free_probe(pr); +out: + if (pr) + blkid_free_probe(pr); + if (ret == -1) + fprintf(stderr, + _("%s: probe of %s failed, cannot detect " + "existing filesystem.\n"), progname, device); return ret; } From aelder@sgi.com Fri Jan 15 13:14:36 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FJEGAe122860 for ; Fri, 15 Jan 2010 13:14:26 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6B9513040D5 for ; Fri, 15 Jan 2010 11:15:04 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH V2] mkfs: fix mkfs.xfs -dfile,name=$NAME for new files Date: Fri, 15 Jan 2010 13:11:29 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A697D@cf--amer001e--3.americas.sgi.com> In-Reply-To: <4B50B848.2010108@sandeen.net> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH V2] mkfs: fix mkfs.xfs -dfile,name=$NAME for new files Thread-Index: AcqWFhnuN9xFP7W7S2eCJY5+/Uq4IwAAGWWA From: "Alex Elder" To: "Eric Sandeen" Cc: "xfs mailing list" X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > # /sbin/mkfs.xfs -dfile,name=3Dgrrr,size=3D100g > mkfs.xfs: Use the -f option to force overwrite. >=20 > check_overwrite is failing, because blkid_new_probe_from_filename() > is failing, because the (new) image file is 0 length. >=20 > It's easy to test for 0 length, and if found, there is > nothing to overwrite so return 0. >=20 > Also, if testing itself failed for some reason, print > a message to that effect: >=20 > # mkfs/mkfs.xfs -dfile,name=3Dnewfile,size=3D1g > mkfs.xfs: probe of newfile failed, cannot detect existing filesystem. > mkfs.xfs: Use the -f option to force overwrite. This looks good. > Signed-off-by: Eric Sandeen > --- Reviewed-by: Alex Elder > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index faaafed..b6801dd 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -283,27 +283,47 @@ calc_stripe_factors( > } >=20 > #ifdef ENABLE_BLKID > +/* > + * Check for existing filesystem or partition table on device. > + * Returns: > + * 1 for existing fs or partition > + * 0 for nothing found > + * -1 for internal error > + */ > static int > check_overwrite( > char *device) > { > const char *type; > - blkid_probe pr; > - int ret =3D 0; > + blkid_probe pr =3D NULL; > + int ret; > + struct stat statbuf; >=20 > if (!device || !*device) > return 0; >=20 > + ret =3D -1; /* will reset on success of all setup calls */ > + > + if (stat(device, &statbuf) < 0) > + goto out; > + > + /* nothing to overwrite on a 0-length device */ > + if (statbuf.st_size =3D=3D 0) { > + ret =3D 0; > + goto out; > + } > + > pr =3D blkid_new_probe_from_filename(device); > if (!pr) > - return -1; > + goto out; >=20 > if (blkid_probe_enable_partitions(pr, 1)) > - goto out_free_probe; > + goto out; >=20 > if (blkid_do_fullprobe(pr)) > - goto out_free_probe; > + goto out; >=20 > + ret =3D 0; > if (!blkid_probe_lookup_value(pr, "TYPE", &type, NULL)) { > fprintf(stderr, > _("%s: %s appears to contain an existing " > @@ -316,8 +336,13 @@ check_overwrite( > ret =3D 1; > } >=20 > -out_free_probe: > - blkid_free_probe(pr); > +out: > + if (pr) > + blkid_free_probe(pr); > + if (ret =3D=3D -1) > + fprintf(stderr, > + _("%s: probe of %s failed, cannot detect " > + "existing filesystem.\n"), progname, device); > return ret; > } >=20 >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@oss.sgi.com Fri Jan 15 13:59:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FJxZjo125916 for ; Fri, 15 Jan 2010 13:59:40 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0FJxZI8125846; Fri, 15 Jan 2010 13:59:35 -0600 Date: Fri, 15 Jan 2010 13:59:35 -0600 Message-Id: <201001151959.o0FJxZI8125846@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.30-rc4-34855-g7284ce6 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 153f0ca7b70ebf5a9726250a98d3651b6296c131 X-Git-Newrev: 7284ce6c9f6153d1777df5f310c959724d1bd446 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated discards 153f0ca7b70ebf5a9726250a98d3651b6296c131 (commit) discards 67010697af7f00dd038322bdec108e7ffd0567e8 (commit) discards 996c3bc089b09d1cbf15da156100210ca34f2eab (commit) discards f00fbad6d00afffef9e4e9ae78494dff70923897 (commit) discards a2b63114daf490a68bc9a32dac99d1888c5de842 (commit) fd45e478 xfs: Ensure we force all busy extents in range to disk 44e08c4 xfs: Don't flush stale inodes d6d59ba xfs: fix timestamp handling in xfs_setattr ea9a488 xfs: use DECLARE_EVENT_CLASS a539bd8 xfs: kill some warnings on i386 builds from 153f0ca7b70ebf5a9726250a98d3651b6296c131 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- XFS development tree From aelder@sgi.com Fri Jan 15 14:26:52 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FKQWXY127776 for ; Fri, 15 Jan 2010 14:26:42 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6A46B3040C8 for ; Fri, 15 Jan 2010 12:27:20 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [XFS updates] XFS development tree branch, master,updated. v2.6.30-rc4-34855-g7284ce6 Date: Fri, 15 Jan 2010 14:25:59 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A697E@cf--amer001e--3.americas.sgi.com> In-Reply-To: <201001151959.o0FJxZI8125846@oss.sgi.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [XFS updates] XFS development tree branch, master,updated. v2.6.30-rc4-34855-g7284ce6 Thread-Index: AcqWH2BjAZGepXFnS/KdVPHneGu6EAAAIyDw From: "Alex Elder" To: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfs@oss.sgi.com wrote: > This is an automated email from the git hooks/post-receive script. It = was > generated because a ref change was pushed to the repository containing > the project "XFS development tree". >=20 Another forced update, sorry. I think I know how to avoid this in the future. If you want to update the tracking branch "my_master" to match the "master" branch at oss.sgi.com, you can use this command: git fetch git://oss.sgi.com/xfs/xfs.git +master:my_master The plus sign before "master" will allow the update even though it won't be resolved by a fast forward. -Alex > The branch, master has been updated > discards 153f0ca7b70ebf5a9726250a98d3651b6296c131 (commit) > discards 67010697af7f00dd038322bdec108e7ffd0567e8 (commit) > discards 996c3bc089b09d1cbf15da156100210ca34f2eab (commit) > discards f00fbad6d00afffef9e4e9ae78494dff70923897 (commit) > discards a2b63114daf490a68bc9a32dac99d1888c5de842 (commit) > fd45e478 xfs: Ensure we force all busy extents in range to disk > 44e08c4 xfs: Don't flush stale inodes > d6d59ba xfs: fix timestamp handling in xfs_setattr > ea9a488 xfs: use DECLARE_EVENT_CLASS > a539bd8 xfs: kill some warnings on i386 builds > from 153f0ca7b70ebf5a9726250a98d3651b6296c131 (commit) >=20 > Those revisions listed above that are new to this repository have > not appeared on any other notification email; so we list those > revisions in full, below. >=20 > - Log = ----------------------------------------------------------------- > = ----------------------------------------------------------------------- >=20 > Summary of changes: >=20 >=20 > hooks/post-receive From aelder@oss.sgi.com Fri Jan 15 14:33:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FKXIfG128335 for ; Fri, 15 Jan 2010 14:33:23 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0FKXIpi128298; Fri, 15 Jan 2010 14:33:18 -0600 Date: Fri, 15 Jan 2010 14:33:18 -0600 Message-Id: <201001152033.o0FKXIpi128298@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.30-rc4-34855-g7284ce6 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: fd45e4784164d1017521086524e3442318c67370 X-Git-Newrev: 7284ce6c9f6153d1777df5f310c959724d1bd446 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated from fd45e4784164d1017521086524e3442318c67370 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- XFS development tree From sandeen@sandeen.net Fri Jan 15 14:47:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FKl9GK129445 for ; Fri, 15 Jan 2010 14:47:19 -0600 X-ASG-Debug-ID: 1263588470-6c0100e90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3EECB1C54707 for ; Fri, 15 Jan 2010 12:47:50 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id j1yACLu0itSUkMjM for ; Fri, 15 Jan 2010 12:47:50 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 67F4596E295; Fri, 15 Jan 2010 14:47:50 -0600 (CST) Message-ID: <4B50D476.2040407@sandeen.net> Date: Fri, 15 Jan 2010 14:47:50 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Dave Chinner CC: xfs-oss X-ASG-Orig-Subj: Re: xfsprogs 3.1.0 repair problems? Subject: Re: xfsprogs 3.1.0 repair problems? References: <4B4FDC3E.6030205@sandeen.net> <20100115055628.GD28498@discord.disaster> In-Reply-To: <20100115055628.GD28498@discord.disaster> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263588477 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19900 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > On Thu, Jan 14, 2010 at 09:08:46PM -0600, Eric Sandeen wrote: >> It looks like maybe the freespace checking isn't quite up to par: >> >> test 073 is dying with: >> >> _check_xfs_filesystem: filesystem on /mnt/test/14309.image is inconsistent >> *** xfs_repair -n output *** >> Phase 1 - find and verify superblock... >> Phase 2 - using internal log >> - scan filesystem freespace and inode maps... >> sb_fdblocks 26156829, counted 26157853 >> - found root inode chunk > > This is caused by the remount,ro done in the test - the superblock > is written to disk with the reserved blocks considered used. At > unmount time those reserve blocks are "freed" before the superblock > is written and so the total is correct at that time. > > I'm going to go look at the kernel code now... > > Cheers, > > Dave. Today, I'm intermittently getting xfs_repair segfaults, in btree_get_prev, but this seems odd: Program terminated with signal 11, Segmentation fault. #0 btree_get_prev (key=0x9fc330, root=0x9fc300) at btree.c:190 p190 if (cur->index > 0) { (gdb) list btree.c:190 185 { 186 struct btree_cursor *cur = root->cursor; 187 int level = 0; 188 struct btree_node *node; 189 190 if (cur->index > 0) { 191 if (key) 192 *key = cur->node->keys[cur->index - 1]; 193 return cur->node->ptrs[cur->index - 1]; 194 } (gdb) p *root $1 = {root_node = 0x7fca8400fac0, cursor = 0x7fca8400e0e0, height = 1, keys_valid = 1, cur_key = 6792640, next_key = 0, next_value = 0x0, prev_key = 0, prev_value = 0x0} (gdb) p cur $2 = (struct btree_cursor *) 0x0 (gdb) quit root->cursor is valid, but cur is not? Still looking.... But maybe related to the initial problem... this is cropping up in the post-test check & repair that xfstests does. I imaged the filesystem before the checking in hopes of getting a reproducer. When the testsuite runs, repair looks clean, but then it segfaults. If I then point repair at the filesystem image I created prior to the segfault, it lights up with tons of errors. I'm confused by that; one interesting thing is that repair is testing a mounted, readonly filesystem when xfstests runs. -Eric From paul.chavent@fnac.net Fri Jan 15 15:07:57 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FL7Wgr130361 for ; Fri, 15 Jan 2010 15:07:47 -0600 X-ASG-Debug-ID: 1263589685-7d1d01e00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp1-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B7E2816AB47 for ; Fri, 15 Jan 2010 13:08:09 -0800 (PST) Received: from smtp1-g21.free.fr (smtp1-g21.free.fr [212.27.42.1]) by cuda.sgi.com with ESMTP id vftjyEQBkw3omtY0 for ; Fri, 15 Jan 2010 13:08:09 -0800 (PST) Received: from smtp1-g21.free.fr (localhost [127.0.0.1]) by smtp1-g21.free.fr (Postfix) with ESMTP id 68CF794016D; Fri, 15 Jan 2010 22:07:59 +0100 (CET) Received: from [192.168.2.101] (laf31-5-82-235-130-199.fbx.proxad.net [82.235.130.199]) by smtp1-g21.free.fr (Postfix) with ESMTP id 79D1F94012E; Fri, 15 Jan 2010 22:07:57 +0100 (CET) Message-ID: <4B50D9F9.1010809@fnac.net> Date: Fri, 15 Jan 2010 22:11:21 +0100 From: Paul Chavent User-Agent: Thunderbird 2.0.0.23 (X11/20090812) MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: usage of xfsctrl for embedded development / uuid question Subject: Re: usage of xfsctrl for embedded development / uuid question References: <5340782.170001263558076439.JavaMail.www@wsfrf1111> <20100115124617.GJ28498@discord.disaster> In-Reply-To: <20100115124617.GJ28498@discord.disaster> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: smtp1-g21.free.fr[212.27.42.1] X-Barracuda-Start-Time: 1263589692 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19902 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > It's a wrapper around ioctl(). You can call ioctl() directly > on not need xfsctl at all... Right, but i found nowhere the structures and the definition of XFS_IOC_* in the headers "exported" by the kernel. So i have two solutions : (1) i add -I/path_to_the_kernel_sources/fs to the cflags of my project. (2) i install those headers in my sysroot. I thought that those solutions where worst that only install headers from the xfsprogs package. From aelder@oss.sgi.com Fri Jan 15 15:42:37 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FLgVHq132888 for ; Fri, 15 Jan 2010 15:42:36 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0FLgVmg132723; Fri, 15 Jan 2010 15:42:31 -0600 Date: Fri, 15 Jan 2010 15:42:31 -0600 Message-Id: <201001152142.o0FLgVmg132723@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.30-rc4-34881-g4e23471 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 7284ce6c9f6153d1777df5f310c959724d1bd446 X-Git-Newrev: 4e23471a3f3aba885ea70100db47ccacb5f069f6 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 4e23471 xfs: move more buffer helpers into xfs_buf.c 64e0bc7 xfs: clean up xfs_bwrite 873ff55 xfs: clean up log buffer writes e57336f xfs: embed the pagb_list array in the perag structure 8b26c58 xfs: handle ENOMEM correctly during initialisation of perag structures b657fc8 xfs: Kill filestreams cache flush 0fa800f xfs: Add trace points for per-ag refcount debugging. aed3bb9 xfs: Reference count per-ag structures 1c1c6eb xfs: Replace per-ag array with a radix tree 44b56e0 xfs: convert remaining direct references to m_perag 4196ac0 xfs: Convert filestreams code to use per-ag get/put routines a862e0f xfs: Don't directly reference m_perag in allocation code 5017e97 xfs: rename xfs_get_perag c9c1297 xfs: Don't wake xfsbufd when idle 453eac8 xfs: Don't wake the aild once per second f0a7695 xfs: Use list_heads for log recovery item lists 5d77c0d xfs: make several more functions static 6bded0f xfs: clean up inconsistent variable naming in xfs_swap_extent 3a85cd9 xfs: add tracing to xfs_swap_extents e09f986 xfs: xfs_swap_extents needs to handle dynamic fork offsets 3daeb42 xfs: fix missing error check in xfs_rtfree_range 4b6a468 xfs: fix stale inode flush avoidance 126976c xfs: Remove inode iolock held check during allocation 57817c6 xfs: reclaim all inodes by background tree walks 018027b xfs: Avoid inodes in reclaim when flushing from inode cache c8e20be xfs: reclaim inodes under a write lock from 7284ce6c9f6153d1777df5f310c959724d1bd446 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4e23471a3f3aba885ea70100db47ccacb5f069f6 Author: Christoph Hellwig Date: Wed Jan 13 22:17:56 2010 +0000 xfs: move more buffer helpers into xfs_buf.c Move xfsbdstrat and xfs_bdstrat_cb from xfs_lrw.c and xfs_bioerror and xfs_bioerror_relse from xfs_rw.c into xfs_buf.c. This also means xfs_bioerror and xfs_bioerror_relse can be marked static now. Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit 64e0bc7d2a6609ad265757a600e2a0d93c8adb47 Author: Christoph Hellwig Date: Wed Jan 13 22:17:58 2010 +0000 xfs: clean up xfs_bwrite Fold XFS_bwrite into it's only caller, xfs_bwrite and move it into xfs_buf.c instead of leaving it as a fairly large inline function. Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit 873ff5501d8cd1a21045d6c1da34f0c3876bc235 Author: Christoph Hellwig Date: Wed Jan 13 22:17:57 2010 +0000 xfs: clean up log buffer writes Don't bother using XFS_bwrite as it doesn't provide much code for our use case. Instead opencode it and fold xlog_bdstrat_cb into the new xlog_bdstrat helper. Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit e57336ff7fc7520bec7b3a7741043bdebaf622ea Author: Dave Chinner Date: Mon Jan 11 11:47:49 2010 +0000 xfs: embed the pagb_list array in the perag structure Now that the perag structure is allocated memory rather than held in an array, we don't need to have the busy extent array external to the structure. Embed it into the perag structure to avoid needing an extra allocation when setting up. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 8b26c5825e023b1bccac7afd174ebe55b8905cb1 Author: Dave Chinner Date: Mon Jan 11 11:47:48 2010 +0000 xfs: handle ENOMEM correctly during initialisation of perag structures Add proper error handling in case an error occurs while initializing new perag structures for a mount point. The mount structure is restored to its previous state by deleting and freeing any perag structures added during the call. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit b657fc82a3ca6d7ad16a59e81765f0fb0e86cdbb Author: Dave Chinner Date: Mon Jan 11 11:47:47 2010 +0000 xfs: Kill filestreams cache flush The filestreams cache flush is not needed in the sync code as it does not affect data writeback, and it is now not used by the growfs code, either, so kill it. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 0fa800fbd549736dfdc1d7761f87e33dc8cd973b Author: Dave Chinner Date: Mon Jan 11 11:47:46 2010 +0000 xfs: Add trace points for per-ag refcount debugging. Uninline xfs_perag_{get,put} so that tracepoints can be inserted into them to speed debugging of reference count problems. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit aed3bb90abaf0b42e8c8747e192f7bb97f445279 Author: Dave Chinner Date: Mon Jan 11 11:47:45 2010 +0000 xfs: Reference count per-ag structures Reference count the per-ag structures to ensure that we keep get/put pairs balanced. Assert that the reference counts are zero at unmount time to catch leaks. In future, reference counts will enable us to safely remove perag structures by allowing us to detect when they are no longer in use. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 1c1c6ebcf5284aee4910f3b906ac90c20e510c82 Author: Dave Chinner Date: Mon Jan 11 11:47:44 2010 +0000 xfs: Replace per-ag array with a radix tree The use of an array for the per-ag structures requires reallocation of the array when growing the filesystem. This requires locking access to the array to avoid use after free situations, and the locking is difficult to get right. To avoid needing to reallocate an array, change the per-ag structures to an allocated object per ag and index them using a tree structure. The AGs are always densely indexed (hence the use of an array), but the number supported is 2^32 and lookups tend to be random and hence indexing needs to scale. A simple choice is a radix tree - it works well with this sort of index. This change also removes another large contiguous allocation from the mount/growfs path in XFS. The growing process now needs to change to only initialise the new AGs required for the extra space, and as such only needs to exclusively lock the tree for inserts. The rest of the code only needs to lock the tree while doing lookups, and hence this will remove all the deadlocks that currently occur on the m_perag_lock as it is now an innermost lock. The lock is also changed to a spinlock from a read/write lock as the hold time is now extremely short. To complete the picture, the per-ag structures will need to be reference counted to ensure that we don't free/modify them while they are still in use. This will be done in subsequent patch. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 44b56e0a1aed522a10051645e85d300e10926fd3 Author: Dave Chinner Date: Mon Jan 11 11:47:43 2010 +0000 xfs: convert remaining direct references to m_perag Convert the remaining direct lookups of the per ag structures to use get/put accesses. Ensure that the loops across AGs and prior users of the interface balance gets and puts correctly. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 4196ac08c023c6dab90c3fa460d9c06deaa304c4 Author: Dave Chinner Date: Mon Jan 11 11:47:42 2010 +0000 xfs: Convert filestreams code to use per-ag get/put routines Use xfs_perag_get() and xfs_perag_put() in the filestreams code. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit a862e0fdcb8862aab2538ec2fc2f0dc07a625c59 Author: Dave Chinner Date: Mon Jan 11 11:47:41 2010 +0000 xfs: Don't directly reference m_perag in allocation code Start abstracting the perag references so that the indexing of the structures is not directly coded into all the places that uses the perag structures. This will allow us to separate the use of the perag structure and the way it is indexed and hence avoid the known deadlocks related to growing a busy filesystem. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 5017e97d52628fb8ae56e434e86ac2e72ddaac2b Author: Dave Chinner Date: Mon Jan 11 11:47:40 2010 +0000 xfs: rename xfs_get_perag xfs_get_perag is really getting the perag that an inode belongs to based on it's inode number. Convert the use of this function to just get the perag from a provided ag number. Use this new function to obtain the per-ag structure when traversing the per AG inode trees for sync and reclaim. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit c9c129714e71c890bed1bd5b61697a896c3c2d54 Author: Dave Chinner Date: Mon Jan 11 11:49:59 2010 +0000 xfs: Don't wake xfsbufd when idle The xfsbufd wakes every xfsbufd_centisecs (once per second by default) for each filesystem even when the filesystem is idle. If the xfsbufd has nothing to do, put it into a long term sleep and only wake it up when there is work pending (i.e. dirty buffers to flush soon). This will make laptop power misers happy. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 453eac8a9aa417878a38bdfbccafd5f7ce4e8e4e Author: Dave Chinner Date: Mon Jan 11 11:49:58 2010 +0000 xfs: Don't wake the aild once per second Now that the AIL push algorithm is traversal safe, we don't need a watchdog function in the xfsaild to catch pushes that fail to make progress. Remove the watchdog timeout and make pushes purely driven by demand. This will remove the once-per-second wakeup that is seen when the filesystem is idle and make laptop power misers happy. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit f0a7695380efa31cd281730917f7e907a724d5cb Author: Dave Chinner Date: Mon Jan 11 11:49:57 2010 +0000 xfs: Use list_heads for log recovery item lists Remove the roll-your-own linked list operations. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 5d77c0dc0c05c2c65aee16149fae06831a118730 Author: Eric Sandeen Date: Thu Nov 19 15:52:00 2009 +0000 xfs: make several more functions static Just minor housekeeping, a lot more functions can be trivially made static; others could if we reordered things a bit... Signed-off-by: Eric Sandeen Signed-off-by: Alex Elder commit 6bded0f383fd7971b76ad6c194dda7d5b814b871 Author: Dave Chinner Date: Thu Jan 14 01:33:56 2010 +0000 xfs: clean up inconsistent variable naming in xfs_swap_extent The swap extent ioctl passes in a target inode and a temporary inode which are clearly named in the ioctl structure. The code then assigns temp to target and vice versa, making it extremely difficult to work out which inode is which later in the code. Make this consistent throughout the code. Also make xfs_swap_extent static as there are no external users of the function. Signed-off-by: Dave Chinner Signed-off-by: Alex Elder commit 3a85cd96d3ab3c6dcf88b81fc6eaddb84e565a43 Author: Dave Chinner Date: Thu Jan 14 01:33:55 2010 +0000 xfs: add tracing to xfs_swap_extents To be able to diagnose whether the swap extents function is detecting compatible inode data fork configurations for swapping extents, add tracing points to the code to allow us to see the format of the inode forks before and after the swap. Signed-off-by: Dave Chinner Signed-off-by: Alex Elder commit e09f98606dcc156de1146c209d45a0d6d5f51c3f Author: Dave Chinner Date: Thu Jan 14 01:33:54 2010 +0000 xfs: xfs_swap_extents needs to handle dynamic fork offsets When swapping extents, we can corrupt inodes by swapping data forks that are in incompatible formats. This is caused by the two indoes having different fork offsets due to the presence of an attribute fork on an attr2 filesystem. xfs_fsr tries to be smart about setting the fork offset, but the trick it plays only works on attr1 (old fixed format attribute fork) filesystems. Changing the way xfs_fsr sets up the attribute fork will prevent this situation from ever occurring, so in the kernel code we can get by with a preventative fix - check that the data fork in the defragmented inode is in a format valid for the inode it is being swapped into. This will lead to files that will silently and potentially repeatedly fail defragmentation, so issue a warning to the log when this particular failure occurs to let us know that xfs_fsr needs updating/fixing. To help identify how to improve xfs_fsr to avoid this issue, add trace points for the inodes being swapped so that we can determine why the swap was rejected and to confirm that the code is making the right decisions and modifications when swapping forks. A further complication is even when the swap is allowed to proceed when the fork offset is different between the two inodes then value for the maximum number of extents the data fork can hold can be wrong. Make sure these are also set correctly after the swap occurs. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 3daeb42c13567e1505f233f6a699cc0e23c8ab5a Author: Dave Chinner Date: Thu Jan 14 08:44:46 2010 +0000 xfs: fix missing error check in xfs_rtfree_range When xfs_rtfind_forw() returns an error, the block is returned uninitialised. xfs_rtfree_range() is not checking the error return, so could be using an uninitialised block number for modifying bitmap summary info. The problem was found by gcc when compiling the *userspace* libxfs code - it is an copy of the kernel code with the exact same bug. gcc gives an uninitialised variable warning on the userspace code but not on the kernel code. You gotta love the consistency (Mmmm, slightly chewy today!). Signed-off-by: Dave Chinner Signed-off-by: Alex Elder commit 4b6a46882cca8349e8942e2650c33b11bc571c92 Author: Dave Chinner Date: Mon Jan 11 11:45:21 2010 +0000 xfs: fix stale inode flush avoidance When reclaiming stale inodes, we need to guarantee that inodes are unpinned before returning with a "clean" status. If we don't we can reclaim inodes that are pinned, leading to use after free in the transaction subsystem as transactions complete. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 126976c7c17d3bdfbc1fe9e0af8bee9f62d14cc6 Author: Dave Chinner Date: Sun Jan 10 23:51:48 2010 +0000 xfs: Remove inode iolock held check during allocation lockdep complains about a the lock not being initialised as we do an ASSERT based check that the lock is not held before we initialise it to catch inodes freed with the lock held. lockdep does this check for us in the lock initialisation code, so remove the ASSERT to stop the lockdep warning. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 57817c68229984818fea9e614d6f95249c3fb098 Author: Dave Chinner Date: Sun Jan 10 23:51:47 2010 +0000 xfs: reclaim all inodes by background tree walks We cannot do direct inode reclaim without taking the flush lock to ensure that we do not reclaim an inode under IO. We check the inode is clean before doing direct reclaim, but this is not good enough because the inode flush code marks the inode clean once it has copied the in-core dirty state to the backing buffer. It is the flush lock that determines whether the inode is still under IO, even though it is marked clean, and the inode is still required at IO completion so we can't reclaim it even though it is clean in core. Hence the requirement that we need to take the flush lock even on clean inodes because this guarantees that the inode writeback IO has completed and it is safe to reclaim the inode. With delayed write inode flushing, we coul dend up waiting a long time on the flush lock even for a clean inode. The background reclaim already handles this efficiently, so avoid all the problems by killing the direct reclaim path altogether. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit 018027be90a6946e8cf3f9b17b5582384f7ed117 Author: Dave Chinner Date: Sun Jan 10 23:51:46 2010 +0000 xfs: Avoid inodes in reclaim when flushing from inode cache The reclaim code will handle flushing of dirty inodes before reclaim occurs, so avoid them when determining whether an inode is a candidate for flushing to disk when walking the radix trees. This is based on a test patch from Christoph Hellwig. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder commit c8e20be020f234c8d492927a424a7d8bbefd5b5d Author: Dave Chinner Date: Sun Jan 10 23:51:45 2010 +0000 xfs: reclaim inodes under a write lock Make the inode tree reclaim walk exclusive to avoid races with concurrent sync walkers and lookups. This is a version of a patch posted by Christoph Hellwig that avoids all the code duplication. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Alex Elder ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_buf.c | 167 ++++++++++++++++++++++++++++++- fs/xfs/linux-2.6/xfs_buf.h | 25 +---- fs/xfs/linux-2.6/xfs_lrw.c | 47 --------- fs/xfs/linux-2.6/xfs_lrw.h | 3 - fs/xfs/linux-2.6/xfs_super.c | 21 ++--- fs/xfs/linux-2.6/xfs_sync.c | 208 +++++++++++++++++++--------------------- fs/xfs/linux-2.6/xfs_sync.h | 3 +- fs/xfs/linux-2.6/xfs_trace.h | 80 +++++++++++++++ fs/xfs/quota/xfs_qm_syscalls.c | 2 +- fs/xfs/xfs_ag.h | 16 +-- fs/xfs/xfs_alloc.c | 94 +++++++++--------- fs/xfs/xfs_alloc_btree.c | 9 ++- fs/xfs/xfs_attr.c | 2 +- fs/xfs/xfs_attr.h | 1 - fs/xfs/xfs_bmap.c | 15 ++-- fs/xfs/xfs_bmap_btree.c | 2 +- fs/xfs/xfs_bmap_btree.h | 1 - fs/xfs/xfs_dfrag.c | 149 ++++++++++++++++++++++------ fs/xfs/xfs_dfrag.h | 3 - fs/xfs/xfs_dir2_node.c | 2 +- fs/xfs/xfs_dir2_node.h | 2 - fs/xfs/xfs_filestream.c | 42 +++------ fs/xfs/xfs_filestream.h | 28 +++++- fs/xfs/xfs_fsops.c | 42 ++++---- fs/xfs/xfs_ialloc.c | 60 +++++------ fs/xfs/xfs_iget.c | 11 +- fs/xfs/xfs_inode.c | 34 +++++-- fs/xfs/xfs_itable.c | 4 - fs/xfs/xfs_log.c | 67 ++++++------- fs/xfs/xfs_log_priv.h | 5 - fs/xfs/xfs_log_recover.c | 211 ++++++++++++++-------------------------- fs/xfs/xfs_log_recover.h | 23 ++--- fs/xfs/xfs_mount.c | 121 +++++++++++++++++++---- fs/xfs/xfs_mount.h | 22 ++--- fs/xfs/xfs_mru_cache.c | 2 +- fs/xfs/xfs_mru_cache.h | 1 - fs/xfs/xfs_rtalloc.c | 2 + fs/xfs/xfs_rw.c | 113 --------------------- fs/xfs/xfs_rw.h | 3 - fs/xfs/xfs_trans_ail.c | 19 ++-- 40 files changed, 901 insertions(+), 761 deletions(-) hooks/post-receive -- XFS development tree From edward.shishkin@gmail.com Fri Jan 15 15:44:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FLiCge132999 for ; Fri, 15 Jan 2010 15:44:22 -0600 X-ASG-Debug-ID: 1263591876-2e8e00560000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A220F1C54C3F for ; Fri, 15 Jan 2010 13:44:36 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id bUvFQ55x3RpqhwL9 for ; Fri, 15 Jan 2010 13:44:36 -0800 (PST) Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0FLgXsq021910 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 15 Jan 2010 16:42:34 -0500 Received: from zeta.englab.brq.redhat.com (dhcp-lab-156.englab.brq.redhat.com [10.34.33.156]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0FLgOp5025816; Fri, 15 Jan 2010 16:42:25 -0500 Message-ID: <4B50E14E.5050204@gmail.com> Date: Fri, 15 Jan 2010 22:42:38 +0100 From: Edward Shishkin User-Agent: Thunderbird 2.0.0.23 (X11/20090825) MIME-Version: 1.0 To: Larry McVoy , tytso@mit.edu, Christian Kujau , jim owens , jfs-discussion@lists.sourceforge.net, linux-nilfs@vger.kernel.org, xfs@oss.sgi.com, reiserfs-devel@vger.kernel.org, Peter Grandi , ext-users , linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org X-ASG-Orig-Subj: Re: [Jfs-discussion] benchmark results Subject: Re: [Jfs-discussion] benchmark results References: <20091224212756.GM21594@thunk.org> <20091225161453.GD32757@thunk.org> <20091225162238.GB19303@bitmover.com> <4B36333B.3030600@hp.com> <4B365EBE.5050804@nerdbynature.de> <4B37BA76.7050403@hp.com> <20091227223307.GA4429@thunk.org> <20091228140855.GD10982@bitmover.com> In-Reply-To: <20091228140855.GD10982@bitmover.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1263591900 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19904 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > When things didn't match up that was a clue that either > > - the benchmark was broken > - the code was broken > [...] I would carry out an object-oriented dualism here. [1] methods (kernel module) ---- [2] objects (formatted partition) | | | | [3] benchmarks ----------------- [4] user-space utilities (fsck) User-space utilities investigate "object corruptions", whereas benchmarks investigate "software corruptions" (including bugs in source code, broken design, etc, etc..) It is clear that "software" can be "corrupted" by a larger number of ways than "objects". Indeed, it is known that dual space V* (of all linear functions over V) is a much more complex object than V. So benchmark is a process which takes a set of methods (we consider only "software" benchmarks) and puts numerical values populated with a special (the worst) value CRASH. Three main categories of benchmarks using: 1) Internal testing An engineer makes optimizations in a file system (e.g. for a customer) via choosing functions or plugins as winners in a set of internal (local) "nominations". 2) Business plans A system administrator chooses a "winner" in some (global) "nomination" of file systems in accordance with internal business-plans. 3) Flame and politics Someone presents a "nomination" (usually with the "winner" among restricted number of nominated members) to the public while nobody asked him to do it. From aelder@oss.sgi.com Fri Jan 15 15:45:45 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FLjedT133241 for ; Fri, 15 Jan 2010 15:45:45 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0FLjeXt133163; Fri, 15 Jan 2010 15:45:40 -0600 Date: Fri, 15 Jan 2010 15:45:40 -0600 Message-Id: <201001152145.o0FLjeXt133163@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.30-rc4-34862-ge09f986 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 7284ce6c9f6153d1777df5f310c959724d1bd446 X-Git-Newrev: e09f98606dcc156de1146c209d45a0d6d5f51c3f This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated e09f986 xfs: xfs_swap_extents needs to handle dynamic fork offsets 3daeb42 xfs: fix missing error check in xfs_rtfree_range 4b6a468 xfs: fix stale inode flush avoidance 126976c xfs: Remove inode iolock held check during allocation 57817c6 xfs: reclaim all inodes by background tree walks 018027b xfs: Avoid inodes in reclaim when flushing from inode cache c8e20be xfs: reclaim inodes under a write lock from 7284ce6c9f6153d1777df5f310c959724d1bd446 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_super.c | 14 ++-- fs/xfs/linux-2.6/xfs_sync.c | 183 +++++++++++++++++++--------------------- fs/xfs/linux-2.6/xfs_sync.h | 2 +- fs/xfs/quota/xfs_qm_syscalls.c | 2 +- fs/xfs/xfs_dfrag.c | 106 ++++++++++++++++++++---- fs/xfs/xfs_iget.c | 1 - fs/xfs/xfs_inode.c | 21 ++++-- fs/xfs/xfs_rtalloc.c | 2 + 8 files changed, 201 insertions(+), 130 deletions(-) hooks/post-receive -- XFS development tree From sandeen@sandeen.net Fri Jan 15 16:45:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FMj6pd137167 for ; Fri, 15 Jan 2010 16:45:16 -0600 X-ASG-Debug-ID: 1263595529-643900b30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BDBD116B873 for ; Fri, 15 Jan 2010 14:45:29 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id ZQuq2Ypy4Tcpg9tV for ; Fri, 15 Jan 2010 14:45:29 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id DA9BD96E29B; Fri, 15 Jan 2010 16:44:22 -0600 (CST) Message-ID: <4B50EFC6.6050804@sandeen.net> Date: Fri, 15 Jan 2010 16:44:22 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Alex Elder CC: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH V2] mkfs: fix mkfs.xfs -dfile,name=$NAME for new files Subject: Re: [PATCH V2] mkfs: fix mkfs.xfs -dfile,name=$NAME for new files References: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A697D@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A697D@cf--amer001e--3.americas.sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263595554 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19907 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alex Elder wrote: > Eric Sandeen wrote: >> # /sbin/mkfs.xfs -dfile,name=grrr,size=100g >> mkfs.xfs: Use the -f option to force overwrite. >> >> check_overwrite is failing, because blkid_new_probe_from_filename() >> is failing, because the (new) image file is 0 length. >> >> It's easy to test for 0 length, and if found, there is >> nothing to overwrite so return 0. >> >> Also, if testing itself failed for some reason, print >> a message to that effect: >> >> # mkfs/mkfs.xfs -dfile,name=newfile,size=1g >> mkfs.xfs: probe of newfile failed, cannot detect existing filesystem. >> mkfs.xfs: Use the -f option to force overwrite. > > This looks good. except of course that st_size for devices is 0. Oh, I suck lately :/ Ok, will send fixup patch later. And then I'm gonna stop ;) -Eric >> Signed-off-by: Eric Sandeen >> --- > > Reviewed-by: Alex Elder > >> diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c >> index faaafed..b6801dd 100644 >> --- a/mkfs/xfs_mkfs.c >> +++ b/mkfs/xfs_mkfs.c >> @@ -283,27 +283,47 @@ calc_stripe_factors( >> } >> >> #ifdef ENABLE_BLKID >> +/* >> + * Check for existing filesystem or partition table on device. >> + * Returns: >> + * 1 for existing fs or partition >> + * 0 for nothing found >> + * -1 for internal error >> + */ >> static int >> check_overwrite( >> char *device) >> { >> const char *type; >> - blkid_probe pr; >> - int ret = 0; >> + blkid_probe pr = NULL; >> + int ret; >> + struct stat statbuf; >> >> if (!device || !*device) >> return 0; >> >> + ret = -1; /* will reset on success of all setup calls */ >> + >> + if (stat(device, &statbuf) < 0) >> + goto out; >> + >> + /* nothing to overwrite on a 0-length device */ >> + if (statbuf.st_size == 0) { >> + ret = 0; >> + goto out; >> + } >> + >> pr = blkid_new_probe_from_filename(device); >> if (!pr) >> - return -1; >> + goto out; >> >> if (blkid_probe_enable_partitions(pr, 1)) >> - goto out_free_probe; >> + goto out; >> >> if (blkid_do_fullprobe(pr)) >> - goto out_free_probe; >> + goto out; >> >> + ret = 0; >> if (!blkid_probe_lookup_value(pr, "TYPE", &type, NULL)) { >> fprintf(stderr, >> _("%s: %s appears to contain an existing " >> @@ -316,8 +336,13 @@ check_overwrite( >> ret = 1; >> } >> >> -out_free_probe: >> - blkid_free_probe(pr); >> +out: >> + if (pr) >> + blkid_free_probe(pr); >> + if (ret == -1) >> + fprintf(stderr, >> + _("%s: probe of %s failed, cannot detect " >> + "existing filesystem.\n"), progname, device); >> return ret; >> } >> >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Fri Jan 15 16:57:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_46 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0FMv9eA137880 for ; Fri, 15 Jan 2010 16:57:19 -0600 X-ASG-Debug-ID: 1263596273-70a500c60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 946A116B70E for ; Fri, 15 Jan 2010 14:57:53 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id fUUptFnTBNxFYJRF for ; Fri, 15 Jan 2010 14:57:53 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 0B8AA96E28B for ; Fri, 15 Jan 2010 16:57:52 -0600 (CST) Message-ID: <4B50F2F0.4050909@sandeen.net> Date: Fri, 15 Jan 2010 16:57:52 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] mkfs: get size of device properly Subject: [PATCH] mkfs: get size of device properly Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263596275 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19909 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Ok, one more. I've been having too many problems w/ xfstests today to have run the last patch through xfstests but should have at least run 032. :( Anyway, last change wasn't valid to test the size of a device node; total brain fart. After this I'm testing the hell out of the next patch I send, I promise! -------- Test device node size properly in check_overwrite, st_size is only valid for regular files. Signed-off-by: Eric Sandeen --- diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 0743976..689425d 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -297,18 +297,23 @@ check_overwrite( const char *type; blkid_probe pr = NULL; int ret; - struct stat statbuf; + int fd; + long long size; + int bsz; if (!device || !*device) return 0; ret = -1; /* will reset on success of all setup calls */ - if (stat(device, &statbuf) < 0) + fd = open(device, O_RDONLY); + if (fd < 0) goto out; + platform_findsizes(device, fd, &size, &bsz); + close(fd); /* nothing to overwrite on a 0-length device */ - if (statbuf.st_size == 0) { + if (size == 0) { ret = 0; goto out; } From sandeen@redhat.com Fri Jan 15 18:41:45 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0G0fPU2144613 for ; Fri, 15 Jan 2010 18:41:35 -0600 X-ASG-Debug-ID: 1263602506-4b12009d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E5ECC1C5200D for ; Fri, 15 Jan 2010 16:41:46 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ahGvge8Ep5id6toN for ; Fri, 15 Jan 2010 16:41:46 -0800 (PST) Received: from int-mx08.intmail.prod.int.phx2.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0G0fftW018644 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 15 Jan 2010 19:41:41 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx08.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0G0fbjg024640 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 15 Jan 2010 19:41:40 -0500 Message-ID: <4B510B41.3070904@redhat.com> Date: Fri, 15 Jan 2010 18:41:37 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests 073: unmount source image in cleanup Subject: [PATCH] xfstests 073: unmount source image in cleanup Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.21 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1263602530 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Test 073 is currently failing w/ xfs_repair problems, and when it does, the whole series stops because the test dir still has a loopback mounted filesystem on it, and it can't unmount. Fix that. Signed-off-by: Eric Sandeen --- diff --git a/073 b/073 index 0ef9287..756c1c8 100755 --- a/073 +++ b/073 @@ -44,6 +44,7 @@ _cleanup() umount $SCRATCH_MNT 2>/dev/null umount -d $imgs.loop 2>/dev/null [ -d $imgs.loop ] && rmdir $imgs.loop + umount -d $imgs.source_dir 2>/dev/null [ -d $imgs.source_dir ] && rm -rf $imgs.source_dir rm -f $imgs.* $tmp.* /var/tmp/xfs_copy.log.* } From sandeen@sandeen.net Fri Jan 15 20:18:01 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0G2I0tU150661 for ; Fri, 15 Jan 2010 20:18:00 -0600 X-ASG-Debug-ID: 1263608336-55b6021f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E4B25F14667 for ; Fri, 15 Jan 2010 18:18:56 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id SGo9naIBb0EUyS3w for ; Fri, 15 Jan 2010 18:18:56 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id BFEF496E28C for ; Fri, 15 Jan 2010 20:18:55 -0600 (CST) Message-ID: <4B51220F.7020703@sandeen.net> Date: Fri, 15 Jan 2010 20:18:55 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests 131: kill locktest process in cleanup & better error msgs Subject: [PATCH] xfstests 131: kill locktest process in cleanup & better error msgs Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263608337 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.19921 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I occasionally get failures in 131 like: gethostbyname: Success 1) perror is the wrong thing for gethostbyname errors, so this is confusing 2) the locktest thread doesn't get killed, so the fs is busy and the next test fails when it can't unmount Signed-off-by: Eric Sandeen --- diff --git a/src/locktest.c b/src/locktest.c index e35f6a6..7552ace 100644 --- a/src/locktest.c +++ b/src/locktest.c @@ -44,6 +44,8 @@ #define PLATFORM_CLEANUP() /*no-op*/ #define LL "ll" +extern int h_errno; + #define inet_aton(STRING, INADDRP) \ (((INADDRP)->s_addr = inet_addr(STRING)) == -1 ? 0 : 1) @@ -937,7 +939,10 @@ main(int argc, char *argv[]) struct hostent *servInfo; if ((servInfo = gethostbyname(host)) == NULL) { - perror("gethostbyname"); + printf("Couldn't get hostbyname for %s", host); + if (h_errno == HOST_NOT_FOUND) + printf(": host not found"); + printf("\n"); exit(1); /*NOTREACHED*/ } diff --git a/131 b/131 index b095c2f..de83fe2 100755 --- a/131 +++ b/131 @@ -34,6 +34,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15 _cleanup() { + kill $locktest_pid2 + kill $locktest_pid1 _cleanup_testdir } @@ -60,11 +62,13 @@ fi # Start the server src/locktest -p $PORT $TESTFILE > $testdir/server.out 2>&1 & +locktest_pid1=$! sleep 1 # Start the client src/locktest -p $PORT -h localhost $TESTFILE > $testdir/client.out 2>&1 +locktest_pid2=$! result=$? if [ $result -eq 0 ]; then echo success! From ifmusaifm@21cn.com Sun Jan 17 03:05:25 2010 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0H95MwA261448 for ; Sun, 17 Jan 2010 03:05:23 -0600 X-ASG-Debug-ID: 1263719144-4a7601900000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 21cn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E2EA1C57466 for ; Sun, 17 Jan 2010 01:05:45 -0800 (PST) Received: from 21cn.com (smtpfree.forptr.21cn.com [59.36.102.60]) by cuda.sgi.com with ESMTP id CpsIU9i4abJT3ZfZ for ; Sun, 17 Jan 2010 01:05:45 -0800 (PST) HMM_SOURCE_IP:121.14.129.100:60642.412152218 HMM_ATTACHE_NUM:0000 HMM_SOURCE_TYPE:SMTP Received: from free-smtp-cdn-netcom1 (unknown [121.14.129.100]) by 21cn.com (HERMES) with ESMTP id 118D2385A9 for ; Sun, 17 Jan 2010 16:55:27 +0800 (CST) Received: from sztmudg([123.114.99.77]) by free-smtp-cdn-netcom1(Knowledge-based Antispam Gateway 2.127s34(2009-06-12),218.107.61.56) with ESMTP id local13937.1263718525 for ; Sun, 17 Jan 2010 16:55:28 +0800 X-Original-AuthLogin: ifmusaifm@21cn.com Message-Id: <20100117085527.118D2385A9@21cn.com> Date: Sun, 17 Jan 2010 16:55:27 +0800 (CST) From: ifmusaifm@21cn.com To: undisclosed-recipients:; X-Barracuda-Connect: smtpfree.forptr.21cn.com[59.36.102.60] X-Barracuda-Start-Time: 1263719163 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean ąúĽĘ˛ĆąÜŔíƦ٬ÔńҵÉýÖ°µÄ×îĽŃѡÔń Message-ID: <20100117165523152542@21cn.com> From: "swjwojt" To: Subject: =?gb2312?B?ufq8yrLGzvG53MDtyqajrNTx0rXJ/dawtcTX7rzR0aHU8Q==?= Date: Sun, 17 Jan 2010 16:55:12 +0800 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_038B_017E57A5.16FCF080" X-mailer: Rjz 2 This is a multi-part message in MIME format. ------=_NextPart_000_038B_017E57A5.16FCF080 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0664_017E57A5.16FCF080" ------=_NextPart_001_0664_017E57A5.16FCF080 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 ICANCiANCiAgILn6vMqyxs7xudzA7cqmSUZNo6hTSUZNo6nXyrjxyM/WpA0KufogvMogIMjPINak o7ogufq8yrLGzvG53MDt0K274aOoSUZNQaOpDQoNCrn6vNLQ0NK1yM/WpKO6INbQufrX3LvhvMbK ptCtu+GjqNbQ19zQrVsyMDA1XTAxMbrFo6kNCrn6ILzSICCz0CDIz6O6ILn6vNLIy8Gm18rUtNPr yee74bGj1c+yv6OowM3S/dfWWzIwMDRdMDAxusWjqQ0KDQrIqCDN/iAg1rggtbyjuiC5+s7x1Lq5 +tPQ18qy+rzgtr253MDtzq/Usbvh0dC+v9bQ0MTRp8r11ri1vA0KxvMg0rUgyM8gzayjuiDIq8fy NTAwx7+hotbQufo1MDDHv6GitPPW0NDNufrG86GizeLG86Giw/HG87njt7rIz82sDQogICAgICAg ICK5+rzKssbO8bncwO3KpiKjqEludGVybmF0aW9uYWwgIEZpbmFuY2UgIE1hbmFnZXIsICBJRk2j qcrHufq8yrLGvq253MDt16jStcHs0/K1xNK7zNfWsNK118q48cjP1qTM5c+1o6zKx9PJufq8yrLG zvG53MDt0K274aOoSW50ZXJuYXRpb25hbCBGaW5hbmNpYWwgTWFuYWdlbWVudCBBc3NvY2l0aW9u IElGTUGjqbS0vaiyotTayKvH8s3G0NCjrMrHxL/HsM7SufrV/riuudm3vbPQyM+1xLn6vMrNqNPD 18q48dakyunOqNK7tcSyxr6twODWpMrpoaMNCiAgICAgMjAwNMTqNdTCo6y+rdSt1tC7qsjLw/G5 srrNufrAzbavus3J57vhsaPVz7K/yfO6y8X617yjrElGTSDXyrjxyM/WpLvx17zS/cjr1tC5+qOo 16Ky4brFo7rAzdL919ZbMjAwNF0wMDEgusWjqaOsMjAwNcTqNtTCo6zW0Ln619y74bzGyqbQrbvh o6jW0Nfc0K1bMjAwNV0wMTG6xaOp0+u5+rzKssbO8bncwO3Qrbvh1Nq+qdX9yr3G9Lavwcu5+rzK ssbO8bncwO3KpqOoSUZNo6nBqrrPyM/WpKOsy6u3vbmyzazX6b2owcu5+rzKssbO8bncwO3KpqOo SUZNo6nWsNK118q48cGqus/Iz9akzq/Usbvho6zL+bDkt6K1xCBJRk0g1qTK6dPrufq80taw0rXX yrjx1qTK6b7f09DNrLXItcTQp8Gmo6yyorG7xMnI67n6vNLWsNK118q48dakyunNs9K7udzA7czl z7Whow0Kob7Stb3nxsDK9qG/ICAgIA0KICAgICC5+rzKssbO8bncwO3Qrbvh0+vW0Ln619y74bzG yqbQrbvhwaq6z8jP1qShsLn6vMqyxs7xudzA7cqmobGjrMrHzqq087zS1/fBy7z+usPKwqOs1eLK x9K7z+7KytOmyKvH8r6tvMO7r7ei1bm1xMjLssW5pLPMoaOyxs7xudzA7crHuPfP7rncwO21xNbQ 0MS7t73ao6zG5Muuxr21xLjftc2jrLnYz7XXxcbz0rW1xLPJsNy6zcrC0rW1xLei1bmho7n6vMqy xs7xudzA7cqmysfSu8/uuMS477XEuaSzzKOszai5/bmrv6qhormrxr2hormr1f2hotHPuPG1xL+8 ytS6zcjP1qSjrLDR08XQ48jLssXRobKms/bAtKOsyrnTw8jLu/rWxsrK06bK0LOhvq28w7XE0OjS qqOstNm9+NbQufrG89K1ssbO8bncwO3Lrsa9tcTM4bjfo6zOqsnnu+G1xLei1bnX9rP2u/28q7XE ubHP16GjIA0KICAgICAgICAgICAgICAgICAgIKGqoaqhqsirufrIy7Tzs6POr6GiyKu5+sjLtPOy xr6tzq+4sdb3yM6hotbQufrX3LvhvMbKptGnu+G74bOkoaLUrbLG1f6yv7ixsr+zpCDVxdPTssUN CiAgICC0q82zyc+yxs7x0ae/xtK71rHT67vhvMa77M/91NrSu8bwo6yyu8D709q/qtW5ssbO8bvu tq+ho8/W1NrIy8PH1NrA7cLbyc/S0b6tyM/KtrW9wcuyxs7x0+u74bzG1eK2/tXf1q685LXEsu6x 8KOssqLH0tTa0ae/xsno1sPJz9Ky0tG+rb2rtv7V37fWv6qyosHQoaO74bzG16jStcS/x7DS0dPQ u+G8xsqm18q48aOsxMfDtLLGzvG53MDt0rLTprWx09DX1Ly6tcTXyrjxyM+2qKGj0v29+Ln6vMqy xs7xudzA7cqm18q48cjP1qTE3Mq5ztK5+tG4y9nM7rK5ssbO8bncwO3WsNK118q48be9w+a1xL/V sNejrLKiyrXP1rjD1rDStbHq17zT67n6vMq907nso6zSsrHYtqi74byrtPO12LTZvfiyxs7xudzA 7dGnv8a1xLei1bmhow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgoaqhqqGqssbV/rK/u+G8xtfKuPHG wLzb1tDQxNb3yM4gwO7I8LuqsqnKvw0KICAgIM7StuDE6tTav+e5+rmry761o8jOssbO8dfcvOC1 xL6twPrKuc7S0uLKtrW9o6zW0Ln6sb7NwbXEytfPr7LGzvG52bHY0Ou+39PQufq8yr6t06q1xNW9 wtTR27nius3S4sq2o6yyxcTcysrTpsbz0rW5+rzKvq3TqrXE0OjSqqOstvhJRk3WsNK118q48cjP 1qS9q8q5xPq78dLmt8vHs6GjDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICChqqGqoarP47jbsO7Dy7vjv6W8r83Fo6jJ z8rQuavLvqOpo6hTSUZNo6nStsjq1PMNCiAgICAgIElGTcrH0ru49rjfxvC146OsuN/SqsfztcTW sNK1o6zG5LrL0MTE3MGmsPzAqMDtssbE3MGmo6y+9rLfxNzBpqOswey1vMTcwaa1yKOstvi52NPa 1eLQqcTcwaa1xM/qz7jD6Mr2us3I57rOu/G1w9Xi0KnE3MGmo6xJRk2/zrPMzOXPtbvhuPjE+rTw sLihow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIKGq oaqhqiDDwLn6zKvR9Mqv0825q8u+zNjW1tPN1tC5+rv5tdi4sdfcssMg1cXE/ruqDQqhvklGTcjP 1qS829a10+vTxcrGob8NCiAgICC21NPatNPKwrLGzvG53MDtoaLG89K1udzA7aGixvPStb72st+h otfKsb7Uy9f3oaLXqNK1wO2yxqGit+fP1bncwO2hos2218q+9rLftcjB7NPyuaTX97XEyMvKv7yw xuTL+8/gudi53MDtyMvKv6Osu/G1wyBJRk0gyM/WpLHtw/ez1takyMu+37G4yqTIzs/WtPqyxs7x udzA7bmk1/fL+dDotcS528TuoaLWqsq2oaK+rdHpus28vMTcoaPS4s6218Wz1takyMvE3Lm7zqrG 89K1u/K/zbunzOGz9rrPwO21xLLGzvG53MDtt72wuLKivt/T0MfQyrXWtNDQtcTE3MGmoaPU2tK1 veehornN1vehor/Nu6e6zc2s0NDW0KOsSUZNINakyunS0bG7v7TX97PW1qTIy9aw0rXE3MGmy67G vbXEz/PV97rNserWvqGjDQpJRk0gyM/WpNbBydm+39PQyP249re9w+a1xLzb1rWjuiANCiAgICCh pNakw/ez1tak1d/X8crYs8/Qxda00rXUrdTyo6zNrMqxse3D98bkttTL+bTTysK1xLLGzvHXqNK1 uaTX976r0ubH876rtcSz0MW1o7sgDQogICAgICAgoaTWpMP3s9bWpNXft/u6z7n6vMq907nstcTX qNK1serXvKOszazKsbHtw/fG5NXGztXP1rT6ssbO8bncwO3UrcDtus3Wqsq2tcSzzLbIo7sNCiAg ICAgICChpNakw/ez1tak1d++37G4yKjN/sjPv8m1xNaw0rXXytbKo6zNrMqxse3D98bkyqTIzs/W tPqyxs7xudzA7cq1vMq5pNf3tcS+rdHpus3E3MGmy67GvaGjDQogICAgyKG1wyBJRk0g18q48bbU 09qyxs7x16jStcjL1LHLs8D7vfjI69PF0OO1xNfp1q+hor2owaK438nQtcTWtNK10MXT/qGiu/G1 w9PF1L21xNaw0rW3otW5u/q74b7f09C8q7TztcSw79b6oaMNCqG+SUZNs9bWpMjLyKjS5qG/DQog IHYg0rW957bUs9bWpMjLvt+xuLXEssbO8bncwO3Wqsq2oaK+rdHpus3E3MGmtcTIz7/JsqK+39PQ yc/K0Lmry761xMep19bIqKO7DQogIHYgu9Wx6qGi1qTVwrrN1qTK6b2r1qTD97PW1qTIy7XEssbO 8bncwO3XqLzSye233aO7DQogIHYgzai5/bn6vMqyxs7xudzA7dCtu+HW0Ln619yyv7XEd2Vi1b61 4727wffC28yzo6yyor/Ju/G1w9fu0MKyxs7xudzA7daqyrbT67avzKzQxc+io7sNCiAgdiDP7dPQ 0+vStb3nvqvTotLUvLCyxs7xudzA7deovNLU2s/fvbvB97XExr3MqKO7DQogIHYgz+3T0MPi16Ky 4bPJzqq5+rzKssbO8bncwO3Qrbvho6hJRk1Bo6m74dSxtcTXyrjxo7sNCiAgdiDK3NH7o6jTxbvd u/LD4rfRo6myzrzTSUZNQdb3sOy78tCtsOy1xLvh0um8sMzYsfC77ravo7sNCiAgdiC78dT5McTq xtq1xNCtu+HNqNG20tS8sM/gudi1xMbky/u/r87vo7sNCiAgdiDP7dPQ0tTTxbvdvNu48bm6wvLQ rbvhvM3E7sa3tcTXyrjxo7sNCiAgdiDP7dPQ1NrP39fJ0a/JzM7xt/7O8aGjIKOo16KjutLUyc/M 9b/uveLKzciouelJRk1By/nT0KOpDQqhvsXg0bXM2Mmrob8NCiAgICAgoe4gSUZNyM/WpLn6xNrN 4tK7wffXysnu16i80r3MytrH18HZxeDRtaOstsDM2LXE1qrKtszlz7W94bm5o6zKtdPDz7XNs7XE 16jStb/Os8zJ6NbDo7sNCiAgICAgoe4gSUZN16jM4rC4wP231s720dDM1qOsubK9qLjfsuO9u8H3 u6W2r8a9zKijrLv9te3J7rrxyMvC9tfK1LQNCiAgICAgoe4gs8m+zcq11b2yxs7xudzA7aGi1MvX 99eovNKjrNXm1f3Ktc/W16jStby8xNzM4cn90+vWsNK1yfrRxLei1bnLq9bYvNvWtczhyf0NCiAg ICAgoe4g1Oy+zbLGzvG53MDtoaLXyrG+1MvX96GiuavLvr72st+hosbz0rW53MDtoaK5q8u+wO2y xqGit+fP1bnmsdyhos2218q+9rLf16i80g0Kob7F4NG1ttTP86G/DQogICAgINakyK+7+rm5oaK7 4bzGyqbKws7xy/mhorLGzvG5y87KuavLvqGi0vjQ0KGisaPP1bmry76hor/nufq5q8u+oaK089bQ 0M25q8u+oaK5+tPQxvPStaGiyP3Xysbz0rWhosPx06rG89K1oaLNttfKuavLvqGiu/m98Lmry76h orTz1trG89K1tcS437y2ssbO8dW9wtTIy7LFoaKyxs7x19y84KGi19y+rcDtoaLX3LLDtcgNCiAg ICDEv8ewo6y5+rzKssbO8bncwO3KprXE18q48dLRvq2zyc6q1tC5+rLGvq3B7NPytcTIqM3+yM/W pCzS0dPQMjW49sqhytDX1NbOx/i/qtW5yM/WpLmk1/ejrDEwMDAw0+DIy7LOvNO/vMrUo6y9/Dgw MDDIy7vxtcPWpMrpoaPRp9SxwLTX1KO6ufq80r+qt6LS+NDQoaLW0Ln60vjQ0KGi1tC5+rmkyczS +NDQoaLW0Ln6vajJ6NL40NChorGxvqnS+NDQoaK54rTz0vjQ0KGiw/HJ+tL40NChosWp0rXS+NDQ oaLK17jWvK/NxaGi1tC5+rXn0MWhotbQufrKr9PNoaLW0Ln6yq+7r6Gi1tDBuLyvzcWhorn618rO r6Gi1tC5+tK7xvuhosz6tcCyv7rNufq7qrXnwaa1yLXIoaMNCqG+yeqxqMz1vP6hvw0KICAgIKH0 ILTz16jRp8D6KLvyzay1yNGnwPopLLTTysLP4LnY16jStbmk1/c1xOrS1MnPKLqsKaO7DQogICAg ofQgtPPRp7G+v8bRp8D6KLvyzay1yNGnwPopLLTTysLP4LnYuaTX9zPE6tLUyc8ouqwpo7sNCiAg ICCh9CDLtsq/KLvyzay1yNGnwPopLLTTysLP4LnY16jStbmk1/cyxOrS1MnPKLqsKaO7DQogICAg ofQgyKG1w7Kpyr/Rp867McTq0tTJzyi6rCmjuw0KICAgIKH0ILvxtcO5+rzKssbO8bncwO3KpihJ Rk0p1qTK6SzBrND4tNPKws/gudjXqNK1uaTX9zPE6tLUyc8ouqwpo7sNCiAgICCh9CDIobXDssa+ raGivq28w6GiudzA7c/gudjXqNK1uN+8tteo0rW8vMr11rCzxi/WsNK118q48dXfo7sNCiAgICCh 9CC089eo0afA+qOou/LNrLXI0afA+qOpo6y1o8jOxvPStbLGzvHX3LzgoaLX3LvhvMbKpqGi19y+ rbzDyqa78s2stcjWsM7x1d+how0K0ruhor+8ytS3vcq9oaLKsbzkvLC30dPDDQogICAgICAgIElG TSDU2ruqytS147+8ytSyycihobC/vMewxeDRtbiotbwryKu5+s2z0ru/vMrUobG1xMSjyr2ho7j3 tdi4+b7dyrW8ysfpv/a/qrDgo6y/vMrUv8nS1Lj6yKu5+s2zv7yjqDIwMTDE6jTUwjI0LTI1yNWj qaOs0rK/ydLUyerH67zTv7yju0lGTdGnz7Cw4NGn1LG/ybj5vt3X1Mntx+m/9tGh1PHKsbzkvfjQ 0LzM0Pi9zNP9oaMNCiAgICAgICAgMaGiSUZNILy2o6jW0Ly2o6mjurGow/uhosXg0bW8sL+8ytSh osjP1qS30dPDILrPvMYgMTY4MDDUqi/Iyw0KICAgICAgICAyoaJTSUZNvLajqLjfvLajqaO6sajD +6GixeDRtbywv7zK1KGiyM/WpLfR08Mgus+8xiAyMTgwMNSqL8jLDQq2/qGiv86zzMno1sOjug0K ICAgILmyt9bI/bj2xKO/6aOsOMPFusvQxL/Os8yjrMjnobayxs7xsaix7bfWzvbT68bz0rW829a1 xsC5wKG3oaKhttfKsvq53MDtus3XyrL61qTIr7uvobehoqG2vfDI2tfKsvrGwLnAus3NttfKudzA 7aG3oaKhtsbz0rW85rKioaLK1bm60+vW2NfpobehtrnJyKjWpMiv1LbG2s3iu+O6z9S8oaLG2sio ytCzoaGivfDI2sbau/XK0LOhobehraGttci/zrPMoaMNCsj9oaJJRk0vU0lGTSDWpMrptcS78cih 0+uy6dGvo7oNCiAgICDIq7K/v7zK1L/GxL+zybyozqq6z7jxtcS/vMn6o6zH0rf7us+5+rzKssbO 8bncwO3KptfKuPHIz9akz+DTpsjP1qTM9bz+oaLXysHPxuuxuLXEo6zU2rn6vMqyxs7xudzA7dCt u+G907W9v7zJ+rXEyM/WpMnqx+u687XEMjW49rmk1/fI1cTao6zTybn6vMqyxs7xudzA7dCtu+HH qbeiz+DTpry2sfC1xNakyumhow0KICAgIKHvILn6vMqyxs7xudzA7cqm1rDStdfKuPHW0Ln6zfjV viCjqGh0dHA6Ly93d3cuaWZtLm9yZy5jbqOpo7sNCiAgICCh7yDW0Ln619y74bzGyqbQrbvhzfjV viCjqGh0dHA6Ly93d3cuY2FjZm8uY29to6mjuw0KICAgIKHvIMDNtq+6zcnnu+Gxo9XPsr/Azbav 1rDStby8xNy8+Lao1tDQxM341b4go6hodHRwOi8vd3d3Lm9zdGEub3JnLmNuo6mhow0Ky8Shosnq saiyxMHPo7oNCiAgICChtrn6vMqyxs7xudzA7cqmyerH67HtobehoqG2ufq8yrLGzvG53MDtyqbE 3MGmxsC5wLHtobfUrbz+u/LJqMPovP6hotGnwPq8sNGnzrvWpLi006G8/jG33aGi1rCzxryw1rDS tdfKuPHWpMrpuLTTobz+MbfdoaK5pNf31qTD9zG33aGiye233dakuLTTobz+MSC33aGiwLa11zK0 57LKyavV1casNNXFo6i++b/JzqrJqMPovP6jqaGjDQrO5aGiv7zK1MjP1qTB97PMo7oNCs+jzfuz yc6qufq8yrLGzvG53MDtyqah+szu0LTRp9SxsajD+7vY1rSx7bSr1ebWwcPYyum0pjAxMDg2MjEw Mzk3ofrJ6sfrSUZNv7zK1NfKuPGyoszhvbvJ6rGossTBz6H6SUZNzNjQ7bv6ubmz9cnzofq5+rzK ssbO8bncwO3Qrbvh1tC5+tfcsr+4tMnzofrNqLn9yfPF+r27xMm30dPDsqKw7MDtss6807+8ytTK 1tD4ofqyzrzTv7zK1Lmrsry/vMrUs8m8qLKivMTLzbPJvKi1paH6ufq8ysjP1qS53MDt0K274cnq sajIz9akofqzybyous+48bDkt6JJRk0vU0lGTdakyumh+tX9yr2zyc6qufq8yrLGzvG53MDtyqYN CqG+08q8xLXY1rehv7Gxvqm34cyox/jEz8j9u7fW0MK30KHM+r2z06oxMLrFuuPLyTEtNjAyICAg 1qPT0bTkIMrVICAgICDTyrHgo7oxMDAwNzUNCrn6vMqyxs7xudzA7cqmo6hJRk2jqdGn1LGxqMP7 u9jWtLHto6ix7bjx1tDT0Cqx6rzHtcTOqrHYzO7P7qOpDQogIA0KtaUgIM67KiC5q8u+0NTWyiog 08qx4CAgIA0KtdggINa3KiDBqs+1yMsqICAgICAgICAgICDWsLPGIA0KtecgILuwKiAgICAgICAg ICAgICAgICAgICAgINawzvEgye233dakusXC6yogDQogtKsgINXmKiDK1rv6KiBFLW1haWw6IA0K yeqxqMjLuaTX98Tqz97Q1LHw1rDO8cGqz7W157uwICDK1iC7+tGnwPqxz9K11LrQow0KICAgICAg ICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCr3wtu7X3LzGICDN8iAgICDHqiAgICCw 2yAgICAgyrAgICAg1Kq747/uyNXG2jIwMTDE6iAgICDUwiAgICAgyNUNCrT6se3HqcP7o7oNCjIw MTDE6iAg1MIgICDI1bn6vMqyxs7xudzA7dCtu+ENCtbQufrF4NG1yM/WpNfJ0a/N+A0KsbG+qdDC yPHM2rTvxvPStbncwO25y87K09DP3rmry74NCrvjv+63vcq9o7rIz9akt9GxqMP7uvPI/cjVxNq1 57vj1sHWuLao1cq7p7KisNG747/uxr7WpLSr1ebWwbGxvqnIz9akv7zGwNbQ0MQNCrunICAgIMP7 o7qxsb6p0MLI8czatO/G89K1udzA7bnLzsrT0M/euavLvg0Kv6ogu6cg0NCjutbQufq5pMnM0vjQ 0MPc1Ma31tDQDQrVyyAgICC6xaO6MDIwMDAgIDEyMjEgIDkwMDY4ICA4NDcyMQ0KwarPtcjLo7og 1cUgIMX0ICAgICAgICAgtecgILuwo7owMTAtODYyMTAzOTcgICAgICC0qyAg1eajujAxMC04MzY1 NTU0Ng0KytYgILv6o7oxMzIyMDE1NTAwOSAgICAg08ogIM/ko7ppZm0tdXNhQDE2My5jb20gICDN +CAg1rejumh0dHA6Ly93d3cuaWZtLm9yZy5jbi8NCg0KDQq0y7Ht19TWxrvyuLTTob3U09DQpyAN CiC5+rzKssbO8bncwO3QrbvhssbO8bncwO3KprDsuavK0g== ------=_NextPart_001_0664_017E57A5.16FCF080 Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv L0VOIj4NCjxIVE1MIHhtbG5zOnN0MSB4bWxuczpvID0gInVybjpzY2hlbWFzLW1pY3Jvc29mdC1j b206b2ZmaWNlOm9mZmljZSIgeG1sbnM6diA9IA0KInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206 dm1sIj48SEVBRD4NCjxNRVRBIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQv aHRtbDsgY2hhcnNldD1nYjIzMTIiPg0KPE1FVEEgY29udGVudD0iTVNIVE1MIDYuMDAuMjkwMC41 ODk3IiBuYW1lPUdFTkVSQVRPUj4NCjxCR1NPVU5EIGJhbGFuY2U9MCBzcmM9ImNpZDowMDAyNkM2 MkExMkVfMDYxRjNDNDVfMDQxNDNFRjciIGxvb3A9IjEiIHZvbHVtZT0wPg0KPC9IRUFEPg0KPEJP RFk+PEZPTlQgZmFjZT1WZXJkYW5hIHNpemU9Mj4mbmJzcDs8L0ZPTlQ+IA0KPERJVj48Rk9OVCBm YWNlPVZlcmRhbmEgc2l6ZT0yPg0KPFRBQkxFIA0Kc3R5bGU9IkJBQ0tHUk9VTkQtUE9TSVRJT046 IGxlZnQgdG9wOyBCQUNLR1JPVU5ELVJFUEVBVDogcmVwZWF0LXg7IEJBQ0tHUk9VTkQtQ09MT1I6 ICNmMGY5YzgiIA0KY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIHdpZHRoPSI5OSUiIA0KYmFj a2dyb3VuZD1odHRwOi8vbWltZy4xMjYubmV0L3AvaW1hZ2VzL2xldHRlci8yMDA3MDkvd3dmNl9i Zy5naWYgYm9yZGVyPTA+DQogIDxUQk9EWT4NCiAgPFRSPg0KICAgIDxURCBzdHlsZT0iQkFDS0dS T1VORC1QT1NJVElPTjogcmlnaHQgdG9wOyBCQUNLR1JPVU5ELVJFUEVBVDogbm8tcmVwZWF0IiAN CiAgICBiYWNrZ3JvdW5kPWh0dHA6Ly9taW1nLjEyNi5uZXQvcC9pbWFnZXMvbGV0dGVyLzIwMDcw OS93d2Y2X2JnX2Jvb2suZ2lmIA0KICAgIGNvbFNwYW49MyBoZWlnaHQ9MTQwPiZuYnNwOzwvVEQ+ PC9UUj4NCiAgPFRSPg0KICAgIDxURCB3aWR0aD0zMj4mbmJzcDsmbmJzcDsgPC9URD4NCiAgICA8 VEQgDQogICAgc3R5bGU9IkZPTlQtU0laRTogMTJweDsgQ09MT1I6ICMwMDMzMDA7IExJTkUtSEVJ R0hUOiAzMHB4OyBCQUNLR1JPVU5ELVJFUEVBVDogcmVwZWF0IiANCiAgICB2QWxpZ249dG9wIA0K ICAgIGJhY2tncm91bmQ9aHR0cDovL21pbWcuMTI2Lm5ldC9wL2ltYWdlcy9sZXR0ZXIvMjAwNzA5 L3d3ZjZfYmdfbGluZS5naWY+DQogICAgICA8RElWIGFsaWduPWNlbnRlcj48U1RBVElPTkVSWT48 U1BBTj48Rk9OVCBmYWNlPbrazOUgY29sb3I9I2YwMDAwMCANCiAgICAgIHNpemU9NT48U1RST05H Prn6vMqyxs7xudzA7cqmSUZNo6hTSUZNo6nXyrjxyM/WpDwvU1RST05HPjwvRk9OVD48L1NQQU4+ PC9TVEFUSU9ORVJZPjwvRElWPg0KICAgICAgPERJVj48U1BBTj48L1NQQU4+PEZPTlQgY29sb3I9 I2YwMDAwMD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTVFJPTkc+ufogDQog ICAgICC8yiA8U1BBTiBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPiZuYnNwOzwvU1BBTj7IzyDW pKO6ILn6vMqyxs7xudzA7dCtu+GjqDxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz5JRk1BPC9TUEFO PqOpPC9TVFJPTkc+PC9TUEFOPjxCUj48L0ZPTlQ+PC9ESVY+DQogICAgICA8RElWPjxGT05UIGNv bG9yPSNmMDAwMDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1RST05HPrn6 vNLQ0NK1yM/WpKO6IA0KICAgICAg1tC5+tfcu+G8xsqm0K274aOo1tDX3NCtPFNQQU4gbGFuZz1F Ti1VUz5bMjAwNV0wMTE8L1NQQU4+usWjqTwvU1RST05HPjwvU1BBTj48QlI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1RST05HPrn6IA0KICAgICAgvNIgPFNQQU4gc3R5bGU9 Im1zby1zcGFjZXJ1bjogeWVzIj4mbmJzcDs8L1NQQU4+s9AgyM+juiC5+rzSyMvBptfK1LTT68nn u+Gxo9XPsr+jqMDN0v3X1jxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz5bMjAwNF0wMDE8L1NQQU4+ usWjqTwvU1RST05HPjwvU1BBTj48QlI+PC9GT05UPjwvRElWPg0KICAgICAgPERJVj48Rk9OVCBj b2xvcj0jZjAwMDAwPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNUUk9ORz48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxGT05UIA0KICAgICAgY29sb3I9I2Yw MDAwMD7IqCDN/iZuYnNwOyDWuCC1vKO6IA0KICAgICAgPC9GT05UPjwvU1BBTj65+s7x1Lq5+tPQ 18qy+rzgtr253MDtzq/Usbvh0dC+v9bQ0MTRp8r11ri1vDwvU1RST05HPjwvU1BBTj48QlI+PFNU Uk9ORz48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6 IMvOzOU7IExFVFRFUi1TUEFDSU5HOiAwLjRwdDsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQSI+xvMgDQogICAgICDStSDIzyDNrDwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0EiPqO6IA0KICAgICAgyKvH8jxTUEFOIGxhbmc9RU4tVVM+NTAwPC9TUEFOPse/oaLW 0Ln6PFNQQU4gDQogICAgICBsYW5nPUVOLVVTPjUwMDwvU1BBTj7Hv6GitPPW0NDNufrG86GizeLG 86Giw/HG87njt7rIz82sPC9TUEFOPjwvU1RST05HPjwvRk9OVD48QlI+PFNUUk9ORz48U1BBTiAN CiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9S OiBibGFjazsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgDQogICAgICA8Rk9OVCBjb2xvcj0jZjAwMDAwPiI8L0ZPTlQ+ PC9TUEFOPjxGT05UIGNvbG9yPSMwMGYwMDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwMDA+ufq8yrLGzvG53MDt yqY8L0ZPTlQ+PC9TUEFOPjwvRk9OVD48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+ PEZPTlQgDQogICAgICBjb2xvcj0jZjAwMDAwPiI8L0ZPTlQ+PC9TUEFOPjwvU1RST05HPjxGT05U IGNvbG9yPSMwMDgwMDA+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPjxGT05UIGNvbG9yPSM4 MDAwODA+PEZPTlQgY29sb3I9IzAwMDBmMD48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwMDA+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAg IGNvbG9yPSNmMDAwMDA+o6g8L0ZPTlQ+PC9TUEFOPjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0Ij48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwMDA+SW50ZXJuYXRpb25hbDxTUEFOIHN0 eWxlPSJtc28tc3BhY2VydW46IHllcyI+Jm5ic3A7IA0KICAgICAgPC9TUEFOPkZpbmFuY2U8U1BB TiBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPiZuYnNwOyA8L1NQQU4+TWFuYWdlciw8U1BBTiAN CiAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+Jm5ic3A7IDwvU1BBTj5JRk08L0ZPTlQ+ PC9TUEFOPjwvRk9OVD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09M T1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h biciPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD6jqTwvRk9OVD48L1NQQU4+PC9GT05UPjwv Rk9OVD48Rk9OVCBjb2xvcj0jMDBmMDAwPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD48Rk9O VCBjb2xvcj0jMDBmMDAwPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBD T0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPsrHufq8yrLGvq253MDt16jStcHs0/K1 xNK7zNfWsNK118q48cjP1qTM5c+1o6w8L0ZPTlQ+PC9TUEFOPjwvRk9OVD48L0ZPTlQ+PEZPTlQg DQogICAgICBjb2xvcj0jMDBmMDAwPjxGT05UIGNvbG9yPSMwMGYwMDA+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYw MDA+ysfTybn6vMqyxs7xudzA7dCtu+E8L0ZPTlQ+PC9TUEFOPjwvRk9OVD48Rk9OVCBjb2xvcj0j MDBmMDAwPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxh Y2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZP TlQgDQogICAgICBjb2xvcj0jZjAwMDAwPqOoPC9GT05UPjwvU1BBTj48U1BBTiBsYW5nPUVOLVVT IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFN SUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdCI+PEZPTlQgDQogICAgICBjb2xvcj0jZjAwMDAwPkludGVybmF0aW9u YWwgRmluYW5jaWFsIE1hbmFnZW1lbnQgQXNzb2NpdGlvbiANCiAgICAgIElGTUE8L0ZPTlQ+PC9T UEFOPjwvRk9OVD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6 IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD6jqTwvRk9OVD48L1NQQU4+PC9GT05UPjwvRk9O VD48Rk9OVCBjb2xvcj0jMDBmMDAwPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPrS0vaiyotTayKvH8s3G0NCj rDwvRk9OVD48L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENP TE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+ysfEv8ewztK5+tX+uK652be9s9DIz7XE ufq8ys2o08PXyrjx1qTK6c6o0ru1xLLGvq3A4NakyumhozwvRk9OVD48L1NQQU4+PEJSPjwvRk9O VD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgDQogICAgICA8L0ZPTlQ+PC9GT05UPjxGT05UIGNv bG9yPSMwMGYwMDA+PEZPTlQgY29sb3I9IzAwZjAwMD48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYw MDA+PEZPTlQgY29sb3I9IzAwZjAwMD48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+ PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPjIwMDQ8L0ZPTlQ+PC9TUEFOPjwvRk9OVD48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAg Y29sb3I9IzAwZjAwMD7E6jwvRk9OVD48L1NQQU4+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQiPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD41PC9GT05UPjwvU1BBTj48L0ZPTlQ+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRp LWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAg ICAgIGNvbG9yPSMwMGYwMDA+1MKjrDwvRk9OVD48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+ vq3UrdbQu6rIy8PxubK6zbn6wM22r7rNyee74bGj1c+yv8nzusvF+te8o6w8L0ZPTlQ+PC9TUEFO PjwvRk9OVD48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQt ZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PEZPTlQgDQogICAgICBj b2xvcj0jMDBmMDAwPklGTTwvRk9OVD4gPC9TUEFOPjwvRk9OVD48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7 IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD7X yrjxyM/WpLvx17zS/cjr1tC5+jwvRk9OVD48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwMDA+o6jX orLhusWjusDN0v3X1jwvRk9OVD48L1NQQU4+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQiPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD5bMjAwNF0wMDEgPC9GT05UPjwvU1BBTj48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAg ICAgY29sb3I9I2YwMDAwMD66xaOpPC9GT05UPjxGT05UIGNvbG9yPSNmMDAwMDA+o6w8L0ZPTlQ+ PC9TUEFOPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD48Rk9OVCBjb2xvcj0jMDBmMDAwPjxG T05UIGNvbG9yPSMwMGYwMDA+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFy ZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxGT05U IA0KICAgICAgY29sb3I9IzAwZjAwMD4yMDA1xOo21MKjrDwvRk9OVD48L1NQQU4+PC9GT05UPjwv Rk9OVD48L0ZPTlQ+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9S OiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+1tC5+tfcu+G8xsqm0K274TwvRk9OVD48Rk9O VCBjb2xvcj0jZjAwMDAwPqOo1tDX3NCtPC9GT05UPjwvU1BBTj48U1BBTiANCiAgICAgIGxhbmc9 RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9O VC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwMDA+WzIwMDVd MDExPC9GT05UPjwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Q09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbiciPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD66xaOpPC9GT05UPjxGT05UIA0KICAg ICAgY29sb3I9IzAwZjAwMD7T67n6vMqyxs7xudzA7dCtu+HU2r6p1f3Kvcb0tq/By7n6vMqyxs7x udzA7cqmo6g8L0ZPTlQ+PC9TUEFOPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD48Rk9OVCBj b2xvcj0jMDBmMDAwPjxGT05UIGNvbG9yPSMwMGYwMDA+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQiPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD5JRk08L0ZPTlQ+PC9TUEFOPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAg ICBjb2xvcj0jMDBmMDAwPqOpPC9GT05UPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD7BqrrP yM/WpKOsy6u3vbmyzazX6b2owcu5+rzKssbO8bncwO3KpqOoPC9GT05UPjwvU1BBTj48L0ZPTlQ+ PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0Ij48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+SUZNPC9GT05UPjwvU1BBTj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgY29s b3I9IzAwZjAwMD6jqTwvRk9OVD48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+1rDStdfKuPHB qrrPyM/WpM6v1LG74aOsy/mw5LeitcQ8L0ZPTlQ+PC9TUEFOPjwvRk9OVD48U1BBTiBsYW5nPUVO LVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQt RkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdCI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPiBJRk08L0ZP TlQ+IDwvU1BBTj48L0ZPTlQ+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+1qTK6dPrufq80taw0rXXyrjx1qTK 6b7f09DNrLXItcTQp8Gmo6yyorG7xMnI67n6vNLWsNK118q48dakyunNs9K7udzA7czlz7Whozwv Rk9OVD48L1NQQU4+PC9GT05UPjxCUj48Rk9OVCANCiAgICAgIHNpemU9ND48Rk9OVCBmYWNlPcGl yuk+PEZPTlQgY29sb3I9IzAwMDBmMD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0 cHQ7IEZPTlQtRkFNSUxZOiC/rMzlX0dCMjMxMjsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxTVFJPTkc+ob48L1NUUk9ORz48 L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTog t73V/bTzutq88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2kt Zm9udC1mYW1pbHk6INDCy87M5SI+0rW958bAyvY8L1NQQU4+PEIgDQogICAgICBzdHlsZT0ibXNv LWJpZGktZm9udC13ZWlnaHQ6IG5vcm1hbCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QSI+ob88L1NQQU4+PC9CPjwvRk9OVD48L0ZPTlQ+PC9GT05UPiZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOzxCUj48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IDxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+ufq8yrLGzvG5 3MDt0K274dPr1tC5+tfcu+G8xsqm0K274cGqus/Iz9akPC9TUEFOPjxTUEFOIA0KICAgICAgbGFu Zz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdB cmlhbCBCbGFjayc7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0 LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+obA8L1NQQU4+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdDsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj65+rzKssbO8bncwO3K pjwvU1BBTj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnQXJpYWwgQmxhY2snOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQiPqGxPC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0Fy aWFsIEJsYWNrJyI+o6zKx86qtPO80tf3wcu8/rrDysKjrNXiysfSu8/uysrTpsirx/K+rbzDu6+3 otW5tcTIy7LFuaSzzKGjssbO8bncwO3Kx7j3z+653MDttcTW0NDEu7e92qOsxuTLrsa9tcS437XN o6y52M+118XG89K1tcSzybDcus3KwtK1tcS3otW5oaO5+rzKssbO8bncwO3KpsrH0rvP7rjEuO+1 xLmks8yjrM2ouf25q7+qoaK5q8a9oaK5q9X9oaLRz7jxtcS/vMrUus3Iz9ako6yw0dPF0OPIy7LF 0aGyprP2wLSjrMq508PIy7v61sbKytOmytCzob6tvMO1xNDo0qqjrLTZvfjW0Ln6xvPStbLGzvG5 3MDty67GvbXEzOG436OszqrJ57vhtcS3otW51/az9rv9vKu1xLmxz9ehozwvU1BBTj4mbmJzcDs8 L0ZPTlQ+PC9ESVY+DQogICAgICA8RElWPjxGT05UIGNvbG9yPSMwMGYwMDA+PFNQQU4gbGFuZz1F Ti1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdBcmlh bCBCbGFjayc7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZv bnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0KICAgICAgPEZPTlQgY29s b3I9I2YwMDAwMD6hqqGqoao8L0ZPTlQ+PC9TUEFOPjwvRk9OVD48Rk9OVCBjb2xvcj0jZjAwMDAw PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M 5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+yKu5+sjLtPOzo86v oaLIq7n6yMu087LGvq3Or7ix1vfIzqGi1tC5+tfcu+G8xsqm0ae74bvhs6ShotStssbV/rK/uLGy v7OkPC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogJ0FyaWFsIEJsYWNrJzsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij4g DQogICAgICA8L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2sn Ij7VxdPTssU8L1NQQU4+PC9GT05UPjwvRElWPg0KICAgICAgPERJVj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWkt Zm9udC1mYW1pbHk6ICdBcmlhbCBCbGFjayciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTog J0FyaWFsIEJsYWNrJyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPiZuYnNwOyZuYnNwOyZu YnNwOyANCiAgICAgILSrzbPJz7LGzvHRp7/G0rvWsdPru+G8xrvsz/3U2tK7xvCjrLK7wPvT2r+q 1bmyxs7xu+62r6Gjz9bU2sjLw8fU2sDtwtvJz9LRvq3Iz8q2tb3By7LGzvHT67vhvMbV4rb+1d/W rrzktcSy7rHwo6yyosfS1NrRp7/GyejWw8nP0rLS0b6tvau2/tXft9a/qrKiwdCho7vhvMbXqNK1 xL/HsNLR09C74bzGyqbXyrjxo6zEx8O0ssbO8bncwO3SstOmtbHT0NfUvLq1xNfKuPHIz7aooaPS /b34ufq8yrLGzvG53MDtyqbXyrjxyM/WpMTcyrnO0rn60bjL2czusrmyxs7xudzA7daw0rXXyrjx t73D5rXEv9Ww16OssqLKtc/WuMPWsNK1serXvNPrufq8yr3TueyjrNKysdi2qLvhvKu087XYtNm9 +LLGzvG53MDt0ae/xrXEt6LVuaGjPC9GT05UPjwvU1BBTj48L1NQQU4+PC9ESVY+DQogICAgICA8 RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48Rk9OVCANCiAgICAgIGNvbG9yPSMw MGYwMDA+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6ICdBcmlhbCBCbGFjayc7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7PEZPTlQgDQogICAgICBjb2xvcj0jZjAwMDAwPqGqoaqhqjwvRk9O VD48L1NQQU4+PC9GT05UPjxGT05UIGNvbG9yPSNmMDAwMDA+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWFzY2lpLWZvbnQt ZmFtaWx5OiAnQXJpYWwgQmxhY2snIj6yxtX+sr+74bzG18q48cbAvNvW0NDE1vfIzjwvU1BBTj48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdBcmlh bCBCbGFjayc7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZv bnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+IA0KICAgICAgPC9T UEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+wO7I8LuqsqnK vzwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxESVY+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdBcmlhbCBCbGFjayciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFs IEJsYWNrJyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0KICAgICAgztK24MTq 1Nq/57n6uavLvrWjyM6yxs7x19y84LXEvq3A+sq5ztLS4sq2tb2jrNbQufqxvs3BtcTK18+vssbO 8bnZsdjQ677f09C5+rzKvq3TqrXE1b3C1NHbueK6zdLiyrajrLLFxNzKytOmxvPStbn6vMq+rdOq tcTQ6NKqo6y2+DwvU1BBTj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnQXJpYWwgQmxhY2snOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQiPklGTTwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdBcmlhbCBCbGFjayciPtaw0rXXyrjxyM/WpL2ryrnE+rvx0ua3y8ezoaM8L1NQQU4+ PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRElWPg0KICAgICAgPERJVj48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28t YXNjaWktZm9udC1mYW1pbHk6ICdBcmlhbCBCbGFjayciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZh bWlseTogJ0FyaWFsIEJsYWNrJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwg QmxhY2snIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdBcmlhbCBCbGFjayciPjxGT05U IA0KICAgICAgY29sb3I9IzAwZjAwMD48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ0FyaWFsIEJsYWNrJzsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgDQogICAgICA8Rk9OVCBjb2xvcj0jZjAw MDAwPqGqoaqhqjwvRk9OVD48L1NQQU4+PC9GT05UPjxGT05UIGNvbG9yPSNmMDAwMDA+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsg bXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj7P47jbsO7Dy7vjv6W8r83Fo6jJ z8rQuavLvqOpo6g8L1NQQU4+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ0FyaWFsIEJsYWNrJzsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1z by1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij5TSUZNPC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+o6nStsjq1PM8L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxESVY+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWFzY2lpLWZvbnQt ZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdBcmlh bCBCbGFjayciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dDsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWkt Zm9udC1mYW1pbHk6ICdBcmlhbCBCbGFjayciPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD48 U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjog YmxhY2s7IEZPTlQtRkFNSUxZOiAnQXJpYWwgQmxhY2snOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyANCiAgICAgIDxGT05U IGNvbG9yPSMwMGYwMDA+SUZNPC9GT05UPjwvU1BBTj48L0ZPTlQ+PEZPTlQgY29sb3I9IzAwZjAw MD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNr JyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPsrH0ru49rjfxvC146OsuN/SqsfztcTWsNK1 o6zG5LrL0MTE3MGmsPzAqMDtssbE3MGmo6y+9rLfxNzBpqOswey1vMTcwaa1yKOstvi52NPa1eLQ qcTcwaa1xM/qz7jD6Mr2us3I57rOu/G1w9Xi0KnE3MGmo6w8L0ZPTlQ+PC9TUEFOPjxTUEFOIA0K ICAgICAgbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6 IGJsYWNrOyBGT05ULUZBTUlMWTogJ0FyaWFsIEJsYWNrJzsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0Ij48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+SUZNPC9GT05UPjwvU1BB Tj48L0ZPTlQ+PEZPTlQgY29sb3I9IzAwZjAwMD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2Np aS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAw Pr/Os8zM5c+1u+G4+MT6tPCwuDwvRk9OVD48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+oaM8 L0ZPTlQ+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv RElWPg0KICAgICAgPERJVj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdBcmlhbCBCbGFj ayciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdBcmlhbCBCbGFjayciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFs IEJsYWNrJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBi bGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdBcmlh bCBCbGFjayciPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L0ZPTlQ+PEZP TlQgDQogICAgICBjb2xvcj0jZjAwMDAwPjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnQXJpYWwgQmxhY2snOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQiPqGqoaqhqjwvU1BBTj48U1BBTiANCiAgICAgIGxhbmc9 RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9O VC1GQU1JTFk6ICdBcmlhbCBCbGFjayc7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDLzszlIj4gDQogICAgICA8L1NQQU4+PC9GT05UPjxG T05UIGNvbG9yPSNmMDAwMDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1p bHk6ICdBcmlhbCBCbGFjayciPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD7DwLn6zKvR9Mqv 0825q8u+zNjW1tPN1tC5+rv5tdi4sdfcssM8L0ZPTlQ+PC9TUEFOPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiAnQXJpYWwg QmxhY2snOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250 LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPiANCiAgICAgIDwvU1BB Tj48L0ZPTlQ+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBi bGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdBcmlh bCBCbGFjayciPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD7VxcT+u6o8L0ZPTlQ+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRElWPg0KICAgICAg PERJVj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6 ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdBcmlhbCBCbGFjayciPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWFzY2lpLWZvbnQt ZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdBcmlh bCBCbGFjayciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdBcmlhbCBCbGFjayciPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48 Rk9OVCANCiAgICAgIGZhY2U9waXK6T48Rk9OVCBjb2xvcj0jMDAwMGYwPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IL+szOVfR0IyMzEyOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+ PFNUUk9ORz6hvjwvU1RST05HPjwvU1BBTj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogt73V/bTzutq88szlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M 5SI+SUZNPC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1G QU1JTFk6ILe91f2087ravPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPsjP1qS829a10+vTxcrGPC9TUEFOPjxCIA0KICAg ICAgc3R5bGU9Im1zby1iaWRpLWZvbnQtd2VpZ2h0OiBub3JtYWwiPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0EiPqG/PC9TUEFOPjwvQj48L0ZPTlQ+PC9GT05UPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxESVY+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dDsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWkt Zm9udC1mYW1pbHk6ICdBcmlhbCBCbGFjayciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTog J0FyaWFsIEJsYWNrJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2sn Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdBcmlhbCBCbGFjayciPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6 IDEwLjBwdDsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+PEZPTlQgDQog ICAgICBmYWNlPcGlyuk+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0KICAgICAgPEZPTlQg Y29sb3I9IzAwZjAwMD621NPatNM8L0ZPTlQ+PC9TUEFOPjxGT05UIGNvbG9yPSMwMGYwMDA+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+ysKyxs7xudzA7aGixvPStbncwO2hosbz0rW+ 9rLfoaLXyrG+1MvX96Gi16jStcDtssahorfnz9W53MDtoaLNttfKvvay37XIwezT8rmk1/e1xMjL yr+8sMbky/vP4LnYudzA7cjLyr+jrDwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj678bXDPC9TUEFOPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9u dC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij4gDQogICAgICBJRk0g PC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPsjP1qSx7cP3s9bWpMjLvt+x uMqkyM7P1rT6ssbO8bncwO25pNf3y/nQ6LXEudvE7qGi1qrKtqGivq3R6brNvLzE3KGj0uLOttfF s9bWpMjLxNy5u86qxvPStbvyv827p8zhs/a6z8DttcSyxs7xudzA7be9sLiyor7f09DH0Mq11rTQ 0LXExNzBpqGj1NrStb3noaK5zdb3oaK/zbunus3NrNDQ1tCjrDwvU1BBTj48U1BBTiANCiAgICAg IGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdCI+SUZNIA0KICAgICAgPC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbiciPtakyunS0bG7v7TX97PW1qTIy9aw0rXE3MGmy67GvbXEz/PV97rNserWvqGjPC9T UEFOPjwvRk9OVD48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxESVY+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWFzY2lpLWZvbnQt ZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdBcmlh bCBCbGFjayciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dDsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28tYXNjaWkt Zm9udC1mYW1pbHk6ICdBcmlhbCBCbGFjayciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWFzY2lp LWZvbnQtZmFtaWx5OiAnQXJpYWwgQmxhY2snIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1hc2Np aS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBmYWNl PSLLzszlLCBNUyBTb25nIj48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTJwdDsgRk9OVC1GQU1JTFk6ILOks8e62svOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05U IA0KICAgICAgZmFjZT2/rMzlX0dCMjMxMiBjb2xvcj0jMDAwMGYwPklGTSA8L0ZPTlQ+PC9TUEFO PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgRk9OVC1GQU1JTFk6ILOks8e6 2svOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgZmFjZT2/rMzlX0dCMjMxMiBj b2xvcj0jMDAwMGYwPsjP1qTWwcnZvt/T0Mj9uPa3vcPmtcS829a1o7o8L0ZPTlQ+IA0KICAgICAg PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxESVY+PEZPTlQgY29sb3I9IzAwMDAw MD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj4mbmJzcDsmbmJzcDsmbmJzcDsgDQog ICAgICA8Rk9OVCANCiAgICAgIGNvbG9yPSMwMDgwMDA+oaTWpMP3s9bWpNXf1/HK2LPP0MXWtNK1 1K3U8qOszazKsbHtw/fG5LbUy/m008rCtcSyxs7x16jStbmk1/e+q9Lmx/O+q7XEs9DFtaO7PC9G T05UPjwvU1BBTj48L0ZPTlQ+PEZPTlQgDQogICAgICBjb2xvcj0jMDA4MDAwPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t ZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPiAN CiAgICAgIDwvU1BBTj48L0ZPTlQ+PC9ESVY+DQogICAgICA8RElWPjxGT05UIGNvbG9yPSMwMDAw MDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdCI+PEZPTlQgDQogICAgICBjb2xvcj0jMDA4MDAwPiZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyA8U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVw dDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj6hpNak w/ez1tak1d+3+7rPufq8yr3Tuey1xNeo0rWx6te8o6zNrMqxse3D98bk1cbO1c/WtPqyxs7xudzA 7dStwO26zdaqyra1xLPMtsijuzwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvRk9OVD48L0RJVj4NCiAg ICAgIDxESVY+PEZPTlQgY29sb3I9IzAwMDAwMD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1p bHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48Rk9OVCANCiAgICAgIGNvbG9y PSMwMDgwMDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PC9TUEFOPjwvRk9OVD48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgDQogICAgICA8U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSMwMDgwMDA+ oaTWpMP3s9bWpNXfvt+xuMiozf7Iz7/JtcTWsNK118rWyqOszazKsbHtw/fG5MqkyM7P1rT6ssbO 8bncwO3KtbzKuaTX97XEvq3R6brNxNzBpsuuxr2hozwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L0ZPTlQ+PC9ESVY+DQogICAgICA8RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWls eTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1m b250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1o YW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgY29sb3I9IzAwODAwMD4mbmJzcDsm bmJzcDsmbmJzcDsgPC9GT05UPjxGT05UIGNvbG9yPSNmMDAwZjA+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJyI+yKG1wzwvU1BBTj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1m YXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+IA0K ICAgICAgSUZNIDwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj7XyrjxttTT 2rLGzvHXqNK1yMvUscuzwPu9+Mjr08XQ47XE1+nWr6GivajBorjfydC1xNa00rXQxdP+oaK78bXD 08XUvbXE1rDStbei1bm7+rvhvt/T0LyrtPO1xLDv1vqhozwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9ESVY+DQogICAgICA8RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZh bWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFz dC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxGT05UIA0KICAgICAgZmFjZT3BpcrpPjxGT05UIGNvbG9yPSMwMDAwZjA+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogv6zM5V9HQjIzMTI7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszl Ij48U1RST05HPqG+PC9TVFJPTkc+PC9TUEFOPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUyANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiC3vdX9tPO62rzyzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLL zszlIj5JRk08L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05U LUZBTUlMWTogt73V/bTzutq88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+s9bWpMjLyKjS5jwvU1BBTj48QiANCiAgICAg IHN0eWxlPSJtc28tYmlkaS1mb250LXdlaWdodDogbm9ybWFsIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBIj6hvzwvU1BBTj48L0I+PC9GT05UPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9ESVY+DQogICAgICA8RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZh bWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFz dC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxGT05UIA0KICAgICAgZmFjZT3BpcrpPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0Ei PjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IFdpbmdkaW5nczsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1o YW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1jaGFyLXR5cGU6IHN5bWJvbDsgbXNvLXN5bWJvbC1m b250LWZhbWlseTogV2luZ2RpbmdzIj48U1BBTiANCiAgICAgIHN0eWxlPSJtc28tY2hhci10eXBl OiBzeW1ib2w7IG1zby1zeW1ib2wtZm9udC1mYW1pbHk6IFdpbmdkaW5ncyI+Jm5ic3A7IA0KICAg ICAgdjwvU1BBTj48L1NQQU4+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5 OiDLzszlIj4gDQogICAgICA8L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+ 0rW957bUs9bWpMjLvt+xuLXEssbO8bncwO3Wqsq2oaK+rdHpus3E3MGmtcTIz7/JsqK+39PQyc/K 0Lmry761xMep19bIqKO7PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxESVY+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQt ZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJl YXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsg bXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JyI+PEZPTlQgDQogICAgICBmYWNlPcGlyuk+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6 IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFz Y2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBjb2xvcj0j ZjAwMDAwPjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBG T05ULUZBTUlMWTogV2luZ2RpbmdzOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWNoYXItdHlwZTogc3ltYm9sOyBtc28tc3ltYm9sLWZvbnQtZmFtaWx5OiBXaW5nZGluZ3Mi PjxTUEFOIA0KICAgICAgc3R5bGU9Im1zby1jaGFyLXR5cGU6IHN5bWJvbDsgbXNvLXN5bWJvbC1m b250LWZhbWlseTogV2luZ2RpbmdzIj4mbmJzcDsgDQogICAgICB2PC9TUEFOPjwvU1BBTj48U1BB TiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOUiPiANCiAgICAgIDwvU1BB Tj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj671bHqoaLWpNXCus3WpMrpvavWpMP3 s9bWpMjLtcSyxs7xudzA7deovNLJ7bfdo7s8L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9G T05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxESVY+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBmYWNlPcGlyuk+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZP TlQgDQogICAgICBjb2xvcj0jZjAwMDAwPjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogV2luZ2RpbmdzOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWhhbnNp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWNoYXItdHlwZTogc3ltYm9sOyBtc28tc3ltYm9sLWZvbnQt ZmFtaWx5OiBXaW5nZGluZ3MiPjxTUEFOIA0KICAgICAgc3R5bGU9Im1zby1jaGFyLXR5cGU6IHN5 bWJvbDsgbXNvLXN5bWJvbC1mb250LWZhbWlseTogV2luZ2RpbmdzIj4mbmJzcDsgDQogICAgICB2 PC9TUEFOPjwvU1BBTj48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTRwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvO zOUiPiANCiAgICAgIDwvU1BBTj48L0ZPTlQ+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48Rk9OVCANCiAg ICAgIGNvbG9yPSNmMDAwMDA+zai5/bn6vMqyxs7xudzA7dCtu+HW0Ln619yyv7XEPFNQQU4gDQog ICAgICBsYW5nPUVOLVVTPndlYjwvU1BBTj7VvrXjvbvB98LbzLOjrLKiv8m78bXD1+7QwrLGzvG5 3MDt1qrKttPrtq/MrNDFz6KjuzwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRElWPg0KICAgICAgPERJVj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZh cmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6 ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t YXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGZhY2U9waXK6T48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRp LWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAg ICAgIGNvbG9yPSNmMDAwMDA+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiBXaW5nZGluZ3M7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28taGFuc2ktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tY2hhci10eXBlOiBzeW1ib2w7IG1zby1zeW1ib2wtZm9udC1mYW1pbHk6 IFdpbmdkaW5ncyI+PFNQQU4gDQogICAgICBzdHlsZT0ibXNvLWNoYXItdHlwZTogc3ltYm9sOyBt c28tc3ltYm9sLWZvbnQtZmFtaWx5OiBXaW5nZGluZ3MiPiZuYnNwOyANCiAgICAgIHY8L1NQQU4+ PC9TUEFOPjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBG T05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5SI+IA0K ICAgICAgPC9TUEFOPjwvRk9OVD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVw dDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxGT05UIA0KICAgICAgY29s b3I9I2YwMDAwMD7P7dPQ0+vStb3nvqvTotLUvLCyxs7xudzA7deovNLU2s/fvbvB97XExr3MqKO7 PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9ESVY+DQogICAgICA8RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTog y87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250 LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5z aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05U IA0KICAgICAgZmFjZT3BpcrpPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7 IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD48 U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1J TFk6IFdpbmdkaW5nczsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVh c3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1jaGFy LXR5cGU6IHN5bWJvbDsgbXNvLXN5bWJvbC1mb250LWZhbWlseTogV2luZ2RpbmdzIj48U1BBTiAN CiAgICAgIHN0eWxlPSJtc28tY2hhci10eXBlOiBzeW1ib2w7IG1zby1zeW1ib2wtZm9udC1mYW1p bHk6IFdpbmdkaW5ncyI+Jm5ic3A7IA0KICAgICAgdjwvU1BBTj48L1NQQU4+PFNQQU4gbGFuZz1F Ti1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlIj4gDQogICAgICA8L1NQQU4+PC9GT05U PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdCI+PEZPTlQgDQogICAgICBjb2xvcj0jZjAwMDAwPs/t09DD4tei suGzyc6qufq8yrLGzvG53MDt0K274aOoPFNQQU4gDQogICAgICBsYW5nPUVOLVVTPklGTUE8L1NQ QU4+o6m74dSxtcTXyrjxo7s8L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxESVY+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJl YXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6 IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFz Y2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBmYWNlPcGlyuk+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAg ICBjb2xvcj0jZjAwMDAwPjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxNHB0OyBGT05ULUZBTUlMWTogV2luZ2RpbmdzOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWhhbnNpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWNoYXItdHlwZTogc3ltYm9sOyBtc28tc3ltYm9sLWZvbnQtZmFtaWx5OiBX aW5nZGluZ3MiPjxTUEFOIA0KICAgICAgc3R5bGU9Im1zby1jaGFyLXR5cGU6IHN5bWJvbDsgbXNv LXN5bWJvbC1mb250LWZhbWlseTogV2luZ2RpbmdzIj4mbmJzcDsgDQogICAgICB2PC9TUEFOPjwv U1BBTj48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9O VC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOUiPiANCiAg ICAgIDwvU1BBTj48L0ZPTlQ+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48Rk9OVCANCiAgICAgIGNvbG9y PSNmMDAwMDA+ytzR+6Oo08W73bvyw+K30aOpss680zxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz5J Rk1BPC9TUEFOPtb3sOy78tCtsOy1xLvh0um8sMzYsfC77ravo7s8L0ZPTlQ+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAg IDxESVY+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28t YmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBmYWNlPcGlyuk+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJyI+PEZPTlQgDQogICAgICBjb2xvcj0jZjAwMDAwPjxTUEFOIGxhbmc9RU4tVVMgDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogV2luZ2RpbmdzOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M 5TsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWNoYXItdHlwZTogc3ltYm9sOyBtc28t c3ltYm9sLWZvbnQtZmFtaWx5OiBXaW5nZGluZ3MiPjxTUEFOIA0KICAgICAgc3R5bGU9Im1zby1j aGFyLXR5cGU6IHN5bWJvbDsgbXNvLXN5bWJvbC1mb250LWZhbWlseTogV2luZ2RpbmdzIj4mbmJz cDsgDQogICAgICB2PC9TUEFOPjwvU1BBTj48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9u dC1mYW1pbHk6IMvOzOUiPiANCiAgICAgIDwvU1BBTj48L0ZPTlQ+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 Ij48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwMDA+u/HU+TxTUEFOIA0KICAgICAgbGFuZz1FTi1V Uz4xPC9TUEFOPsTqxtq1xNCtu+HNqNG20tS8sM/gudi1xMbky/u/r87vo7s8L0ZPTlQ+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4N CiAgICAgIDxESVY+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszl OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBmYWNl PcGlyuk+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENP TE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48Rk9OVCANCiAgICAgIGNvbG9yPSNm MDAwMDA+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZP TlQtRkFNSUxZOiBXaW5nZGluZ3M7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tY2hhci10eXBlOiBzeW1ib2w7IG1zby1zeW1ib2wtZm9udC1mYW1pbHk6IFdpbmdkaW5ncyI+ PFNQQU4gDQogICAgICBzdHlsZT0ibXNvLWNoYXItdHlwZTogc3ltYm9sOyBtc28tc3ltYm9sLWZv bnQtZmFtaWx5OiBXaW5nZGluZ3MiPiZuYnNwOyANCiAgICAgIHY8L1NQQU4+PC9TUEFOPjxTUEFO IGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5SI+IA0KICAgICAgPC9TUEFO PjwvRk9OVD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJs YWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD7P 7dPQ0tTTxbvdvNu48bm6wvLQrbvhvM3E7sa3tcTXyrjxo7s8L0ZPTlQ+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9ESVY+DQog ICAgICA8RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5Tsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h biciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h c2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgZmFjZT3B pcrpPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xP UjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48Rk9O VCANCiAgICAgIGNvbG9yPSNmMDAwMDA+PEZPTlQgY29sb3I9I2YwMDAwMD48U1BBTiBsYW5nPUVO LVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IFdpbmdkaW5n czsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1p bHk6IMvOzOU7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h c2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1jaGFyLXR5cGU6IHN5bWJv bDsgbXNvLXN5bWJvbC1mb250LWZhbWlseTogV2luZ2RpbmdzIj48U1BBTiANCiAgICAgIHN0eWxl PSJtc28tY2hhci10eXBlOiBzeW1ib2w7IG1zby1zeW1ib2wtZm9udC1mYW1pbHk6IFdpbmdkaW5n cyI+Jm5ic3A7IA0KICAgICAgdjwvU1BBTj48L1NQQU4+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJl YXN0LWZvbnQtZmFtaWx5OiDLzszlIj4gDQogICAgICA8L1NQQU4+PC9GT05UPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6 IDEwLjBwdCI+PEZPTlQgDQogICAgICBjb2xvcj0jZjAwMDAwPs/t09DU2s/f18nRr8nMzvG3/s7x oaMgo6jXoqO60tTJz8z1v+694srNyKi56TxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz5JRk1BPC9T UEFOPsv509A8L0ZPTlQ+PEZPTlQgDQogICAgICBjb2xvcj0jZjAwMDAwPqOpPC9GT05UPjwvU1BB Tj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9ESVY+DQogICAgICA8RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250 LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFy ZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7 IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h biciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xP UjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQiPjxGT05UIA0KICAgICAgZmFjZT3BpcrpPjxGT05UIGNvbG9yPSMwMDAw ZjA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogv6zM 5V9HQjIzMTI7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250 LWZhbWlseTog0MLLzszlIj48U1RST05HPqG+PC9TVFJPTkc+PC9TUEFOPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6ILe91f2087ravPLM5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUi PsXg0bXM2MmrPC9TUEFOPjxCIA0KICAgICAgc3R5bGU9Im1zby1iaWRpLWZvbnQtd2VpZ2h0OiBu b3JtYWwiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPqG/PC9TUEFOPjwvQj48L0ZP TlQ+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvRElWPg0KICAgICAgPERJVj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9u dC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZh cmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09M T1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0Ij48Rk9OVCANCiAgICAgIGZhY2U9waXK6T48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPiZuYnNw OzxGT05UIA0KICAgICAgY29sb3I9IzgwMDA4MD4mbmJzcDsmbmJzcDsmbmJzcDsgoe4gSUZNyM/W pLn6xNrN4tK7wfc8L0ZPTlQ+PC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QSI+PEZPTlQgDQogICAgICBjb2xvcj0jODAwMDgwPtfKye7XqDxzdDE6UGVyc29uTmFtZSBQcm9k dWN0SUQ9IrzSIiANCiAgICAgIHc6c3Q9Im9uIj680jwvc3QxOlBlcnNvbk5hbWU+vczK2sfXwdnF 4NG1o6y2wMzYtcTWqsq2zOXPtb3hubmjrMq108PPtc2ztcTXqNK1v86zzMno1sOjuzwvRk9OVD48 L1NQQU4+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxESVY+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1m YXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M 5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxh Y2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PEZPTlQgDQogICAgICBmYWNlPcGlyuk+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBIj48Rk9OVCANCiAgICAgIGNvbG9yPSM4MDAwODA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgDQogICAgICCh7iA8L1NQQU4+PFNQ QU4gbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt d2VpZ2h0OiBib2xkIj5JRk08L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXdlaWdodDogYm9sZCI+16jM4rC4wP231s720dDM1qOsubK9qLjfsuO9 u8H3u6W2r8a9zKijrLv9te3J7rrxyMvC9tfK1LQ8L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+ PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvRElWPg0KICAgICAgPERJVj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1m YW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVh c3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6 IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0Ij48Rk9OVCANCiAgICAgIGZhY2U9waXK6T48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC13ZWlnaHQ6IGJvbGQiPjxG T05UIA0KICAgICAgY29sb3I9IzgwMDA4MD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBa SC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0EiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyANCiAgICAgIKHuIDwvU1BBTj48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0EiPrPJvs3KtdW9ssbO8bncwO2hotTL1/fXqLzSo6zV5tX9 yrXP1teo0rW8vMTczOHJ/dPr1rDStcn60cS3otW5y6vW2Lzb1rXM4cn9PC9TUEFOPjwvRk9OVD48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9ESVY+DQogICAgICA8RElWPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1o YW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRw dDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09M T1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxGT05UIA0KICAgICAgZmFjZT3Bpcrp IGNvbG9yPSM4MDAwODA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtd2VpZ2h0OiBib2xkIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7IA0KICAgICAgoe4gDQogICAgICDU7L7NssbO8bncwO2hotfKsb7Uy9f3oaK5 q8u+vvay36GixvPStbncwO2hormry77A7bLGoaK358/Vueax3KGizbbXyr72st/XqLzSPC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9ESVY+DQogICAgICA8 RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXdlaWdodDogYm9s ZCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0EiPjxGT05UIA0KICAgICAgZmFjZT3BpcrpPjxGT05UIGNvbG9yPSMwMDAw ZjA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogv6zM 5V9HQjIzMTI7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250 LWZhbWlseTog0MLLzszlIj48U1RST05HPqG+PC9TVFJPTkc+PC9TUEFOPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6ILe91f2087ravPLM5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUi PsXg0bW21M/zPC9TUEFOPjxCIA0KICAgICAgc3R5bGU9Im1zby1iaWRpLWZvbnQtd2VpZ2h0OiBu b3JtYWwiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPqG/PC9TUEFOPjwvQj48L0ZP TlQ+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9ESVY+ DQogICAgICA8RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M 5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9S OiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXdl aWdodDogYm9sZCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxGT05UIA0KICAgICAgZmFjZT3BpcrpPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpI LUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyANCiAgICAgIDxGT05UIA0KICAgICAgY29sb3I9IzAw ZjAwMD48U1RST05HPtakyK+7+rm5oaK74bzGyqbKws7xy/mhorLGzvG5y87KuavLvqGi0vjQ0KGi saPP1bmry76hor/nufq5q8u+oaK089bQ0M25q8u+oaK5+tPQxvPStaGiyP3Xysbz0rWhosPx06rG 89K1oaLNttfKuavLvqGiu/m98Lmry76horTz1trG89K1tcS437y2ssbO8dW9wtTIy7LFoaKyxs7x 19y84KGi19y+rcDtoaLX3LLDtcg8L1NUUk9ORz48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxE SVY+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtd2VpZ2h0OiBib2xk Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQSI+PEZPTlQgDQogICAgICBmYWNlPcGlyuk+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0KICAgICAgPEZPTlQg Y29sb3I9IzAwZjAwMD7Ev8ewo6y5+rzKssbO8bncwO3KprXE18q48dLRvq2zyc6q1tC5+rLGvq3B 7NPytcTIqM3+yM/WpDwvRk9OVD48L1NQQU4+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPjxT UEFOIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdCI+LDwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij7S0dPQPC9TUEFOPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1m YW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij4yNTwvU1BBTj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj649sqhytDX1NbOx/i/qtW5yM/WpLmk1/ejrDwvU1BB Tj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszl OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+MTAwMDA8L1NQQU4+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJyI+0+DIy7LOvNO/vMrUo6y9/DwvU1BBTj48U1BBTiANCiAgICAgIGxh bmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdCI+ODAwMDwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj7I y7vxtcPWpMrpoaPRp9SxwLTX1KO6PEVNPjxTVFJPTkc+ufq80r+qt6LS+NDQoaLW0Ln60vjQ0KGi 1tC5+rmkyczS+NDQoaI8L1NUUk9ORz48L0VNPjwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ0FyaWFsIEJsYWNrJyI+PEVNPjxTVFJPTkc+PEZPTlQgDQog ICAgICBjb2xvcj0jMDBmMDAwPtbQufq9qMno0vjQ0DwvRk9OVD6hojwvU1RST05HPjwvRU0+PC9T UEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h c2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxFTT48U1RST05HPrGxvqnS+NDQ oaK54rTz0vjQ0KGiw/HJ+tL40NChosWp0rXS+NDQoaLK17jWvK/NxaGi1tC5+rXn0MWhotbQufrK r9PNoaLW0Ln6yq+7r6Gi1tDBuLyvzcWhorn618rOr6Gi1tC5+tK7xvuhosz6tcCyv7rNufq7qrXn waa1yLXIPC9TVFJPTkc+PC9FTT6hozwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxE SVY+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtd2VpZ2h0OiBib2xk Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+ PEZPTlQgDQogICAgICBmYWNlPcGlyuk+PEZPTlQgY29sb3I9IzAwMDBmMD48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiC/rMzlX0dCMjMxMjsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUi PjxTVFJPTkc+ob48L1NUUk9ORz48L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxNHB0OyBGT05ULUZBTUlMWTogt73V/bTzutq88szlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+yeqxqMz1vP48L1NQQU4+ PEIgDQogICAgICBzdHlsZT0ibXNvLWJpZGktZm9udC13ZWlnaHQ6IG5vcm1hbCI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+ob88L1NQQU4+PC9CPjwvRk9OVD48L0ZPTlQ+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L0RJVj4NCiAgICAgIDxESVY+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5 OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Q09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtd2VpZ2h0OiBib2xkIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBmYWNlPcGlyuk+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFu c2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSNm MDAwZjA+Jm5ic3A7Jm5ic3A7Jm5ic3A7IDxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+ofQgDQogICAgICC0 89eo0afA+jxTUEFOIGxhbmc9RU4tVVM+KDwvU1BBTj678s2stcjRp8D6PFNQQU4gbGFuZz1FTi1V Uz4pLDwvU1BBTj6008rCz+C52Neo0rW5pNf3PFNQQU4gDQogICAgICBsYW5nPUVOLVVTPjU8L1NQ QU4+xOrS1MnPPFNQQU4gbGFuZz1FTi1VUz4oPC9TUEFOPrqsPFNQQU4gDQogICAgICBsYW5nPUVO LVVTPimjuzwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9E SVY+DQogICAgICA8RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTog y87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENP TE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250 LXdlaWdodDogYm9sZCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h c2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgZmFjZT3BpcrpPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BB TiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGNv bG9yPSNmMDAwZjA+Jm5ic3A7Jm5ic3A7Jm5ic3A7IKH0ILTz0aexvr/G0afA+jxTUEFOIA0KICAg ICAgbGFuZz1FTi1VUz4oPC9TUEFOPrvyzay1yNGnwPo8U1BBTiBsYW5nPUVOLVVTPiksPC9TUEFO PrTTysLP4LnYuaTX9zxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz4zPC9TUEFOPsTq0tTJzzxTUEFO IGxhbmc9RU4tVVM+KDwvU1BBTj66rDxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz4po7s8L1NQQU4+ PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9E SVY+DQogICAgICA8RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTog y87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENP TE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250 LXdlaWdodDogYm9sZCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h c2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgZmFjZT3BpcrpPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BB TiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIGxh bmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwZjA+ Jm5ic3A7Jm5ic3A7Jm5ic3A7IKH0IMu2yr88U1BBTiBsYW5nPUVOLVVTPig8L1NQQU4+u/LNrLXI 0afA+jxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz4pLDwvU1BBTj6008rCz+C52Neo0rW5pNf3PFNQ QU4gbGFuZz1FTi1VUz4yPC9TUEFOPsTq0tTJzzxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz4oPC9T UEFOPrqsPFNQQU4gDQogICAgICBsYW5nPUVOLVVTPimjuzwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRElW Pg0KICAgICAgPERJVj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvO zOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xP UjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC13 ZWlnaHQ6IGJvbGQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGZhY2U9waXK6T48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4g DQogICAgICBsYW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5n PUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBjb2xvcj0jZjAwMGYwPiZu YnNwOyZuYnNwOyZuYnNwOyCh9CDIobXDsqnKv9Gnzrs8U1BBTiBsYW5nPUVOLVVTPjE8L1NQQU4+ xOrS1MnPPFNQQU4gDQogICAgICBsYW5nPUVOLVVTPig8L1NQQU4+uqw8U1BBTiANCiAgICAgIGxh bmc9RU4tVVM+KaO7PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9ESVY+DQogICAgICA8RElWPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQi PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5z aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7 IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6 ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6 IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXdlaWdodDogYm9sZCI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBa SC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAg ICAgZmFjZT3BpcrpPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwZjA+Jm5ic3A7Jm5ic3A7Jm5ic3A7IKH0ILvx tcO5+rzKssbO8bncwO3KpjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz4oSUZNKTwvU1BBTj7WpMrp PFNQQU4gbGFuZz1FTi1VUz4sPC9TUEFOPsGs0Pi008rCz+C52Neo0rW5pNf3PFNQQU4gDQogICAg ICBsYW5nPUVOLVVTPjM8L1NQQU4+xOrS1MnPPFNQQU4gbGFuZz1FTi1VUz4oPC9TUEFOPrqsPFNQ QU4gDQogICAgICBsYW5nPUVOLVVTPimjuzwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRElWPg0KICAgICAg PERJVj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t YmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVw dDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC13ZWlnaHQ6IGJv bGQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48Rk9OVCANCiAgICAgIGZhY2U9waXK6SBjb2xvcj0jZjAwMGYwPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48 U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAg IGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj4mbmJzcDsmbmJzcDsmbmJzcDsgDQogICAg ICCh9CDIobXDssa+raGivq28w6GiudzA7c/gudjXqNK1uN+8tteo0rW8vMr11rCzxjxTUEFOIA0K ICAgICAgbGFuZz1FTi1VUz4vPC9TUEFOPtaw0rXXyrjx1d+juzwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxE SVY+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtd2VpZ2h0OiBib2xk Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+ PEZPTlQgDQogICAgICBmYWNlPcGlyukgY29sb3I9I2YwMDBmMD48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5z aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQ QU4gDQogICAgICBsYW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBs YW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0KICAgICAg ofQgDQogICAgICC089eo0afA+qOou/LNrLXI0afA+qOpo6y1o8jOxvPStbLGzvHX3LzgoaLX3Lvh vMbKpqGi19y+rbzDyqa78s2stcjWsM7x1d+hozwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0RJVj4NCiAgICAgIDxESVY+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xP UjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtd2VpZ2h0OiBib2xkIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbiciPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFO IA0KICAgICAgbGFuZz1FTi1VUz48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7 IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1o YW5zaS1mb250LWZhbWlseTog0MLLzszlIj48Rk9OVCANCiAgICAgIGZhY2U9IkFyaWFsIEJsYWNr Ij48U1RST05HPtK7oaI8L1NUUk9ORz48Rk9OVCANCiAgICAgIGZhY2U9utrM5T6/vMrUt73KvaGi yrG85Lywt9HTwzwvRk9OVD48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9ESVY+DQogICAgICA8RElWPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFz dC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQi PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M 5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2Np aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5z aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRw dDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXdlaWdodDogYm9sZCI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h biciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h c2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BB TiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIGxh bmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAw MzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1m YW1pbHk6INDCy87M5SI+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28taGFuc2ktZm9udC1mYW1pbHk6IMvOzOUi PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxGT05UIA0KICAgICAg Y29sb3I9IzAwZjAwMD4gSUZNIDwvRk9OVD48L1NQQU4+PEZPTlQgY29sb3I9IzAwZjAwMD48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWFzY2lpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAw PtTau6rK1LXjv7zK1LLJyKGhsDwvRk9OVD48L1NQQU4+PEZPTlQgY29sb3I9IzAwZjAwMD48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWFzY2lpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAw Pr+8x7DF4NG1uKi1vCs8L0ZPTlQ+PC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+yKu5+s2z0ru/vMrUobE8L0ZPTlQ+PC9T UEFOPjwvRk9OVD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6 IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAg ICBjb2xvcj0jMDBmMDAwPrXExKPKvaGjPC9GT05UPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbiciPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD6497XYuPm+3cq1vMrH6b/2v6qw4KOs v7zK1L/J0tS4+sirufrNs7+8PFNQQU4gbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEycHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBIj6jqDIwMTA8L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+xOo8U1BB TiANCiAgICAgIGxhbmc9RU4tVVM+NDwvU1BBTj7UwjxTUEFOIGxhbmc9RU4tVVM+MjQtMjU8L1NQ QU4+yNWjqTwvU1BBTj6jrNKyv8nS1Mnqx+u807+8o7s8U1BBTiANCiAgICAgIGxhbmc9RU4tVVMg DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dCI+SUZNPC9TUEFOPjwvRk9OVD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVw dDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9O VCANCiAgICAgIGNvbG9yPSMwMGYwMDA+0afPsLDg0afUsb/JuPm+3dfUye3H6b/20aHU8cqxvOS9 +NDQvMzQ+L3M0/08L0ZPTlQ+oaM8L1NQQU4+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9ESVY+DQogICAg ICA8RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M 5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2Np aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFj azsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXdlaWdodDog Ym9sZCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7 IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h biciPjxGT05UIA0KICAgICAgZmFjZT3BpcrpPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAg IGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+ PEZPTlQgY29sb3I9IzAwZjAwMD48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZh bWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPiZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyANCiAgICAgIDE8L1NQQU4+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJyI+oaI8L1NQQU4+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t ZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPklG TSANCiAgICAgIDwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj68tqOo1tC8 tqOpo7qxqMP7oaLF4NG1vLC/vMrUoaLIz9akt9HTwzwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3Qt Zm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij4gDQogICAgICA8 L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+us+8xjwvU1BBTj48U1BBTiAN CiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdCI+IA0KICAgICAgMTY4MDA8L1NQQU4+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJyI+1Ko8L1NQQU4+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t ZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPi88 L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+yMs8L1NQQU4+PC9GT05UPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRElW Pg0KICAgICAgPERJVj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvO zOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xP UjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC13 ZWlnaHQ6IGJvbGQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGZhY2U9waXK6T48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4g DQogICAgICBsYW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5n PUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgY29s b3I9IzAwZjAwMD48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M 5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyANCiAgICAgIDI8L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJyI+oaI8L1NQQU4+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1m b250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPlNJRk08L1NQQU4+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+vLajqLjfvLajqaO6sajD+6GixeDRtbyw v7zK1KGiyM/WpLfR08M8L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszl OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+IA0KICAgICAgPC9TUEFOPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1o YW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbiciPrrPvMY8L1NQQU4+PFNQQU4gDQogICAgICBsYW5nPUVOLVVT IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQiPiANCiAgICAgIDIxODAwPC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PtSqPC9TUEFOPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1p bHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij4vPC9TUEFOPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1o YW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbiciPsjLPC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9ESVY+DQogICAgICA8 RElWPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXdlaWdodDogYm9s ZCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJyI+PEZPTlQgDQogICAgICBmYWNlPbrazOUgY29sb3I9IzAwZjAwMD48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFu c2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7 IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1o YW5zaS1mb250LWZhbWlseTog0MLLzszlIj48U1RST05HPrb+oaI8L1NUUk9ORz48Rk9OVCANCiAg ICAgIGZhY2U9utrM5T6/zrPMyejWw6O6PC9GT05UPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRElWPg0K ICAgICAgPERJVj48Rk9OVCBmYWNlPbrazOU+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5 OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZv bnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFj azsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6 IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVw dDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1iaWRpLWZvbnQtd2VpZ2h0OiBib2xkIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx NHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVw dDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgbGFu Zz1FTi1VUz48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZ OiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxG T05UIA0KICAgICAgY29sb3I9IzAwMDAwMD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48Rk9OVCANCiAgICAgIGNvbG9yPSMwMDMzY2Mgc2l6ZT0zPiZuYnNwOyZuYnNwOyZuYnNwOyA8 L0ZPTlQ+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPrmyt9bI/bj2xKO/6aOsPC9GT05UPjwv U1BBTj48L0ZPTlQ+PEZPTlQgY29sb3I9IzAwZjAwMD48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMg DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dCI+ODwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj7DxbrL0MS/zrPMo6zI 56G2ssbO8bGose231s720+vG89K1vNvWtcbAucCht6GiobbXyrL6udzA7brN18qy+takyK+7r6G3 oaKhtr3wyNrXyrL6xsC5wLrNzbbXyrncwO2ht6GiobbG89K1vOayoqGiytW5utPr1tjX6aG3oba5 ycio1qTIr9S2xtrN4rvjus/UvKGixtrIqMrQs6Ghor3wyNrG2rv1ytCzoaG3oa2hrbXIv86zzKGj PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9OVD48L0RJ Vj4NCiAgICAgIDxESVY+PEZPTlQgZmFjZT262szlPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZh bWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFz dC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjog YmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXdlaWdodDogYm9sZCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7 IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAg IGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBm MDAwPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h c2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX917zUsrzy zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtRkFNSUxZOiDLzszlOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZB TUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszl Ij48Rk9OVCANCiAgICAgIGNvbG9yPSMwMDAwMDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJyI+PEZPTlQgDQogICAgICBmYWNlPSLLzszlLCBNUyBTb25nIj48U1BBTiBsYW5nPUVOLVVT IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFN SUxZOiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUi PjxTVFJPTkc+yP2hojwvU1RST05HPjxGT05UIA0KICAgICAgZmFjZT262szlPjxTVFJPTkc+SUZN L1NJRk08L1NUUk9ORz4gPC9GT05UPjwvU1BBTj48L0ZPTlQ+PEZPTlQgZmFjZT262szlPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFN SUxZOiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUi Ptakyum1xLvxyKHT67Lp0a+jujwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9OVD48L0RJVj4NCiAgICAgIDxESVY+PEZPTlQgZmFj ZT262szlPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M 5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2Np aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFj azsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXdlaWdodDog Ym9sZCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7 IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h biciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6 ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtRkFNSUxZOiDLzszl OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGZhY2U9utrM5T48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48Rk9OVCANCiAgICAgIGNv bG9yPSMwMDAwMDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7IA0KICAgICAgPEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPsirsr+/vMrUv8bEv7PJ vKjOqrrPuPG1xL+8yfqjrMfSt/u6z7n6vMqyxs7xudzA7cqm18q48cjP1qTP4NOmyM/WpMz1vP6h otfKwc/G67G4tcSjrNTaufq8yrLGzvG53MDt0K274b3Ttb2/vMn6tcTIz9akyerH67rztcQ8L0ZP TlQ+PC9TUEFOPjwvRk9OVD48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+PFNQQU4gbGFuZz1F Ti1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0Ij4yNTwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj649rmk1/fI 1cTao6zTybn6vMqyxs7xudzA7dCtu+HHqbeiz+DTpry2sfC1xNakyumhozwvU1BBTj48L0ZPTlQ+ PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9OVD48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0ZP TlQ+PC9ESVY+DQogICAgICA8RElWPjxGT05UIGZhY2U9utrM5T48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3Qt Zm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Q09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRp LWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWJpZGktZm9udC13ZWlnaHQ6IGJvbGQiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBa SC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4g DQogICAgICBsYW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5n PUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgY29s b3I9IzAwZjAwMD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V /de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULUZBTUlMWTogy87M5TsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNjYzsg Rk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6 INDCy87M5SI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBm YWNlPbrazOU+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAw MzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1m YW1pbHk6INDCy87M5SI+PEZPTlQgDQogICAgICBjb2xvcj0jMDAwMDAwPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5z aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPiZuYnNw OyZuYnNwOyZuYnNwOyANCiAgICAgIDxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxG T05UIA0KICAgICAgY29sb3I9I2YwMDAwMD6h7zwvRk9OVD4gPC9TUEFOPjxGT05UIA0KICAgICAg Y29sb3I9IzAwZjAwMD65+rzKssbO8bncwO3Kptaw0rXXyrjx1tC5+s341b48L0ZPTlQ+PC9TUEFO PjxGT05UIGNvbG9yPSMwMGYwMDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszl OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+IA0KICAgICAgPC9TUEFOPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1o YW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbiciPqOoPC9TUEFOPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUyAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 Ij48QSANCiAgICAgIGhyZWY9Imh0dHA6Ly93d3cuaWZtLm9yZy5jbiI+aHR0cDovL3d3dy5pZm0u b3JnLmNuPC9BPjwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj6jqaO7PC9T UEFOPjwvRk9OVD48L1NQQU4+PC9GT05UPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvRElWPg0KICAgICAgPERJVj48Rk9OVCBmYWNl PbrazOU+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28t YmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNr OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtd2VpZ2h0OiBi b2xkIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsg bXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M 5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbiciPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de8 1LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULUZBTUlMWTogy87M5TsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9O VC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDC y87M5SI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBmYWNl PbrazOU+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNj YzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1p bHk6INDCy87M5SI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbiciPiZuYnNwOyZuYnNwOyZuYnNwOyANCiAgICAgIDxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7 IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD6h 7zwvRk9OVD4gPC9TUEFOPtbQufrX3LvhvMbKptCtu+HN+NW+PC9TUEFOPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFy ZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPiANCiAg ICAgIDwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj6jqDwvU1BBTj48U1BB TiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28t YmlkaS1mb250LXNpemU6IDEwLjBwdCI+PEEgDQogICAgICBocmVmPSJodHRwOi8vd3d3LmNhY2Zv LmNvbSI+aHR0cDovL3d3dy5jYWNmby5jb208L0E+PC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPqOpo7s8L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9O VD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9OVD48L0RJVj4NCiAgICAgIDxE SVY+PEZPTlQgZmFjZT262szlPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5Tsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWls eTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQi PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXdlaWdodDogYm9sZCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1G QU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M 5SI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6 ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05U IA0KICAgICAgZmFjZT262szlPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsg Q09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M 5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2Np aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbiciPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nIj4mbmJzcDsmbmJzcDsmbmJzcDsgDQogICAgICA8U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwMDA+oe88L0ZPTlQ+IDwv U1BBTj7Azbavus3J57vhsaPVz7K/wM22r9aw0rW8vMTcvPi2qNbQ0MTN+NW+PC9TUEFOPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQiPiANCiAgICAgIDwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVw dDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj6jqDwv U1BBTj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDL zszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PEEgDQogICAgICBocmVmPSJodHRwOi8v d3d3Lm9zdGEub3JnLmNuIj5odHRwOi8vd3d3Lm9zdGEub3JnLmNuPC9BPjwvU1BBTj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj6jqaGjPC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9G T05UPjwvRElWPg0KICAgICAgPERJVj48Rk9OVCBmYWNlPbrazOU+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0 LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQi PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtd2VpZ2h0OiBib2xkIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNOOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog WkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6 IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFz Y2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFO IA0KICAgICAgbGFuZz1FTi1VUz48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVw dDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgbGFu Zz1FTi1VUz48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGNv bG9yPSMwMGYwMDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe9 1f3XvNSyvPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1oYW5zaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h biciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7 IEZPTlQtRkFNSUxZOiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5 OiDQwsvOzOUiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX9 17zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxGT05UIA0K ICAgICAgZmFjZT0iy87M5SwgTVMgU29uZyIgY29sb3I9IzAwMDAwMD48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBG T05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog 0MLLzszlIj48U1RST05HPsvEoaI8L1NUUk9ORz48Rk9OVCANCiAgICAgIGZhY2U9utrM5T7J6rGo ssTBz6O6PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9GT05UPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9ESVY+ DQogICAgICA8RElWPjxGT05UIGZhY2U9utrM5T48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1p bHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3Qt Zm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28t aGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBt c28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6 IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBa SC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJs YWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6 ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWJpZGktZm9udC13ZWlnaHQ6IGJvbGQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBs YW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAw MD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULUZBTUlMWTogy87M5TsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1J TFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PEZPTlQgDQogICAgICBmYWNl PSLLzszlLCBNUyBTb25nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48Rk9OVCANCiAgICAgIGNv bG9yPSMwMDAwMDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7IA0KICAgICAgPEZPTlQgY29sb3I9IzAwZjAwMD6htrn6vMqyxs7xudzA7cqmyerH67Ht obehoqG2PC9GT05UPjwvU1BBTj48L0ZPTlQ+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXdlaWdodDogYm9sZCI+PEZPTlQgDQogICAgICBjb2xvcj0jMDBmMDAwPrn6vMqyxs7xudzA 7cqmxNzBpsbAucCx7aG3PC9GT05UPjwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj7Urbz+u/LJqMPovP6hotGnwPq8sNGnzrvWpLi006G8/jwvU1BBTj48U1BBTiANCiAgICAg IGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdCI+MTwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj63 3aGi1rCzxryw1rDStdfKuPHWpMrpuLTTobz+PC9TUEFOPjxTUEFOIA0KICAgICAgbGFuZz1FTi1V UyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0Ij4xPC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPrfdoaK5pNf31qTD 9zwvU1BBTj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5 OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+MTwvU1BBTj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFu c2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nIj633aGiye233dakuLTTobz+PC9TUEFOPjxTUEFOIA0KICAgICAg bGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0Ij4xIA0KICAgICAgPC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbiciPrfdoaLAtrXXPC9TUEFOPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUyANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVh c3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij4yPC9TUEFO PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M 5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2Np aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPrTnssrJq9XVxqw8L1NQQU4+PFNQQU4g DQogICAgICBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQiPjQ8L1NQQU4+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJyI+1cWjqL75v8nOqsmow+i8/qOpoaM8L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9ESVY+DQogICAgICA8RElWPjxGT05UIGZhY2U9utrM5T48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC13ZWlnaHQ6IGJvbGQiPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFu c2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVw dDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+ PFNQQU4gDQogICAgICBsYW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2Nj OyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWls eTog0MLLzszlIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULUZBTUlMWTogy87M5TsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0 OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t aGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNjYzsg Rk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6 INDCy87M5SI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t YmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsg bXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PEZPTlQgDQogICAgICBmYWNlPSLLzszl LCBNUyBTb25nIiBjb2xvcj0jMDBmMDAwPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZP TlQtRkFNSUxZOiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQ wsvOzOUiPjxTVFJPTkc+zuWhojwvU1RST05HPjxGT05UIA0KICAgICAgZmFjZT262szlPr+8ytTI z9akwfezzKO6PC9GT05UPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9GT05UPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9T UEFOPjwvRk9OVD48L0RJVj4NCiAgICAgIDxESVY+PEZPTlQgZmFjZT262szlPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t ZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJs YWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXdlaWdodDogYm9sZCI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1D TjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0Ei PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0 OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAg ICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX917zU srzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1o YW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJw dDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBt c28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h biciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h c2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3 vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxGT05U IA0KICAgICAgZmFjZT0iy87M5SwgTVMgU29uZyIgY29sb3I9IzAwZjAwMD48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFu c2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7 IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1o YW5zaS1mb250LWZhbWlseTog0MLLzszlIj48Rk9OVCANCiAgICAgIGNvbG9yPSMwMGYwMDA+z6PN +7PJzqq5+rzKssbO8bncwO3KpjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsg Rk9OVC1GQU1JTFk6ILfCy85fR0IyMzEyOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJyI+PFNUUk9ORz48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwMDA+ofo8L0ZP TlQ+PC9TVFJPTkc+PC9TUEFOPszu0LTRp9SxsajD+7vY1rSx7bSr1ebWwcPYyum0pjAxMDg2MjEw Mzk3PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBGT05ULUZBTUlMWTogt8LL zl9HQjIzMTI7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48 U1RST05HPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD6h+jwvRk9OVD48L1NUUk9ORz48L1NQ QU4+yerH60lGTb+8ytTXyrjxsqLM4b27yeqxqLLEwc88U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEycHQ7IEZPTlQtRkFNSUxZOiC3wsvOX0dCMjMxMjsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTVFJPTkc+PEZPTlQgDQogICAgICBjb2xvcj0j ZjAwMDAwPqH6PC9GT05UPjwvU1RST05HPjwvU1BBTj5JRk3M2NDtu/q5ubP1yfM8U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IEZPTlQtRkFNSUxZOiC3wsvOX0dCMjMxMjsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7 IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTVFJPTkc+PEZPTlQg DQogICAgICBjb2xvcj0jZjAwMDAwPqH6PC9GT05UPjwvU1RST05HPjwvU1BBTj65+rzKssbO8bnc wO3Qrbvh1tC5+tfcsr+4tMnzPFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBG T05ULUZBTUlMWTogt8LLzl9HQjIzMTI7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nIj48U1RST05HPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAwMD6h+jwvRk9O VD48L1NUUk9ORz48L1NQQU4+zai5/cnzxfq9u8TJt9HTw7KisOzA7bLOvNO/vMrUytbQ+DxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgRk9OVC1GQU1JTFk6ILfCy85fR0IyMzEy OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNUUk9ORz48 Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwMDA+ofo8L0ZPTlQ+PC9TVFJPTkc+PC9TUEFOPrLOvNO/ vMrUuauyvL+8ytSzybyosqK8xMvNs8m8qLWlPFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMnB0OyBGT05ULUZBTUlMWTogt8LLzl9HQjIzMTI7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1RST05HPjxGT05UIA0KICAgICAgY29sb3I9I2YwMDAw MD6h+jwvRk9OVD48L1NUUk9ORz48L1NQQU4+ufq8ysjP1qS53MDt0K274cnqsajIz9akPFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBGT05ULUZBTUlMWTogt8LLzl9HQjIzMTI7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1RST05HPjxG T05UIA0KICAgICAgY29sb3I9I2YwMDAwMD6h+jwvRk9OVD48L1NUUk9ORz48L1NQQU4+s8m8qLrP uPGw5LeiPEZPTlQgDQogICAgICBmYWNlPbrazOU+SUZNL1NJRk08L0ZPTlQ+1qTK6TwvRk9OVD48 Rk9OVCBjb2xvcj0jZjAwMDAwPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsg Rk9OVC1GQU1JTFk6ILfCy85fR0IyMzEyOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJyI+PFNUUk9ORz6h+jwvU1RST05HPjwvU1BBTj48L0ZPTlQ+PEZPTlQgDQog ICAgICBjb2xvcj0jMDBmMDAwPtX9yr2zyc6qufq8yrLGzvG53MDtyqY8L0ZPTlQ+PC9TUEFOPjwv U1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9ESVY+DQogICAgICA8RElWPjxG T05UIGZhY2U9utrM5T48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvO zOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQt c2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xP UjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC13 ZWlnaHQ6IGJvbGQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZ OiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtRkFNSUxZOiDLzszlOyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAz M2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZh bWlseTog0MLLzszlIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRp LWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTog t73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6 ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t YXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9S OiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1m b250LWZhbWlseTog0MLLzszlIj48Rk9OVCANCiAgICAgIGZhY2U9IsvOzOUsIE1TIFNvbmciPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX917zUsrzyzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxGT05UIA0KICAgICAgY29sb3I9 I2YwMDAwMD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdCI+ob48L1NQQU4+PEIgDQogICAgICBzdHlsZT0ibXNvLWJpZGktZm9udC13ZWln aHQ6IG5vcm1hbCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBGT05ULUZB TUlMWTogt8LLzl9HQjIzMTI7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6IEFyaWFsIj7TyrzEtdjWtzwvU1BBTj48L0I+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQiPqG/PC9TUEFOPjxCIA0KICAgICAgc3R5bGU9Im1zby1iaWRpLWZvbnQtd2VpZ2h0OiBub3Jt YWwiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgRk9OVC1GQU1JTFk6ILfC y85fR0IyMzEyOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWFzY2lpLWZvbnQtZmFtaWx5OiBBcmlhbCI+sbG+qbfhzKjH+MTPyP27t9bQwrfQocz6vbPT qjwvU1BBTj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMnB0OyBGT05ULUZBTUlMWTogQXJpYWw7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiC3wsvOX0dCMjMxMjsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjEw PC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgRk9OVC1GQU1JTFk6 ILfCy85fR0IyMzEyOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiBBcmlhbCI+usW648vJPC9TUEFOPjxTUEFOIA0KICAg ICAgbGFuZz1FTi1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IEZPTlQtRkFNSUxZ OiBBcmlhbDsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9u dC1mYW1pbHk6ILfCy85fR0IyMzEyOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+MS02MDI8L1NQQU4+PFNQQU4gDQog ICAgICBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgRk9OVC1GQU1J TFk6ILfCy85fR0IyMzEyOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlk aS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJv bWFuJyI+Jm5ic3A7PC9TUEFOPjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUyANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEycHQ7IEZPTlQtRkFNSUxZOiBBcmlhbDsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6ILfCy85fR0IyMzEyOyBtc28t YmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPiZuYnNwOyA8 L1NQQU4+PC9TUEFOPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgRk9OVC1G QU1JTFk6ILfCy85fR0IyMzEyOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t YmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiBBcmlhbCI+1qPT0bTkPC9TUEFOPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgRk9OVC1GQU1JTFk6IEFyaWFsOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogt8LL zl9HQjIzMTI7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nIj4gDQogICAgICA8L1NQQU4+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMnB0OyBGT05ULUZBTUlMWTogt8LLzl9HQjIzMTI7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFu c2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6 IEFyaWFsIj7K1TwvU1BBTj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMnB0OyBGT05ULUZBTUlMWTogQXJpYWw7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiC3wsvOX0dCMjMxMjsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVzIj4mbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgPC9TUEFOPjwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEycHQ7IEZPTlQtRkFNSUxZOiC3wsvOX0dCMjMxMjsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogQXJpYWwiPtPK seCjujwvU1BBTj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMnB0OyBGT05ULUZBTUlMWTogQXJpYWw7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiC3wsvOX0dCMjMxMjsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjEwMDA3NTwvU1BBTj48L0I+PC9GT05UPjwvU1BBTj48L1NQQU4+PC9GT05UPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9GT05UPjwvRElWPg0KICAgICAgPERJViBhbGlnbj1jZW50ZXI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1m YXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNp emU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5z aS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGkt bGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNv LWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAx MC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M 5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJu aW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFn ZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxh Y2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtd2VpZ2h0OiBib2xkIj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IFpILUNO OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFN SUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1m b250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0 LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250 LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t aGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbici PjxTUEFOIA0KICAgICAgbGFuZz1FTi1VUz48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAg ICAgbGFuZz1FTi1VUz48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRp LWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28t aGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEy cHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsg bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1z by1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULUZB TUlMWTogy87M5TsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHls ZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSy vPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0 OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t aGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTog RU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFS LVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6 IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFz Y2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe9 1f3XvNSyvPLM5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsg bXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PFNQQU4gDQogICAgICBsYW5nPUVOLVVT IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgRk9OVC1GQU1JTFk6IEFyaWFsOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogt8LL zl9HQjIzMTI7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48Rk9OVCANCiAgICAgIGZhY2U9v6zM5V9HQjIzMTI+PEZP TlQgY29sb3I9IzAwMDBmMD48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZP TlQtRkFNSUxZOiC3vdX9tPO62rzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1V UzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1oYW5zaS1mb250LWZhbWlseTogy87M5SI+PFNUUk9ORz65+rzKssbO8bncwO3KpqOoPFNQ QU4gDQogICAgICBsYW5nPUVOLVVTPklGTTwvU1BBTj6jqTwvU1RST05HPjwvU1BBTj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiC3vdX9tPO62rzyzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog J0FyaWFsIE5hcnJvdyciPjxTVFJPTkc+0afUsbGow/u72Na0se08L1NUUk9ORz48L1NQQU4+PC9G T05UPjwvRk9OVD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQi PjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogy87M5TsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9u dC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5z aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNv LWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7 IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6 ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6 IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVO LVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1T QTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXdlaWdodDogYm9sZCI+PFNQQU4gDQog ICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBa SC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IFpILUNOOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28t YW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJp ZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28t YmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4g DQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEu MHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1D TjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsg bXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMnB0OyBDT0xPUjogIzAwMzNjYzsgRk9OVC1GQU1JTFk6ILe91f3XvNSyvPLM5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28taGFuc2ktZm9udC1mYW1pbHk6INDCy87M5SI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX9 17zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTog MTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX917zUsrzyzOU7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsg bXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3Vh Z2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdl OiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlM WTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1z aXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5 bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZ OiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1z by1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxT UEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX917zUsrzyzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFOIA0KICAgICAgbGFuZz1F Ti1VUyANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IEZPTlQtRkFNSUxZOiBBcmlhbDsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5n OiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTog WkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6 ILfCy85fR0IyMzEyOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PEZPTlQgDQogICAgICBmYWNlPb+szOVfR0IyMzEy IGNvbG9yPSNmMDAwMDA+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNHB0OyBGT05U LUZBTUlMWTogt73V/bTzutq88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdBcmlhbCBOYXJyb3cnIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nIj6jqLHtuPHW0NPQPFNQQU4gDQogICAgICBsYW5nPUVOLVVTIA0KICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5Tsg bXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+KjwvU1BBTj6x6rzHtcTOqrHYzO7P 7qOpPC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L0RJVj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1G QU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRp LWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVw dDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQt a2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFu Z3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6 ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t YXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9O VC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRp LWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBDT0xPUjog YmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4t VVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNB OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC13ZWln aHQ6IGJvbGQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28t Zm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+PFNQQU4gDQogICAg ICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0 cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7 IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAn VGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZ OiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250 LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxh bmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h biciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBt c28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFy ZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAg ICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3 vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1i aWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFO IA0KICAgICAgc3R5bGU9IkZPTlQtRkFNSUxZOiDLzszlOyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2Nj OyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWls eTog0MLLzszlIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V /de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAj MDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250 LWZhbWlseTog0MLLzszlIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlM WTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBt c28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48 U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBG T05ULUZBTUlMWTogQXJpYWw7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1m YXJlYXN0LWZvbnQtZmFtaWx5OiC3wsvOX0dCMjMxMjsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAg ICAgZmFjZT2/rMzlX0dCMjMxMiBjb2xvcj0jZjAwMDAwPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTRwdDsgRk9OVC1GQU1JTFk6ILe91f2087ravPLM5TsgbXNvLWJpZGktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFu c2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRp LWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnQXJpYWwgTmFycm93JyI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEw LjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lp LWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9u dC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1s YW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9u dC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZh cmVhc3QtZm9udC1mYW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdl OiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTog QVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09M T1I6IGJsYWNrOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQ QU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7 IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1m YXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWJpZGktZm9udC13ZWlnaHQ6IGJvbGQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZP TlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1 YWdlOiBBUi1TQSI+PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQt RkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1z by1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJl YXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBt c28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNv LWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3 IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1D TjsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48 U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWkt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFn ZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6 IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZv bnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0la RTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6 IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBB Ui1TQTsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQog ICAgICBsYW5nPUVOLVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5nPUVO LVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h c2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9 IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1p bHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2kt bGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxh bmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250 LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6 ICMwMDMzY2M7IEZPTlQtRkFNSUxZOiC3vdX917zUsrzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFz dC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiDQwsvOzOUiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtRkFNSUxZOiDLzszl OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5 OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxh bmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5n dWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBO ZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiAj MDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250 LWZhbWlseTog0MLLzszlIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4w cHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNO OyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBt c28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1m YW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvO zOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vy bmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3Vh Z2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTog MTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNj aWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1 YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFn ZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENP TE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28tYmlkaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZh cmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5z aS1mb250LWZhbWlseTog0MLLzszlIj48U1BBTiANCiAgICAgIGxhbmc9RU4tVVMgDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBGT05ULUZBTUlMWTogQXJpYWw7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiC3wsvOX0dCMjMxMjsg bXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVz IE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgY29sb3I9IzAwMDAwMD48Rk9OVCBmYWNlPSLLzszl LCBNUyBTb25nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFN SUxZOiC3vdX9tPO62rzyzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1o YW5zaS1mb250LWZhbWlseTogJ0FyaWFsIE5hcnJvdyciPg0KICAgICAgPERJViBhbGlnbj1jZW50 ZXI+DQogICAgICA8RElWIGFsaWduPWNlbnRlcj4NCiAgICAgIDxESVYgYWxpZ249Y2VudGVyPjwv RElWPjwvRElWPjwvRElWPg0KICAgICAgPERJViANCiAgICAgIGFsaWduPWxlZnQ+PC9ESVY+PC9T UEFOPjwvRk9OVD48L0ZPTlQ+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFO PjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48 Rk9OVCANCiAgICAgIGZhY2U9utrM5T48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEw LjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAx LjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgt Q047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IMvO zOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05U LVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWZhcmVhc3QtZm9udC1m YW1pbHk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48U1BBTiANCiAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1h bnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlk aS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2kt Zm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsg Rk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFu JzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNv LWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1i aWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiAN CiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlk aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0 OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsg bXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IGJsYWNrOyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJp ZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWls eTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1s YW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFu Z3VhZ2U6IEFSLVNBOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+PFNQQU4gDQogICAgICBz dHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IMvOzOU7 IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2Vybmlu ZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6 IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAu MHB0Ij48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDL zszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtl cm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1 YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNp LWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1s YW5ndWFnZTogQVItU0EiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJp ZGktZm9udC13ZWlnaHQ6IGJvbGQiPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAu NXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcg Um9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVT OyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQSI+ PFNQQU4gDQogICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMC41cHQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5p bmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogWkgtQ047IG1zby1mYXJlYXN0LWxhbmd1YWdl OiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDE0cHQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTog J1RpbWVzIE5ldyBSb21hbic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5n dWFnZTogRU4tVVM7IG1zby1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3Vh Z2U6IEFSLVNBIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1G QU1JTFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWZvbnQta2VybmluZzogMS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBaSC1DTjsgbXNvLWZhcmVh c3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZv bnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAg IHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzogMS4wcHQ7IG1z by1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28t YmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFu c2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6 ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h bic7IG1zby1mb250LWtlcm5pbmc6IDEuMHB0OyBtc28tYW5zaS1sYW5ndWFnZTogRU4tVVM7IG1z by1mYXJlYXN0LWxhbmd1YWdlOiBaSC1DTjsgbXNvLWJpZGktbGFuZ3VhZ2U6IEFSLVNBIj48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1Rp bWVzIE5ldyBSb21hbiciPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBG T05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tZm9udC1rZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28t ZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5nPUVO LVVTPjxTUEFOIA0KICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTog y87M5TsgbXNvLWJpZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1r ZXJuaW5nOiAxLjBwdDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5n dWFnZTogWkgtQ047IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWhhbnNpLWZvbnQtZmFt aWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+PFNQQU4gDQogICAgICBsYW5nPUVOLVVTPjxTUEFOIA0K ICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTAuNXB0OyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJp ZGktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tZm9udC1rZXJuaW5nOiAxLjBw dDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLVVTOyBtc28tZmFyZWFzdC1sYW5ndWFnZTogWkgtQ047 IG1zby1iaWRpLWxhbmd1YWdlOiBBUi1TQTsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQ7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbiciPjxGT05UIA0KICAgICAgY29sb3I9IzAwZjAwMD48U1BB TiANCiAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1iaWRpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWZvbnQta2VybmluZzog MS4wcHQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpI LUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVItU0E7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0 OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj48U1BBTiANCiAgICAgIHN0eWxlPSJGT05ULVNJ WkU6IDEycHQ7IENPTE9SOiAjMDAzM2NjOyBGT05ULUZBTUlMWTogt73V/de81LK88szlOyBtc28t YmlkaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hbnNpLWxhbmd1YWdlOiBF Ti1VUzsgbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6IFpILUNOOyBtc28tYmlkaS1sYW5ndWFnZTogQVIt U0E7IG1zby1oYW5zaS1mb250LWZhbWlseTog0MLLzszlIj48L1NQQU4+PC9TUEFOPjwvRk9OVD48 L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwv U1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9T UEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvU1BBTj48L0ZP TlQ+Jm5ic3A7IA0KDQogICAgICA8RElWIGFsaWduPWNlbnRlcj4NCiAgICAgIDxUQUJMRSBjbGFz cz1Nc29Ob3JtYWxUYWJsZSANCiAgICAgIHN0eWxlPSJCQUNLR1JPVU5EOiBsaW1lOyBCT1JERVIt Q09MTEFQU0U6IGNvbGxhcHNlOyBtc28tdGFibGUtbGF5b3V0LWFsdDogZml4ZWQ7IG1zby1wYWRk aW5nLWFsdDogMGNtIDBjbSAwY20gMGNtIiANCiAgICAgIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRp bmc9MCBib3JkZXI9MD4NCiAgICAgICAgPFRCT0RZPg0KICAgICAgICA8VFIgc3R5bGU9IkhFSUdI VDogMjkuNjVwdDsgbXNvLXlmdGktaXJvdzogMDsgbXNvLXlmdGktZmlyc3Ryb3c6IHllcyI+DQog ICAgICAgICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQg MXB0IHNvbGlkOyBQQURESU5HLVJJR0hUOiAwY207IEJPUkRFUi1UT1A6IHdpbmRvd3RleHQgM3B0 IGRvdWJsZTsgUEFERElORy1MRUZUOiAwY207IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1M RUZUOiB3aW5kb3d0ZXh0IDNwdCBkb3VibGU7IFdJRFRIOiA1My44NXB0OyBQQURESU5HLVRPUDog MGNtOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hUOiAyOS42NXB0 OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3AtYWx0OiB0aGlu LXRoaWNrLXNtYWxsLWdhcCAzLjBwdDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogdGhpbi10aGljay1z bWFsbC1nYXAgMy4wcHQ7IG1zby1ib3JkZXItYm90dG9tLWFsdDogc29saWQgMS4wcHQ7IG1zby1i b3JkZXItcmlnaHQtYWx0OiBzb2xpZCAxLjBwdDsgbXNvLWJvcmRlci1jb2xvci1hbHQ6IHdpbmRv d3RleHQiIA0KICAgICAgICAgIHdpZHRoPTcyPg0KICAgICAgICAgICAgPFAgDQogICAgICAgICAg ICBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgTElORS1IRUlHSFQ6IDEycHQ7IFRFWFQtQUxJ R046IGNlbnRlcjsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHkiIA0KICAgICAgICAgICAg YWxpZ249Y2VudGVyPjxTUEFOIHN0eWxlPSJDT0xPUjogcmVkIj48Rk9OVCBmYWNlPcvOzOU+taU8 U1BBTiANCiAgICAgICAgICAgIGxhbmc9RU4tVVM+PFNQQU4gc3R5bGU9Im1zby1zcGFjZXJ1bjog eWVzIj4mbmJzcDsgDQogICAgICAgICAgICA8L1NQQU4+PC9TUEFOPs67PFNQQU4gDQogICAgICAg ICAgbGFuZz1FTi1VUz4qPG86cD48L286cD48L1NQQU4+PC9GT05UPjwvU1BBTj48L1A+PC9URD4N CiAgICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1SSUdIVDogd2luZG93dGV4 dCAxcHQgc29saWQ7IFBBRERJTkctUklHSFQ6IDBjbTsgQk9SREVSLVRPUDogd2luZG93dGV4dCAz cHQgZG91YmxlOyBQQURESU5HLUxFRlQ6IDBjbTsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVS LUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiAyMTVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJP VFRPTTogd2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMjkuNjVwdDsgQkFDS0dST1VORC1D T0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogdGhpbi10aGljay1zbWFsbC1n YXAgd2luZG93dGV4dCAzLjBwdDsgbXNvLWJvcmRlci1ib3R0b20tYWx0OiBzb2xpZCB3aW5kb3d0 ZXh0IDEuMHB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogc29saWQgd2luZG93dGV4dCAxLjBwdCIg DQogICAgICAgICAgd2lkdGg9Mjg3IGNvbFNwYW49OD4NCiAgICAgICAgICAgIDxQIA0KICAgICAg ICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQgLTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5 LjdwdDsgTElORS1IRUlHSFQ6IDEycHQ7IFRFWFQtQUxJR046IGNlbnRlcjsgbXNvLWxpbmUtaGVp Z2h0LXJ1bGU6IGV4YWN0bHk7IG1zby1wYXJhLW1hcmdpbi10b3A6IDBjbTsgbXNvLXBhcmEtbWFy Z2luLXJpZ2h0OiAwY207IG1zby1wYXJhLW1hcmdpbi1ib3R0b206IC4wMDAxcHQ7IG1zby1wYXJh LW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWluZGVudC1jb3VudDogLjgxIiANCiAgICAg ICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5nPUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48 bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3LzszlPiZuYnNwOzwvRk9OVD48L286cD48L1NQ QU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklH SFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLVJJR0hUOiA1LjRwdDsgQk9SREVSLVRP UDogd2luZG93dGV4dCAzcHQgZG91YmxlOyBQQURESU5HLUxFRlQ6IDUuNHB0OyBQQURESU5HLUJP VFRPTTogMGNtOyBCT1JERVItTEVGVDogI2VjZTlkODsgV0lEVEg6IDgwLjVwdDsgUEFERElORy1U T1A6IDBjbTsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMjku NjVwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDog dGhpbi10aGljay1zbWFsbC1nYXAgd2luZG93dGV4dCAzLjBwdDsgbXNvLWJvcmRlci1ib3R0b20t YWx0OiBzb2xpZCB3aW5kb3d0ZXh0IDEuMHB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogc29saWQg d2luZG93dGV4dCAxLjBwdCIgDQogICAgICAgICAgd2lkdGg9MTA3Pg0KICAgICAgICAgICAgPFAg DQogICAgICAgICAgICBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdCAtMTUuNzVwdDsgVEVYVC1J TkRFTlQ6IDkuN3B0OyBMSU5FLUhFSUdIVDogMTJwdDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28t bGluZS1oZWlnaHQtcnVsZTogZXhhY3RseTsgbXNvLXBhcmEtbWFyZ2luLXRvcDogMGNtOyBtc28t cGFyYS1tYXJnaW4tcmlnaHQ6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLWJvdHRvbTogLjAwMDFwdDsg bXNvLXBhcmEtbWFyZ2luLWxlZnQ6IC0xLjVnZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiAuODEi IA0KICAgICAgICAgICAgYWxpZ249Y2VudGVyPjxGT05UIGZhY2U9y87M5T48U1BBTiBzdHlsZT0i Q09MT1I6IHJlZCI+uavLvtDU1so8U1BBTiANCiAgICAgICAgICAgIGxhbmc9RU4tVVM+KjwvU1BB Tj48L1NQQU4+PEIgDQogICAgICAgICAgICBzdHlsZT0ibXNvLWJpZGktZm9udC13ZWlnaHQ6IG5v cm1hbCI+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAgICAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEx cHQ7IENPTE9SOiByZWQ7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48bzpwPjwvbzpwPjwv U1BBTj48L0I+PC9GT05UPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHls ZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogNS40 cHQ7IEJPUkRFUi1UT1A6IHdpbmRvd3RleHQgM3B0IGRvdWJsZTsgUEFERElORy1MRUZUOiA1LjRw dDsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiA2My44 NXB0OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xp ZDsgSEVJR0hUOiAyOS42NXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJv cmRlci10b3AtYWx0OiB0aGluLXRoaWNrLXNtYWxsLWdhcCB3aW5kb3d0ZXh0IDMuMHB0OyBtc28t Ym9yZGVyLWJvdHRvbS1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgMS4wcHQ7IG1zby1ib3JkZXItcmln aHQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQiIA0KICAgICAgICAgIHdpZHRoPTg1IGNvbFNw YW49Mj4NCiAgICAgICAgICAgIDxQIGNsYXNzPU1zb05vcm1hbCANCiAgICAgICAgICAgIHN0eWxl PSJNQVJHSU46IDBjbSAtNi44cHQgMHB0IDBjbTsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAtLjY1 Z2QiPjxCIA0KICAgICAgICAgICAgc3R5bGU9Im1zby1iaWRpLWZvbnQtd2VpZ2h0OiBub3JtYWwi PjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBD T0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWZvbnQta2VybmluZzogMHB0OyBtc28t YmlkaS1mb250LXNpemU6IDEwLjBwdCI+PG86cD4mbmJzcDs8L286cD48L1NQQU4+PC9CPjwvUD48 L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5k b3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1UT1A6IHdpbmRv d3RleHQgM3B0IGRvdWJsZTsgUEFERElORy1MRUZUOiA1LjRwdDsgUEFERElORy1CT1RUT006IDBj bTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiAzNi45NXB0OyBQQURESU5HLVRPUDogMGNt OyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hUOiAyOS42NXB0OyBC QUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3AtYWx0OiB0aGluLXRo aWNrLXNtYWxsLWdhcCB3aW5kb3d0ZXh0IDMuMHB0OyBtc28tYm9yZGVyLWJvdHRvbS1hbHQ6IHNv bGlkIHdpbmRvd3RleHQgMS4wcHQ7IG1zby1ib3JkZXItcmlnaHQtYWx0OiBzb2xpZCB3aW5kb3d0 ZXh0IC41cHQiIA0KICAgICAgICAgIHdpZHRoPTQ5Pg0KICAgICAgICAgICAgPFAgY2xhc3M9TXNv Tm9ybWFsIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIC02LjhwdCAwcHQgMGNtOyBt c28tcGFyYS1tYXJnaW4tcmlnaHQ6IC0uNjVnZCI+PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWZvbnQt a2VybmluZzogMHB0OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+08qx4DxCIA0KICAgICAg ICAgICAgc3R5bGU9Im1zby1iaWRpLWZvbnQtd2VpZ2h0OiBub3JtYWwiPjxTUEFOIA0KICAgICAg ICAgICAgbGFuZz1FTi1VUz48bzpwPjwvbzpwPjwvU1BBTj48L0I+PC9TUEFOPjwvUD48L1REPg0K ICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0 IDNwdCBkb3VibGU7IFBBRERJTkctUklHSFQ6IDUuNHB0OyBCT1JERVItVE9QOiB3aW5kb3d0ZXh0 IDNwdCBkb3VibGU7IFBBRERJTkctTEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJP UkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogNjIuODVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9S REVSLUJPVFRPTTogd2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMjkuNjVwdDsgQkFDS0dS T1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogdGhpbi10aGljay1z bWFsbC1nYXAgd2luZG93dGV4dCAzLjBwdDsgbXNvLWJvcmRlci1ib3R0b20tYWx0OiBzb2xpZCB3 aW5kb3d0ZXh0IDEuMHB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogdGhpY2stdGhpbi1zbWFsbC1n YXAgd2luZG93dGV4dCAzLjBwdCIgDQogICAgICAgICAgd2lkdGg9ODQ+DQogICAgICAgICAgICA8 UCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQiPjxCIA0KICAgICAg ICAgICAgc3R5bGU9Im1zby1iaWRpLWZvbnQtd2VpZ2h0OiBub3JtYWwiPjxTUEFOIGxhbmc9RU4t VVMgDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkOyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAg ICAgICAgc3R5bGU9Im1zby10YWItY291bnQ6IDEiPiZuYnNwOyZuYnNwOyA8L1NQQU4+PC9TUEFO PjwvQj48QiANCiAgICAgICAgICAgIHN0eWxlPSJtc28tYmlkaS1mb250LXdlaWdodDogbm9ybWFs Ij48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgICAgICAgc3R5bGU9IkNPTE9SOiByZWQ7IEZPTlQt RkFNSUxZOiDLzszlIj48bzpwPjwvbzpwPjwvU1BBTj48L0I+PC9QPjwvVEQ+PC9UUj4NCiAgICAg ICAgPFRSIHN0eWxlPSJIRUlHSFQ6IDIyLjlwdDsgbXNvLXlmdGktaXJvdzogMSI+DQogICAgICAg ICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNv bGlkOyBQQURESU5HLVJJR0hUOiAwY207IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJTkctTEVG VDogMGNtOyBQQURESU5HLUJPVFRPTTogMGNtOyBCT1JERVItTEVGVDogd2luZG93dGV4dCAzcHQg ZG91YmxlOyBXSURUSDogNTMuODVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTog d2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMjIuOXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0 cmFuc3BhcmVudDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogdGhpbi10aGljay1zbWFsbC1nYXAgd2lu ZG93dGV4dCAzLjBwdDsgbXNvLWJvcmRlci1ib3R0b20tYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IDEu MHB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogc29saWQgd2luZG93dGV4dCAxLjBwdCIgDQogICAg ICAgICAgd2lkdGg9NzI+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJH SU46IDBjbSAwY20gMHB0OyBMSU5FLUhFSUdIVDogMTJwdDsgVEVYVC1BTElHTjogY2VudGVyOyBt c28tbGluZS1oZWlnaHQtcnVsZTogZXhhY3RseSIgDQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+ PFNQQU4gc3R5bGU9IkNPTE9SOiByZWQiPjxGT05UIGZhY2U9y87M5T612CA8U1BBTiANCiAgICAg ICAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+Jm5ic3A7PC9TUEFOPta3PFNQQU4gDQog ICAgICAgICAgICBsYW5nPUVOLVVTPio8bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwv UD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3 aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogMGNtOyBCT1JERVItVE9QOiAjZWNl OWQ4OyBQQURESU5HLUxFRlQ6IDBjbTsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6 ICNlY2U5ZDg7IFdJRFRIOiAyMTVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTog d2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMjIuOXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0 cmFuc3BhcmVudCIgDQogICAgICAgICAgd2lkdGg9Mjg3IGNvbFNwYW49OD4NCiAgICAgICAgICAg IDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQ7IExJTkUtSEVJR0hU OiAxMnB0OyBtc28tbGluZS1oZWlnaHQtcnVsZTogZXhhY3RseSI+PFNQQU4gDQogICAgICAgICAg ICBsYW5nPUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAg ZmFjZT3LzszlPiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAg PFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlk OyBQQURESU5HLVJJR0hUOiA1LjRwdDsgQk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZU OiA1LjRwdDsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRI OiA4MC41cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0 IHNvbGlkOyBIRUlHSFQ6IDIyLjlwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQiIA0K ICAgICAgICAgIHdpZHRoPTEwNz4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9 Ik1BUkdJTjogMGNtIDBjbSAwcHQgLTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgTElORS1I RUlHSFQ6IDEycHQ7IFRFWFQtQUxJR046IGNlbnRlcjsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4 YWN0bHk7IG1zby1wYXJhLW1hcmdpbi10b3A6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAw Y207IG1zby1wYXJhLW1hcmdpbi1ib3R0b206IC4wMDAxcHQ7IG1zby1wYXJhLW1hcmdpbi1sZWZ0 OiAtMS41Z2Q7IG1zby1jaGFyLWluZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWdu PWNlbnRlcj48U1BBTiBzdHlsZT0iQ09MT1I6IHJlZCI+PEZPTlQgZmFjZT3LzszlPsGqz7XIyzxT UEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1VUz4qPG86cD48L286cD48L1NQQU4+PC9GT05UPjwv U1BBTj48L1A+PC9URD4NCiAgICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1S SUdIVDogd2luZG93dGV4dCAxcHQgc29saWQ7IFBBRERJTkctUklHSFQ6IDUuNHB0OyBCT1JERVIt VE9QOiAjZWNlOWQ4OyBQQURESU5HLUxFRlQ6IDUuNHB0OyBQQURESU5HLUJPVFRPTTogMGNtOyBC T1JERVItTEVGVDogI2VjZTlkODsgV0lEVEg6IDYzLjg1cHQ7IFBBRERJTkctVE9QOiAwY207IEJP UkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDIyLjlwdDsgQkFDS0dS T1VORC1DT0xPUjogdHJhbnNwYXJlbnQiIA0KICAgICAgICAgIHdpZHRoPTg1IGNvbFNwYW49Mj4N CiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogNi4ycHQgMGNtIDVw dCAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDExLjM1cHQ7IExJTkUtSEVJR0hUOiAxMnB0OyBURVhU LUFMSUdOOiBjZW50ZXI7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28tcGFyYS1t YXJnaW4tdG9wOiA2LjJwdDsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1zby1wYXJhLW1h cmdpbi1ib3R0b206IDUuMHB0OyBtc28tcGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hh ci1pbmRlbnQtY291bnQ6IC44MSIgDQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gbGFu Zz1FTi1VUyANCiAgICAgICAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDE0cHQ7IENPTE9SOiByZWQ7 IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9y87M 5T48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0KICAg ICAgICAgICAgPC9TUEFOPjxvOnA+PC9vOnA+PC9GT05UPjwvU1BBTj48L1A+PC9URD4NCiAgICAg ICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1SSUdIVDogd2luZG93dGV4dCAxcHQg c29saWQ7IFBBRERJTkctUklHSFQ6IDUuNHB0OyBCT1JERVItVE9QOiAjZWNlOWQ4OyBQQURESU5H LUxFRlQ6IDUuNHB0OyBQQURESU5HLUJPVFRPTTogMGNtOyBCT1JERVItTEVGVDogI2VjZTlkODsg V0lEVEg6IDM2Ljk1cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3Rl eHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDIyLjlwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJl bnQiIA0KICAgICAgICAgIHdpZHRoPTQ5Pg0KICAgICAgICAgICAgPFAgDQogICAgICAgICAgICBz dHlsZT0iTUFSR0lOOiA2LjJwdCAwY20gNXB0IDEuNDVwdDsgTElORS1IRUlHSFQ6IDEycHQ7IG1z by1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28tcGFyYS1tYXJnaW4tdG9wOiA2LjJwdDsg bXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1zby1wYXJhLW1hcmdpbi1ib3R0b206IDUuMHB0 OyBtc28tcGFyYS1tYXJnaW4tbGVmdDogLjE0Z2QiPjxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9 IkNPTE9SOiByZWQiPjxGT05UIGZhY2U9y87M5T7WsLPGPFNQQU4gDQogICAgICAgICAgICBsYW5n PUVOLVVTPjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAg ICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgM3B0IGRv dWJsZTsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJTkct TEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBX SURUSDogNjIuODVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4 dCAxcHQgc29saWQ7IEhFSUdIVDogMjIuOXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVu dDsgbXNvLWJvcmRlci1ib3R0b20tYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IDEuMHB0OyBtc28tYm9y ZGVyLXJpZ2h0LWFsdDogdGhpY2stdGhpbi1zbWFsbC1nYXAgd2luZG93dGV4dCAzLjBwdCIgDQog ICAgICAgICAgd2lkdGg9ODQ+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJN QVJHSU4tVE9QOiA2LjJwdDsgTElORS1IRUlHSFQ6IDEycHQ7IG1zby1saW5lLWhlaWdodC1ydWxl OiBleGFjdGx5Ij48U1BBTiANCiAgICAgICAgICAgIGxhbmc9RU4tVVMgc3R5bGU9IkNPTE9SOiBy ZWQiPjxvOnA+PEZPTlQgDQogICAgICAgICAgICBmYWNlPcvOzOU+Jm5ic3A7PC9GT05UPjwvbzpw PjwvU1BBTj48L1A+PC9URD48L1RSPg0KICAgICAgICA8VFIgc3R5bGU9IkhFSUdIVDogMjIuNTVw dDsgbXNvLXlmdGktaXJvdzogMiI+DQogICAgICAgICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJC T1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLVJJR0hUOiA1LjRwdDsg Qk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZUOiA1LjRwdDsgUEFERElORy1CT1RUT006 IDBjbTsgQk9SREVSLUxFRlQ6IHdpbmRvd3RleHQgM3B0IGRvdWJsZTsgV0lEVEg6IDUzLjg1cHQ7 IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBI RUlHSFQ6IDIyLjU1cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVy LWxlZnQtYWx0OiB0aGluLXRoaWNrLXNtYWxsLWdhcCB3aW5kb3d0ZXh0IDMuMHB0OyBtc28tYm9y ZGVyLWJvdHRvbS1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgMS4wcHQ7IG1zby1ib3JkZXItcmlnaHQt YWx0OiBzb2xpZCB3aW5kb3d0ZXh0IDEuMHB0IiANCiAgICAgICAgICB3aWR0aD03Mj4NCiAgICAg ICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQgLTUuMzVw dDsgVEVYVC1JTkRFTlQ6IDUuOXB0OyBMSU5FLUhFSUdIVDogMTRwdDsgbXNvLWxpbmUtaGVpZ2h0 LXJ1bGU6IGV4YWN0bHk7IG1zby1wYXJhLW1hcmdpbi10b3A6IDBjbTsgbXNvLXBhcmEtbWFyZ2lu LXJpZ2h0OiAwY207IG1zby1wYXJhLW1hcmdpbi1ib3R0b206IC4wMDAxcHQ7IG1zby1wYXJhLW1h cmdpbi1sZWZ0OiAtLjUxZ2Q7IG1zby1jaGFyLWluZGVudC1jb3VudDogLjQ5Ij48U1BBTiANCiAg ICAgICAgICAgIHN0eWxlPSJDT0xPUjogcmVkIj48Rk9OVCBmYWNlPcvOzOU+tecgPFNQQU4gDQog ICAgICAgICAgICBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPiZuYnNwOzwvU1BBTj67sDxTUEFO IGxhbmc9RU4tVVM+KjxCIA0KICAgICAgICAgICAgc3R5bGU9Im1zby1iaWRpLWZvbnQtd2VpZ2h0 OiBub3JtYWwiPjxvOnA+PC9vOnA+PC9CPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvUD48L1REPg0K ICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0 IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBB RERJTkctTEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNl OWQ4OyBXSURUSDogMTE3LjE1cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006IHdp bmRvd3RleHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDIyLjU1cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRy YW5zcGFyZW50OyBtc28tYm9yZGVyLWJvdHRvbS1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgMS4wcHQ7 IG1zby1ib3JkZXItcmlnaHQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQiIA0KICAgICAgICAg IHdpZHRoPTE1NiBjb2xTcGFuPTQ+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxl PSJNQVJHSU46IDBjbSAwY20gMHB0IC0xNS43NXB0OyBURVhULUlOREVOVDogOS43cHQ7IExJTkUt SEVJR0hUOiAxMnB0OyBURVhULUFMSUdOOiBjZW50ZXI7IG1zby1saW5lLWhlaWdodC1ydWxlOiBl eGFjdGx5OyBtc28tcGFyYS1tYXJnaW4tdG9wOiAwY207IG1zby1wYXJhLW1hcmdpbi1yaWdodDog MGNtOyBtc28tcGFyYS1tYXJnaW4tYm90dG9tOiAuMDAwMXB0OyBtc28tcGFyYS1tYXJnaW4tbGVm dDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6IC44MSIgDQogICAgICAgICAgICBhbGln bj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6IHJlZCI+PEZPTlQgZmFjZT3L zszlPjxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVzIj4mbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgDQogICAg ICAgICAgICA8L1NQQU4+PG86cD48L286cD48L0ZPTlQ+PC9TUEFOPjwvUD48L1REPg0KICAgICAg ICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBz b2xpZDsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJTkct TEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBX SURUSDogMzZwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAx cHQgc29saWQ7IEhFSUdIVDogMjIuNTVwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7 IG1zby1ib3JkZXItYm90dG9tLWFsdDogc29saWQgd2luZG93dGV4dCAxLjBwdDsgbXNvLWJvcmRl ci1yaWdodC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdCIgDQogICAgICAgICAgd2lkdGg9NDgg Y29sU3Bhbj0zPg0KICAgICAgICAgICAgPFAgDQogICAgICAgICAgICBzdHlsZT0iTUFSR0lOOiAw Y20gMGNtIDBwdCAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBMSU5FLUhFSUdIVDogMTJw dDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28tbGluZS1oZWlnaHQtcnVsZTogZXhhY3RseTsgbXNv LXBhcmEtbWFyZ2luLXRvcDogMGNtOyBtc28tcGFyYS1tYXJnaW4tcmlnaHQ6IDBjbTsgbXNvLXBh cmEtbWFyZ2luLWJvdHRvbTogLjAwMDFwdDsgbXNvLXBhcmEtbWFyZ2luLWxlZnQ6IC0xLjVnZDsg bXNvLWNoYXItaW5kZW50LWNvdW50OiAuODEiIA0KICAgICAgICAgICAgYWxpZ249Y2VudGVyPjxG T05UIGZhY2U9y87M5T48U1BBTiBsYW5nPUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48U1BBTiAN CiAgICAgICAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+Jm5ic3A7PC9TUEFOPjwvU1BB Tj48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJDT0xPUjogcmVkIj7WsM7xPFNQQU4gDQogICAg ICAgICAgICBsYW5nPUVOLVVTPjxvOnA+PC9vOnA+PC9TUEFOPjwvU1BBTj48L0ZPTlQ+PC9QPjwv VEQ+DQogICAgICAgICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRv d3RleHQgMXB0IHNvbGlkOyBQQURESU5HLVJJR0hUOiA1LjRwdDsgQk9SREVSLVRPUDogI2VjZTlk ODsgUEFERElORy1MRUZUOiA1LjRwdDsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6 ICNlY2U5ZDg7IFdJRFRIOiA2MS44NXB0OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9N OiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hUOiAyMi41NXB0OyBCQUNLR1JPVU5ELUNPTE9S OiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci1ib3R0b20tYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IDEu MHB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0IiANCiAgICAg ICAgICB3aWR0aD04Mj4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJ TjogMGNtIDBjbSAwcHQgLTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgTElORS1IRUlHSFQ6 IDEycHQ7IFRFWFQtQUxJR046IGNlbnRlcjsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7 IG1zby1wYXJhLW1hcmdpbi10b3A6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1z by1wYXJhLW1hcmdpbi1ib3R0b206IC4wMDAxcHQ7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41 Z2Q7IG1zby1jaGFyLWluZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRl cj48U1BBTiBsYW5nPUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAg ICAgICAgZmFjZT3LzszlPiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAg ICAgICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0 IHNvbGlkOyBQQURESU5HLVJJR0hUOiAwY207IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJTkct TEVGVDogMGNtOyBQQURESU5HLUJPVFRPTTogMGNtOyBCT1JERVItTEVGVDogI2VjZTlkODsgV0lE VEg6IDgwLjVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAx cHQgc29saWQ7IEhFSUdIVDogMjIuNTVwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7 IG1zby1ib3JkZXItbGVmdC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1i b3R0b20tYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IDEuMHB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDog c29saWQgd2luZG93dGV4dCAuNXB0IiANCiAgICAgICAgICB3aWR0aD0xMDc+DQogICAgICAgICAg ICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0IC0xNS43NXB0OyBU RVhULUlOREVOVDogOS43cHQ7IExJTkUtSEVJR0hUOiAxMnB0OyBURVhULUFMSUdOOiBjZW50ZXI7 IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28tcGFyYS1tYXJnaW4tdG9wOiAwY207 IG1zby1wYXJhLW1hcmdpbi1yaWdodDogMGNtOyBtc28tcGFyYS1tYXJnaW4tYm90dG9tOiAuMDAw MXB0OyBtc28tcGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6 IC44MSIgDQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gc3R5bGU9IkNPTE9SOiByZWQi PjxGT05UIGZhY2U9y87M5T7J7bfd1qS6xcLrPFNQQU4gDQogICAgICAgICAgICBsYW5nPUVOLVVT Pio8bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxU RCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDNwdCBkb3VibGU7 IFBBRERJTkctUklHSFQ6IDBjbTsgQk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZUOiAw Y207IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogMTYz LjY1cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNv bGlkOyBIRUlHSFQ6IDIyLjU1cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28t Ym9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItYm90dG9t LWFsdDogc29saWQgd2luZG93dGV4dCAxLjBwdDsgbXNvLWJvcmRlci1yaWdodC1hbHQ6IHRoaWNr LXRoaW4tc21hbGwtZ2FwIHdpbmRvd3RleHQgMy4wcHQiIA0KICAgICAgICAgIHdpZHRoPTIxOCBj b2xTcGFuPTQ+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU46IDBj bSAwY20gMHB0IC0xNS43NXB0OyBURVhULUlOREVOVDogOS43cHQ7IExJTkUtSEVJR0hUOiAxMnB0 OyBURVhULUFMSUdOOiBjZW50ZXI7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28t cGFyYS1tYXJnaW4tdG9wOiAwY207IG1zby1wYXJhLW1hcmdpbi1yaWdodDogMGNtOyBtc28tcGFy YS1tYXJnaW4tYm90dG9tOiAuMDAwMXB0OyBtc28tcGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBt c28tY2hhci1pbmRlbnQtY291bnQ6IC44MSIgDQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQ QU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6IHJlZCI+PEZPTlQgZmFjZT3LzszlPjxTUEFOIA0K ICAgICAgICAgICAgc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVzIj4mbmJzcDs8L1NQQU4+PG86cD48 L286cD48L0ZPTlQ+PC9TUEFOPjwvUD48L1REPjwvVFI+DQogICAgICAgIDxUUiBzdHlsZT0iSEVJ R0hUOiAyMi4ycHQ7IG1zby15ZnRpLWlyb3c6IDMiPg0KICAgICAgICAgIDxURCANCiAgICAgICAg ICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdI VDogMGNtOyBCT1JERVItVE9QOiAjZWNlOWQ4OyBQQURESU5HLUxFRlQ6IDBjbTsgUEFERElORy1C T1RUT006IDBjbTsgQk9SREVSLUxFRlQ6IHdpbmRvd3RleHQgM3B0IGRvdWJsZTsgV0lEVEg6IDUz Ljg1cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNv bGlkOyBIRUlHSFQ6IDIyLjJwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1i b3JkZXItbGVmdC1hbHQ6IHRoaW4tdGhpY2stc21hbGwtZ2FwIHdpbmRvd3RleHQgMy4wcHQ7IG1z by1ib3JkZXItYm90dG9tLWFsdDogc29saWQgd2luZG93dGV4dCAxLjBwdDsgbXNvLWJvcmRlci1y aWdodC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgMS4wcHQiIA0KICAgICAgICAgIHdpZHRoPTcyPg0K ICAgICAgICAgICAgPFAgDQogICAgICAgICAgICBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdCAt MTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuNzVwdDsgTElORS1IRUlHSFQ6IDEycHQ7IFRFWFQtQUxJ R046IGNlbnRlcjsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7IG1zby1wYXJhLW1hcmdp bi10b3A6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1zby1wYXJhLW1hcmdpbi1i b3R0b206IC4wMDAxcHQ7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWlu ZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48Rk9OVCBmYWNlPcvO zOU+PEIgDQogICAgICAgICAgICBzdHlsZT0ibXNvLWJpZGktZm9udC13ZWlnaHQ6IG5vcm1hbCI+ PFNQQU4gbGFuZz1FTi1VUyANCiAgICAgICAgICAgIHN0eWxlPSJDT0xPUjogcmVkIj48U1BBTiAN CiAgICAgICAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+Jm5ic3A7PC9TUEFOPjwvU1BB Tj48L0I+PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0iQ09MT1I6IHJlZCI+tKs8U1BBTiBsYW5n PUVOLVVTPjxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVzIj4mbmJz cDsgPC9TUEFOPjwvU1BBTj7V5jxTUEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1VUz4qPG86cD48 L286cD48L1NQQU4+PC9TUEFOPjwvRk9OVD48L1A+PC9URD4NCiAgICAgICAgICA8VEQgDQogICAg ICAgICAgc3R5bGU9IkJPUkRFUi1SSUdIVDogd2luZG93dGV4dCAxcHQgc29saWQ7IFBBRERJTkct UklHSFQ6IDBjbTsgQk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZUOiAwY207IFBBRERJ TkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogNjMuMTVwdDsgUEFE RElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdI VDogMjIuMnB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudCIgDQogICAgICAgICAgd2lk dGg9ODQ+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU46IDBjbSAw Y20gMHB0IC0xNS43NXB0OyBURVhULUlOREVOVDogOS43cHQ7IExJTkUtSEVJR0hUOiAxMnB0OyBU RVhULUFMSUdOOiBjZW50ZXI7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28tcGFy YS1tYXJnaW4tdG9wOiAwY207IG1zby1wYXJhLW1hcmdpbi1yaWdodDogMGNtOyBtc28tcGFyYS1t YXJnaW4tYm90dG9tOiAuMDAwMXB0OyBtc28tcGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28t Y2hhci1pbmRlbnQtY291bnQ6IC44MSIgDQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4g bGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6IHJlZCI+PG86cD48Rk9OVCANCiAgICAgICAgICAgIGZh Y2U9y87M5T4mbmJzcDs8L0ZPTlQ+PC9vOnA+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxU RCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsg UEFERElORy1SSUdIVDogMGNtOyBCT1JERVItVE9QOiAjZWNlOWQ4OyBQQURESU5HLUxFRlQ6IDBj bTsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiAzNnB0 OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsg SEVJR0hUOiAyMi4ycHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50IiANCiAgICAgICAg ICB3aWR0aD00OD4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjog MGNtIDBjbSAwcHQ7IExJTkUtSEVJR0hUOiAxMnB0OyBURVhULUFMSUdOOiBjZW50ZXI7IG1zby1s aW5lLWhlaWdodC1ydWxlOiBleGFjdGx5IiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BB TiBzdHlsZT0iQ09MT1I6IHJlZCI+PEZPTlQgZmFjZT3LzszlPsrWu/o8U1BBTiANCiAgICAgICAg ICAgIGxhbmc9RU4tVVM+KjxvOnA+PC9vOnA+PC9TUEFOPjwvRk9OVD48L1NQQU4+PC9QPjwvVEQ+ DQogICAgICAgICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3Rl eHQgMXB0IHNvbGlkOyBQQURESU5HLVJJR0hUOiAwY207IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBB RERJTkctTEVGVDogMGNtOyBQQURESU5HLUJPVFRPTTogMGNtOyBCT1JERVItTEVGVDogI2VjZTlk ODsgV0lEVEg6IDExNS44NXB0OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5k b3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hUOiAyMi4ycHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5z cGFyZW50OyBtc28tYm9yZGVyLWJvdHRvbS1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdDsgbXNv LWJvcmRlci1yaWdodC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgMS4wcHQiIA0KICAgICAgICAgIHdp ZHRoPTE1NCBjb2xTcGFuPTY+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJN QVJHSU46IDBjbSAwY20gMHB0IC0xNS43NXB0OyBURVhULUlOREVOVDogOS43cHQ7IExJTkUtSEVJ R0hUOiAxMnB0OyBURVhULUFMSUdOOiBjZW50ZXI7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFj dGx5OyBtc28tcGFyYS1tYXJnaW4tdG9wOiAwY207IG1zby1wYXJhLW1hcmdpbi1yaWdodDogMGNt OyBtc28tcGFyYS1tYXJnaW4tYm90dG9tOiAuMDAwMXB0OyBtc28tcGFyYS1tYXJnaW4tbGVmdDog LTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6IC44MSIgDQogICAgICAgICAgICBhbGlnbj1j ZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6IHJlZCI+PG86cD48Rk9OVCANCiAg ICAgICAgICAgIGZhY2U9y87M5T4mbmJzcDs8L0ZPTlQ+PC9vOnA+PC9TUEFOPjwvUD48L1REPg0K ICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0 IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBB RERJTkctTEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNl OWQ4OyBXSURUSDogODAuNXB0OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5k b3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hUOiAyMi4ycHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5z cGFyZW50IiANCiAgICAgICAgICB3aWR0aD0xMDc+DQogICAgICAgICAgICA8UCANCiAgICAgICAg ICAgIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0IC0xNS43NXB0OyBURVhULUlOREVOVDogOS43 cHQ7IExJTkUtSEVJR0hUOiAxMnB0OyBURVhULUFMSUdOOiBjZW50ZXI7IG1zby1saW5lLWhlaWdo dC1ydWxlOiBleGFjdGx5OyBtc28tcGFyYS1tYXJnaW4tdG9wOiAwY207IG1zby1wYXJhLW1hcmdp bi1yaWdodDogMGNtOyBtc28tcGFyYS1tYXJnaW4tYm90dG9tOiAuMDAwMXB0OyBtc28tcGFyYS1t YXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6IC44MSIgDQogICAgICAg ICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6IHJlZCI+PEZP TlQgDQogICAgICAgICAgICBmYWNlPcvOzOU+RS1tYWlsOjxvOnA+PC9vOnA+PC9GT05UPjwvU1BB Tj48L1A+PC9URD4NCiAgICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1SSUdI VDogd2luZG93dGV4dCAzcHQgZG91YmxlOyBQQURESU5HLVJJR0hUOiA1LjRwdDsgQk9SREVSLVRP UDogI2VjZTlkODsgUEFERElORy1MRUZUOiA1LjRwdDsgUEFERElORy1CT1RUT006IDBjbTsgQk9S REVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiAxNjMuNjVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9S REVSLUJPVFRPTTogd2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMjIuMnB0OyBCQUNLR1JP VU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci1ib3R0b20tYWx0OiBzb2xpZCB3aW5k b3d0ZXh0IDEuMHB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogdGhpY2stdGhpbi1zbWFsbC1nYXAg d2luZG93dGV4dCAzLjBwdCIgDQogICAgICAgICAgd2lkdGg9MjE4IGNvbFNwYW49ND4NCiAgICAg ICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogNi4ycHQgMGNtIDVwdCAtMTUu NzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBMSU5FLUhFSUdIVDogMTJwdDsgVEVYVC1BTElHTjog Y2VudGVyOyBtc28tbGluZS1oZWlnaHQtcnVsZTogZXhhY3RseTsgbXNvLXBhcmEtbWFyZ2luLXRv cDogNi4ycHQ7IG1zby1wYXJhLW1hcmdpbi1yaWdodDogMGNtOyBtc28tcGFyYS1tYXJnaW4tYm90 dG9tOiA1LjBwdDsgbXNvLXBhcmEtbWFyZ2luLWxlZnQ6IC0xLjVnZDsgbXNvLWNoYXItaW5kZW50 LWNvdW50OiAuODEiIA0KICAgICAgICAgICAgYWxpZ249Y2VudGVyPjxTUEFOIGxhbmc9RU4tVVMg c3R5bGU9IkNPTE9SOiByZWQiPjxvOnA+PEZPTlQgDQogICAgICAgICAgICBmYWNlPcvOzOU+Jm5i c3A7PC9GT05UPjwvbzpwPjwvU1BBTj48L1A+PC9URD48L1RSPg0KICAgICAgICA8VFIgc3R5bGU9 IkhFSUdIVDogMTguNzVwdDsgbXNvLXlmdGktaXJvdzogNCI+DQogICAgICAgICAgPFREIA0KICAg ICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5H LVJJR0hUOiA1LjRwdDsgQk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZUOiA1LjRwdDsg UEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6IHdpbmRvd3RleHQgM3B0IGRvdWJsZTsg V0lEVEg6IDUzLjg1cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3Rl eHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDE4Ljc1cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFy ZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlkIC41cHQ7IG1zby1ib3JkZXItbGVmdC1hbHQ6 IHRoaW4tdGhpY2stc21hbGwtZ2FwIDMuMHB0OyBtc28tYm9yZGVyLWJvdHRvbS1hbHQ6IHNvbGlk IDEuMHB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogc29saWQgMS4wcHQ7IG1zby1ib3JkZXItY29s b3ItYWx0OiB3aW5kb3d0ZXh0IiANCiAgICAgICAgICB3aWR0aD03Mj4NCiAgICAgICAgICAgIDxQ IHN0eWxlPSJMSU5FLUhFSUdIVDogMTRwdDsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHki PjxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9IkNPTE9SOiByZWQiPjxGT05UIGZhY2U9y87M5T7J 6rGoyMs8U1BBTiANCiAgICAgICAgICAgIGxhbmc9RU4tVVM+PG86cD48L286cD48L1NQQU4+PC9G T05UPjwvU1BBTj48L1A+PC9URD4NCiAgICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJP UkRFUi1SSUdIVDogd2luZG93dGV4dCAxcHQgc29saWQ7IFBBRERJTkctUklHSFQ6IDUuNHB0OyBC T1JERVItVE9QOiAjZWNlOWQ4OyBQQURESU5HLUxFRlQ6IDUuNHB0OyBQQURESU5HLUJPVFRPTTog MGNtOyBCT1JERVItTEVGVDogI2VjZTlkODsgV0lEVEg6IDYzLjE1cHQ7IFBBRERJTkctVE9QOiAw Y207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDE4Ljc1cHQ7 IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlk IHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1ib3R0b20tYWx0OiBzb2xpZCB3aW5kb3d0ZXh0 IC41cHQ7IG1zby1ib3JkZXItcmlnaHQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQiIA0KICAg ICAgICAgIHdpZHRoPTg0Pg0KICAgICAgICAgICAgPFAgDQogICAgICAgICAgICBzdHlsZT0iTUFS R0lOOiAwY20gMGNtIDBwdCAtMC4xcHQ7IFRFWFQtSU5ERU5UOiAtNS4xNXB0OyBMSU5FLUhFSUdI VDogMTVwdDsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7IG1zby1wYXJhLW1hcmdpbi10 b3A6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1zby1wYXJhLW1hcmdpbi1ib3R0 b206IC4wMDAxcHQ7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtLjVnZDsgbXNvLWNoYXItaW5kZW50 LWNvdW50OiAtLjQzIj48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJDT0xPUjogcmVkIj48Rk9O VCBmYWNlPcvOzOU+uaTX98Tqz948U1BBTiANCiAgICAgICAgICAgIGxhbmc9RU4tVVM+PG86cD48 L286cD48L1NQQU4+PC9GT05UPjwvU1BBTj48L1A+PC9URD4NCiAgICAgICAgICA8VEQgDQogICAg ICAgICAgc3R5bGU9IkJPUkRFUi1SSUdIVDogd2luZG93dGV4dCAxcHQgc29saWQ7IFBBRERJTkct UklHSFQ6IDUuNHB0OyBCT1JERVItVE9QOiAjZWNlOWQ4OyBQQURESU5HLUxFRlQ6IDUuNHB0OyBQ QURESU5HLUJPVFRPTTogMGNtOyBCT1JERVItTEVGVDogI2VjZTlkODsgV0lEVEg6IDQwLjM1cHQ7 IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBI RUlHSFQ6IDE4Ljc1cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVy LXRvcC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogc29s aWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0 IiANCiAgICAgICAgICB3aWR0aD01NCBjb2xTcGFuPTI+DQogICAgICAgICAgICA8UCANCiAgICAg ICAgICAgIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0IC0xNS43NXB0OyBURVhULUlOREVOVDog MTUuNnB0OyBMSU5FLUhFSUdIVDogMTVwdDsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7 IG1zby1wYXJhLW1hcmdpbi10b3A6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1z by1wYXJhLW1hcmdpbi1ib3R0b206IC4wMDAxcHQ7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41 Z2Q7IG1zby1jaGFyLWluZGVudC1jb3VudDogMS4zIj48U1BBTiANCiAgICAgICAgICAgIHN0eWxl PSJDT0xPUjogcmVkIj48Rk9OVCBmYWNlPcvOzOU+0NSx8DxTUEFOIA0KICAgICAgICAgICAgbGFu Zz1FTi1VUz48bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvUD48L1REPg0KICAgICAg ICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBz b2xpZDsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJTkct TEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBX SURUSDogNDAuNjVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4 dCAxcHQgc29saWQ7IEhFSUdIVDogMTguNzVwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJl bnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVy LWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItYWx0OiBzb2xpZCB3 aW5kb3d0ZXh0IC41cHQiIA0KICAgICAgICAgIHdpZHRoPTU0IGNvbFNwYW49Mj4NCiAgICAgICAg ICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQ7IExJTkUtSEVJ R0hUOiAxNXB0OyBtc28tbGluZS1oZWlnaHQtcnVsZTogZXhhY3RseSI+PFNQQU4gDQogICAgICAg ICAgICBzdHlsZT0iQ09MT1I6IHJlZCI+PEZPTlQgZmFjZT3LzszlPtawzvE8U1BBTiANCiAgICAg ICAgICAgIGxhbmc9RU4tVVM+PG86cD48L286cD48L1NQQU4+PC9GT05UPjwvU1BBTj48L1A+PC9U RD4NCiAgICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1SSUdIVDogd2luZG93 dGV4dCAxcHQgc29saWQ7IFBBRERJTkctUklHSFQ6IDBjbTsgQk9SREVSLVRPUDogI2VjZTlkODsg UEFERElORy1MRUZUOiAwY207IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNl OWQ4OyBXSURUSDogNzAuODVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTogI2Vj ZTlkODsgSEVJR0hUOiAxOC43NXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNv LWJvcmRlci10b3AtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItbGVmdC1h bHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1yaWdodC1hbHQ6IHNvbGlkIHdp bmRvd3RleHQgLjVwdCIgDQogICAgICAgICAgd2lkdGg9OTQgY29sU3Bhbj0zPg0KICAgICAgICAg ICAgPFAgY2xhc3M9TXNvTm9ybWFsIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIDBj bSAwcHQgLTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgTElORS1IRUlHSFQ6IDIycHQ7IFRF WFQtQUxJR046IGNlbnRlcjsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7IG1zby1wYXJh LW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWluZGVudC1jb3VudDogLjgxIiANCiAgICAg ICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJGT05ULVNJWkU6 IDEycHQ7IENPTE9SOiByZWQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tZm9udC1rZXJuaW5nOiAw cHQ7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij7Bqs+1tee7sDwvU1BBTj48U1BBTiANCiAg ICAgICAgICAgIGxhbmc9RU4tVVMgDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0 OyBDT0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4w cHQiPjxvOnA+PC9vOnA+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAg ICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdI VDogMGNtOyBCT1JERVItVE9QOiAjZWNlOWQ4OyBQQURESU5HLUxFRlQ6IDBjbTsgUEFERElORy1C T1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiA4MC41cHQ7IFBBRERJTkct VE9QOiAwY207IEJPUkRFUi1CT1RUT006ICNlY2U5ZDg7IEhFSUdIVDogMTguNzVwdDsgQkFDS0dS T1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29saWQgd2luZG93 dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1z by1ib3JkZXItcmlnaHQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQiIA0KICAgICAgICAgIHdp ZHRoPTEwNz4NCiAgICAgICAgICAgIDxQIGNsYXNzPU1zb05vcm1hbCANCiAgICAgICAgICAgIHN0 eWxlPSJNQVJHSU46IDBjbSAxNy40NXB0IDBwdCAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0 OyBMSU5FLUhFSUdIVDogMjJwdDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28tbGluZS1oZWlnaHQt cnVsZTogZXhhY3RseTsgbXNvLXBhcmEtbWFyZ2luLXRvcDogMGNtOyBtc28tcGFyYS1tYXJnaW4t cmlnaHQ6IDEuNjZnZDsgbXNvLXBhcmEtbWFyZ2luLWJvdHRvbTogLjAwMDFwdDsgbXNvLXBhcmEt bWFyZ2luLWxlZnQ6IC0xLjVnZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiAuODEiIA0KICAgICAg ICAgICAgYWxpZ249Y2VudGVyPjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICAgICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQiPjxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9Im1zby1zcGFjZXJ1 bjogeWVzIj4mbmJzcDsgPC9TUEFOPjwvU1BBTj48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJG T05ULVNJWkU6IDEycHQ7IENPTE9SOiByZWQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdCI+ytYgDQogICAgICAgICAgICC7+jxTUEFOIGxhbmc9RU4tVVM+PG86 cD48L286cD48L1NQQU4+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAg ICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdI VDogMGNtOyBCT1JERVItVE9QOiAjZWNlOWQ4OyBQQURESU5HLUxFRlQ6IDBjbTsgUEFERElORy1C T1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiAzNi45cHQ7IFBBRERJTkct VE9QOiAwY207IEJPUkRFUi1CT1RUT006ICNlY2U5ZDg7IEhFSUdIVDogMTguNzVwdDsgQkFDS0dS T1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29saWQgd2luZG93 dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQiIA0K ICAgICAgICAgIHdpZHRoPTQ5Pg0KICAgICAgICAgICAgPFAgY2xhc3M9TXNvTm9ybWFsIA0KICAg ICAgICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIC05LjY1cHQgMHB0IDBjbTsgTElORS1IRUlHSFQ6 IDIycHQ7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28tcGFyYS1tYXJnaW4tcmln aHQ6IC0uOTJnZCI+PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBD T0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQi PtGnwPo8U1BBTiANCiAgICAgICAgICAgIGxhbmc9RU4tVVM+PG86cD48L286cD48L1NQQU4+PC9T UEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJ R0hUOiB3aW5kb3d0ZXh0IDNwdCBkb3VibGU7IFBBRERJTkctUklHSFQ6IDBjbTsgQk9SREVSLVRP UDogI2VjZTlkODsgUEFERElORy1MRUZUOiAwY207IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRF Ui1MRUZUOiAjZWNlOWQ4OyBXSURUSDogMTI2Ljc1cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRF Ui1CT1RUT006ICNlY2U5ZDg7IEhFSUdIVDogMTguNzVwdDsgQkFDS0dST1VORC1DT0xPUjogdHJh bnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28t Ym9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItcmlnaHQt YWx0OiB0aGljay10aGluLXNtYWxsLWdhcCB3aW5kb3d0ZXh0IDMuMHB0IiANCiAgICAgICAgICB3 aWR0aD0xNjkgY29sU3Bhbj0zPg0KICAgICAgICAgICAgPFAgY2xhc3M9TXNvTm9ybWFsIA0KICAg ICAgICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIC05LjY1cHQgMHB0IDBjbTsgVEVYVC1JTkRFTlQ6 IDIzLjVwdDsgTElORS1IRUlHSFQ6IDIycHQ7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5 OyBtc28tcGFyYS1tYXJnaW4tcmlnaHQ6IC0uOTJnZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiAx Ljk2Ij48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiBy ZWQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+sc/StdS6 0KM8U1BBTiANCiAgICAgICAgICAgIGxhbmc9RU4tVVM+PG86cD48L286cD48L1NQQU4+PC9TUEFO PjwvUD48L1REPjwvVFI+DQogICAgICAgIDxUUiBzdHlsZT0iSEVJR0hUOiAyMC44cHQ7IG1zby15 ZnRpLWlyb3c6IDUiPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJ R0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1U T1A6ICNlY2U5ZDg7IFBBRERJTkctTEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJP UkRFUi1MRUZUOiB3aW5kb3d0ZXh0IDNwdCBkb3VibGU7IFdJRFRIOiA1My44NXB0OyBQQURESU5H LVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hUOiAy MC44cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6 IHNvbGlkIHdpbmRvd3RleHQgMS4wcHQ7IG1zby1ib3JkZXItbGVmdC1hbHQ6IHRoaW4tdGhpY2st c21hbGwtZ2FwIHdpbmRvd3RleHQgMy4wcHQ7IG1zby1ib3JkZXItYWx0OiBzb2xpZCB3aW5kb3d0 ZXh0IDEuMHB0IiANCiAgICAgICAgICB3aWR0aD03Mj4NCiAgICAgICAgICAgIDxQIA0KICAgICAg ICAgICAgc3R5bGU9Ik1BUkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBU RVhULUFMSUdOOiBjZW50ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFy LWluZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5n PUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3L zszlPiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0K ICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURE SU5HLVJJR0hUOiA1LjRwdDsgQk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZUOiA1LjRw dDsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiA2My4x NXB0OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xp ZDsgSEVJR0hUOiAyMC44cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9y ZGVyLXRvcC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1ib3R0b20tYWx0 OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItcmlnaHQtYWx0OiBzb2xpZCB3aW5k b3d0ZXh0IC41cHQiIA0KICAgICAgICAgIHdpZHRoPTg0Pg0KICAgICAgICAgICAgPFAgDQogICAg ICAgICAgICBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdCAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6 IDkuN3B0OyBMSU5FLUhFSUdIVDogMTVwdDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28tbGluZS1o ZWlnaHQtcnVsZTogZXhhY3RseTsgbXNvLXBhcmEtbWFyZ2luLXRvcDogMGNtOyBtc28tcGFyYS1t YXJnaW4tcmlnaHQ6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLWJvdHRvbTogLjAwMDFwdDsgbXNvLXBh cmEtbWFyZ2luLWxlZnQ6IC0xLjVnZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiAuODEiIA0KICAg ICAgICAgICAgYWxpZ249Y2VudGVyPjxTUEFOIGxhbmc9RU4tVVMgc3R5bGU9IkNPTE9SOiByZWQi PjxvOnA+PEZPTlQgDQogICAgICAgICAgICBmYWNlPcvOzOU+Jm5ic3A7PC9GT05UPjwvbzpwPjwv U1BBTj48L1A+PC9URD4NCiAgICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1S SUdIVDogd2luZG93dGV4dCAxcHQgc29saWQ7IFBBRERJTkctUklHSFQ6IDUuNHB0OyBCT1JERVIt VE9QOiAjZWNlOWQ4OyBQQURESU5HLUxFRlQ6IDUuNHB0OyBQQURESU5HLUJPVFRPTTogMGNtOyBC T1JERVItTEVGVDogI2VjZTlkODsgV0lEVEg6IDQwLjM1cHQ7IFBBRERJTkctVE9QOiAwY207IEJP UkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDIwLjhwdDsgQkFDS0dS T1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29saWQgd2luZG93 dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1z by1ib3JkZXItYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQiIA0KICAgICAgICAgIHdpZHRoPTU0 IGNvbFNwYW49Mj4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjog MGNtIDBjbSAwcHQgLTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgTElORS1IRUlHSFQ6IDE1 cHQ7IFRFWFQtQUxJR046IGNlbnRlcjsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7IG1z by1wYXJhLW1hcmdpbi10b3A6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1zby1w YXJhLW1hcmdpbi1ib3R0b206IC4wMDAxcHQ7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7 IG1zby1jaGFyLWluZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48 U1BBTiBsYW5nPUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAg ICAgZmFjZT3LzszlPiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAg ICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNv bGlkOyBQQURESU5HLVJJR0hUOiA1LjRwdDsgQk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1M RUZUOiA1LjRwdDsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJ RFRIOiA0MC42NXB0OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0 IDFwdCBzb2xpZDsgSEVJR0hUOiAyMC44cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50 OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1s ZWZ0LWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWFsdDogc29saWQgd2lu ZG93dGV4dCAuNXB0IiANCiAgICAgICAgICB3aWR0aD01NCBjb2xTcGFuPTI+DQogICAgICAgICAg ICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0IC0xNS43NXB0OyBU RVhULUlOREVOVDogOS43cHQ7IExJTkUtSEVJR0hUOiAxNXB0OyBURVhULUFMSUdOOiBjZW50ZXI7 IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28tcGFyYS1tYXJnaW4tdG9wOiAwY207 IG1zby1wYXJhLW1hcmdpbi1yaWdodDogMGNtOyBtc28tcGFyYS1tYXJnaW4tYm90dG9tOiAuMDAw MXB0OyBtc28tcGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6 IC44MSIgDQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0i Q09MT1I6IHJlZCI+PG86cD48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9y87M5T4mbmJzcDs8L0ZP TlQ+PC9vOnA+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHls ZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogMGNt OyBCT1JERVItVE9QOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1MRUZUOiAwY207IFBB RERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogNzAuODVwdDsg UEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTogI2VjZTlkODsgSEVJR0hUOiAyMC44cHQ7 IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlk IHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogc29saWQgd2luZG93dGV4dCAu NXB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0IiANCiAgICAg ICAgICB3aWR0aD05NCBjb2xTcGFuPTM+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0 eWxlPSJNQVJHSU4tTEVGVDogLTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgVEVYVC1BTElH TjogY2VudGVyOyBtc28tcGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQt Y291bnQ6IC44MSIgDQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBz dHlsZT0iQ09MT1I6IHJlZCI+PG86cD48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9y87M5T4mbmJz cDs8L0ZPTlQ+PC9vOnA+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAg ICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdI VDogMGNtOyBCT1JERVItVE9QOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1MRUZUOiAw Y207IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogODAu NXB0OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiAjZWNlOWQ4OyBIRUlHSFQ6IDIw LjhwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDog c29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0 ZXh0IC41cHQ7IG1zby1ib3JkZXItcmlnaHQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQiIA0K ICAgICAgICAgIHdpZHRoPTEwNz4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9 Ik1BUkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBURVhULUFMSUdOOiBj ZW50ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWluZGVudC1jb3Vu dDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5nPUVOLVVTIHN0eWxl PSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3LzszlPiZuYnNwOzwv Rk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0KICAgICAgICAgIHN0 eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLVJJR0hUOiAw Y207IEJPUkRFUi1UT1A6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLUxFRlQ6IDBjbTsg UEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiAzNi45cHQ7 IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006ICNlY2U5ZDg7IEhFSUdIVDogMjAuOHB0 OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3AtYWx0OiBzb2xp ZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItbGVmdC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQg LjVwdDsgbXNvLWJvcmRlci1yaWdodC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgMS4wcHQiIA0KICAg ICAgICAgIHdpZHRoPTQ5Pg0KICAgICAgICAgICAgPFAgDQogICAgICAgICAgICBzdHlsZT0iTUFS R0lOLUxFRlQ6IC0xNS43NXB0OyBURVhULUlOREVOVDogOS43cHQ7IFRFWFQtQUxJR046IGNlbnRl cjsgbXNvLXBhcmEtbWFyZ2luLWxlZnQ6IC0xLjVnZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiAu ODEiIA0KICAgICAgICAgICAgYWxpZ249Y2VudGVyPjxTUEFOIGxhbmc9RU4tVVMgc3R5bGU9IkNP TE9SOiByZWQiPjxvOnA+PEZPTlQgDQogICAgICAgICAgICBmYWNlPcvOzOU+Jm5ic3A7PC9GT05U PjwvbzpwPjwvU1BBTj48L1A+PC9URD4NCiAgICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9 IkJPUkRFUi1SSUdIVDogd2luZG93dGV4dCAzcHQgZG91YmxlOyBQQURESU5HLVJJR0hUOiAwY207 IEJPUkRFUi1UT1A6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLUxFRlQ6IDBjbTsgUEFE RElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiAxMjYuNzVwdDsg UEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTogI2VjZTlkODsgSEVJR0hUOiAyMC44cHQ7 IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlk IHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogc29saWQgd2luZG93dGV4dCAu NXB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogdGhpY2stdGhpbi1zbWFsbC1nYXAgd2luZG93dGV4 dCAzLjBwdCIgDQogICAgICAgICAgd2lkdGg9MTY5IGNvbFNwYW49Mz4NCiAgICAgICAgICAgIDxQ IA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6 IDkuN3B0OyBURVhULUFMSUdOOiBjZW50ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7 IG1zby1jaGFyLWluZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48 U1BBTiBsYW5nPUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAg ICAgZmFjZT3LzszlPiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+PC9UUj4NCiAg ICAgICAgPFRSIHN0eWxlPSJIRUlHSFQ6IDIyLjQ1cHQ7IG1zby15ZnRpLWlyb3c6IDYiPg0KICAg ICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFw dCBzb2xpZDsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJ TkctTEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiB3aW5kb3d0 ZXh0IDNwdCBkb3VibGU7IFdJRFRIOiA1My44NXB0OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVIt Qk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hUOiAyMi40NXB0OyBCQUNLR1JPVU5E LUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3AtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0 IDEuMHB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiB0aGluLXRoaWNrLXNtYWxsLWdhcCB3aW5kb3d0 ZXh0IDMuMHB0OyBtc28tYm9yZGVyLWFsdDogc29saWQgd2luZG93dGV4dCAxLjBwdCIgDQogICAg ICAgICAgd2lkdGg9NzI+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJH SU4tTEVGVDogLTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgVEVYVC1BTElHTjogY2VudGVy OyBtc28tcGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6IC44 MSIgDQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09M T1I6IHJlZCI+PG86cD48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9y87M5T4mbmJzcDs8L0ZPTlQ+ PC9vOnA+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0i Qk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogNS40cHQ7 IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJTkctTEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9N OiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogNjMuMTVwdDsgUEFERElORy1UT1A6 IDBjbTsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMjIuNDVw dDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29s aWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWJvdHRvbS1hbHQ6IHNvbGlkIHdpbmRvd3Rl eHQgLjVwdDsgbXNvLWJvcmRlci1yaWdodC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdCIgDQog ICAgICAgICAgd2lkdGg9ODQ+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJN QVJHSU46IDBjbSAwY20gMHB0IC01OS4ycHQ7IFRFWFQtSU5ERU5UOiA1My4xNXB0OyBMSU5FLUhF SUdIVDogMTVwdDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28tbGluZS1oZWlnaHQtcnVsZTogZXhh Y3RseTsgbXNvLXBhcmEtbWFyZ2luLXRvcDogMGNtOyBtc28tcGFyYS1tYXJnaW4tcmlnaHQ6IDBj bTsgbXNvLXBhcmEtbWFyZ2luLWJvdHRvbTogLjAwMDFwdDsgbXNvLXBhcmEtbWFyZ2luLWxlZnQ6 IC01LjY0Z2Q7IG1zby1jaGFyLWluZGVudC1jb3VudDogNC40MyIgDQogICAgICAgICAgICBhbGln bj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6IHJlZCI+PG86cD48Rk9OVCAN CiAgICAgICAgICAgIGZhY2U9y87M5T4mbmJzcDs8L0ZPTlQ+PC9vOnA+PC9TUEFOPjwvUD48L1RE Pg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0 ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1UT1A6ICNlY2U5ZDg7 IFBBRERJTkctTEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAj ZWNlOWQ4OyBXSURUSDogNDAuMzVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTog d2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMjIuNDVwdDsgQkFDS0dST1VORC1DT0xPUjog dHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBt c28tYm9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItYWx0 OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQiIA0KICAgICAgICAgIHdpZHRoPTU0IGNvbFNwYW49Mj4N CiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQg LTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgTElORS1IRUlHSFQ6IDE1cHQ7IFRFWFQtQUxJ R046IGNlbnRlcjsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7IG1zby1wYXJhLW1hcmdp bi10b3A6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1zby1wYXJhLW1hcmdpbi1i b3R0b206IC4wMDAxcHQ7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWlu ZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5nPUVO LVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3Lzszl PiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0KICAg ICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5H LVJJR0hUOiA1LjRwdDsgQk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZUOiA1LjRwdDsg UEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiA0MC42NXB0 OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsg SEVJR0hUOiAyMi40NXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRl ci10b3AtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItbGVmdC1hbHQ6IHNv bGlkIHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVw dCIgDQogICAgICAgICAgd2lkdGg9NTQgY29sU3Bhbj0yPg0KICAgICAgICAgICAgPFAgDQogICAg ICAgICAgICBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdCAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6 IDkuN3B0OyBMSU5FLUhFSUdIVDogMTVwdDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28tbGluZS1o ZWlnaHQtcnVsZTogZXhhY3RseTsgbXNvLXBhcmEtbWFyZ2luLXRvcDogMGNtOyBtc28tcGFyYS1t YXJnaW4tcmlnaHQ6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLWJvdHRvbTogLjAwMDFwdDsgbXNvLXBh cmEtbWFyZ2luLWxlZnQ6IC0xLjVnZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiAuODEiIA0KICAg ICAgICAgICAgYWxpZ249Y2VudGVyPjxTUEFOIGxhbmc9RU4tVVMgc3R5bGU9IkNPTE9SOiByZWQi PjxvOnA+PEZPTlQgDQogICAgICAgICAgICBmYWNlPcvOzOU+Jm5ic3A7PC9GT05UPjwvbzpwPjwv U1BBTj48L1A+PC9URD4NCiAgICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1S SUdIVDogd2luZG93dGV4dCAxcHQgc29saWQ7IFBBRERJTkctUklHSFQ6IDBjbTsgQk9SREVSLVRP UDogd2luZG93dGV4dCAxcHQgc29saWQ7IFBBRERJTkctTEVGVDogMGNtOyBQQURESU5HLUJPVFRP TTogMGNtOyBCT1JERVItTEVGVDogI2VjZTlkODsgV0lEVEg6IDcwLjg1cHQ7IFBBRERJTkctVE9Q OiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDIyLjQ1 cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBz b2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41 cHQiIA0KICAgICAgICAgIHdpZHRoPTk0IGNvbFNwYW49Mz4NCiAgICAgICAgICAgIDxQIA0KICAg ICAgICAgICAgc3R5bGU9Ik1BUkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0 OyBURVhULUFMSUdOOiBjZW50ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1j aGFyLWluZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBs YW5nPUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFj ZT3LzszlPiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFRE IA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQ QURESU5HLVJJR0hUOiAwY207IEJPUkRFUi1UT1A6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURE SU5HLUxFRlQ6IDBjbTsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7 IFdJRFRIOiA4MC41cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006ICNlY2U5ZDg7 IEhFSUdIVDogMjIuNDVwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3Jk ZXItdG9wLWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBz b2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItcmlnaHQtYWx0OiBzb2xpZCB3aW5kb3d0 ZXh0IC41cHQiIA0KICAgICAgICAgIHdpZHRoPTEwNz4NCiAgICAgICAgICAgIDxQIA0KICAgICAg ICAgICAgc3R5bGU9Ik1BUkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBU RVhULUFMSUdOOiBjZW50ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFy LWluZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5n PUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3L zszlPiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0K ICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURE SU5HLVJJR0hUOiAwY207IEJPUkRFUi1UT1A6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5H LUxFRlQ6IDBjbTsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJ RFRIOiAzNi45cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006ICNlY2U5ZDg7IEhF SUdIVDogMjIuNDVwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXIt dG9wLWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBzb2xp ZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItcmlnaHQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0 IDEuMHB0IiANCiAgICAgICAgICB3aWR0aD00OT4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAg ICAgc3R5bGU9Ik1BUkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBURVhU LUFMSUdOOiBjZW50ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWlu ZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5nPUVO LVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3Lzszl PiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0KICAg ICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgM3B0IGRvdWJsZTsgUEFERElO Ry1SSUdIVDogMGNtOyBCT1JERVItVE9QOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1M RUZUOiAwY207IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURU SDogMTI2Ljc1cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006ICNlY2U5ZDg7IEhF SUdIVDogMjIuNDVwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXIt dG9wLWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBzb2xp ZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItcmlnaHQtYWx0OiB0aGljay10aGluLXNtYWxs LWdhcCB3aW5kb3d0ZXh0IDMuMHB0IiANCiAgICAgICAgICB3aWR0aD0xNjkgY29sU3Bhbj0zPg0K ICAgICAgICAgICAgPFAgDQogICAgICAgICAgICBzdHlsZT0iTUFSR0lOLUxFRlQ6IC0xNS43NXB0 OyBURVhULUlOREVOVDogOS43cHQ7IFRFWFQtQUxJR046IGNlbnRlcjsgbXNvLXBhcmEtbWFyZ2lu LWxlZnQ6IC0xLjVnZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiAuODEiIA0KICAgICAgICAgICAg YWxpZ249Y2VudGVyPjxTUEFOIGxhbmc9RU4tVVMgc3R5bGU9IkNPTE9SOiByZWQiPjxvOnA+PEZP TlQgDQogICAgICAgICAgICBmYWNlPcvOzOU+Jm5ic3A7PC9GT05UPjwvbzpwPjwvU1BBTj48L1A+ PC9URD48L1RSPg0KICAgICAgICA8VFIgc3R5bGU9IkhFSUdIVDogMjIuNzVwdDsgbXNvLXlmdGkt aXJvdzogNyI+DQogICAgICAgICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6 IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLVJJR0hUOiA1LjRwdDsgQk9SREVSLVRPUDog I2VjZTlkODsgUEFERElORy1MRUZUOiA1LjRwdDsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVS LUxFRlQ6IHdpbmRvd3RleHQgM3B0IGRvdWJsZTsgV0lEVEg6IDUzLjg1cHQ7IFBBRERJTkctVE9Q OiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDIyLjc1 cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNv bGlkIHdpbmRvd3RleHQgMS4wcHQ7IG1zby1ib3JkZXItbGVmdC1hbHQ6IHRoaW4tdGhpY2stc21h bGwtZ2FwIHdpbmRvd3RleHQgMy4wcHQ7IG1zby1ib3JkZXItYWx0OiBzb2xpZCB3aW5kb3d0ZXh0 IDEuMHB0IiANCiAgICAgICAgICB3aWR0aD03Mj4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAg ICAgc3R5bGU9Ik1BUkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBURVhU LUFMSUdOOiBjZW50ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWlu ZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5nPUVO LVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3Lzszl PiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0KICAg ICAgICAgIHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5H LVJJR0hUOiA1LjRwdDsgQk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZUOiA1LjRwdDsg UEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiA2My4xNXB0 OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsg SEVJR0hUOiAyMi43NXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRl ci10b3AtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItYm90dG9tLWFsdDog c29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogc29saWQgd2luZG93 dGV4dCAuNXB0IiANCiAgICAgICAgICB3aWR0aD04ND4NCiAgICAgICAgICAgIDxQIA0KICAgICAg ICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQgLTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5 LjdwdDsgTElORS1IRUlHSFQ6IDE1cHQ7IFRFWFQtQUxJR046IGNlbnRlcjsgbXNvLWxpbmUtaGVp Z2h0LXJ1bGU6IGV4YWN0bHk7IG1zby1wYXJhLW1hcmdpbi10b3A6IDBjbTsgbXNvLXBhcmEtbWFy Z2luLXJpZ2h0OiAwY207IG1zby1wYXJhLW1hcmdpbi1ib3R0b206IC4wMDAxcHQ7IG1zby1wYXJh LW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWluZGVudC1jb3VudDogLjgxIiANCiAgICAg ICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5nPUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48 bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3LzszlPiZuYnNwOzwvRk9OVD48L286cD48L1NQ QU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0KICAgICAgICAgIHN0eWxlPSJCT1JERVItUklH SFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLVJJR0hUOiA1LjRwdDsgQk9SREVSLVRP UDogI2VjZTlkODsgUEFERElORy1MRUZUOiA1LjRwdDsgUEFERElORy1CT1RUT006IDBjbTsgQk9S REVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiA0MC4zNXB0OyBQQURESU5HLVRPUDogMGNtOyBCT1JE RVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hUOiAyMi43NXB0OyBCQUNLR1JP VU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3AtYWx0OiBzb2xpZCB3aW5kb3d0 ZXh0IC41cHQ7IG1zby1ib3JkZXItbGVmdC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdDsgbXNv LWJvcmRlci1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdCIgDQogICAgICAgICAgd2lkdGg9NTQg Y29sU3Bhbj0yPg0KICAgICAgICAgICAgPFAgDQogICAgICAgICAgICBzdHlsZT0iTUFSR0lOOiAw Y20gMGNtIDBwdCAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBMSU5FLUhFSUdIVDogMTVw dDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28tbGluZS1oZWlnaHQtcnVsZTogZXhhY3RseTsgbXNv LXBhcmEtbWFyZ2luLXRvcDogMGNtOyBtc28tcGFyYS1tYXJnaW4tcmlnaHQ6IDBjbTsgbXNvLXBh cmEtbWFyZ2luLWJvdHRvbTogLjAwMDFwdDsgbXNvLXBhcmEtbWFyZ2luLWxlZnQ6IC0xLjVnZDsg bXNvLWNoYXItaW5kZW50LWNvdW50OiAuODEiIA0KICAgICAgICAgICAgYWxpZ249Y2VudGVyPjxT UEFOIGxhbmc9RU4tVVMgc3R5bGU9IkNPTE9SOiByZWQiPjxvOnA+PEZPTlQgDQogICAgICAgICAg ICBmYWNlPcvOzOU+Jm5ic3A7PC9GT05UPjwvbzpwPjwvU1BBTj48L1A+PC9URD4NCiAgICAgICAg ICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1SSUdIVDogd2luZG93dGV4dCAxcHQgc29s aWQ7IFBBRERJTkctUklHSFQ6IDUuNHB0OyBCT1JERVItVE9QOiAjZWNlOWQ4OyBQQURESU5HLUxF RlQ6IDUuNHB0OyBQQURESU5HLUJPVFRPTTogMGNtOyBCT1JERVItTEVGVDogI2VjZTlkODsgV0lE VEg6IDQwLjY1cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQg MXB0IHNvbGlkOyBIRUlHSFQ6IDIyLjc1cHQ7IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50 OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1s ZWZ0LWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWFsdDogc29saWQgd2lu ZG93dGV4dCAuNXB0IiANCiAgICAgICAgICB3aWR0aD01NCBjb2xTcGFuPTI+DQogICAgICAgICAg ICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0IC0xNS43NXB0OyBU RVhULUlOREVOVDogOS43cHQ7IExJTkUtSEVJR0hUOiAxNXB0OyBURVhULUFMSUdOOiBjZW50ZXI7 IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28tcGFyYS1tYXJnaW4tdG9wOiAwY207 IG1zby1wYXJhLW1hcmdpbi1yaWdodDogMGNtOyBtc28tcGFyYS1tYXJnaW4tYm90dG9tOiAuMDAw MXB0OyBtc28tcGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6 IC44MSIgDQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0i Q09MT1I6IHJlZCI+PG86cD48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9y87M5T4mbmJzcDs8L0ZP TlQ+PC9vOnA+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHls ZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogMGNt OyBCT1JERVItVE9QOiAjZWNlOWQ4OyBQQURESU5HLUxFRlQ6IDBjbTsgUEFERElORy1CT1RUT006 IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiA3MC44NXB0OyBQQURESU5HLVRPUDog MGNtOyBCT1JERVItQk9UVE9NOiAjZWNlOWQ4OyBIRUlHSFQ6IDIyLjc1cHQ7IEJBQ0tHUk9VTkQt Q09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQg LjVwdDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9y ZGVyLXJpZ2h0LWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0IiANCiAgICAgICAgICB3aWR0aD05 NCBjb2xTcGFuPTM+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU4t TEVGVDogLTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgVEVYVC1BTElHTjogY2VudGVyOyBt c28tcGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6IC44MSIg DQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6 IHJlZCI+PG86cD48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9y87M5T4mbmJzcDs8L0ZPTlQ+PC9v OnA+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9S REVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogMGNtOyBCT1JE RVItVE9QOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1MRUZUOiAwY207IFBBRERJTkct Qk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogODAuNXB0OyBQQURESU5H LVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiAjZWNlOWQ4OyBIRUlHSFQ6IDIyLjc1cHQ7IEJBQ0tH Uk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlkIHdpbmRv d3RleHQgLjVwdDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBt c28tYm9yZGVyLXJpZ2h0LWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0IiANCiAgICAgICAgICB3 aWR0aD0xMDc+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU4tTEVG VDogLTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28t cGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6IC44MSIgDQog ICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6IHJl ZCI+PG86cD48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9y87M5T4mbmJzcDs8L0ZPTlQ+PC9vOnA+ PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVS LVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogMGNtOyBCT1JERVIt VE9QOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1MRUZUOiAwY207IFBBRERJTkctQk9U VE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogMzYuOXB0OyBQQURESU5HLVRP UDogMGNtOyBCT1JERVItQk9UVE9NOiAjZWNlOWQ4OyBIRUlHSFQ6IDIyLjc1cHQ7IEJBQ0tHUk9V TkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlkIHdpbmRvd3Rl eHQgLjVwdDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28t Ym9yZGVyLXJpZ2h0LWFsdDogc29saWQgd2luZG93dGV4dCAxLjBwdCIgDQogICAgICAgICAgd2lk dGg9NDk+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU4tTEVGVDog LTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28tcGFy YS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6IC44MSIgDQogICAg ICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6IHJlZCI+ PG86cD48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9y87M5T4mbmJzcDs8L0ZPTlQ+PC9vOnA+PC9T UEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJ R0hUOiB3aW5kb3d0ZXh0IDNwdCBkb3VibGU7IFBBRERJTkctUklHSFQ6IDBjbTsgQk9SREVSLVRP UDogd2luZG93dGV4dCAxcHQgc29saWQ7IFBBRERJTkctTEVGVDogMGNtOyBQQURESU5HLUJPVFRP TTogMGNtOyBCT1JERVItTEVGVDogI2VjZTlkODsgV0lEVEg6IDEyNi43NXB0OyBQQURESU5HLVRP UDogMGNtOyBCT1JERVItQk9UVE9NOiAjZWNlOWQ4OyBIRUlHSFQ6IDIyLjc1cHQ7IEJBQ0tHUk9V TkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlkIHdpbmRvd3Rl eHQgLjVwdDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28t Ym9yZGVyLXJpZ2h0LWFsdDogdGhpY2stdGhpbi1zbWFsbC1nYXAgd2luZG93dGV4dCAzLjBwdCIg DQogICAgICAgICAgd2lkdGg9MTY5IGNvbFNwYW49Mz4NCiAgICAgICAgICAgIDxQIA0KICAgICAg ICAgICAgc3R5bGU9Ik1BUkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBU RVhULUFMSUdOOiBjZW50ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFy LWluZGVudC1jb3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5n PUVOLVVTIHN0eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3L zszlPiZuYnNwOzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+PC9UUj4NCiAgICAgICAgPFRS IHN0eWxlPSJIRUlHSFQ6IDIyLjM1cHQ7IG1zby15ZnRpLWlyb3c6IDgiPg0KICAgICAgICAgIDxU RCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsg UEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJTkctTEVGVDog NS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiB3aW5kb3d0ZXh0IDNwdCBk b3VibGU7IFdJRFRIOiA1My44NXB0OyBQQURESU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3 aW5kb3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hUOiAyMi4zNXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0 cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3AtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IDEuMHB0OyBt c28tYm9yZGVyLWxlZnQtYWx0OiB0aGluLXRoaWNrLXNtYWxsLWdhcCB3aW5kb3d0ZXh0IDMuMHB0 OyBtc28tYm9yZGVyLWFsdDogc29saWQgd2luZG93dGV4dCAxLjBwdCIgDQogICAgICAgICAgd2lk dGg9NzI+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU4tTEVGVDog LTE1Ljc1cHQ7IFRFWFQtSU5ERU5UOiA5LjdwdDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28tcGFy YS1tYXJnaW4tbGVmdDogLTEuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6IC44MSIgDQogICAg ICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6IHJlZCI+ PG86cD48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9y87M5T4mbmJzcDs8L0ZPTlQ+PC9vOnA+PC9T UEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJ R0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1U T1A6ICNlY2U5ZDg7IFBBRERJTkctTEVGVDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJP UkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogNjMuMTVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9S REVSLUJPVFRPTTogd2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMjIuMzVwdDsgQkFDS0dS T1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29saWQgd2luZG93 dGV4dCAuNXB0OyBtc28tYm9yZGVyLWJvdHRvbS1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdDsg bXNvLWJvcmRlci1yaWdodC1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdCIgDQogICAgICAgICAg d2lkdGg9ODQ+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU46IDBj bSAwY20gMHB0IC0xNS43NXB0OyBURVhULUlOREVOVDogOS43cHQ7IExJTkUtSEVJR0hUOiAxNXB0 OyBURVhULUFMSUdOOiBjZW50ZXI7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28t cGFyYS1tYXJnaW4tdG9wOiAwY207IG1zby1wYXJhLW1hcmdpbi1yaWdodDogMGNtOyBtc28tcGFy YS1tYXJnaW4tYm90dG9tOiAuMDAwMXB0OyBtc28tcGFyYS1tYXJnaW4tbGVmdDogLTEuNWdkOyBt c28tY2hhci1pbmRlbnQtY291bnQ6IC44MSIgDQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQ QU4gbGFuZz1FTi1VUyBzdHlsZT0iQ09MT1I6IHJlZCI+PG86cD48Rk9OVCANCiAgICAgICAgICAg IGZhY2U9y87M5T4mbmJzcDs8L0ZPTlQ+PC9vOnA+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAg IDxURCANCiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xp ZDsgUEFERElORy1SSUdIVDogNS40cHQ7IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJTkctTEVG VDogNS40cHQ7IFBBRERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURU SDogNDAuMzVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAx cHQgc29saWQ7IEhFSUdIVDogMjIuMzVwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7 IG1zby1ib3JkZXItdG9wLWFsdDogc29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxl ZnQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItYWx0OiBzb2xpZCB3aW5k b3d0ZXh0IC41cHQiIA0KICAgICAgICAgIHdpZHRoPTU0IGNvbFNwYW49Mj4NCiAgICAgICAgICAg IDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQgLTE1Ljc1cHQ7IFRF WFQtSU5ERU5UOiA5LjdwdDsgTElORS1IRUlHSFQ6IDE1cHQ7IFRFWFQtQUxJR046IGNlbnRlcjsg bXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7IG1zby1wYXJhLW1hcmdpbi10b3A6IDBjbTsg bXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1zby1wYXJhLW1hcmdpbi1ib3R0b206IC4wMDAx cHQ7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWluZGVudC1jb3VudDog LjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5nPUVOLVVTIHN0eWxlPSJD T0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3LzszlPiZuYnNwOzwvRk9O VD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0KICAgICAgICAgIHN0eWxl PSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLVJJR0hUOiA1LjRw dDsgQk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZUOiA1LjRwdDsgUEFERElORy1CT1RU T006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiA0MC42NXB0OyBQQURESU5HLVRP UDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hUOiAyMi4z NXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3AtYWx0OiBz b2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItbGVmdC1hbHQ6IHNvbGlkIHdpbmRvd3Rl eHQgLjVwdDsgbXNvLWJvcmRlci1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdCIgDQogICAgICAg ICAgd2lkdGg9NTQgY29sU3Bhbj0yPg0KICAgICAgICAgICAgPFAgDQogICAgICAgICAgICBzdHls ZT0iTUFSR0lOOiAwY20gMGNtIDBwdCAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBMSU5F LUhFSUdIVDogMTVwdDsgVEVYVC1BTElHTjogY2VudGVyOyBtc28tbGluZS1oZWlnaHQtcnVsZTog ZXhhY3RseTsgbXNvLXBhcmEtbWFyZ2luLXRvcDogMGNtOyBtc28tcGFyYS1tYXJnaW4tcmlnaHQ6 IDBjbTsgbXNvLXBhcmEtbWFyZ2luLWJvdHRvbTogLjAwMDFwdDsgbXNvLXBhcmEtbWFyZ2luLWxl ZnQ6IC0xLjVnZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiAuODEiIA0KICAgICAgICAgICAgYWxp Z249Y2VudGVyPjxTUEFOIGxhbmc9RU4tVVMgc3R5bGU9IkNPTE9SOiByZWQiPjxvOnA+PEZPTlQg DQogICAgICAgICAgICBmYWNlPcvOzOU+Jm5ic3A7PC9GT05UPjwvbzpwPjwvU1BBTj48L1A+PC9U RD4NCiAgICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1SSUdIVDogd2luZG93 dGV4dCAxcHQgc29saWQ7IFBBRERJTkctUklHSFQ6IDBjbTsgQk9SREVSLVRPUDogd2luZG93dGV4 dCAxcHQgc29saWQ7IFBBRERJTkctTEVGVDogMGNtOyBQQURESU5HLUJPVFRPTTogMGNtOyBCT1JE RVItTEVGVDogI2VjZTlkODsgV0lEVEg6IDcwLjg1cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRF Ui1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDIyLjM1cHQ7IEJBQ0tHUk9V TkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0 ZXh0IC41cHQ7IG1zby1ib3JkZXItYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQiIA0KICAgICAg ICAgIHdpZHRoPTk0IGNvbFNwYW49Mz4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5 bGU9Ik1BUkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBURVhULUFMSUdO OiBjZW50ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWluZGVudC1j b3VudDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5nPUVOLVVTIHN0 eWxlPSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3LzszlPiZuYnNw OzwvRk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0KICAgICAgICAg IHN0eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLVJJR0hU OiAwY207IEJPUkRFUi1UT1A6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLUxFRlQ6IDBj bTsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiA4MC41 cHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006ICNlY2U5ZDg7IEhFSUdIVDogMjIu MzVwdDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDog c29saWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0 ZXh0IC41cHQ7IG1zby1ib3JkZXItcmlnaHQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQiIA0K ICAgICAgICAgIHdpZHRoPTEwNz4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9 Ik1BUkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBURVhULUFMSUdOOiBj ZW50ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWluZGVudC1jb3Vu dDogLjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5nPUVOLVVTIHN0eWxl PSJDT0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3LzszlPiZuYnNwOzwv Rk9OVD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0KICAgICAgICAgIHN0 eWxlPSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLVJJR0hUOiAw Y207IEJPUkRFUi1UT1A6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBQQURESU5HLUxFRlQ6IDBjbTsg UEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiAzNi45cHQ7 IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006ICNlY2U5ZDg7IEhFSUdIVDogMjIuMzVw dDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29s aWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0 IC41cHQ7IG1zby1ib3JkZXItcmlnaHQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IDEuMHB0IiANCiAg ICAgICAgICB3aWR0aD00OT4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9Ik1B UkdJTi1MRUZUOiAtMTUuNzVwdDsgVEVYVC1JTkRFTlQ6IDkuN3B0OyBURVhULUFMSUdOOiBjZW50 ZXI7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtMS41Z2Q7IG1zby1jaGFyLWluZGVudC1jb3VudDog LjgxIiANCiAgICAgICAgICAgIGFsaWduPWNlbnRlcj48U1BBTiBsYW5nPUVOLVVTIHN0eWxlPSJD T0xPUjogcmVkIj48bzpwPjxGT05UIA0KICAgICAgICAgICAgZmFjZT3LzszlPiZuYnNwOzwvRk9O VD48L286cD48L1NQQU4+PC9QPjwvVEQ+DQogICAgICAgICAgPFREIA0KICAgICAgICAgIHN0eWxl PSJCT1JERVItUklHSFQ6IHdpbmRvd3RleHQgM3B0IGRvdWJsZTsgUEFERElORy1SSUdIVDogMGNt OyBCT1JERVItVE9QOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1MRUZUOiAwY207IFBB RERJTkctQk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogMTI2Ljc1cHQ7 IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006ICNlY2U5ZDg7IEhFSUdIVDogMjIuMzVw dDsgQkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29s aWQgd2luZG93dGV4dCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0 IC41cHQ7IG1zby1ib3JkZXItcmlnaHQtYWx0OiB0aGljay10aGluLXNtYWxsLWdhcCB3aW5kb3d0 ZXh0IDMuMHB0IiANCiAgICAgICAgICB3aWR0aD0xNjkgY29sU3Bhbj0zPg0KICAgICAgICAgICAg PFAgDQogICAgICAgICAgICBzdHlsZT0iTUFSR0lOLUxFRlQ6IC0xNS43NXB0OyBURVhULUlOREVO VDogOS43cHQ7IFRFWFQtQUxJR046IGNlbnRlcjsgbXNvLXBhcmEtbWFyZ2luLWxlZnQ6IC0xLjVn ZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiAuODEiIA0KICAgICAgICAgICAgYWxpZ249Y2VudGVy PjxTUEFOIGxhbmc9RU4tVVMgc3R5bGU9IkNPTE9SOiByZWQiPjxvOnA+PEZPTlQgDQogICAgICAg ICAgICBmYWNlPcvOzOU+Jm5ic3A7PC9GT05UPjwvbzpwPjwvU1BBTj48L1A+PC9URD48L1RSPg0K ICAgICAgICA8VFIgc3R5bGU9IkhFSUdIVDogMTMuOHB0OyBtc28teWZ0aS1pcm93OiA5Ij4NCiAg ICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1SSUdIVDogd2luZG93dGV4dCAx cHQgc29saWQ7IFBBRERJTkctUklHSFQ6IDUuNHB0OyBCT1JERVItVE9QOiAjZWNlOWQ4OyBQQURE SU5HLUxFRlQ6IDUuNHB0OyBQQURESU5HLUJPVFRPTTogMGNtOyBCT1JERVItTEVGVDogd2luZG93 dGV4dCAzcHQgZG91YmxlOyBXSURUSDogNTMuODVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVS LUJPVFRPTTogd2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMTMuOHB0OyBCQUNLR1JPVU5E LUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3AtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0 IDEuMHB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiB0aGluLXRoaWNrLXNtYWxsLWdhcCB3aW5kb3d0 ZXh0IDMuMHB0OyBtc28tYm9yZGVyLWFsdDogc29saWQgd2luZG93dGV4dCAxLjBwdCIgDQogICAg ICAgICAgd2lkdGg9NzI+DQogICAgICAgICAgICA8UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJH SU46IDYuMnB0IDBjbSA1cHQgMC4wNXB0OyBURVhULUlOREVOVDogLTUuNHB0OyBMSU5FLUhFSUdI VDogMTJwdDsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7IG1zby1wYXJhLW1hcmdpbi10 b3A6IDYuMnB0OyBtc28tcGFyYS1tYXJnaW4tcmlnaHQ6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLWJv dHRvbTogNS4wcHQ7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAtLjUxZ2Q7IG1zby1jaGFyLWluZGVu dC1jb3VudDogLS40NSI+PHY6c2hhcGV0eXBlIA0KICAgICAgICAgICAgaWQ9X3gwMDAwX3Q3NSBj b29yZHNpemU9IjIxNjAwLDIxNjAwIiBvOnNwdD0iNzUiIA0KICAgICAgICAgICAgbzpwcmVmZXJy ZWxhdGl2ZT0idCIgcGF0aD0ibUA0QDVsQDRAMTFAOUAxMUA5QDV4ZSIgZmlsbGVkPSJmIiANCiAg ICAgICAgICAgIHN0cm9rZWQ9ImYiPjx2OnN0cm9rZSBqb2luc3R5bGU9Im1pdGVyIj48L3Y6c3Ry b2tlPjx2OmZvcm11bGFzPjx2OmYgDQogICAgICAgICAgICBlcW49ImlmIGxpbmVEcmF3biBwaXhl bExpbmVXaWR0aCAwIj48L3Y6Zj48djpmIA0KICAgICAgICAgICAgZXFuPSJzdW0gQDAgMSAwIj48 L3Y6Zj48djpmIGVxbj0ic3VtIDAgMCBAMSI+PC92OmY+PHY6ZiANCiAgICAgICAgICAgIGVxbj0i cHJvZCBAMiAxIDIiPjwvdjpmPjx2OmYgDQogICAgICAgICAgICBlcW49InByb2QgQDMgMjE2MDAg cGl4ZWxXaWR0aCI+PC92OmY+PHY6ZiANCiAgICAgICAgICAgIGVxbj0icHJvZCBAMyAyMTYwMCBw aXhlbEhlaWdodCI+PC92OmY+PHY6ZiANCiAgICAgICAgICAgIGVxbj0ic3VtIEAwIDAgMSI+PC92 OmY+PHY6ZiBlcW49InByb2QgQDYgMSAyIj48L3Y6Zj48djpmIA0KICAgICAgICAgICAgZXFuPSJw cm9kIEA3IDIxNjAwIHBpeGVsV2lkdGgiPjwvdjpmPjx2OmYgDQogICAgICAgICAgICBlcW49InN1 bSBAOCAyMTYwMCAwIj48L3Y6Zj48djpmIA0KICAgICAgICAgICAgZXFuPSJwcm9kIEA3IDIxNjAw IHBpeGVsSGVpZ2h0Ij48L3Y6Zj48djpmIA0KICAgICAgICAgICAgZXFuPSJzdW0gQDEwIDIxNjAw IDAiPjwvdjpmPjwvdjpmb3JtdWxhcz48djpwYXRoIG86ZXh0cnVzaW9ub2s9ImYiIA0KICAgICAg ICAgICAgZ3JhZGllbnRzaGFwZW9rPSJ0IiBvOmNvbm5lY3R0eXBlPSJyZWN0Ij48L3Y6cGF0aD48 bzpsb2NrIA0KICAgICAgICAgICAgdjpleHQ9ImVkaXQiIGFzcGVjdHJhdGlvPSJ0Ij48L286bG9j az48L3Y6c2hhcGV0eXBlPjx2OnNoYXBlIA0KICAgICAgICAgICAgaWQ9X3gwMDAwX3MxMDI2IA0K ICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTi1UT1A6IDcuMTVwdDsgWi1JTkRFWDogLTE7IExFRlQ6 IDBweDsgTUFSR0lOLUxFRlQ6IC0yNDEuN3B0OyBXSURUSDogMTA3LjI1cHQ7IFBPU0lUSU9OOiBh YnNvbHV0ZTsgSEVJR0hUOiAxMDkuM3B0OyBURVhULUFMSUdOOiBsZWZ0OyBtc28tcG9zaXRpb24t aG9yaXpvbnRhbC1yZWxhdGl2ZTogdGV4dDsgbXNvLXBvc2l0aW9uLXZlcnRpY2FsLXJlbGF0aXZl OiB0ZXh0IiANCiAgICAgICAgICAgIHR5cGU9IiNfeDAwMDBfdDc1Ij48djppbWFnZWRhdGEgDQog ICAgICAgICAgICBzcmM9ImZpbGU6Ly8vQzpcRE9DVU1FfjFcQURNSU5JfjFcTE9DQUxTfjFcVGVt cFxtc29odG1sMVwwMVxjbGlwX2ltYWdlMDAxLmdpZiIgDQogICAgICAgICAgICBvOnRpdGxlPSIi PjxGT05UIGZhY2U9y87M5T48L0ZPTlQ+PC92OmltYWdlZGF0YT48L3Y6c2hhcGU+PFNQQU4gDQog ICAgICAgICAgICBzdHlsZT0iQ09MT1I6IHJlZCI+PEZPTlQgZmFjZT3LzszlPr3wtu7X3LzGPEIg DQogICAgICAgICAgICBzdHlsZT0ibXNvLWJpZGktZm9udC13ZWlnaHQ6IG5vcm1hbCI+PFNQQU4g bGFuZz1FTi1VUz48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+ Jm5ic3A7IDwvU1BBTj48L1NQQU4+PC9CPjxTUEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1VUz48 bzpwPjwvbzpwPjwvU1BBTj48L0ZPTlQ+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCAN CiAgICAgICAgICBzdHlsZT0iQk9SREVSLVJJR0hUOiAjZWNlOWQ4OyBQQURESU5HLVJJR0hUOiA1 LjRwdDsgQk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZUOiA1LjRwdDsgUEFERElORy1C T1RUT006IDBjbTsgQk9SREVSLUxFRlQ6ICNlY2U5ZDg7IFdJRFRIOiAyMTVwdDsgUEFERElORy1U T1A6IDBjbTsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxcHQgc29saWQ7IEhFSUdIVDogMTMu OHB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3AtYWx0OiBz b2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItbGVmdC1hbHQ6IHNvbGlkIHdpbmRvd3Rl eHQgMS4wcHQiIA0KICAgICAgICAgIHdpZHRoPTI4NyBjb2xTcGFuPTg+DQogICAgICAgICAgICA8 UCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU46IDYuMnB0IDBjbSA1cHQgLTE1Ljc1cHQ7IFRF WFQtSU5ERU5UOiA1Ny42cHQ7IExJTkUtSEVJR0hUOiAxMnB0OyBtc28tbGluZS1oZWlnaHQtcnVs ZTogZXhhY3RseTsgbXNvLXBhcmEtbWFyZ2luLXRvcDogNi4ycHQ7IG1zby1wYXJhLW1hcmdpbi1y aWdodDogMGNtOyBtc28tcGFyYS1tYXJnaW4tYm90dG9tOiA1LjBwdDsgbXNvLXBhcmEtbWFyZ2lu LWxlZnQ6IC0xLjVnZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiA0LjgiPjxTUEFOIA0KICAgICAg ICAgICAgc3R5bGU9IkNPTE9SOiByZWQiPjxGT05UIGZhY2U9y87M5T7N8jxTUEFOIGxhbmc9RU4t VVM+PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPiZuYnNwOyZu YnNwOyZuYnNwOyA8L1NQQU4+PC9TUEFOPseqPFNQQU4gDQogICAgICAgICAgICBsYW5nPUVOLVVT PjxTUEFOIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0KICAg ICAgICAgICAgPC9TUEFOPjwvU1BBTj6w2zxTUEFOIGxhbmc9RU4tVVM+PFNQQU4gDQogICAgICAg ICAgICBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAN CiAgICAgICAgICAgIDwvU1BBTj48L1NQQU4+yrA8U1BBTiBsYW5nPUVOLVVTPjxTUEFOIA0KICAg ICAgICAgICAgc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVzIj4mbmJzcDsmbmJzcDsmbmJzcDsgPC9T UEFOPjwvU1BBTj7UqjxTUEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1VUz48bzpwPjwvbzpwPjwv U1BBTj48L0ZPTlQ+PC9TUEFOPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBz dHlsZT0iQk9SREVSLVJJR0hUOiAjZWNlOWQ4OyBQQURESU5HLVJJR0hUOiA1LjRwdDsgQk9SREVS LVRPUDogd2luZG93dGV4dCAxcHQgc29saWQ7IFBBRERJTkctTEVGVDogNS40cHQ7IFBBRERJTkct Qk9UVE9NOiAwY207IEJPUkRFUi1MRUZUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgV0lEVEg6IDgw LjVwdDsgUEFERElORy1UT1A6IDBjbTsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxcHQgc29s aWQ7IEhFSUdIVDogMTMuOHB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJv cmRlci10b3AtYWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItbGVmdC1hbHQ6 IHNvbGlkIHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1ib3R0b20tYWx0OiBzb2xpZCB3aW5k b3d0ZXh0IDEuMHB0IiANCiAgICAgICAgICB3aWR0aD0xMDc+DQogICAgICAgICAgICA8UCANCiAg ICAgICAgICAgIHN0eWxlPSJNQVJHSU4tVE9QOiA2LjJwdDsgVEVYVC1JTkRFTlQ6IDE1LjVwdDsg TElORS1IRUlHSFQ6IDEycHQ7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28tY2hh ci1pbmRlbnQtY291bnQ6IDEuNDciPjxCIA0KICAgICAgICAgICAgc3R5bGU9Im1zby1iaWRpLWZv bnQtd2VpZ2h0OiBub3JtYWwiPjxGT05UIGZhY2U9y87M5T48U1BBTiANCiAgICAgICAgICAgIHN0 eWxlPSJGT05ULVNJWkU6IDEwLjVwdDsgQ09MT1I6IHJlZDsgbXNvLWJpZGktZm9udC1zaXplOiAx MC4wcHQiPrvjv+7I1cbaPC9TUEFOPjxTUEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1VUyBzdHls ZT0iQ09MT1I6IHJlZCI+PG86cD48L286cD48L1NQQU4+PC9GT05UPjwvQj48L1A+PC9URD4NCiAg ICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1SSUdIVDogd2luZG93dGV4dCAz cHQgZG91YmxlOyBQQURESU5HLVJJR0hUOiAwY207IEJPUkRFUi1UT1A6IHdpbmRvd3RleHQgMXB0 IHNvbGlkOyBQQURESU5HLUxFRlQ6IDBjbTsgUEFERElORy1CT1RUT006IDBjbTsgQk9SREVSLUxF RlQ6IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBXSURUSDogMTYzLjY1cHQ7IFBBRERJTkctVE9QOiAw Y207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDEzLjhwdDsg QkFDS0dST1VORC1DT0xPUjogdHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29saWQg LjVwdDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogc29saWQgLjVwdDsgbXNvLWJvcmRlci1ib3R0b20t YWx0OiBzb2xpZCAxLjBwdDsgbXNvLWJvcmRlci1yaWdodC1hbHQ6IHRoaWNrLXRoaW4tc21hbGwt Z2FwIDMuMHB0OyBtc28tYm9yZGVyLWNvbG9yLWFsdDogd2luZG93dGV4dCIgDQogICAgICAgICAg d2lkdGg9MjE4IGNvbFNwYW49ND4NCiAgICAgICAgICAgIDxQIA0KICAgICAgICAgICAgc3R5bGU9 Ik1BUkdJTi1UT1A6IDYuMnB0OyBURVhULUlOREVOVDogMzUuNHB0OyBMSU5FLUhFSUdIVDogMTJw dDsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7IG1zby1jaGFyLWluZGVudC1jb3VudDog Mi45NCI+PEIgDQogICAgICAgICAgICBzdHlsZT0ibXNvLWJpZGktZm9udC13ZWlnaHQ6IG5vcm1h bCI+PEZPTlQgZmFjZT3LzszlPjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICAgICAgICBzdHlsZT0i Q09MT1I6IHJlZCI+MjAxMDwvU1BBTj48U1BBTiBzdHlsZT0iQ09MT1I6IHJlZCI+xOo8U1BBTiAN CiAgICAgICAgICAgIGxhbmc9RU4tVVM+PFNQQU4gc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVzIj4m bmJzcDsmbmJzcDsmbmJzcDsgDQogICAgICAgICAgICA8L1NQQU4+PC9TUEFOPtTCPFNQQU4gbGFu Zz1FTi1VUz48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0KICAgICAgICAgICAgPC9TUEFOPjwvU1BBTj7I1TxTUEFO IA0KICAgICAgICAgICAgbGFuZz1FTi1VUz48bzpwPjwvbzpwPjwvU1BBTj48L1NQQU4+PC9GT05U PjwvQj48L1A+PC9URD48L1RSPg0KICAgICAgICA8VFIgc3R5bGU9IkhFSUdIVDogODAuNzVwdDsg bXNvLXlmdGktaXJvdzogMTAiPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0iQk9S REVSLVJJR0hUOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgUEFERElORy1SSUdIVDogMGNtOyBCT1JE RVItVE9QOiAjZWNlOWQ4OyBQQURESU5HLUxFRlQ6IDBjbTsgUEFERElORy1CT1RUT006IDBjbTsg Qk9SREVSLUxFRlQ6IHdpbmRvd3RleHQgM3B0IGRvdWJsZTsgV0lEVEg6IDIwMi4zNXB0OyBQQURE SU5HLVRPUDogMGNtOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDFwdCBzb2xpZDsgSEVJR0hU OiA4MC43NXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3At YWx0OiBzb2xpZCB3aW5kb3d0ZXh0IC41cHQ7IG1zby1ib3JkZXItbGVmdC1hbHQ6IHRoaW4tdGhp Y2stc21hbGwtZ2FwIHdpbmRvd3RleHQgMy4wcHQ7IG1zby1ib3JkZXItYWx0OiBzb2xpZCB3aW5k b3d0ZXh0IC41cHQiIA0KICAgICAgICAgIHdpZHRoPTI3MCBjb2xTcGFuPTc+DQogICAgICAgICAg ICA8UCBjbGFzcz1Nc29Ob3JtYWwgDQogICAgICAgICAgICBzdHlsZT0iTUFSR0lOOiAwY20gMGNt IDBwdDsgTElORS1IRUlHSFQ6IDE1cHQ7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5Ij48 QiANCiAgICAgICAgICAgIHN0eWxlPSJtc28tYmlkaS1mb250LXdlaWdodDogbm9ybWFsIj48U1BB TiANCiAgICAgICAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEzLjVwdDsgQ09MT1I6IHJlZDsgRk9O VC1GQU1JTFk6ILfCy85fR0IyMzEyOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhh bnNpLWZvbnQtZmFtaWx5OiDLzszlIj60+rHtx6nD+6O6PFNQQU4gDQogICAgICAgICAgICBsYW5n PUVOLVVTPjxvOnA+PC9vOnA+PC9TUEFOPjwvU1BBTj48L0I+PC9QPg0KICAgICAgICAgICAgPFAg DQogICAgICAgICAgICBzdHlsZT0iTUFSR0lOOiA2cHQgMGNtIDBwdDsgTElORS1IRUlHSFQ6IDE4 cHQ7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28tcGFyYS1tYXJnaW4tdG9wOiAu NWdkOyBtc28tcGFyYS1tYXJnaW4tcmlnaHQ6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLWJvdHRvbTog LjAwMDFwdDsgbXNvLXBhcmEtbWFyZ2luLWxlZnQ6IDBjbSI+PEIgDQogICAgICAgICAgICBzdHls ZT0ibXNvLWJpZGktZm9udC13ZWlnaHQ6IG5vcm1hbCI+PFNQQU4gbGFuZz1FTi1VUyANCiAgICAg ICAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEzLjVwdDsgQ09MT1I6IHJlZDsgRk9OVC1GQU1JTFk6 ILfCy85fR0IyMzEyOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+MjAxMDwvU1BBTj48L0I+ PEIgDQogICAgICAgICAgICBzdHlsZT0ibXNvLWJpZGktZm9udC13ZWlnaHQ6IG5vcm1hbCI+PFNQ QU4gDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMy41cHQ7IENPTE9SOiByZWQ7IEZP TlQtRkFNSUxZOiC3wsvOX0dCMjMxMjsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQiPsTqPFNQ QU4gDQogICAgICAgICAgICBsYW5nPUVOLVVTPjxTUEFOIHN0eWxlPSJtc28tc3BhY2VydW46IHll cyI+Jm5ic3A7IA0KICAgICAgICAgICAgPC9TUEFOPjwvU1BBTj7UwjxTUEFOIGxhbmc9RU4tVVM+ PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPiZuYnNwOyZuYnNw OyA8L1NQQU4+PC9TUEFOPsjVPC9TUEFOPjwvQj48QiANCiAgICAgICAgICAgIHN0eWxlPSJtc28t YmlkaS1mb250LXdlaWdodDogbm9ybWFsIj48U1BBTiBsYW5nPUVOLVVTIA0KICAgICAgICAgICAg c3R5bGU9IkNPTE9SOiByZWQ7IEZPTlQtRkFNSUxZOiAnQXJpYWwgTmFycm93JyI+PG86cD48L286 cD48L1NQQU4+PC9CPjwvUD48L1REPg0KICAgICAgICAgIDxURCANCiAgICAgICAgICBzdHlsZT0i Qk9SREVSLVJJR0hUOiB3aW5kb3d0ZXh0IDNwdCBkb3VibGU7IFBBRERJTkctUklHSFQ6IDBjbTsg Qk9SREVSLVRPUDogI2VjZTlkODsgUEFERElORy1MRUZUOiAwY207IFBBRERJTkctQk9UVE9NOiAw Y207IEJPUkRFUi1MRUZUOiAjZWNlOWQ4OyBXSURUSDogMzEwLjY1cHQ7IFBBRERJTkctVE9QOiAw Y207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDgwLjc1cHQ7 IEJBQ0tHUk9VTkQtQ09MT1I6IHRyYW5zcGFyZW50OyBtc28tYm9yZGVyLXRvcC1hbHQ6IHNvbGlk IHdpbmRvd3RleHQgLjVwdDsgbXNvLWJvcmRlci1sZWZ0LWFsdDogc29saWQgd2luZG93dGV4dCAu NXB0OyBtc28tYm9yZGVyLXJpZ2h0LWFsdDogdGhpY2stdGhpbi1zbWFsbC1nYXAgd2luZG93dGV4 dCAzLjBwdDsgbXNvLWJvcmRlci1hbHQ6IHNvbGlkIHdpbmRvd3RleHQgLjVwdCIgDQogICAgICAg ICAgd2lkdGg9NDE0IGNvbFNwYW49Nz4NCiAgICAgICAgICAgIDxQIGNsYXNzPU1zb05vcm1hbCAN CiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU46IDZwdCAwY207IFRFWFQtQUxJR046IGNlbnRlcjsg bXNvLXBhcmEtbWFyZ2luLXRvcDogLjVnZDsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1z by1wYXJhLW1hcmdpbi1ib3R0b206IC41Z2Q7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAwY20iIA0K ICAgICAgICAgICAgYWxpZ249Y2VudGVyPjxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTMuNXB0OyBDT0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLUdCOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJyI+ufq8yrLGzvG53MDt0K274TwvU1BBTj48U1BBTiANCiAgICAgICAgICAgIGxh bmc9RU4tR0IgDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMy41cHQ7IENPTE9SOiBy ZWQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1HQjsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQi PjxvOnA+PC9vOnA+PC9TUEFOPjwvUD4NCiAgICAgICAgICAgIDxQIGNsYXNzPU1zb05vcm1hbCAN CiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU46IDZwdCAwY207IFRFWFQtQUxJR046IGNlbnRlcjsg bXNvLXBhcmEtbWFyZ2luLXRvcDogLjVnZDsgbXNvLXBhcmEtbWFyZ2luLXJpZ2h0OiAwY207IG1z by1wYXJhLW1hcmdpbi1ib3R0b206IC41Z2Q7IG1zby1wYXJhLW1hcmdpbi1sZWZ0OiAwY20iIA0K ICAgICAgICAgICAgYWxpZ249Y2VudGVyPjxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9IkZPTlQt U0laRTogMTMuNXB0OyBDT0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWFuc2ktbGFu Z3VhZ2U6IEVOLUdCOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJyI+1tC5+sXg0bXIz9ak18nRr834PC9TUEFOPjxTUEFOIA0KICAgICAgICAgICAg bGFuZz1FTi1HQiANCiAgICAgICAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEzLjVwdDsgQ09MT1I6 IHJlZDsgbXNvLWFuc2ktbGFuZ3VhZ2U6IEVOLUdCOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBw dCI+PG86cD48L286cD48L1NQQU4+PC9QPg0KICAgICAgICAgICAgPFAgY2xhc3M9TXNvTm9ybWFs IA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogNnB0IDBjbTsgVEVYVC1BTElHTjogY2VudGVy OyBtc28tcGFyYS1tYXJnaW4tdG9wOiAuNWdkOyBtc28tcGFyYS1tYXJnaW4tcmlnaHQ6IDBjbTsg bXNvLXBhcmEtbWFyZ2luLWJvdHRvbTogLjVnZDsgbXNvLXBhcmEtbWFyZ2luLWxlZnQ6IDBjbSIg DQogICAgICAgICAgICBhbGlnbj1jZW50ZXI+PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMy41cHQ7IENPTE9SOiByZWQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYW5zaS1s YW5ndWFnZTogRU4tR0I7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0OyBtc28taGFuc2ktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1l cyBOZXcgUm9tYW4nIj6xsb6p0MLI8czatO/G89K1udzA7bnLzsrT0M/euavLvjwvU1BBTj48U1BB TiANCiAgICAgICAgICAgIGxhbmc9RU4tR0IgDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMy41cHQ7IENPTE9SOiByZWQ7IG1zby1hbnNpLWxhbmd1YWdlOiBFTi1HQjsgbXNvLWJpZGkt Zm9udC1zaXplOiAxMC4wcHQiPjxvOnA+PC9vOnA+PC9TUEFOPjwvUD48L1REPjwvVFI+DQogICAg ICAgIDxUUiBzdHlsZT0iSEVJR0hUOiA4OC42cHQ7IG1zby15ZnRpLWlyb3c6IDExIj4NCiAgICAg ICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJPUkRFUi1SSUdIVDogd2luZG93dGV4dCAzcHQg ZG91YmxlOyBQQURESU5HLVJJR0hUOiAwY207IEJPUkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJTkct TEVGVDogMGNtOyBQQURESU5HLUJPVFRPTTogMGNtOyBCT1JERVItTEVGVDogd2luZG93dGV4dCAz cHQgZG91YmxlOyBXSURUSDogNTEzcHQ7IFBBRERJTkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006 IHdpbmRvd3RleHQgMXB0IHNvbGlkOyBIRUlHSFQ6IDg4LjZwdDsgQkFDS0dST1VORC1DT0xPUjog dHJhbnNwYXJlbnQ7IG1zby1ib3JkZXItdG9wLWFsdDogc29saWQgLjVwdDsgbXNvLWJvcmRlci1s ZWZ0LWFsdDogdGhpbi10aGljay1zbWFsbC1nYXAgMy4wcHQ7IG1zby1ib3JkZXItYm90dG9tLWFs dDogc29saWQgLjVwdDsgbXNvLWJvcmRlci1yaWdodC1hbHQ6IHRoaWNrLXRoaW4tc21hbGwtZ2Fw IDMuMHB0OyBtc28tYm9yZGVyLWNvbG9yLWFsdDogd2luZG93dGV4dCIgDQogICAgICAgICAgd2lk dGg9Njg0IGNvbFNwYW49MTQ+DQogICAgICAgICAgICA8UCBjbGFzcz1Nc29Ob3JtYWwgDQogICAg ICAgICAgICBzdHlsZT0iTUFSR0lOOiA2cHQgMGNtIDBwdDsgVEVYVC1JTkRFTlQ6IDE3LjlwdDsg TElORS1IRUlHSFQ6IDE4cHQ7IG1zby1saW5lLWhlaWdodC1ydWxlOiBleGFjdGx5OyBtc28tcGFy YS1tYXJnaW4tdG9wOiAuNWdkOyBtc28tY2hhci1pbmRlbnQtY291bnQ6IDEuNDkiPjxTUEFOIA0K ICAgICAgICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6IHJlZDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1iaWRpLWZvbnQtc2l6ZTogMTAuMHB0Ij6747/ut73KvaO6yM/WpLfRsajD +7rzyP3I1cTatee749bB1ri2qNXKu6eyorDRu+O/7sa+1qS0q9Xm1sGxsb6pyM/WpL+8xsDW0NDE PC9TUEFOPjxTUEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1VUyANCiAgICAgICAgICAgIHN0eWxl PSJGT05ULVNJWkU6IDEzLjVwdDsgQ09MT1I6IHJlZDsgRk9OVC1GQU1JTFk6ILfCy85fR0IyMzEy OyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdDsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiDLzszl Ij48bzpwPjwvbzpwPjwvU1BBTj48L1A+DQogICAgICAgICAgICA8UCBjbGFzcz1Nc29Ob3JtYWwg DQogICAgICAgICAgICBzdHlsZT0iTUFSR0lOOiA2cHQgMGNtIDBwdDsgVEVYVC1JTkRFTlQ6IDE3 LjlwdDsgbXNvLXBhcmEtbWFyZ2luLXRvcDogLjVnZDsgbXNvLWNoYXItaW5kZW50LWNvdW50OiAx LjQ5Ij48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiBy ZWQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28tYmlkaS1mb250LXNpemU6IDEwLjBwdCI+u6c8U1BB TiANCiAgICAgICAgICAgIGxhbmc9RU4tVVM+PFNQQU4gc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVz Ij4mbmJzcDsmbmJzcDsmbmJzcDsgDQogICAgICAgICAgICA8L1NQQU4+PC9TUEFOPsP7o7qxsb6p 0MLI8czatO/G89K1udzA7bnLzsrT0M/euavLvjxTUEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1V Uz48bzpwPjwvbzpwPjwvU1BBTj48L1NQQU4+PC9QPg0KICAgICAgICAgICAgPFAgY2xhc3M9TXNv Tm9ybWFsIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogNnB0IDBjbSAwcHQ7IFRFWFQtSU5E RU5UOiAxNy45cHQ7IG1zby1wYXJhLW1hcmdpbi10b3A6IC41Z2Q7IG1zby1jaGFyLWluZGVudC1j b3VudDogMS40OSI+PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBD T0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1zaXplOiAxMC4wcHQi Pr+qIA0KICAgICAgICAgICAgu6cg0NCjutbQufq5pMnM0vjQ0MPc1Ma31tDQPFNQQU4gbGFuZz1F Ti1VUz48bzpwPjwvbzpwPjwvU1BBTj48L1NQQU4+PC9QPg0KICAgICAgICAgICAgPFAgY2xhc3M9 TXNvTm9ybWFsIA0KICAgICAgICAgICAgc3R5bGU9Ik1BUkdJTjogNnB0IDMuNTVwdCA2cHQgMGNt OyBURVhULUlOREVOVDogMTcuOXB0OyBtc28tcGFyYS1tYXJnaW4tdG9wOiAuNWdkOyBtc28tcGFy YS1tYXJnaW4tcmlnaHQ6IC4zNGdkOyBtc28tcGFyYS1tYXJnaW4tYm90dG9tOiAuNWdkOyBtc28t cGFyYS1tYXJnaW4tbGVmdDogMGNtOyBtc28tY2hhci1pbmRlbnQtY291bnQ6IDEuNDk7IG1zby1s aW5lLWhlaWdodC1hbHQ6IDBwdCI+PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpF OiAxMnB0OyBDT0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWJpZGktZm9udC1zaXpl OiAxMC4wcHQiPtXLPFNQQU4gDQogICAgICAgICAgICBsYW5nPUVOLVVTPjxTUEFOIHN0eWxlPSJt c28tc3BhY2VydW46IHllcyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0KICAgICAgICAgICAgPC9TUEFO PjwvU1BBTj66xaO6PC9TUEFOPjxTUEFOIGxhbmc9RU4tVVMgDQogICAgICAgICAgICBzdHlsZT0i Rk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkOyBGT05ULUZBTUlMWTogQXJpYWw7IG1zby1iaWRp LWZvbnQtc2l6ZTogMTAuMHB0Ij4wMjAwMDxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9Im1zby1z cGFjZXJ1bjogeWVzIj4mbmJzcDsgPC9TUEFOPjEyMjE8U1BBTiANCiAgICAgICAgICAgIHN0eWxl PSJtc28tc3BhY2VydW46IHllcyI+Jm5ic3A7IDwvU1BBTj45MDA2ODxTUEFOIA0KICAgICAgICAg ICAgc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVzIj4mbmJzcDsgPC9TUEFOPjg0NzIxPC9TUEFOPjxC IA0KICAgICAgICAgICAgc3R5bGU9Im1zby1iaWRpLWZvbnQtd2VpZ2h0OiBub3JtYWwiPjxTUEFO IGxhbmc9RU4tVVMgDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxNnB0OyBDT0xPUjog cmVkOyBGT05ULUZBTUlMWTogy87M5TsgTEVUVEVSLVNQQUNJTkc6IDAuNXB0OyBtc28tYmlkaS1m b250LXNpemU6IDEwLjBwdCI+PG86cD48L286cD48L1NQQU4+PC9CPjwvUD48L1REPjwvVFI+DQog ICAgICAgIDxUUiBzdHlsZT0iSEVJR0hUOiAyOS41NXB0OyBtc28teWZ0aS1pcm93OiAxMjsgbXNv LXlmdGktbGFzdHJvdzogeWVzIj4NCiAgICAgICAgICA8VEQgDQogICAgICAgICAgc3R5bGU9IkJP UkRFUi1SSUdIVDogd2luZG93dGV4dCAzcHQgZG91YmxlOyBQQURESU5HLVJJR0hUOiAwY207IEJP UkRFUi1UT1A6ICNlY2U5ZDg7IFBBRERJTkctTEVGVDogMGNtOyBQQURESU5HLUJPVFRPTTogMGNt OyBCT1JERVItTEVGVDogd2luZG93dGV4dCAzcHQgZG91YmxlOyBXSURUSDogNTEzcHQ7IFBBRERJ TkctVE9QOiAwY207IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgM3B0IGRvdWJsZTsgSEVJR0hU OiAyOS41NXB0OyBCQUNLR1JPVU5ELUNPTE9SOiB0cmFuc3BhcmVudDsgbXNvLWJvcmRlci10b3At YWx0OiBzb2xpZCAuNXB0OyBtc28tYm9yZGVyLWxlZnQtYWx0OiB0aGluLXRoaWNrLXNtYWxsLWdh cCAzLjBwdDsgbXNvLWJvcmRlci1ib3R0b20tYWx0OiB0aGljay10aGluLXNtYWxsLWdhcCAzLjBw dDsgbXNvLWJvcmRlci1yaWdodC1hbHQ6IHRoaWNrLXRoaW4tc21hbGwtZ2FwIDMuMHB0OyBtc28t Ym9yZGVyLWNvbG9yLWFsdDogd2luZG93dGV4dCIgDQogICAgICAgICAgd2lkdGg9Njg0IGNvbFNw YW49MTQ+DQogICAgICAgICAgICA8UCBjbGFzcz1Nc29Ob3JtYWwgDQogICAgICAgICAgICBzdHls ZT0iTUFSR0lOOiAxMnB0IDBjbSA2cHQ7IG1zby1wYXJhLW1hcmdpbi10b3A6IDEuMGdkOyBtc28t cGFyYS1tYXJnaW4tcmlnaHQ6IDBjbTsgbXNvLXBhcmEtbWFyZ2luLWJvdHRvbTogLjVnZDsgbXNv LXBhcmEtbWFyZ2luLWxlZnQ6IDBjbSI+PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1T SVpFOiAxMnB0OyBDT0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWhhbnNpLWZvbnQt ZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMg TmV3IFJvbWFuJyI+warPtcjLo7o8L1NQQU4+PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkIj48Rk9OVCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPiAN CiAgICAgICAgICAgIDwvRk9OVD48L1NQQU4+PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0iRk9O VC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkOyBGT05ULUZBTUlMWTogy87M5TsgbXNvLWhhbnNpLWZv bnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGlt ZXMgTmV3IFJvbWFuJyI+1cU8L1NQQU4+PFNQQU4gDQogICAgICAgICAgICBsYW5nPUVOLVVTIHN0 eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiByZWQiPjxTUEFOIA0KICAgICAgICAgICAgc3R5 bGU9Im1zby1zcGFjZXJ1bjogeWVzIj48Rk9OVCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPiZuYnNw OyANCiAgICAgICAgICAgIDwvRk9OVD48L1NQQU4+PC9TUEFOPjxTUEFOIA0KICAgICAgICAgICAg c3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6IHJlZDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1z by1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2NpaS1mb250LWZh bWlseTogJ1RpbWVzIE5ldyBSb21hbiciPsX0PC9TUEFOPjxTUEFOIA0KICAgICAgICAgICAgbGFu Zz1FTi1VUyBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkIj48U1BBTiANCiAgICAg ICAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+PEZPTlQgDQogICAgICAgICAgICBmYWNl PSJUaW1lcyBOZXcgUm9tYW4iPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyANCiAgICAgICAgICAgIDwvRk9OVD48L1NQQU4+PC9TUEFOPjxTUEFOIA0KICAg ICAgICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6IHJlZDsgRk9OVC1GQU1JTFk6 IMvOzOU7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1hc2Np aS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPrXnPC9TUEFOPjxTUEFOIA0KICAgICAg ICAgICAgbGFuZz1FTi1VUyBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkIj48U1BB TiANCiAgICAgICAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+PEZPTlQgZmFjZT0iVGlt ZXMgTmV3IFJvbWFuIj4mbmJzcDsgDQogICAgICAgICAgICA8L0ZPTlQ+PC9TUEFOPjwvU1BBTj48 U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiByZWQ7IEZP TlQtRkFNSUxZOiDLzszlOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n OyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj67sKO6PC9TUEFOPjxT UEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1VUyBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xP UjogcmVkIj48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+MDEwLTg2 MjEwMzk3PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyANCiAgICAgICAgICAgIDwvU1BBTj48L0ZPTlQ+PC9T UEFOPjxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6IHJl ZDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBS b21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPrSrPC9TUEFO PjxTUEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1VUyBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBD T0xPUjogcmVkIj48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+ PEZPTlQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4mbmJzcDsgDQogICAgICAgICAgICA8L0ZPTlQ+ PC9TUEFOPjwvU1BBTj48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7 IENPTE9SOiByZWQ7IEZPTlQtRkFNSUxZOiDLzszlOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdU aW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n Ij7V5qO6PC9TUEFOPjxTUEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1VUyBzdHlsZT0iRk9OVC1T SVpFOiAxMnB0OyBDT0xPUjogcmVkIj48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9IlRpbWVzIE5l dyBSb21hbiI+MDEwLTgzNjU1NTQ2PG86cD48L286cD48L0ZPTlQ+PC9TUEFOPjwvUD4NCiAgICAg ICAgICAgIDxQIGNsYXNzPU1zb05vcm1hbCANCiAgICAgICAgICAgIHN0eWxlPSJNQVJHSU46IDBj bSAwY20gNnB0OyBtc28tcGFyYS1tYXJnaW4tYm90dG9tOiAuNWdkIj48U1BBTiANCiAgICAgICAg ICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiByZWQ7IEZPTlQtRkFNSUxZOiDLzszl OyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBtc28tYXNjaWktZm9u dC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj7K1jwvU1BBTj48U1BBTiANCiAgICAgICAgICAg IGxhbmc9RU4tVVMgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6IHJlZCI+PFNQQU4gDQog ICAgICAgICAgICBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPjxGT05UIGZhY2U9IlRpbWVzIE5l dyBSb21hbiI+Jm5ic3A7IA0KICAgICAgICAgICAgPC9GT05UPjwvU1BBTj48L1NQQU4+PFNQQU4g DQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkOyBGT05ULUZB TUlMWTogy87M5TsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgbXNv LWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+u/qjujwvU1BBTj48U1BBTiAN CiAgICAgICAgICAgIGxhbmc9RU4tVVMgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6IHJl ZCI+PEZPTlQgDQogICAgICAgICAgICBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjEzMjIwMTU1MDA5 PFNQQU4gDQogICAgICAgICAgICBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPiZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyANCiAgICAgICAgICAgIDwvU1BBTj48L0ZPTlQ+PC9TUEFOPjxTUEFOIA0K ICAgICAgICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6IHJlZDsgRk9OVC1GQU1J TFk6IMvOzOU7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IG1zby1h c2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPtPKPC9TUEFOPjxTUEFOIA0KICAg ICAgICAgICAgbGFuZz1FTi1VUyBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkIj48 U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJtc28tc3BhY2VydW46IHllcyI+PEZPTlQgZmFjZT0i VGltZXMgTmV3IFJvbWFuIj4mbmJzcDsgDQogICAgICAgICAgICA8L0ZPTlQ+PC9TUEFOPjwvU1BB Tj48U1BBTiANCiAgICAgICAgICAgIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiByZWQ7 IEZPTlQtRkFNSUxZOiDLzszlOyBtc28taGFuc2ktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9t YW4nOyBtc28tYXNjaWktZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nIj7P5KO6PC9TUEFO PjxTUEFOIA0KICAgICAgICAgICAgbGFuZz1FTi1VUyBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBD T0xPUjogcmVkIj48QSANCiAgICAgICAgICAgIGhyZWY9Im1haWx0bzppZm0tdXNhQDE2My5jb20i PjxTUEFOIHN0eWxlPSJDT0xPUjogcmVkIj48Rk9OVCANCiAgICAgICAgICAgIGZhY2U9IlRpbWVz IE5ldyBSb21hbiI+aWZtLXVzYUAxNjMuY29tPC9GT05UPjwvU1BBTj48L0E+PFNQQU4gDQogICAg ICAgICAgICBzdHlsZT0ibXNvLXNwYWNlcnVuOiB5ZXMiPjxGT05UIGZhY2U9IlRpbWVzIE5ldyBS b21hbiI+Jm5ic3A7Jm5ic3A7IA0KICAgICAgICAgICAgPC9GT05UPjwvU1BBTj48L1NQQU4+PFNQ QU4gDQogICAgICAgICAgICBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0OyBDT0xPUjogcmVkOyBGT05U LUZBTUlMWTogy87M5TsgbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsg bXNvLWFzY2lpLWZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyI+zfg8L1NQQU4+PFNQQU4g DQogICAgICAgICAgICBsYW5nPUVOLVVTIHN0eWxlPSJGT05ULVNJWkU6IDEycHQ7IENPTE9SOiBy ZWQiPjxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9Im1zby1zcGFjZXJ1bjogeWVzIj48Rk9OVCBm YWNlPSJUaW1lcyBOZXcgUm9tYW4iPiZuYnNwOyANCiAgICAgICAgICAgIDwvRk9OVD48L1NQQU4+ PC9TUEFOPjxTUEFOIA0KICAgICAgICAgICAgc3R5bGU9IkZPTlQtU0laRTogMTJwdDsgQ09MT1I6 IHJlZDsgRk9OVC1GQU1JTFk6IMvOzOU7IG1zby1oYW5zaS1mb250LWZhbWlseTogJ1RpbWVzIE5l dyBSb21hbic7IG1zby1hc2NpaS1mb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbiciPta3o7o8 L1NQQU4+PFNQQU4gDQogICAgICAgICAgICBsYW5nPUVOLVVTIHN0eWxlPSJGT05ULVNJWkU6IDEy cHQ7IENPTE9SOiByZWQiPjxBIA0KICAgICAgICAgICAgaHJlZj0iaHR0cDovL3d3dy5pZm0ub3Jn LmNuIj48U1BBTiBzdHlsZT0iQ09MT1I6IHJlZCI+PEZPTlQgDQogICAgICAgICAgICBmYWNlPSJU aW1lcyBOZXcgUm9tYW4iPmh0dHA6Ly93d3cuaWZtLm9yZy5jbi88L0ZPTlQ+PC9TUEFOPjwvQT48 L1NQQU4+PFNQQU4gDQogICAgICAgICAgICBsYW5nPUVOLVVTIA0KICAgICAgc3R5bGU9IkNPTE9S OiByZWQiPjxvOnA+PC9vOnA+PC9TUEFOPjwvUD48L1REPjwvVFI+PC9UQk9EWT48L1RBQkxFPjwv RElWPjxCUj48Rk9OVCANCiAgICAgIGNvbG9yPSNmMDAwMDA+tMux7dfU1sa78ri006G91NPQ0Kc8 L0ZPTlQ+PC9URD4NCiAgICA8VEQgd2lkdGg9MzI+Jm5ic3A7PC9URD48L1RSPg0KICA8VFI+DQog ICAgPFREIHN0eWxlPSJCQUNLR1JPVU5ELVBPU0lUSU9OOiBsZWZ0IGJvdHRvbTsgQkFDS0dST1VO RC1SRVBFQVQ6IG5vLXJlcGVhdCIgDQogICAgYmFja2dyb3VuZD1odHRwOi8vbWltZy4xMjYubmV0 L3AvaW1hZ2VzL2xldHRlci8yMDA3MDkvd3dmNl9iZ19jcHkuZ2lmIA0KICAgIGNvbFNwYW49MyBo ZWlnaHQ9NDA+Jm5ic3A7PEZPTlQgZmFjZT3BpcrpIA0KICAgICAgY29sb3I9I2YwMDAwMD65+rzK ssbO8bncwO3QrbvhssbO8bncwO3KprDsuavK0jwvRk9OVD48L1REPjwvVFI+PC9UQk9EWT48L1RB QkxFPjwvRk9OVD48L0RJVj48L0JPRFk+PC9IVE1MPg0K ------=_NextPart_001_0664_017E57A5.16FCF080-- ------=_NextPart_000_038B_017E57A5.16FCF080 Content-Type: audio/x-ms-wma; name="=?gb2312?B?ufq8yrLGzvG53MDtyqYud21h?=" Content-Transfer-Encoding: base64 Content-ID: <00026C62A12E_061F3C45_04143EF7> MCaydY5mzxGm2QCqAGLObFYTAAAAAAAABgAAAAECodyrjEepzxGO5ADADCBTZWgAAAAAAAAAFFmI cQceQUWdgTeDiBst7d6zCAAAAAAAYLD/lX9eygG8AAAAAAAAACCma0YAAAAAUArjRAAAAAC4CwAA AAAAAAIAAAC8CwAAvAsAAB+fAAC1A79fLqnPEY7jAMAMIFNlQBAAAAAAAAAR0tOruqnPEY7mAMAM IFNlBgASEAAAqUZDfODv/EuyKTk+3kFchTQAAAAAAAAAAgAMegBoAC0AYwBuAAAADGUAbgAtAHUA cwAAAF2L8SaERexHn18OZR8EUskaAAAAAAAAAAIB6sv4xa9bd0iEZ6qMRPpMyvwAAAAAAAAABAAA AAEADAACAAIAAABJAHMAVgBCAFIAAAABAAAAAQA0AAAABgAAAEQAZQB2AGkAYwBlAEMAbwBuAGYA bwByAG0AYQBuAGMAZQBUAGUAbQBwAGwAYQB0AGUAAABMADIAAAAAAAEALgADAAQAAABXAE0ALwBX AE0AQQBEAFIAQwBQAGUAYQBrAFIAZQBmAGUAcgBlAG4AYwBlAAAA/38AAAAAAQA0AAMABAAAAFcA TQAvAFcATQBBAEQAUgBDAEEAdgBlAHIAYQBnAGUAUgBlAGYAZQByAGUAbgBjAGUAAADsGQAAdNQG GN/KCUWkupqry5aq6E4OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAADLpeYUcsYyQ4OZqWlSBltaWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqJcAAA8O AAAAAAAAQJwAAM0FAAAAAAAAnQsAAAIAAAABAAEAyi9bAAAAAAAAAAAA3yni1to10RGQNACgyQNJ viIAAAAAAAAA6AMAAAEAAQADAECk0NIH49IRl/AAoMleqFBEAQAAAAAAAAQAHABXAE0ARgBTAEQA SwBWAGUAcgBzAGkAbwBuAAAAAAAcADEAMAAuADAAMAAuADAAMAAuADQAMAA3ADIAAAAaAFcATQBG AFMARABLAE4AZQBlAGQAZQBkAAAAAAAWADAALgAwAC4AMAAuADAAMAAwADAAAAAMAEkAcwBWAEIA UgAAAAIABAABAAAAKABBAFMARgBMAGUAYQBrAHkAQgB1AGMAawBlAHQAUABhAGkAcgBzAAAAAQBy AAAAwF0AAEkaAQAwdQAA/4cAAMivAADSAAAAkOIAAFoAAAAAwgEAAAAAAICpAwAAAAAAMFcFAAAA AAAgoQcAAAAAAJAjCwAAAAAAQEIPAAAAAADAXBUAAAAAACALIAAAAAAAQEtMAAAAAACAlpgAAAAA AEBS0YYdMdARo6QAoMkDSPa6AAAAAAAAAEFS0YYdMdARo6QAoMkDSPYBAAAAAgAYAFcAaQBuAGQA bwB3AHMAIABNAGUAZABpAGEAIABBAHUAZABpAG8AIAA5AC4AMQAAACoAVgBCAFIAIABRAHUAYQBs AGkAdAB5ACAAMgA1ACwAIAA0ADQAIABrAEgAegAsACAAcwB0AGUAcgBlAG8AIAAxAC0AcABhAHMA cwAgAFYAQgBSAAAAAgBhAZEH3Le3qc8RjuYAwAwgU2VyAAAAAAAAAECeafhNW88RqP0AgF9cRCtQ zcO/j2HPEYuyAKoAtOIgAAAAAAAAAAAcAAAACAAAAAEAAO4SAGEBAgBErAAApx8AAJ0LEAAKAACI AAAPAHUuAAABnQudCwEAAM51+HuNRtERjYIAYJfJorIgAAAAAAAAAAEAAQAfnwAANiaydY5mzxGm 2QCqAGLObEKeCAAAAAAAFFmIcQceQUWdgTeDiBst7bwAAAAAAAAAAQGCAAAIXQQAAAAAWwIBAQAA AAAInQsAALgLAAAPAAAHf/eUgEQkDO/0+8pAIhIGd/o9Yg8v6EECREGd/p9CCBIiDO/0EpS60iDJ hUNQ1rGqQWXzZY34uOx7GZ9obvYbdiOeu3gIBD5yXgIBEUl7RwCY1Y0/4hKiEIiDO/0EGGEtOrI1 8XuqRj8BAJAXgIBHKeGn/EQIQiIM7/RgESgbgqjdfV3M+AgEsjwEBCLvDUviEqIQiIM7/QMKqu1d qrIfAQCfI8NO+IgQhEQZ3+jWMviNDfluII8BAJZXgIBEVDw1H4hBCERBnf6BoZENcHgIBQZeGm/V RBCERBnf6A4cEplszoqqiIDbOPe/AQCQH/JXgIBEUQ8NN+hKiEIiDO/0EAggAhrCpo7JZrlsEwvP gIBK08BAIirw0/4iBCERBnf6BiNgHpk6wIGI3rwEAkBfyV4CARFC8NO+ISohCIgzv9BJJMJ0bGlF kKBK7wEAlbeAgIRZ4ah8QghCIgzv9NkMQWGL1L3e2fAQCfKXhpv0IIQiIM7/TQddRmwrobcEwZT1 u2GjwEAibYKHwEAieF4ab8RFRCERBnf6EVAZBJjbTGI+8wSE43D98BAJKI8BAQnzwAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAACF0EWwIAAFwCAQIAAAAACJ0LAAATDgAAHQAABp/x YIIREGd/oho+Trnk4MN8BAJY3gIBEVeOn/FiohCIgzv9EN6Hqkltb+AgEpbwEAiJPPS/xolIQhIG c/pJN7hHgIBHzemfChQIQCa3nx3p2BDt3EMtLcYTdxsE+uh6In3rYrnhX15uSK3+eX15uSK3+eZJ fnOnjOtIZIhiueZ+fv+93Irf55+fv+93Irf550mvY3p9U2nc056spNibSHb8f39/vckVv889/f73 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 ------=_NextPart_000_038B_017E57A5.16FCF080-- From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:39:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBdd8A008886 for ; Sun, 17 Jan 2010 05:39:40 -0600 X-ASG-Debug-ID: 1263728437-1d7a02860000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F15AF18C2F for ; Sun, 17 Jan 2010 03:40:37 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ntBLSeOXkdv57zQh for ; Sun, 17 Jan 2010 03:40:37 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTUi-0002bl-Fl; Sun, 17 Jan 2010 11:40:36 +0000 Date: Sun, 17 Jan 2010 06:40:36 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] mkfs: get size of device properly Subject: Re: [PATCH] mkfs: get size of device properly Message-ID: <20100117114036.GA7813@infradead.org> References: <4B50F2F0.4050909@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B50F2F0.4050909@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263728438 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 15, 2010 at 04:57:52PM -0600, Eric Sandeen wrote: > Ok, one more. > > I've been having too many problems w/ xfstests today to have run > the last patch through xfstests but should have at least run > 032. :( > > Anyway, last change wasn't valid to test the size of a device > node; total brain fart. After this I'm testing the hell out > of the next patch I send, I promise! > > -------- > > Test device node size properly in check_overwrite, st_size > is only valid for regular files. The patch looks correct to me, but it also means we now open the device twice in check_overwrite. We might aswell use it just once and keep the fd for the blkid probe. Anyway, probably better to put this one in ASAP, so: Reviewed-by: Christoph Hellwig Any chance you could create a xfstests regression test for this? From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:40:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBeXiQ008960 for ; Sun, 17 Jan 2010 05:40:33 -0600 X-ASG-Debug-ID: 1263728492-517602170000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6AF741C57647 for ; Sun, 17 Jan 2010 03:41:32 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id nq6mUdmCqDrAu75v for ; Sun, 17 Jan 2010 03:41:32 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTVb-0002ip-Js; Sun, 17 Jan 2010 11:41:31 +0000 Date: Sun, 17 Jan 2010 06:41:31 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests 073: unmount source image in cleanup Subject: Re: [PATCH] xfstests 073: unmount source image in cleanup Message-ID: <20100117114131.GB7813@infradead.org> References: <4B510B41.3070904@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B510B41.3070904@redhat.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263728492 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 15, 2010 at 06:41:37PM -0600, Eric Sandeen wrote: > Test 073 is currently failing w/ xfs_repair problems, and when > it does, the whole series stops because the test dir still has > a loopback mounted filesystem on it, and it can't unmount. > > Fix that. > > Signed-off-by: Eric Sandeen > --- > > diff --git a/073 b/073 > index 0ef9287..756c1c8 100755 > --- a/073 > +++ b/073 > @@ -44,6 +44,7 @@ _cleanup() > umount $SCRATCH_MNT 2>/dev/null > umount -d $imgs.loop 2>/dev/null > [ -d $imgs.loop ] && rmdir $imgs.loop > + umount -d $imgs.source_dir 2>/dev/null > [ -d $imgs.source_dir ] && rm -rf $imgs.source_dir > rm -f $imgs.* $tmp.* /var/tmp/xfs_copy.log.* Yes, we should always unmount everything in the cleanup handler. Reviewed-by: Christoph Hellwig From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:42:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBgkTX009082 for ; Sun, 17 Jan 2010 05:42:46 -0600 X-ASG-Debug-ID: 1263728624-1d7a029f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 09C26F18C21 for ; Sun, 17 Jan 2010 03:43:44 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id IdPVypJdbdvHVRyK for ; Sun, 17 Jan 2010 03:43:44 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTXk-0002rE-Fd; Sun, 17 Jan 2010 11:43:44 +0000 Date: Sun, 17 Jan 2010 06:43:44 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests 131: kill locktest process in cleanup & better error msgs Subject: Re: [PATCH] xfstests 131: kill locktest process in cleanup & better error msgs Message-ID: <20100117114344.GC7813@infradead.org> References: <4B51220F.7020703@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B51220F.7020703@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263728625 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 15, 2010 at 08:18:55PM -0600, Eric Sandeen wrote: > I occasionally get failures in 131 like: > > gethostbyname: Success > > 1) perror is the wrong thing for gethostbyname errors, so this > is confusing Indeed. > 2) the locktest thread doesn't get killed, so the fs > is busy and the next test fails when it can't unmount Yeah, this was always causing problems for me when running xfstests on a system without networking for some unknown reason. > --- a/src/locktest.c > +++ b/src/locktest.c > @@ -44,6 +44,8 @@ > #define PLATFORM_CLEANUP() /*no-op*/ > #define LL "ll" > > +extern int h_errno; > + > #define inet_aton(STRING, INADDRP) \ > (((INADDRP)->s_addr = inet_addr(STRING)) == -1 ? 0 : 1) > > @@ -937,7 +939,10 @@ main(int argc, char *argv[]) > struct hostent *servInfo; > > if ((servInfo = gethostbyname(host)) == NULL) { > - perror("gethostbyname"); > + printf("Couldn't get hostbyname for %s", host); > + if (h_errno == HOST_NOT_FOUND) > + printf(": host not found"); > + printf("\n"); Might be worth using herror or hsterror, although the manpage marks them as obsolete.. Anyway, good enough to put in, so: Reviewed-by: Christoph Hellwig From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:46:03 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBk3Q5009287 for ; Sun, 17 Jan 2010 05:46:03 -0600 X-ASG-Debug-ID: 1263728821-233901c40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CCCEFF18C44 for ; Sun, 17 Jan 2010 03:47:01 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id o01YpHHxmtGaD9UC for ; Sun, 17 Jan 2010 03:47:01 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTas-0003dO-HV; Sun, 17 Jan 2010 11:46:58 +0000 Date: Sun, 17 Jan 2010 06:46:58 -0500 From: Christoph Hellwig To: Paul Chavent Cc: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: usage of xfsctrl for embedded development / uuid question Subject: Re: usage of xfsctrl for embedded development / uuid question Message-ID: <20100117114658.GA10994@infradead.org> References: <5340782.170001263558076439.JavaMail.www@wsfrf1111> <20100115124617.GJ28498@discord.disaster> <4B50D9F9.1010809@fnac.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B50D9F9.1010809@fnac.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263728821 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 15, 2010 at 10:11:21PM +0100, Paul Chavent wrote: >> It's a wrapper around ioctl(). You can call ioctl() directly >> on not need xfsctl at all... > > Right, but i found nowhere the structures and the definition of XFS_IOC_* in the headers "exported" by the kernel. > > So i have two solutions : > (1) i add -I/path_to_the_kernel_sources/fs to the cflags of my project. > (2) i install those headers in my sysroot. > > I thought that those solutions where worst that only install headers from the xfsprogs package. You can just install the xfsprogs headers only by doing it yourself or filtering the installed files in your package manager. I'm not sure it's really worth it to support this special environment in the xfsprogs build system. > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:50:21 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBoL6r009563 for ; Sun, 17 Jan 2010 05:50:21 -0600 X-ASG-Debug-ID: 1263729080-6c5802610000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9474D16DEA0 for ; Sun, 17 Jan 2010 03:51:20 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id g5xAF1N9QXGgJk8N for ; Sun, 17 Jan 2010 03:51:20 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTf5-0004GB-Vd; Sun, 17 Jan 2010 11:51:19 +0000 Date: Sun, 17 Jan 2010 06:51:19 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/9] xfsprogs: fix trivial warnings in xfs_fsr Subject: Re: [PATCH 6/9] xfsprogs: fix trivial warnings in xfs_fsr Message-ID: <20100117115119.GB10994@infradead.org> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> <1263463752-5052-7-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263463752-5052-7-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263729080 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:09:09PM +1100, Dave Chinner wrote: > GCC complains about assignments between (unsigned long long *) > and (__u64 *) pointers. Just add a cast to shut it up. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:50:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBofg3009593 for ; Sun, 17 Jan 2010 05:50:42 -0600 X-ASG-Debug-ID: 1263729100-273701b80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CD0D0F18D3B for ; Sun, 17 Jan 2010 03:51:40 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id htYmtPZEeYUOneFP for ; Sun, 17 Jan 2010 03:51:40 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTfQ-0004HD-9s; Sun, 17 Jan 2010 11:51:40 +0000 Date: Sun, 17 Jan 2010 06:51:40 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/9] xfsprogs: fix print format warnings in xfs_io Subject: Re: [PATCH 7/9] xfsprogs: fix print format warnings in xfs_io Message-ID: <20100117115140.GC10994@infradead.org> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> <1263463752-5052-8-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263463752-5052-8-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263729100 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:09:10PM +1100, Dave Chinner wrote: > Signed-off-by: Dave Chinner > --- > io/madvise.c | 2 +- > io/mincore.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) Looks good, Reviewed-by: Christoph Hellwig From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:51:14 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBpEA3009642 for ; Sun, 17 Jan 2010 05:51:14 -0600 X-ASG-Debug-ID: 1263729133-55ea01d90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 42B481C57662 for ; Sun, 17 Jan 2010 03:52:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 8kZmYcWDYMuxoqra for ; Sun, 17 Jan 2010 03:52:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTfw-0004It-UV; Sun, 17 Jan 2010 11:52:12 +0000 Date: Sun, 17 Jan 2010 06:52:12 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/9] xfsprogs: fix missing error check in xfs_rtfree_range in libxfs Subject: Re: [PATCH 3/9] xfsprogs: fix missing error check in xfs_rtfree_range in libxfs Message-ID: <20100117115212.GD10994@infradead.org> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> <1263463752-5052-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263463752-5052-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263729133 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:09:06PM +1100, Dave Chinner wrote: > When xfs_rtfind_forw() returns an error, the block is returned > uninitialised. xfs_rtfree_range() is not checking the error return, > so could be using an uninitialised block number for modifying bitmap > summary info. Looks good, (actually a merge of the kernel side fix that just went in) Reviewed-by: Christoph Hellwig From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:52:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBqbtd009746 for ; Sun, 17 Jan 2010 05:52:38 -0600 X-ASG-Debug-ID: 1263729216-5184025a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E83311C57685 for ; Sun, 17 Jan 2010 03:53:36 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id dWDGfjv2Fpn7ybyn for ; Sun, 17 Jan 2010 03:53:36 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWThI-0004NA-Jl; Sun, 17 Jan 2010 11:53:36 +0000 Date: Sun, 17 Jan 2010 06:53:36 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/9] xfsprogs: Fix miscellaneous warnings in libxfs Subject: Re: [PATCH 2/9] xfsprogs: Fix miscellaneous warnings in libxfs Message-ID: <20100117115336.GE10994@infradead.org> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> <1263463752-5052-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263463752-5052-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263729216 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > -/* space allocation */ > +/* space allocation - use static inlines to avoid unused var warnings */ > #define xfs_alloc_search_busy(tp,ag,b,len) ((void) 0) > -#define xfs_alloc_mark_busy(tp,ag,b,len) ((void) 0) > +static inline void xfs_alloc_mark_busy(xfs_trans_t *tp, > + xfs_agnumber_t agno, xfs_agblock_t bno, xfs_extlen_t len) {} > #define xfs_rotorstep 1 > #define xfs_bmap_rtalloc(a) (ENOSYS) > #define xfs_rtpick_extent(mp,tp,len,p) (ENOSYS) Maybe just convert all these to inlines so that we make sure all arguments are evaluated? > diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c > index cf1123a..4cc6431 100644 > --- a/libxfs/xfs_bmap.c > +++ b/libxfs/xfs_bmap.c > @@ -4274,7 +4274,7 @@ xfs_bmapi( > xfs_fsblock_t abno; /* allocated block number */ > xfs_extlen_t alen; /* allocated extent length */ > xfs_fileoff_t aoff; /* allocated file offset */ > - xfs_bmalloca_t bma; /* args for xfs_bmap_alloc */ > + xfs_bmalloca_t bma = { 0 }; /* args for xfs_bmap_alloc */ > xfs_btree_cur_t *cur; /* bmap btree cursor */ > xfs_fileoff_t end; /* end of mapped file region */ > int eof; /* we've hit the end of extents */ Not nice but okay.. > diff --git a/libxfs/xfs_mount.c b/libxfs/xfs_mount.c > index 02bff42..662c8d2 100644 > --- a/libxfs/xfs_mount.c > +++ b/libxfs/xfs_mount.c > @@ -400,15 +400,14 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fields) > > xfs_sb_to_disk(XFS_BUF_TO_SBP(bp), &mp->m_sb, fields); > > - /* find modified range */ > + /* find modified range - get last first to avoid spurious warning */ > + f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields); > + ASSERT((1LL << f) & XFS_SB_MOD_BITS); > + last = xfs_sb_info[f + 1].offset - 1; > > f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields); > ASSERT((1LL << f) & XFS_SB_MOD_BITS); > first = xfs_sb_info[f].offset; > > - f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields); > - ASSERT((1LL << f) & XFS_SB_MOD_BITS); > - last = xfs_sb_info[f + 1].offset - 1; > - I don't see how this can shut up a warning, but as it doesn't cause harm I'm fine with it. But this and the above one really need to go in via the kernel tree first. From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:54:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBsHhx009861 for ; Sun, 17 Jan 2010 05:54:17 -0600 X-ASG-Debug-ID: 1263729316-55ed020b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 46F8B1C57698 for ; Sun, 17 Jan 2010 03:55:16 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 8E88L7Qy1cmincO0 for ; Sun, 17 Jan 2010 03:55:16 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTit-0004vs-UE; Sun, 17 Jan 2010 11:55:15 +0000 Date: Sun, 17 Jan 2010 06:55:15 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Subject: Re: [PATCH] xfsprogs: Make the compile output cleaner V2 Message-ID: <20100117115515.GA16856@infradead.org> References: <1263377007-4500-1-git-send-email-david@fromorbit.com> <20100113220814.GA17310@infradead.org> <20100113223001.GR17483@discord.disaster> <20100114065123.GA32559@infradead.org> <20100114101128.GX17483@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100114101128.GX17483@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263729316 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:11:28PM +1100, Dave Chinner wrote: > It seems completely spurious to me - normal practice is to blow away > the config on a distclean, not a plain clean. And seeing as the > patch is about removing noise during the normal build, I figured > this qualified as a bug causing noise. > > I can separate it out into another patch, but I'd really prefer that > make clean doesn't result in running configure again. Especially > considering the build dependencies are very broken so the only way > to guarantee a build catches all changes is to do 'make clean; > make'. Looking at various other packages it seems like configure output usually survives make clean indeed. With that I agree with the change, but it really should be a separate patch. Reviewed-by: Christoph Hellwig For this one without that change, and I'll also approve the make clean change when you send it. From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:58:07 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBw7Fh010075 for ; Sun, 17 Jan 2010 05:58:07 -0600 X-ASG-Debug-ID: 1263729546-5184028c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 42A321C576A0 for ; Sun, 17 Jan 2010 03:59:06 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id PXmW0JJhI1nLsh2C for ; Sun, 17 Jan 2010 03:59:06 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTmb-00052U-Ul; Sun, 17 Jan 2010 11:59:05 +0000 Date: Sun, 17 Jan 2010 06:59:05 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: Clean up build output Subject: Re: [PATCH] xfstests: Clean up build output Message-ID: <20100117115905.GB16856@infradead.org> References: <1263384325-15300-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263384325-15300-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263729546 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 13, 2010 at 11:05:25PM +1100, Dave Chinner wrote: > While doing this, remove explicit target-per-file rules in the > subdirectories being built and replace them with target based rules > using the buildrules hooks for doing this. This results in the > makefiles being simpler, smaller and more consistent. I agree, but it's also rather unrelated to the output.. A side effect of that rule cleanup seems that we now link all binaries against all libraries used in a subdirectory. I don't think it's a problem, but it's at least worth mentioning. I'd really prefer if you could split this into two patches, but if that's too much work consider this reviewed anyway: Reviewed-by: Christoph Hellwig From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 05:59:14 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HBxE9U010184 for ; Sun, 17 Jan 2010 05:59:14 -0600 X-ASG-Debug-ID: 1263729613-6c5802ca0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3607A16DEAB for ; Sun, 17 Jan 2010 04:00:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id GvjvI26BGzOualZc for ; Sun, 17 Jan 2010 04:00:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTng-0005ZU-SZ; Sun, 17 Jan 2010 12:00:12 +0000 Date: Sun, 17 Jan 2010 07:00:12 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsdump: Clean up build output Subject: Re: [PATCH] xfsdump: Clean up build output Message-ID: <20100117120012.GC16856@infradead.org> References: <1263429589-12896-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263429589-12896-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263729613 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 11:39:49AM +1100, Dave Chinner wrote: > We don't need to see every compiler command line for every file that > is compiled. This makes it hard to see warnings and errors during > compile. For progress notification, we really only need to see the > directory/file being operated on. > > Turn down the verbosity of output by suppressing various make output > and provide better overall visibility of which directory is being > operated on, what the operation is and what is being done to the > files by the build/clean process. Also fix the top level clean rule > so that we don't run configure scripts after a make clean, only > after a make distclean. > > The old style verbose builds can still be run via "make V=1 ..." Looks good except that the make clean changes really should be separate as in xfsprogs. Reviewed-by: Christoph Hellwig For the both bits, although they should be separate. From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 06:09:54 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_55,J_CHICKENPOX_57 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HC9sG2011567 for ; Sun, 17 Jan 2010 06:09:54 -0600 X-ASG-Debug-ID: 1263730253-55ea02740000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 827611C57732 for ; Sun, 17 Jan 2010 04:10:53 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id AiiqDK2eus3VAd8q for ; Sun, 17 Jan 2010 04:10:53 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTy1-0007Xr-7s; Sun, 17 Jan 2010 12:10:53 +0000 Date: Sun, 17 Jan 2010 07:10:53 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/9] xfsprogs: fix sign warnings in libxfs Subject: Re: [PATCH 1/9] xfsprogs: fix sign warnings in libxfs Message-ID: <20100117121053.GA21901@infradead.org> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> <1263463752-5052-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263463752-5052-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263730253 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:09:04PM +1100, Dave Chinner wrote: > The directory naming is a mix of char and uchar_t and the compiler > warns wheter they cross over. Cast the pointers according to the > destination requirements as it doesn't seem to matter to avoid > the warnings. I think this makes sense, but it should really go into the kernel code first - we currently paper over the warnings there by using -funsigned-char for all XFS code which we might be able to remove with those changes. > > struct xfs_name { > - const char *name; > + const uchar_t *name; > int len; Maye use on of the standard types (unsigned char / u8 / uint8_t) instead of the weird xfs-specific uchar_t, which in fact is already gone in the kernel? > @@ -1545,7 +1545,7 @@ xfs_attr_rmtval_get(xfs_da_args_t *args) > ASSERT(!(args->flags & ATTR_KERNOVAL)); > > mp = args->dp->i_mount; > - dst = args->value; > + dst = (xfs_caddr_t)args->value; > valuelen = args->valuelen; > lblkno = args->rmtblkno; > while (valuelen > 0) { > @@ -1601,7 +1601,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) > > dp = args->dp; > mp = dp->i_mount; > - src = args->value; > + src = (xfs_caddr_t)args->value; If we make xfs_buf_iomove take a void * we can just pass on the unsignedness in those two places. > diff --git a/libxfs/xfs_attr_leaf.c b/libxfs/xfs_attr_leaf.c > index f8f926f..d535752 100644 > --- a/libxfs/xfs_attr_leaf.c > +++ b/libxfs/xfs_attr_leaf.c > @@ -476,11 +476,11 @@ xfs_attr_shortform_to_leaf(xfs_da_args_t *args) > > sfe = &sf->list[0]; > for (i = 0; i < sf->hdr.count; i++) { > - nargs.name = (char *)sfe->nameval; > + nargs.name = (uchar_t *)sfe->nameval; > nargs.namelen = sfe->namelen; > - nargs.value = (char *)&sfe->nameval[nargs.namelen]; > + nargs.value = (uchar_t *)&sfe->nameval[nargs.namelen]; > nargs.valuelen = sfe->valuelen; > - nargs.hashval = xfs_da_hashname((char *)sfe->nameval, > + nargs.hashval = xfs_da_hashname((uchar_t *)sfe->nameval, > sfe->namelen); Both the leaf and sf nameval fields already are __u8/__uint8_t aka unsigned char, so I can't see why can't see why any casts are needed here and in the later hunks dealing with namevals. > @@ -489,7 +489,7 @@ xfs_dir2_block_lookup( > * Fill in inode number, CI name if appropriate, release the block. > */ > args->inumber = be64_to_cpu(dep->inumber); > - error = xfs_dir_cilookup_result(args, dep->name, dep->namelen); > + error = xfs_dir_cilookup_result(args, (char *)dep->name, dep->namelen); xfs_dir_cilookup_result always gets unsigned char names now, so I'd move the conversion into it. > xfs_da_brelse(args->trans, bp); > return XFS_ERROR(error); > } > @@ -576,7 +576,7 @@ xfs_dir2_block_lookup_int( > * and buffer. If it's the first case-insensitive match, store > * the index and buffer and continue looking for an exact match. > */ > - cmp = mp->m_dirnameops->compname(args, dep->name, dep->namelen); > + cmp = mp->m_dirnameops->compname(args, (char *)dep->name, dep->namelen); Also here, ->compname appears to always get unsigned names. > - if (xfs_da_compname(args, sfep->name, sfep->namelen) == > + if (xfs_da_compname(args, (char *)sfep->name, sfep->namelen) == > XFS_CMP_EXACT) { > ASSERT(xfs_dir2_sf_get_inumber(sfp, > xfs_dir2_sf_inumberp(sfep)) == > @@ -928,8 +929,8 @@ xfs_dir2_sf_replace( > for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); > i < sfp->hdr.count; > i++, sfep = xfs_dir2_sf_nextentry(sfp, sfep)) { > - if (xfs_da_compname(args, sfep->name, sfep->namelen) == > - XFS_CMP_EXACT) { > + if (xfs_da_compname(args, (char *)sfep->name, > + sfep->namelen) == XFS_CMP_EXACT) { Same seems to apply for direct calls to xfs_da_compname. From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 06:10:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HCAw8f011661 for ; Sun, 17 Jan 2010 06:10:59 -0600 X-ASG-Debug-ID: 1263730317-1d97034e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D33E5F189B3 for ; Sun, 17 Jan 2010 04:11:57 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id V0CcK0Kl5yFpJ3Pq for ; Sun, 17 Jan 2010 04:11:57 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTz3-0007bF-BS; Sun, 17 Jan 2010 12:11:57 +0000 Date: Sun, 17 Jan 2010 07:11:57 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/9] xfsprogs: fix warning in adfs superblock probe Subject: Re: [PATCH 4/9] xfsprogs: fix warning in adfs superblock probe Message-ID: <20100117121157.GA29034@infradead.org> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> <1263463752-5052-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263463752-5052-5-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263730317 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:09:07PM +1100, Dave Chinner wrote: > The probe gets an array subscript warning because gcc is not smart > enough to realise that a structure made up of multiple byte arrays > in it can be referenced as a flat buffer and it is valid to access > bytes beyond the first array in the structure.... > > Fix it by passing the adfs superblock in and using the internal > checksum array to get the checksum value. The check still seems horribly ugly, but hey given that this is code superceeded by blkid it should be good enough, Reviewed-by: Christoph Hellwig From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 06:11:45 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HCBj4p011740 for ; Sun, 17 Jan 2010 06:11:45 -0600 X-ASG-Debug-ID: 1263730363-2675023f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 141F4F189F5 for ; Sun, 17 Jan 2010 04:12:43 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 4NuPfl3owNY7V2yg for ; Sun, 17 Jan 2010 04:12:43 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWTzn-0007cg-Hd; Sun, 17 Jan 2010 12:12:43 +0000 Date: Sun, 17 Jan 2010 07:12:43 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/9] xfsprogs: fix some trivial warnings in xfs_db Subject: Re: [PATCH 5/9] xfsprogs: fix some trivial warnings in xfs_db Message-ID: <20100117121243.GB29034@infradead.org> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> <1263463752-5052-6-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263463752-5052-6-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263730364 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 14, 2010 at 09:09:08PM +1100, Dave Chinner wrote: > Three warnings, none harmful - one dir2 name sign warning and > two cases where gcc can't work out if a variable is initialised > correctly in a child function or not. Might be worth to throw all the dabtree sign things in with the mign signed issue patch? Anyway, the changes look good, Reviewed-by: Christoph Hellwig From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 06:12:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HCCpR6011864 for ; Sun, 17 Jan 2010 06:12:51 -0600 X-ASG-Debug-ID: 1263730430-040d025b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 36DDC16DF54 for ; Sun, 17 Jan 2010 04:13:50 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id xD8dp1VhFfJUxyBY for ; Sun, 17 Jan 2010 04:13:50 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWU0r-0007iF-Te; Sun, 17 Jan 2010 12:13:49 +0000 Date: Sun, 17 Jan 2010 07:13:49 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 8/9] xfsprogs: fix sign warning in mkfs directory code Subject: Re: [PATCH 8/9] xfsprogs: fix sign warning in mkfs directory code Message-ID: <20100117121349.GC29034@infradead.org> References: <1263463752-5052-1-git-send-email-david@fromorbit.com> <1263463752-5052-9-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263463752-5052-9-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263730430 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From sandeen@sandeen.net Sun Jan 17 09:48:53 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HFmrZO026142 for ; Sun, 17 Jan 2010 09:48:53 -0600 X-ASG-Debug-ID: 1263743391-5f5d000d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E03321C57AFA for ; Sun, 17 Jan 2010 07:49:51 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id X2G3njDyFkKtTjiw for ; Sun, 17 Jan 2010 07:49:51 -0800 (PST) Received: from [10.0.0.77] (eric-iphone.sandeen.net [10.0.0.77]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 246E796E2B5; Sun, 17 Jan 2010 09:49:51 -0600 (CST) References: <4B50F2F0.4050909@sandeen.net> <20100117114036.GA7813@infradead.org> Message-Id: From: Eric Sandeen To: Christoph Hellwig In-Reply-To: <20100117114036.GA7813@infradead.org> Content-Type: text/plain; charset=us-ascii; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit X-Mailer: iPhone Mail (7D11) Mime-Version: 1.0 (iPhone Mail 7D11) X-ASG-Orig-Subj: Re: [PATCH] mkfs: get size of device properly Subject: Re: [PATCH] mkfs: get size of device properly Date: Sun, 17 Jan 2010 09:49:50 -0600 Cc: xfs-oss X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263743391 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20068 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Jan 17, 2010, at 5:40 AM, Christoph Hellwig wrote: > > Reviewed-by: Christoph Hellwig Any chance you could create a xfstests regression test for this? > Sure - it sorta catches itby failing elsewhere, but not obviously.... -Eric From sandeen@sandeen.net Sun Jan 17 09:50:43 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HFohdI026272 for ; Sun, 17 Jan 2010 09:50:43 -0600 X-ASG-Debug-ID: 1263743501-5f36003c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0E58F1C57B05 for ; Sun, 17 Jan 2010 07:51:41 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id TlPYsEm5r5NC1QH0 for ; Sun, 17 Jan 2010 07:51:41 -0800 (PST) Received: from [10.0.0.77] (eric-iphone.sandeen.net [10.0.0.77]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 7FFB496E2B1; Sun, 17 Jan 2010 09:51:41 -0600 (CST) References: <4B51220F.7020703@sandeen.net> <20100117114344.GC7813@infradead.org> Message-Id: From: Eric Sandeen To: Christoph Hellwig In-Reply-To: <20100117114344.GC7813@infradead.org> Content-Type: text/plain; charset=us-ascii; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit X-Mailer: iPhone Mail (7D11) Mime-Version: 1.0 (iPhone Mail 7D11) X-ASG-Orig-Subj: Re: [PATCH] xfstests 131: kill locktest process in cleanup & better error msgs Subject: Re: [PATCH] xfstests 131: kill locktest process in cleanup & better error msgs Date: Sun, 17 Jan 2010 09:51:40 -0600 Cc: xfs-oss X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263743502 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20068 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Jan 17, 2010, at 5:43 AM, Christoph Hellwig wrote: > > Might be worth using herror or hsterror, although the manpage marks > them > as obsolete.. > Yeah didn't use them for that reason, no idea why they're obsoleted... Thanks, Eric > Anyway, good enough to put in, so: > > > Reviewed-by: Christoph Hellwig > From BATV+6073de143c5a284f2c9f+2338+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 17 16:35:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0HMZKV1051112 for ; Sun, 17 Jan 2010 16:35:22 -0600 X-ASG-Debug-ID: 1263767779-0c6500c60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E9F721C582B1 for ; Sun, 17 Jan 2010 14:36:19 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id PrDiXMj7iYlyxLey for ; Sun, 17 Jan 2010 14:36:19 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NWdjH-0004L4-Kt for xfs@oss.sgi.com; Sun, 17 Jan 2010 22:36:19 +0000 Date: Sun, 17 Jan 2010 17:36:19 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3 v2] xfs: implement quota warnings via netlink Subject: [PATCH 3/3 v2] xfs: implement quota warnings via netlink Message-ID: <20100117223619.GA16102@infradead.org> References: <20100113220547.846700560@bombadil.infradead.org> <20100113220603.251930871@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100113220603.251930871@bombadil.infradead.org> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263767779 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Wire up quota_send_warning to send quota warnings over netlink. This is used by various desktops to show user quota warnings. Tested by running the quota_nld daemon while running the xfstest quota tests and observing the warnings. I'll see how I can get a more formal testcase for it written. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_trans_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_trans_dquot.c 2010-01-17 11:02:29.340004208 +0100 +++ xfs/fs/xfs/quota/xfs_trans_dquot.c 2010-01-17 13:41:34.142005475 +0100 @@ -589,6 +589,20 @@ xfs_trans_unreserve_and_mod_dquots( } } +STATIC void +xfs_quota_warn( + struct xfs_mount *mp, + struct xfs_dquot *dqp, + int type) +{ + /* no warnings for project quotas - we just return ENOSPC later */ + if (dqp->dq_flags & XFS_DQ_PROJ) + return; + quota_send_warning((dqp->dq_flags & XFS_DQ_USER) ? USRQUOTA : GRPQUOTA, + be32_to_cpu(dqp->q_core.d_id), mp->m_super->s_dev, + type); +} + /* * This reserves disk blocks and inodes against a dquot. * Flags indicate if the dquot is to be locked here and also @@ -657,13 +671,21 @@ xfs_trans_dqresv( * nblks. */ if (hardlimit > 0ULL && - hardlimit <= nblks + *resbcountp) + hardlimit <= nblks + *resbcountp) { + xfs_quota_warn(mp, dqp, QUOTA_NL_BHARDWARN); goto error_return; + } if (softlimit > 0ULL && - softlimit <= nblks + *resbcountp && - ((timer != 0 && get_seconds() > timer) || - (warns != 0 && warns >= warnlimit))) - goto error_return; + softlimit <= nblks + *resbcountp) { + if ((timer != 0 && get_seconds() > timer) || + (warns != 0 && warns >= warnlimit)) { + xfs_quota_warn(mp, dqp, + QUOTA_NL_BSOFTLONGWARN); + goto error_return; + } + + xfs_quota_warn(mp, dqp, QUOTA_NL_BSOFTWARN); + } } if (ninos > 0) { count = be64_to_cpu(dqp->q_core.d_icount); @@ -677,12 +699,19 @@ xfs_trans_dqresv( if (!softlimit) softlimit = q->qi_isoftlimit; - if (hardlimit > 0ULL && count >= hardlimit) - goto error_return; - if (softlimit > 0ULL && count >= softlimit && - ((timer != 0 && get_seconds() > timer) || - (warns != 0 && warns >= warnlimit))) + if (hardlimit > 0ULL && count >= hardlimit) { + xfs_quota_warn(mp, dqp, QUOTA_NL_IHARDWARN); goto error_return; + } + if (softlimit > 0ULL && count >= softlimit) { + if ((timer != 0 && get_seconds() > timer) || + (warns != 0 && warns >= warnlimit)) { + xfs_quota_warn(mp, dqp, + QUOTA_NL_ISOFTLONGWARN); + goto error_return; + } + xfs_quota_warn(mp, dqp, QUOTA_NL_ISOFTWARN); + } } } From aelder@sgi.com Sun Jan 17 19:11:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0I1BfgR061460 for ; Sun, 17 Jan 2010 19:11:41 -0600 Received: from stout.americas.sgi.com (stout.americas.sgi.com [128.162.232.50]) by relay1.corp.sgi.com (Postfix) with ESMTP id DD7D48F809E; Sun, 17 Jan 2010 17:12:37 -0800 (PST) Received: from stout.americas.sgi.com (localhost6.localdomain6 [127.0.0.1]) by stout.americas.sgi.com (8.14.3/8.14.2) with ESMTP id o0I1CbBE001418; Sun, 17 Jan 2010 19:12:37 -0600 Received: (from aelder@localhost) by stout.americas.sgi.com (8.14.3/8.14.3/Submit) id o0I1CaCH001417; Sun, 17 Jan 2010 19:12:36 -0600 From: Alex Elder Message-Id: <201001180112.o0I1CaCH001417@stout.americas.sgi.com> Date: Sun, 17 Jan 2010 19:12:36 -0600 To: torvalds@linux-foundation.org Subject: [GIT PULL] XFS update for 2.6.33-rc4 Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org User-Agent: Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The following changes since commit 7284ce6c9f6153d1777df5f310c959724d1bd446: Linus Torvalds (1): Linux 2.6.33-rc4 are available in the git repository at: git://oss.sgi.com/xfs/xfs for-linus Dave Chinner (7): xfs: reclaim inodes under a write lock xfs: Avoid inodes in reclaim when flushing from inode cache xfs: reclaim all inodes by background tree walks xfs: Remove inode iolock held check during allocation xfs: fix stale inode flush avoidance xfs: fix missing error check in xfs_rtfree_range xfs: xfs_swap_extents needs to handle dynamic fork offsets fs/xfs/linux-2.6/xfs_super.c | 14 ++-- fs/xfs/linux-2.6/xfs_sync.c | 183 +++++++++++++++++++--------------------- fs/xfs/linux-2.6/xfs_sync.h | 2 +- fs/xfs/quota/xfs_qm_syscalls.c | 2 +- fs/xfs/xfs_dfrag.c | 106 ++++++++++++++++++++---- fs/xfs/xfs_iget.c | 1 - fs/xfs/xfs_inode.c | 21 ++++-- fs/xfs/xfs_rtalloc.c | 2 + 8 files changed, 201 insertions(+), 130 deletions(-) From SRS0+555T+47+fromorbit.com=david@internode.on.net Mon Jan 18 05:02:41 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0IB2eqE099100 for ; Mon, 18 Jan 2010 05:02:41 -0600 X-ASG-Debug-ID: 1263812617-054200b20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D0DED1C592E6 for ; Mon, 18 Jan 2010 03:03:38 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id gbJPFxONUtExCGtT for ; Mon, 18 Jan 2010 03:03:38 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11705276-1927428 for multiple; Mon, 18 Jan 2010 21:33:35 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NWpOQ-0002I3-BD; Mon, 18 Jan 2010 22:03:34 +1100 Date: Mon, 18 Jan 2010 22:03:34 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3 v2] xfs: implement quota warnings via netlink Subject: Re: [PATCH 3/3 v2] xfs: implement quota warnings via netlink Message-ID: <20100118110334.GE7264@discord.disaster> References: <20100113220547.846700560@bombadil.infradead.org> <20100113220603.251930871@bombadil.infradead.org> <20100117223619.GA16102@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100117223619.GA16102@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263812619 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0208 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20140 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sun, Jan 17, 2010 at 05:36:19PM -0500, Christoph Hellwig wrote: > Wire up quota_send_warning to send quota warnings over netlink. This is > used by various desktops to show user quota warnings. > > Tested by running the quota_nld daemon while running the xfstest quota > tests and observing the warnings. I'll see how I can get a more formal > testcase for it written. > > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Mon Jan 18 13:20:57 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0IJKvn9124380 for ; Mon, 18 Jan 2010 13:20:57 -0600 X-ASG-Debug-ID: 1263842514-261f02260000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 631E111F7B06 for ; Mon, 18 Jan 2010 11:21:54 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id sYqOESFrmuQyhzwS for ; Mon, 18 Jan 2010 11:21:54 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 22390AAE3BE for ; Mon, 18 Jan 2010 13:21:53 -0600 (CST) Message-ID: <4B54B4D1.7020500@sandeen.net> Date: Mon, 18 Jan 2010 13:21:53 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] mkfs: don't warn about topology when mkfsing a file Subject: [PATCH] mkfs: don't warn about topology when mkfsing a file Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263842515 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20168 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Some tests were failing for me like: QA output created by 206 === truncate file === === mkfs.xfs === +warning: unable to probe device toplology for device /mnt/test/fsfile.21615 ... I thought about filtering the tests, but ... It seems that we shouldn't even be trying to get topology for a plain file, should we? And then we won't warn about failure. Signed-off-by: Eric Sandeen --- diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 689425d..8896035 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -356,6 +356,10 @@ static void blkid_get_topology(const char *device, int *sunit, int *swidth, int blkid_topology tp; blkid_probe pr; unsigned long val; + struct stat statbuf; + + if (!stat(device, &statbuf) && S_ISREG(statbuf.st_mode)) + return; pr = blkid_new_probe_from_filename(device); if (!pr) From sandeen@sandeen.net Mon Jan 18 14:45:37 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_14 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0IKjbLs128848 for ; Mon, 18 Jan 2010 14:45:37 -0600 X-ASG-Debug-ID: 1263847595-154403dd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1ED01171D3D for ; Mon, 18 Jan 2010 12:46:36 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id tFT9RsZ9rqluYaML for ; Mon, 18 Jan 2010 12:46:36 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 9F3E8AAE3B2 for ; Mon, 18 Jan 2010 14:46:35 -0600 (CST) Message-ID: <4B54C8AB.6080607@sandeen.net> Date: Mon, 18 Jan 2010 14:46:35 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfsteststs: get fsstress DIO working on non-xfs filesystems Subject: [PATCH] xfsteststs: get fsstress DIO working on non-xfs filesystems Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263847597 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20172 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Pretty sure all DIO IO fails in fsstress today since XFS_IOC_DIOINFO fails. If so, rather than just bailing out on the op, assign some sane default DIO parameters. This falls down for 4k sector devices but not really sure how to get the underlying sector size easily from here; I think we can live with this for now. hch suggested moving XFS_IOC_DIOINFO up higher in the vfs, that's probably a good idea in the long run. Signed-off-by: Eric Sandeen --- diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 6978381..dab6bf7 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -1818,9 +1818,9 @@ dread_f(int opno, long r) printf( "%d/%d: dread - xfsctl(XFS_IOC_DIOINFO) %s failed %d\n", procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; + diob.d_maxiosz = -1U; + diob.d_miniosz = 512; + diob.d_mem = 512; } align = (__int64_t)diob.d_miniosz; lr = ((__int64_t)random() << 32) + random(); @@ -1888,9 +1888,9 @@ dwrite_f(int opno, long r) printf("%d/%d: dwrite - xfsctl(XFS_IOC_DIOINFO)" " %s failed %d\n", procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; + diob.d_maxiosz = -1U; + diob.d_miniosz = 512; + diob.d_mem = 512; } align = (__int64_t)diob.d_miniosz; lr = ((__int64_t)random() << 32) + random(); From SRS0+bDqv+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:29:37 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0TbXc141341 for ; Mon, 18 Jan 2010 18:29:37 -0600 X-ASG-Debug-ID: 1263861034-7f4b018a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6700D1C5C78C for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id Qr1LwdNLGKxuodBl for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11645679-1927428 for ; Tue, 19 Jan 2010 11:00:34 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX1zM-0003Dh-PH for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:32 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX1zM-0003WH-4E for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:32 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 8/8] xfs: make compile warn about char sign mismatches again Subject: [PATCH 8/8] xfs: make compile warn about char sign mismatches again Date: Tue, 19 Jan 2010 11:30:26 +1100 Message-Id: <1263861026-13448-9-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861026-13448-1-git-send-email-david@fromorbit.com> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263861036 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The -fno-unsigned-char directive has no effect anymore as the XFs build is clean. However, the kernel build hides pointer sign differences so turn that back on so that we can clean up all the mismatches prior to a userspace code resync. Signed-off-by: Dave Chinner --- fs/xfs/Makefile | 2 +- fs/xfs/xfs_vnodeops.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/fs/xfs/Makefile b/fs/xfs/Makefile index 56641fe..1926701 100644 --- a/fs/xfs/Makefile +++ b/fs/xfs/Makefile @@ -16,7 +16,7 @@ # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -EXTRA_CFLAGS += -I$(src) -I$(src)/linux-2.6 -funsigned-char +EXTRA_CFLAGS += -I$(src) -I$(src)/linux-2.6 -Wpointer-sign XFS_LINUX := linux-2.6 diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 6f26875..9f7c001 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -2199,7 +2199,8 @@ xfs_symlink( if (DM_EVENT_ENABLED(dp, DM_EVENT_SYMLINK)) { error = XFS_SEND_NAMESP(mp, DM_EVENT_SYMLINK, dp, DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, - link_name->name, target_path, 0, 0, 0); + link_name->name, + (unsigned char *)target_path, 0, 0, 0); if (error) return error; } @@ -2395,7 +2396,8 @@ std_return: dp, DM_RIGHT_NULL, error ? NULL : ip, DM_RIGHT_NULL, link_name->name, - target_path, 0, error, 0); + (unsigned char *)target_path, + 0, error, 0); } if (!error) -- 1.6.5 From SRS0+bDqv+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:29:37 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0TbZj141340 for ; Mon, 18 Jan 2010 18:29:37 -0600 X-ASG-Debug-ID: 1263861034-7f43018b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7D7431C5C78F for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id hjeE1TKw5B9bbmSG for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11645678-1927428 for ; Tue, 19 Jan 2010 11:00:33 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX1zM-0003DP-Gf for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:32 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX1zL-0003W6-SY for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/8] xfs: make xfs_dir_cilookup_result use unsigned char Subject: [PATCH 4/8] xfs: make xfs_dir_cilookup_result use unsigned char Date: Tue, 19 Jan 2010 11:30:22 +1100 Message-Id: <1263861026-13448-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861026-13448-1-git-send-email-david@fromorbit.com> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263861036 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean For consistency with the result of the code. Signed-off-by: Dave Chinner --- fs/xfs/xfs_dir2.c | 2 +- fs/xfs/xfs_dir2.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_dir2.c b/fs/xfs/xfs_dir2.c index c21c527..3a8c6ba 100644 --- a/fs/xfs/xfs_dir2.c +++ b/fs/xfs/xfs_dir2.c @@ -247,7 +247,7 @@ xfs_dir_createname( int xfs_dir_cilookup_result( struct xfs_da_args *args, - const char *name, + const unsigned char *name, int len) { if (args->cmpresult == XFS_CMP_DIFFERENT) diff --git a/fs/xfs/xfs_dir2.h b/fs/xfs/xfs_dir2.h index 1d9ef96..74a3b10 100644 --- a/fs/xfs/xfs_dir2.h +++ b/fs/xfs/xfs_dir2.h @@ -100,7 +100,7 @@ extern int xfs_dir2_isleaf(struct xfs_trans *tp, struct xfs_inode *dp, extern int xfs_dir2_shrink_inode(struct xfs_da_args *args, xfs_dir2_db_t db, struct xfs_dabuf *bp); -extern int xfs_dir_cilookup_result(struct xfs_da_args *args, const char *name, - int len); +extern int xfs_dir_cilookup_result(struct xfs_da_args *args, + const unsigned char *name, int len); #endif /* __XFS_DIR2_H__ */ -- 1.6.5 From SRS0+8aWY+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:29:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0TbTY141347 for ; Mon, 18 Jan 2010 18:29:38 -0600 X-ASG-Debug-ID: 1263861034-029902e70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 55A1C11F8B48 for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id q1vzzpvX5wMCVDEi for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11561537-1927428 for ; Tue, 19 Jan 2010 11:00:33 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX1zM-0003Dd-M3 for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:32 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX1zM-0003WF-1f for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:32 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 7/8] xfs: clean up sign warnings in dir2 code Subject: [PATCH 7/8] xfs: clean up sign warnings in dir2 code Date: Tue, 19 Jan 2010 11:30:25 +1100 Message-Id: <1263861026-13448-8-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861026-13448-1-git-send-email-david@fromorbit.com> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263861037 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We are now consistently using unsigned char strings for names so fix up the remaining warnings in the dir2 code to complete the cleanup. Signed-off-by: Dave Chinner --- fs/xfs/xfs_dir2.c | 2 +- fs/xfs/xfs_dir2_block.c | 9 +++++---- fs/xfs/xfs_dir2_leaf.c | 2 +- fs/xfs/xfs_dir2_sf.c | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/fs/xfs/xfs_dir2.c b/fs/xfs/xfs_dir2.c index 3a8c6ba..42520f0 100644 --- a/fs/xfs/xfs_dir2.c +++ b/fs/xfs/xfs_dir2.c @@ -44,7 +44,7 @@ #include "xfs_vnodeops.h" #include "xfs_trace.h" -struct xfs_name xfs_name_dotdot = {"..", 2}; +struct xfs_name xfs_name_dotdot = { (unsigned char *)"..", 2}; /* * ASCII case-insensitive (ie. A-Z) support for directories that was diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index ddc4ecc..779a267 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -57,8 +57,8 @@ static xfs_dahash_t xfs_dir_hash_dot, xfs_dir_hash_dotdot; void xfs_dir_startup(void) { - xfs_dir_hash_dot = xfs_da_hashname(".", 1); - xfs_dir_hash_dotdot = xfs_da_hashname("..", 2); + xfs_dir_hash_dot = xfs_da_hashname((unsigned char *)".", 1); + xfs_dir_hash_dotdot = xfs_da_hashname((unsigned char *)"..", 2); } /* @@ -513,8 +513,9 @@ xfs_dir2_block_getdents( /* * If it didn't fit, set the final offset to here & return. */ - if (filldir(dirent, dep->name, dep->namelen, cook & 0x7fffffff, - be64_to_cpu(dep->inumber), DT_UNKNOWN)) { + if (filldir(dirent, (char *)dep->name, dep->namelen, + cook & 0x7fffffff, be64_to_cpu(dep->inumber), + DT_UNKNOWN)) { *offset = cook & 0x7fffffff; xfs_da_brelse(NULL, bp); return 0; diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index 29f484c..e2d8985 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -1081,7 +1081,7 @@ xfs_dir2_leaf_getdents( dep = (xfs_dir2_data_entry_t *)ptr; length = xfs_dir2_data_entsize(dep->namelen); - if (filldir(dirent, dep->name, dep->namelen, + if (filldir(dirent, (char *)dep->name, dep->namelen, xfs_dir2_byte_to_dataptr(mp, curoff) & 0x7fffffff, be64_to_cpu(dep->inumber), DT_UNKNOWN)) break; diff --git a/fs/xfs/xfs_dir2_sf.c b/fs/xfs/xfs_dir2_sf.c index 9d4f17a..c1a5945 100644 --- a/fs/xfs/xfs_dir2_sf.c +++ b/fs/xfs/xfs_dir2_sf.c @@ -782,7 +782,7 @@ xfs_dir2_sf_getdents( } ino = xfs_dir2_sf_get_inumber(sfp, xfs_dir2_sf_inumberp(sfep)); - if (filldir(dirent, sfep->name, sfep->namelen, + if (filldir(dirent, (char *)sfep->name, sfep->namelen, off & 0x7fffffff, ino, DT_UNKNOWN)) { *offset = off & 0x7fffffff; return 0; -- 1.6.5 From SRS0+8Vph+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:29:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0TaN3141339 for ; Mon, 18 Jan 2010 18:29:38 -0600 X-ASG-Debug-ID: 1263861034-74e303be0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7486811F8B3E for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id g2UcVZeNrDfly1W8 for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11404481-1927428 for ; Tue, 19 Jan 2010 11:00:33 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX1zM-0003DL-D4 for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:32 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX1zL-0003W0-PI for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/8] xfs: convert DM ops to use unsigned char names Subject: [PATCH 2/8] xfs: convert DM ops to use unsigned char names Date: Tue, 19 Jan 2010 11:30:20 +1100 Message-Id: <1263861026-13448-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861026-13448-1-git-send-email-david@fromorbit.com> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263861036 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean dmops uses a signed char for it's namespace event. To be consistent with the rest of the code, convert them to unsigned char for the namespace string. Signed-off-by: Dave Chinner --- fs/xfs/xfs_mount.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index e62fd1c..f4d1441 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -78,7 +78,8 @@ typedef int (*xfs_send_destroy_t)(struct xfs_inode *, dm_right_t); typedef int (*xfs_send_namesp_t)(dm_eventtype_t, struct xfs_mount *, struct xfs_inode *, dm_right_t, struct xfs_inode *, dm_right_t, - const char *, const char *, mode_t, int, int); + const unsigned char *, const unsigned char *, + mode_t, int, int); typedef int (*xfs_send_mount_t)(struct xfs_mount *, dm_right_t, char *, char *); typedef void (*xfs_send_unmount_t)(struct xfs_mount *, struct xfs_inode *, -- 1.6.5 From SRS0+8aWY+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:29:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0Tbjw141344 for ; Mon, 18 Jan 2010 18:29:37 -0600 X-ASG-Debug-ID: 1263861035-74e903670000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F1C0611F8B45 for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id 55Ww7r7EsoXXIF8w for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11561538-1927428 for ; Tue, 19 Jan 2010 11:00:34 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX1zM-0003DJ-AI for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:32 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX1zL-0003Vw-KY for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/8] xfs: clean up pointer sign differences Subject: [PATCH 0/8] xfs: clean up pointer sign differences Date: Tue, 19 Jan 2010 11:30:18 +1100 Message-Id: <1263861026-13448-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263861036 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch series cleans up all the pointer sign warnings when they are turned back on in the XFS build. These are the kernel equivalents of the libxfs changes I posted a last week. On Christoph's suggestion, I've made the changes for the kernel code so that we can fix the libxfs warnings simply by resyncing the userspce code with the kernel code. Hence this makes all of the directory and attribute names and values unsigned chars and uses that consistently within XFS. The on disk formats are all unsigned, but the VFS is a mix of signed and unsigned interfaces. The series converts all the names and values at the highest level to unsigned so the rest of the code doesn't need to juggle different signedness. It cleans up all the places where we have cast pointers, makes all functions take unsigned strings and so on. Finally, it turns on the pointer sign warnings again (which are actually turned off globally in the build) so that we don't reintroduce new problems due to a lack of warnings being produced by the compiler. From SRS0+8Vph+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:29:39 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_55,J_CHICKENPOX_57,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0Tc9Z141364 for ; Mon, 18 Jan 2010 18:29:38 -0600 X-ASG-Debug-ID: 1263861035-029802b80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1E4F111F8B3E for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id sQ7pckIU6JfNGrZS for ; Mon, 18 Jan 2010 16:30:35 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11404483-1927428 for ; Tue, 19 Jan 2010 11:00:34 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX1zM-0003DZ-KN for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:32 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX1zL-0003WC-W6 for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 6/8] xfs: convert attr to use unsigned names Subject: [PATCH 6/8] xfs: convert attr to use unsigned names Date: Tue, 19 Jan 2010 11:30:24 +1100 Message-Id: <1263861026-13448-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861026-13448-1-git-send-email-david@fromorbit.com> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263861037 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean To be consistent with the directory code, the attr code should use unsigned names. Convert the names from the vfs at the highest level to unsigned, and ænsure they are consistenly used as unsigned down to disk. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_acl.c | 11 ++++++----- fs/xfs/linux-2.6/xfs_ioctl.c | 18 +++++++++--------- fs/xfs/linux-2.6/xfs_ioctl.h | 12 ++++++------ fs/xfs/linux-2.6/xfs_ioctl32.c | 4 ++-- fs/xfs/linux-2.6/xfs_iops.c | 4 ++-- fs/xfs/linux-2.6/xfs_xattr.c | 27 +++++++++++++++++++-------- fs/xfs/xfs_acl.h | 4 ++-- fs/xfs/xfs_attr.c | 38 +++++++++++++++++++++++--------------- fs/xfs/xfs_attr.h | 2 +- fs/xfs/xfs_attr_leaf.c | 28 ++++++++++++++-------------- fs/xfs/xfs_attr_sf.h | 2 +- fs/xfs/xfs_vnodeops.h | 10 +++++----- 12 files changed, 90 insertions(+), 70 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_acl.c b/fs/xfs/linux-2.6/xfs_acl.c index 883ca5a..bf85bbe 100644 --- a/fs/xfs/linux-2.6/xfs_acl.c +++ b/fs/xfs/linux-2.6/xfs_acl.c @@ -106,7 +106,7 @@ xfs_get_acl(struct inode *inode, int type) struct posix_acl *acl; struct xfs_acl *xfs_acl; int len = sizeof(struct xfs_acl); - char *ea_name; + unsigned char *ea_name; int error; acl = get_cached_acl(inode, type); @@ -133,7 +133,8 @@ xfs_get_acl(struct inode *inode, int type) if (!xfs_acl) return ERR_PTR(-ENOMEM); - error = -xfs_attr_get(ip, ea_name, (char *)xfs_acl, &len, ATTR_ROOT); + error = -xfs_attr_get(ip, ea_name, (unsigned char *)xfs_acl, + &len, ATTR_ROOT); if (error) { /* * If the attribute doesn't exist make sure we have a negative @@ -162,7 +163,7 @@ STATIC int xfs_set_acl(struct inode *inode, int type, struct posix_acl *acl) { struct xfs_inode *ip = XFS_I(inode); - char *ea_name; + unsigned char *ea_name; int error; if (S_ISLNK(inode->i_mode)) @@ -194,7 +195,7 @@ xfs_set_acl(struct inode *inode, int type, struct posix_acl *acl) (sizeof(struct xfs_acl_entry) * (XFS_ACL_MAX_ENTRIES - acl->a_count)); - error = -xfs_attr_set(ip, ea_name, (char *)xfs_acl, + error = -xfs_attr_set(ip, ea_name, (unsigned char *)xfs_acl, len, ATTR_ROOT); kfree(xfs_acl); @@ -262,7 +263,7 @@ xfs_set_mode(struct inode *inode, mode_t mode) } static int -xfs_acl_exists(struct inode *inode, char *name) +xfs_acl_exists(struct inode *inode, unsigned char *name) { int len = sizeof(struct xfs_acl); diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c index a034cf6..3906e85 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.c +++ b/fs/xfs/linux-2.6/xfs_ioctl.c @@ -447,12 +447,12 @@ xfs_attrlist_by_handle( int xfs_attrmulti_attr_get( struct inode *inode, - char *name, - char __user *ubuf, + unsigned char *name, + unsigned char __user *ubuf, __uint32_t *len, __uint32_t flags) { - char *kbuf; + unsigned char *kbuf; int error = EFAULT; if (*len > XATTR_SIZE_MAX) @@ -476,12 +476,12 @@ xfs_attrmulti_attr_get( int xfs_attrmulti_attr_set( struct inode *inode, - char *name, - const char __user *ubuf, + unsigned char *name, + const unsigned char __user *ubuf, __uint32_t len, __uint32_t flags) { - char *kbuf; + unsigned char *kbuf; int error = EFAULT; if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) @@ -501,7 +501,7 @@ xfs_attrmulti_attr_set( int xfs_attrmulti_attr_remove( struct inode *inode, - char *name, + unsigned char *name, __uint32_t flags) { if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) @@ -519,7 +519,7 @@ xfs_attrmulti_by_handle( xfs_fsop_attrmulti_handlereq_t am_hreq; struct dentry *dentry; unsigned int i, size; - char *attr_name; + unsigned char *attr_name; if (!capable(CAP_SYS_ADMIN)) return -XFS_ERROR(EPERM); @@ -547,7 +547,7 @@ xfs_attrmulti_by_handle( error = 0; for (i = 0; i < am_hreq.opcount; i++) { - ops[i].am_error = strncpy_from_user(attr_name, + ops[i].am_error = strncpy_from_user((char *)attr_name, ops[i].am_attrname, MAXNAMELEN); if (ops[i].am_error == 0 || ops[i].am_error == MAXNAMELEN) error = -ERANGE; diff --git a/fs/xfs/linux-2.6/xfs_ioctl.h b/fs/xfs/linux-2.6/xfs_ioctl.h index 7bd7c6a..d56173b 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.h +++ b/fs/xfs/linux-2.6/xfs_ioctl.h @@ -45,23 +45,23 @@ xfs_readlink_by_handle( extern int xfs_attrmulti_attr_get( struct inode *inode, - char *name, - char __user *ubuf, + unsigned char *name, + unsigned char __user *ubuf, __uint32_t *len, __uint32_t flags); extern int - xfs_attrmulti_attr_set( +xfs_attrmulti_attr_set( struct inode *inode, - char *name, - const char __user *ubuf, + unsigned char *name, + const unsigned char __user *ubuf, __uint32_t len, __uint32_t flags); extern int xfs_attrmulti_attr_remove( struct inode *inode, - char *name, + unsigned char *name, __uint32_t flags); extern struct dentry * diff --git a/fs/xfs/linux-2.6/xfs_ioctl32.c b/fs/xfs/linux-2.6/xfs_ioctl32.c index be1527b..0bf6d61 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl32.c +++ b/fs/xfs/linux-2.6/xfs_ioctl32.c @@ -411,7 +411,7 @@ xfs_compat_attrmulti_by_handle( compat_xfs_fsop_attrmulti_handlereq_t am_hreq; struct dentry *dentry; unsigned int i, size; - char *attr_name; + unsigned char *attr_name; if (!capable(CAP_SYS_ADMIN)) return -XFS_ERROR(EPERM); @@ -440,7 +440,7 @@ xfs_compat_attrmulti_by_handle( error = 0; for (i = 0; i < am_hreq.opcount; i++) { - ops[i].am_error = strncpy_from_user(attr_name, + ops[i].am_error = strncpy_from_user((char *)attr_name, compat_ptr(ops[i].am_attrname), MAXNAMELEN); if (ops[i].am_error == 0 || ops[i].am_error == MAXNAMELEN) diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index 2259460..e8566bb 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c @@ -140,10 +140,10 @@ xfs_init_security( struct xfs_inode *ip = XFS_I(inode); size_t length; void *value; - char *name; + unsigned char *name; int error; - error = security_inode_init_security(inode, dir, &name, + error = security_inode_init_security(inode, dir, (char **)&name, &value, &length); if (error) { if (error == -EOPNOTSUPP) diff --git a/fs/xfs/linux-2.6/xfs_xattr.c b/fs/xfs/linux-2.6/xfs_xattr.c index 0b18788..fa01b9d 100644 --- a/fs/xfs/linux-2.6/xfs_xattr.c +++ b/fs/xfs/linux-2.6/xfs_xattr.c @@ -45,7 +45,7 @@ xfs_xattr_get(struct dentry *dentry, const char *name, value = NULL; } - error = -xfs_attr_get(ip, name, value, &asize, xflags); + error = -xfs_attr_get(ip, (unsigned char *)name, value, &asize, xflags); if (error) return error; return asize; @@ -67,8 +67,9 @@ xfs_xattr_set(struct dentry *dentry, const char *name, const void *value, xflags |= ATTR_REPLACE; if (!value) - return -xfs_attr_remove(ip, name, xflags); - return -xfs_attr_set(ip, name, (void *)value, size, xflags); + return -xfs_attr_remove(ip, (unsigned char *)name, xflags); + return -xfs_attr_set(ip, (unsigned char *)name, + (void *)value, size, xflags); } static struct xattr_handler xfs_xattr_user_handler = { @@ -124,8 +125,13 @@ static const char *xfs_xattr_prefix(int flags) } static int -xfs_xattr_put_listent(struct xfs_attr_list_context *context, int flags, - char *name, int namelen, int valuelen, char *value) +xfs_xattr_put_listent( + struct xfs_attr_list_context *context, + int flags, + unsigned char *name, + int namelen, + int valuelen, + unsigned char *value) { unsigned int prefix_len = xfs_xattr_prefix_len(flags); char *offset; @@ -148,7 +154,7 @@ xfs_xattr_put_listent(struct xfs_attr_list_context *context, int flags, offset = (char *)context->alist + context->count; strncpy(offset, xfs_xattr_prefix(flags), prefix_len); offset += prefix_len; - strncpy(offset, name, namelen); /* real name */ + strncpy(offset, (char *)name, namelen); /* real name */ offset += namelen; *offset = '\0'; context->count += prefix_len + namelen + 1; @@ -156,8 +162,13 @@ xfs_xattr_put_listent(struct xfs_attr_list_context *context, int flags, } static int -xfs_xattr_put_listent_sizes(struct xfs_attr_list_context *context, int flags, - char *name, int namelen, int valuelen, char *value) +xfs_xattr_put_listent_sizes( + struct xfs_attr_list_context *context, + int flags, + unsigned char *name, + int namelen, + int valuelen, + unsigned char *value) { context->count += xfs_xattr_prefix_len(flags) + namelen + 1; return 0; diff --git a/fs/xfs/xfs_acl.h b/fs/xfs/xfs_acl.h index 00fd357..d13eeba 100644 --- a/fs/xfs/xfs_acl.h +++ b/fs/xfs/xfs_acl.h @@ -36,8 +36,8 @@ struct xfs_acl { }; /* On-disk XFS extended attribute names */ -#define SGI_ACL_FILE "SGI_ACL_FILE" -#define SGI_ACL_DEFAULT "SGI_ACL_DEFAULT" +#define SGI_ACL_FILE (unsigned char *)"SGI_ACL_FILE" +#define SGI_ACL_DEFAULT (unsigned char *)"SGI_ACL_DEFAULT" #define SGI_ACL_FILE_SIZE (sizeof(SGI_ACL_FILE)-1) #define SGI_ACL_DEFAULT_SIZE (sizeof(SGI_ACL_DEFAULT)-1) diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c index 9d11eba..f7b426a 100644 --- a/fs/xfs/xfs_attr.c +++ b/fs/xfs/xfs_attr.c @@ -93,12 +93,12 @@ STATIC int xfs_attr_rmtval_remove(xfs_da_args_t *args); STATIC int xfs_attr_name_to_xname( struct xfs_name *xname, - const char *aname) + const unsigned char *aname) { if (!aname) return EINVAL; xname->name = aname; - xname->len = strlen(aname); + xname->len = strlen((char *)aname); if (xname->len >= MAXNAMELEN) return EFAULT; /* match IRIX behaviour */ @@ -124,7 +124,7 @@ STATIC int xfs_attr_get_int( struct xfs_inode *ip, struct xfs_name *name, - char *value, + unsigned char *value, int *valuelenp, int flags) { @@ -171,8 +171,8 @@ xfs_attr_get_int( int xfs_attr_get( xfs_inode_t *ip, - const char *name, - char *value, + const unsigned char *name, + unsigned char *value, int *valuelenp, int flags) { @@ -235,8 +235,12 @@ xfs_attr_calc_size( } STATIC int -xfs_attr_set_int(xfs_inode_t *dp, struct xfs_name *name, - char *value, int valuelen, int flags) +xfs_attr_set_int( + struct xfs_inode *dp, + struct xfs_name *name, + unsigned char *value, + int valuelen, + int flags) { xfs_da_args_t args; xfs_fsblock_t firstblock; @@ -452,8 +456,8 @@ out: int xfs_attr_set( xfs_inode_t *dp, - const char *name, - char *value, + const unsigned char *name, + unsigned char *value, int valuelen, int flags) { @@ -600,7 +604,7 @@ out: int xfs_attr_remove( xfs_inode_t *dp, - const char *name, + const unsigned char *name, int flags) { int error; @@ -669,9 +673,13 @@ xfs_attr_list_int(xfs_attr_list_context_t *context) */ /*ARGSUSED*/ STATIC int -xfs_attr_put_listent(xfs_attr_list_context_t *context, int flags, - char *name, int namelen, - int valuelen, char *value) +xfs_attr_put_listent( + xfs_attr_list_context_t *context, + int flags, + unsigned char *name, + int namelen, + int valuelen, + unsigned char *value) { struct attrlist *alist = (struct attrlist *)context->alist; attrlist_ent_t *aep; @@ -1980,7 +1988,7 @@ xfs_attr_rmtval_get(xfs_da_args_t *args) xfs_bmbt_irec_t map[ATTR_RMTVALUE_MAPSIZE]; xfs_mount_t *mp; xfs_daddr_t dblkno; - xfs_caddr_t dst; + void *dst; xfs_buf_t *bp; int nmap, error, tmp, valuelen, blkcnt, i; xfs_dablk_t lblkno; @@ -2039,7 +2047,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) xfs_inode_t *dp; xfs_bmbt_irec_t map; xfs_daddr_t dblkno; - xfs_caddr_t src; + void *src; xfs_buf_t *bp; xfs_dablk_t lblkno; int blkcnt, valuelen, nmap, error, tmp, committed; diff --git a/fs/xfs/xfs_attr.h b/fs/xfs/xfs_attr.h index 9c3a243..e920d68 100644 --- a/fs/xfs/xfs_attr.h +++ b/fs/xfs/xfs_attr.h @@ -113,7 +113,7 @@ typedef struct attrlist_cursor_kern { typedef int (*put_listent_func_t)(struct xfs_attr_list_context *, int, - char *, int, int, char *); + unsigned char *, int, int, unsigned char *); typedef struct xfs_attr_list_context { struct xfs_inode *dp; /* inode */ diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index baf41b5..52519a2 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -521,11 +521,11 @@ xfs_attr_shortform_to_leaf(xfs_da_args_t *args) sfe = &sf->list[0]; for (i = 0; i < sf->hdr.count; i++) { - nargs.name = (char *)sfe->nameval; + nargs.name = sfe->nameval; nargs.namelen = sfe->namelen; - nargs.value = (char *)&sfe->nameval[nargs.namelen]; + nargs.value = &sfe->nameval[nargs.namelen]; nargs.valuelen = sfe->valuelen; - nargs.hashval = xfs_da_hashname((char *)sfe->nameval, + nargs.hashval = xfs_da_hashname(sfe->nameval, sfe->namelen); nargs.flags = XFS_ATTR_NSP_ONDISK_TO_ARGS(sfe->flags); error = xfs_attr_leaf_lookup_int(bp, &nargs); /* set a->index */ @@ -612,10 +612,10 @@ xfs_attr_shortform_list(xfs_attr_list_context_t *context) for (i = 0, sfe = &sf->list[0]; i < sf->hdr.count; i++) { error = context->put_listent(context, sfe->flags, - (char *)sfe->nameval, + sfe->nameval, (int)sfe->namelen, (int)sfe->valuelen, - (char*)&sfe->nameval[sfe->namelen]); + &sfe->nameval[sfe->namelen]); /* * Either search callback finished early or @@ -659,8 +659,8 @@ xfs_attr_shortform_list(xfs_attr_list_context_t *context) } sbp->entno = i; - sbp->hash = xfs_da_hashname((char *)sfe->nameval, sfe->namelen); - sbp->name = (char *)sfe->nameval; + sbp->hash = xfs_da_hashname(sfe->nameval, sfe->namelen); + sbp->name = sfe->nameval; sbp->namelen = sfe->namelen; /* These are bytes, and both on-disk, don't endian-flip */ sbp->valuelen = sfe->valuelen; @@ -818,9 +818,9 @@ xfs_attr_leaf_to_shortform(xfs_dabuf_t *bp, xfs_da_args_t *args, int forkoff) continue; ASSERT(entry->flags & XFS_ATTR_LOCAL); name_loc = xfs_attr_leaf_name_local(leaf, i); - nargs.name = (char *)name_loc->nameval; + nargs.name = name_loc->nameval; nargs.namelen = name_loc->namelen; - nargs.value = (char *)&name_loc->nameval[nargs.namelen]; + nargs.value = &name_loc->nameval[nargs.namelen]; nargs.valuelen = be16_to_cpu(name_loc->valuelen); nargs.hashval = be32_to_cpu(entry->hashval); nargs.flags = XFS_ATTR_NSP_ONDISK_TO_ARGS(entry->flags); @@ -2370,10 +2370,10 @@ xfs_attr_leaf_list_int(xfs_dabuf_t *bp, xfs_attr_list_context_t *context) retval = context->put_listent(context, entry->flags, - (char *)name_loc->nameval, + name_loc->nameval, (int)name_loc->namelen, be16_to_cpu(name_loc->valuelen), - (char *)&name_loc->nameval[name_loc->namelen]); + &name_loc->nameval[name_loc->namelen]); if (retval) return retval; } else { @@ -2397,15 +2397,15 @@ xfs_attr_leaf_list_int(xfs_dabuf_t *bp, xfs_attr_list_context_t *context) return retval; retval = context->put_listent(context, entry->flags, - (char *)name_rmt->name, + name_rmt->name, (int)name_rmt->namelen, valuelen, - (char*)args.value); + args.value); kmem_free(args.value); } else { retval = context->put_listent(context, entry->flags, - (char *)name_rmt->name, + name_rmt->name, (int)name_rmt->namelen, valuelen, NULL); diff --git a/fs/xfs/xfs_attr_sf.h b/fs/xfs/xfs_attr_sf.h index 76ab7b0..919756e 100644 --- a/fs/xfs/xfs_attr_sf.h +++ b/fs/xfs/xfs_attr_sf.h @@ -52,7 +52,7 @@ typedef struct xfs_attr_sf_sort { __uint8_t valuelen; /* length of value */ __uint8_t flags; /* flags bits (see xfs_attr_leaf.h) */ xfs_dahash_t hash; /* this entry's hash value */ - char *name; /* name value, pointer into buffer */ + unsigned char *name; /* name value, pointer into buffer */ } xfs_attr_sf_sort_t; #define XFS_ATTR_SF_ENTSIZE_BYNAME(nlen,vlen) /* space name/value uses */ \ diff --git a/fs/xfs/xfs_vnodeops.h b/fs/xfs/xfs_vnodeops.h index 167a467..774f407 100644 --- a/fs/xfs/xfs_vnodeops.h +++ b/fs/xfs/xfs_vnodeops.h @@ -43,11 +43,11 @@ int xfs_change_file_space(struct xfs_inode *ip, int cmd, int xfs_rename(struct xfs_inode *src_dp, struct xfs_name *src_name, struct xfs_inode *src_ip, struct xfs_inode *target_dp, struct xfs_name *target_name, struct xfs_inode *target_ip); -int xfs_attr_get(struct xfs_inode *ip, const char *name, char *value, - int *valuelenp, int flags); -int xfs_attr_set(struct xfs_inode *dp, const char *name, char *value, - int valuelen, int flags); -int xfs_attr_remove(struct xfs_inode *dp, const char *name, int flags); +int xfs_attr_get(struct xfs_inode *ip, const unsigned char *name, + unsigned char *value, int *valuelenp, int flags); +int xfs_attr_set(struct xfs_inode *dp, const unsigned char *name, + unsigned char *value, int valuelen, int flags); +int xfs_attr_remove(struct xfs_inode *dp, const unsigned char *name, int flags); int xfs_attr_list(struct xfs_inode *dp, char *buffer, int bufsize, int flags, struct attrlist_cursor_kern *cursor); ssize_t xfs_read(struct xfs_inode *ip, struct kiocb *iocb, -- 1.6.5 From SRS0+bDqv+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:29:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0Tj8d141435 for ; Mon, 18 Jan 2010 18:29:46 -0600 X-ASG-Debug-ID: 1263861044-7f4b018b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A66A71C5C791 for ; Mon, 18 Jan 2010 16:30:44 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id Myp9tkLe0hOBVmkE for ; Mon, 18 Jan 2010 16:30:44 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11645680-1927428 for ; Tue, 19 Jan 2010 11:00:43 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX1zM-0003DM-Ex for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:32 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX1zL-0003W3-Qv for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/8] xfs: convert dirnameops to unsigned char names Subject: [PATCH 3/8] xfs: convert dirnameops to unsigned char names Date: Tue, 19 Jan 2010 11:30:21 +1100 Message-Id: <1263861026-13448-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861026-13448-1-git-send-email-david@fromorbit.com> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263861045 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean To be consistent across the codebase, convert the dirnameops to pass the directory names by unsigned char strings. Signed-off-by: Dave Chinner --- fs/xfs/xfs_da_btree.c | 4 ++-- fs/xfs/xfs_da_btree.h | 5 +++-- fs/xfs/xfs_dir2.c | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index c0c8869..0ca556b 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -1534,8 +1534,8 @@ xfs_da_hashname(const __uint8_t *name, int namelen) enum xfs_dacmp xfs_da_compname( struct xfs_da_args *args, - const char *name, - int len) + const unsigned char *name, + int len) { return (args->namelen == len && memcmp(args->name, name, len) == 0) ? XFS_CMP_EXACT : XFS_CMP_DIFFERENT; diff --git a/fs/xfs/xfs_da_btree.h b/fs/xfs/xfs_da_btree.h index 30cd08f..fe9f5a8 100644 --- a/fs/xfs/xfs_da_btree.h +++ b/fs/xfs/xfs_da_btree.h @@ -209,7 +209,8 @@ typedef struct xfs_da_state { */ struct xfs_nameops { xfs_dahash_t (*hashname)(struct xfs_name *); - enum xfs_dacmp (*compname)(struct xfs_da_args *, const char *, int); + enum xfs_dacmp (*compname)(struct xfs_da_args *, + const unsigned char *, int); }; @@ -260,7 +261,7 @@ int xfs_da_shrink_inode(xfs_da_args_t *args, xfs_dablk_t dead_blkno, uint xfs_da_hashname(const __uint8_t *name_string, int name_length); enum xfs_dacmp xfs_da_compname(struct xfs_da_args *args, - const char *name, int len); + const unsigned char *name, int len); xfs_da_state_t *xfs_da_state_alloc(void); diff --git a/fs/xfs/xfs_dir2.c b/fs/xfs/xfs_dir2.c index 93634a7..c21c527 100644 --- a/fs/xfs/xfs_dir2.c +++ b/fs/xfs/xfs_dir2.c @@ -66,8 +66,8 @@ xfs_ascii_ci_hashname( STATIC enum xfs_dacmp xfs_ascii_ci_compname( struct xfs_da_args *args, - const char *name, - int len) + const unsigned char *name, + int len) { enum xfs_dacmp result; int i; -- 1.6.5 From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:29:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0Tjps141434 for ; Mon, 18 Jan 2010 18:29:46 -0600 X-ASG-Debug-ID: 1263861043-3ad4002c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8A2D611F8B49 for ; Mon, 18 Jan 2010 16:30:44 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id TSfjKlHmeFgInpUl for ; Mon, 18 Jan 2010 16:30:44 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11706924-1927428 for ; Tue, 19 Jan 2010 11:00:43 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX1zW-0003Dy-Io for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:42 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX1zL-0003W9-UI for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/8] xfs: xfs_buf_iomove() doesn't care about signedness Subject: [PATCH 5/8] xfs: xfs_buf_iomove() doesn't care about signedness Date: Tue, 19 Jan 2010 11:30:23 +1100 Message-Id: <1263861026-13448-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861026-13448-1-git-send-email-david@fromorbit.com> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263861045 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfs_buf_iomove() uses xfs_caddr_t as it's parameter types, but it doesn't care about the signedness of the variables as it is just copying the data. Change the prototype to use void * so that we don't get sign warnings at call sites. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_buf.c | 2 +- fs/xfs/linux-2.6/xfs_buf.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 158fad4..efd745b 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -1443,7 +1443,7 @@ xfs_buf_iomove( xfs_buf_t *bp, /* buffer to process */ size_t boff, /* starting buffer offset */ size_t bsize, /* length to copy */ - caddr_t data, /* data address */ + void *data, /* data address */ xfs_buf_rw_t mode) /* read/write/zero flag */ { size_t bend, cpoff, csize; diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h index 9a29d18..4f2ad66 100644 --- a/fs/xfs/linux-2.6/xfs_buf.h +++ b/fs/xfs/linux-2.6/xfs_buf.h @@ -243,7 +243,7 @@ extern void xfs_buf_ioend(xfs_buf_t *, int); extern void xfs_buf_ioerror(xfs_buf_t *, int); extern int xfs_buf_iorequest(xfs_buf_t *); extern int xfs_buf_iowait(xfs_buf_t *); -extern void xfs_buf_iomove(xfs_buf_t *, size_t, size_t, xfs_caddr_t, +extern void xfs_buf_iomove(xfs_buf_t *, size_t, size_t, void *, xfs_buf_rw_t); static inline int xfs_buf_iostrategy(xfs_buf_t *bp) -- 1.6.5 From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:29:47 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0TklQ141445 for ; Mon, 18 Jan 2010 18:29:46 -0600 X-ASG-Debug-ID: 1263861044-74db03ad0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 525B011F8B49 for ; Mon, 18 Jan 2010 16:30:45 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id VOynqEUcAULpAS4m for ; Mon, 18 Jan 2010 16:30:45 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11706925-1927428 for ; Tue, 19 Jan 2010 11:00:43 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX1zM-0003DK-BZ for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:32 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX1zL-0003Vy-MK for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:30:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/8] xfs: directory names are unsigned Subject: [PATCH 1/8] xfs: directory names are unsigned Date: Tue, 19 Jan 2010 11:30:19 +1100 Message-Id: <1263861026-13448-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861026-13448-1-git-send-email-david@fromorbit.com> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263861046 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Convert the struct xfs_name to use unsigned chars for the name strings to match both what is stored on disk (__uint8_t) and what the VFS expects (unsigned char). Signed-off-by: Dave Chinner --- fs/xfs/xfs_types.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_types.h b/fs/xfs/xfs_types.h index d725428..b099045 100644 --- a/fs/xfs/xfs_types.h +++ b/fs/xfs/xfs_types.h @@ -151,8 +151,8 @@ typedef enum { } xfs_btnum_t; struct xfs_name { - const char *name; - int len; + const unsigned char *name; + int len; }; #endif /* __XFS_TYPES_H__ */ -- 1.6.5 From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:32:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0WGYN141599 for ; Mon, 18 Jan 2010 18:32:16 -0600 X-ASG-Debug-ID: 1263861194-74c703c20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3FA4011F8B87 for ; Mon, 18 Jan 2010 16:33:15 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id lRma6DyCGUvTxYCk for ; Mon, 18 Jan 2010 16:33:15 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11542992-1927428 for ; Tue, 19 Jan 2010 11:03:14 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX21v-0003E7-Lm for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:33:11 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX21v-0003Xm-0J for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:33:11 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/2] xfsprogs: Cleaner build output Subject: [PATCH 0/2] xfsprogs: Cleaner build output Date: Tue, 19 Jan 2010 11:33:04 +1100 Message-Id: <1263861186-13589-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263861196 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0033 1.0000 -1.9993 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is basically the same change that I last posted, but with the "don't remove configure on make clean" bits split into a separate patch as Christoph asked. From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:32:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0WG6S141602 for ; Mon, 18 Jan 2010 18:32:17 -0600 X-ASG-Debug-ID: 1263861194-029602e80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EC1E411F8B89 for ; Mon, 18 Jan 2010 16:33:14 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id A1vDLLjSlK3vpXEA for ; Mon, 18 Jan 2010 16:33:14 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11542991-1927428 for ; Tue, 19 Jan 2010 11:03:13 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX21v-0003E8-Ol for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:33:11 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX21v-0003Xr-4n for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:33:11 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/2] xfsprogs: Make the compile output cleaner V3 Subject: [PATCH 2/2] xfsprogs: Make the compile output cleaner V3 Date: Tue, 19 Jan 2010 11:33:06 +1100 Message-Id: <1263861186-13589-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861186-13589-1-git-send-email-david@fromorbit.com> References: <1263861186-13589-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263861195 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We don't need to see every compiler command line for every file that is compiled. This makes it hard to see warnings and errors during compile. For progress notification, we really only need to see the diretory/file being operated on. Turn down the verbosity of output by suppressing various make output and provide better overall visibility of which directory is being operated on, what the operation is and what is being done to the files by the build/clean process. Sample output from a build: .... Building libxlog [CC] xfs_log_recover.c [CC] util.c [LD] libxlog.la Building libxcmd [CC] command.c [CC] input.c [CC] paths.c [CC] projects.c [CC] help.c [CC] quit.c [LD] libxcmd.la .... Sample output from cleaning: $ make clean Cleaning include Cleaning libxfs Cleaning libxlog Cleaning libxcmd Cleaning libhandle Cleaning libdisk Cleaning copy Cleaning db .... If you want to see a noisy build (i.e. every command), use: $ make V=1 and that will output all the commands that are now suppressed by default. Portions of this patch were contributed by Eric Sandeen. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig --- Makefile | 41 ++++++++++++++++++++++++++++------------- doc/Makefile | 3 ++- include/Makefile | 3 ++- include/buildmacros | 10 +++++----- include/buildrules | 30 +++++++++++++++++++++--------- mkfs/Makefile | 3 ++- 6 files changed, 60 insertions(+), 30 deletions(-) diff --git a/Makefile b/Makefile index a7615ca..62c4258 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,21 @@ # Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved. # +ifeq ("$(origin V)", "command line") + BUILD_VERBOSE = $(V) +endif +ifndef BUILD_VERBOSE + BUILD_VERBOSE = 0 +endif + +ifeq ($(BUILD_VERBOSE),1) + Q = +else + Q = @ +endif + +MAKEOPTS = --no-print-directory Q=$(Q) + TOPDIR = . HAVE_BUILDDEFS = $(shell test -f $(TOPDIR)/include/builddefs && echo yes || echo no) @@ -36,9 +51,9 @@ SUBDIRS = include $(LIB_SUBDIRS) $(TOOL_SUBDIRS) default: include/builddefs include/platform_defs.h ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SUBDIRS) + $(Q)$(MAKE) $(MAKEOPTS) $(SUBDIRS) endif # tool/lib dependencies @@ -80,7 +95,7 @@ include/platform_defs.h: include/builddefs ## Recover from the removal of $@ @if test -f $@; then :; else \ rm -f include/builddefs; \ - $(MAKE) $(AM_MAKEFLAGS) include/builddefs; \ + $(MAKE) $(MAKEOPTS) $(AM_MAKEFLAGS) include/builddefs; \ fi install: default $(addsuffix -install,$(SUBDIRS)) @@ -101,29 +116,29 @@ install-qa: install $(addsuffix -install-qa,$(SUBDIRS)) $(MAKE) -C $* install-qa distclean: clean - rm -f $(DISTDIRT) + $(Q)rm -f $(DISTDIRT) realclean: distclean - rm -f $(CONFIGURE) + $(Q)rm -f $(CONFIGURE) # # All this gunk is to allow for a make dist on an unconfigured tree # dist: include/builddefs include/platform_defs.h default ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SRCTAR) + $(Q)$(MAKE) $(MAKEOPTS) $(SRCTAR) endif deb: include/builddefs include/platform_defs.h ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) -C . $@ + $(Q)$(MAKE) $(MAKEOPTS) -C . $@ else - $(MAKE) $(SRCDIR) - $(MAKE) -C po - $(MAKE) source-link - cd $(SRCDIR) && dpkg-buildpackage + $(Q)$(MAKE) $(MAKEOPTS) $(SRCDIR) + $(Q)$(MAKE) $(MAKEOPTS) -C po + $(Q)$(MAKE) $(MAKEOPTS) source-link + $(Q)cd $(SRCDIR) && dpkg-buildpackage endif $(SRCDIR) : $(_FORCE) @@ -131,6 +146,6 @@ $(SRCDIR) : $(_FORCE) mkdir -p $@ $(SRCTAR) : default $(SRCDIR) - $(MAKE) source-link + $(Q)$(MAKE) $(MAKEOPTS) source-link unset TAPE; $(TAR) -cf - $(SRCDIR) | $(ZIP) --best > $@ && \ echo Wrote: $@ diff --git a/doc/Makefile b/doc/Makefile index 8f65b66..86ac2ca 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -13,7 +13,8 @@ default: CHANGES.gz include $(BUILDRULES) CHANGES.gz: - $(ZIP) --best -c < CHANGES > $@ + @echo " [ZIP] $@" + $(Q)$(ZIP) --best -c < CHANGES > $@ install: default $(INSTALL) -m 755 -d $(PKG_DOC_DIR) diff --git a/include/Makefile b/include/Makefile index d89480e..bc787db 100644 --- a/include/Makefile +++ b/include/Makefile @@ -43,7 +43,8 @@ LDIRT = xfs disk default install: xfs disk xfs disk: - $(LN_S) . $@ + @echo " [LN] $@" + $(Q)$(LN_S) . $@ include $(BUILDRULES) diff --git a/include/buildmacros b/include/buildmacros index 099570f..62babca 100644 --- a/include/buildmacros +++ b/include/buildmacros @@ -13,7 +13,7 @@ LDFLAGS += $(LOADERFLAGS) $(LLDFLAGS) LTLDFLAGS += $(LOADERFLAGS) LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB) -MAKEOPTS = --no-print-directory +MAKEOPTS = --no-print-directory Q=$(Q) SRCFILES = Makefile $(HFILES) $(CFILES) $(LSRCFILES) $(LFILES) $(YFILES) SRCFILES += $(QAHFILES) @@ -45,10 +45,10 @@ LIBNAME = $(basename $(LTLIBRARY)) LTOBJECTS = $(OBJECTS:.o=.lo) LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -LTLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) -LTEXEC = $(LIBTOOL) --mode=execute -LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CCF) +LTLINK = $(LIBTOOL) --quiet --tag=CC --mode=link $(CC) +LTEXEC = $(LIBTOOL) --quiet --mode=execute +LTINSTALL = $(LIBTOOL) --quiet --mode=install $(INSTALL) +LTCOMPILE = $(LIBTOOL) --quiet --tag=CC --mode=compile $(CCF) ifeq ($(ENABLE_SHARED),yes) LTLDFLAGS += -rpath $(PKG_ROOT_LIB_DIR) diff --git a/include/buildrules b/include/buildrules index a06d480..fdc60e6 100644 --- a/include/buildrules +++ b/include/buildrules @@ -7,10 +7,11 @@ _BUILDRULES_INCLUDED_ = 1 include $(TOPDIR)/include/builddefs clean clobber : $(addsuffix -clean,$(SUBDIRS)) - rm -f $(DIRT) - rm -fr $(DIRDIRT) + @rm -f $(DIRT) + @rm -fr $(DIRDIRT) %-clean: - $(MAKE) -C $* clean + @echo "Cleaning $*" + $(Q)$(MAKE) $(MAKEOPTS) -C $* clean # Never blow away subdirs ifdef SUBDIRS @@ -18,7 +19,8 @@ ifdef SUBDIRS .PHONY: $(SUBDIRS) $(SUBDIRS): - $(MAKE) -C $@ + @echo "Building $@" + $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@ endif source-link: @@ -38,20 +40,29 @@ source-link: ifdef LTCOMMAND $(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES) - $(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) + @echo " [LD] $@" + $(Q)$(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) endif ifdef LTLIBRARY $(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS) - $(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) + @echo " [LD] $@" + $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) %.lo: %.c - $(LTCOMPILE) -c $< + @echo " [CC] $@" + $(Q)$(LTCOMPILE) -c $< +else +%.o: %.c + @echo " [CC] $@" + $(Q)$(CC) $(CFLAGS) -c $< + endif ifdef POTHEAD $(POTHEAD): $(XGETTEXTFILES) - $(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES) + @echo " [GETTXT] $@" + $(Q)$(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES) # Update translations update-po: $(POTHEAD) $(wildcard $(TOPDIR)/po/*.po) @@ -70,7 +81,8 @@ update-po: $(POTHEAD) $(wildcard $(TOPDIR)/po/*.po) done %.mo: %.po - $(MSGFMT) -c --statistics -o $@ $< + @echo " [MSGFMT] $@" + $(Q)$(MSGFMT) -c --statistics -o $@ $< endif endif # _BUILDRULES_INCLUDED_ diff --git a/mkfs/Makefile b/mkfs/Makefile index 9fcadf2..a749262 100644 --- a/mkfs/Makefile +++ b/mkfs/Makefile @@ -36,7 +36,8 @@ endif include $(BUILDRULES) $(FSTYP): - $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBDISK) $(PLDLIBS) + @echo " [CC] $@" + $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LIBDISK) $(PLDLIBS) install: default $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR) -- 1.6.5 From SRS0+4y67+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:32:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_63,J_CHICKENPOX_65,J_CHICKENPOX_66,URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0WQon141642 for ; Mon, 18 Jan 2010 18:32:26 -0600 X-ASG-Debug-ID: 1263861203-7f4a01cb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 991151C5C7B5 for ; Mon, 18 Jan 2010 16:33:24 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id XfNfcz1ZGShhxcPm for ; Mon, 18 Jan 2010 16:33:24 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11448792-1927428 for ; Tue, 19 Jan 2010 11:03:22 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX225-0003EJ-Ni for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:33:21 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX21v-0003Xo-1t for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:33:11 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/2] xfsprogs: Do not remove configure information on clean Subject: [PATCH 1/2] xfsprogs: Do not remove configure information on clean Date: Tue, 19 Jan 2010 11:33:05 +1100 Message-Id: <1263861186-13589-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861186-13589-1-git-send-email-david@fromorbit.com> References: <1263861186-13589-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263861205 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1209 1.0000 -1.2688 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.27 X-Barracuda-Spam-Status: No, SCORE=-1.27 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Ŋormal packaging practice is to remove the configure scripts on a 'make distclean' so that a 'make clean' doesn't result in having to rerun the configure scripts. Change the clean targets in the top level makefile to only clear configure files on a distclean. Signed-off-by: Dave Chinner --- Makefile | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 2d394e4..a7615ca 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ SRCTAR = $(PKG_NAME)-$(PKG_VERSION).tar.gz CONFIGURE = aclocal.m4 configure config.guess config.sub install-sh ltmain.sh LSRCFILES = configure.in release.sh README VERSION $(CONFIGURE) -LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ +DISTDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ built .census install.* install-dev.* *.gz autom4te.cache/* libtool \ include/builddefs include/platform_defs.h @@ -101,7 +101,7 @@ install-qa: install $(addsuffix -install-qa,$(SUBDIRS)) $(MAKE) -C $* install-qa distclean: clean - rm -f $(LDIRT) + rm -f $(DISTDIRT) realclean: distclean rm -f $(CONFIGURE) -- 1.6.5 From SRS0+4y67+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:36:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0a6Hw142248 for ; Mon, 18 Jan 2010 18:36:06 -0600 X-ASG-Debug-ID: 1263861424-7f4d01b30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 56D961C5C7D0 for ; Mon, 18 Jan 2010 16:37:04 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id eEsiMh3MUpFNMOwQ for ; Mon, 18 Jan 2010 16:37:04 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11448821-1927428 for ; Tue, 19 Jan 2010 11:07:03 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX25d-0003EU-TH for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:01 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX25d-0003aL-7o for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:01 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/7] xfsprogs: Fix build warnings V3 Subject: [PATCH 0/7] xfsprogs: Fix build warnings V3 Date: Tue, 19 Jan 2010 11:36:46 +1100 Message-Id: <1263861413-13729-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263861426 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0351 1.0000 -1.7940 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.79 X-Barracuda-Spam-Status: No, SCORE=-1.79 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is mostly the same series as posted last time, but I've dropped the sign warning changes in libxfs until the kernel code is fixed. The only other change is patch 7/7 - this version doesn't fall off the top of the btree and SEGV during xfsqa runs. From SRS0+bDqv+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:36:07 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0a6Pn142252 for ; Mon, 18 Jan 2010 18:36:07 -0600 X-ASG-Debug-ID: 1263861424-7f4101c40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A8D821C5C7D1 for ; Mon, 18 Jan 2010 16:37:04 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id oijt6dqeIrj9Vx8e for ; Mon, 18 Jan 2010 16:37:04 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11645729-1927428 for ; Tue, 19 Jan 2010 11:07:03 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX25e-0003Eh-5C for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX25d-0003aY-HH for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:01 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/7] xfsprogs: fix print format warnings in xfs_io Subject: [PATCH 5/7] xfsprogs: fix print format warnings in xfs_io Date: Tue, 19 Jan 2010 11:36:51 +1100 Message-Id: <1263861413-13729-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861413-13729-1-git-send-email-david@fromorbit.com> References: <1263861413-13729-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263861426 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0200 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig --- io/madvise.c | 2 +- io/mincore.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/io/madvise.c b/io/madvise.c index cd16a4c..3235402 100644 --- a/io/madvise.c +++ b/io/madvise.c @@ -96,7 +96,7 @@ madvise_f( return 0; } else if (llength > (size_t)llength) { printf(_("length argument too large -- %lld\n"), - llength); + (long long)llength); return 0; } else length = (size_t)llength; diff --git a/io/mincore.c b/io/mincore.c index d534540..60625ef 100644 --- a/io/mincore.c +++ b/io/mincore.c @@ -56,7 +56,7 @@ mincore_f( return 0; } else if (llength > (size_t)llength) { printf(_("length argument too large -- %lld\n"), - llength); + (long long)llength); return 0; } else length = (size_t)llength; -- 1.6.5 From SRS0+8aWY+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:36:07 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_53,J_CHICKENPOX_64 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0a6Bv142247 for ; Mon, 18 Jan 2010 18:36:07 -0600 X-ASG-Debug-ID: 1263861423-029803000000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B7C21F1C57D for ; Mon, 18 Jan 2010 16:37:04 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id Zd2mzlhdS6toe3Dl for ; Mon, 18 Jan 2010 16:37:04 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11561590-1927428 for ; Tue, 19 Jan 2010 11:07:03 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX25e-0003El-9J for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX25d-0003ad-Kd for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:01 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 7/7] xfsprogs: fix build warnings in repair V2 Subject: [PATCH 7/7] xfsprogs: fix build warnings in repair V2 Date: Tue, 19 Jan 2010 11:36:53 +1100 Message-Id: <1263861413-13729-8-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861413-13729-1-git-send-email-david@fromorbit.com> References: <1263861413-13729-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263861425 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Rewrite the loop in btree_get_prev() so that the compiler can see that it returns if the cur->index is zero so it doesn't complain about possible array bound underflows when getting the key out of the buffer. Version 2 fixes a height overflow in the reworked loop. Fix the directory name sign warnings by casting to (uchar_t *) appropriately. Signed-off-by: Dave Chinner --- repair/btree.c | 12 +++++++----- repair/phase6.c | 10 +++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/repair/btree.c b/repair/btree.c index 3141388..22ab4d9 100644 --- a/repair/btree.c +++ b/repair/btree.c @@ -194,12 +194,14 @@ btree_get_prev( } /* else need to go up and back down the tree to find the previous */ - - while (cur->index == 0) { - if (++level == root->height) - return NULL; + do { + if (cur->index) + break; cur++; - } + } while (++level < root->height); + + if (level == root->height) + return NULL; /* the key is in the current level */ if (key) diff --git a/repair/phase6.c b/repair/phase6.c index d056063..884ad62 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -35,7 +35,7 @@ static struct cred zerocr; static struct fsxattr zerofsx; static xfs_ino_t orphanage_ino; -static struct xfs_name xfs_name_dot = {".", 1}; +static struct xfs_name xfs_name_dot = {(uchar_t *)".", 1}; /* * Data structures used to keep track of directories where the ".." @@ -145,7 +145,7 @@ dir_hash_add( ASSERT(!hashtab->names_duped); - xname.name = name; + xname.name = (uchar_t *)name; xname.len = namelen; junk = name[0] == '/'; @@ -355,7 +355,7 @@ dir_hash_dup_names(dir_hash_tab_t *hashtab) for (p = hashtab->first; p; p = p->nextbyorder) { name = malloc(p->name.len); memcpy(name, p->name.name, p->name.len); - p->name.name = name; + p->name.name = (uchar_t *)name; } hashtab->names_duped = 1; } @@ -843,7 +843,7 @@ mk_orphanage(xfs_mount_t *mp) do_error(_("%d - couldn't iget root inode to obtain %s\n"), i, ORPHANAGE); - xname.name = ORPHANAGE; + xname.name = (uchar_t *)ORPHANAGE; xname.len = strlen(ORPHANAGE); if (libxfs_dir_lookup(NULL, pip, &xname, &ino, NULL) == 0) return ino; @@ -944,7 +944,7 @@ mv_orphanage( ASSERT(xfs_sb_version_hasdirv2(&mp->m_sb)); - xname.name = fname; + xname.name = (uchar_t *)fname; xname.len = snprintf(fname, sizeof(fname), "%llu", (unsigned long long)ino); -- 1.6.5 From SRS0+4y67+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:36:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0a67m142246 for ; Mon, 18 Jan 2010 18:36:07 -0600 X-ASG-Debug-ID: 1263861424-7f4801a60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 181861C5C7CE for ; Mon, 18 Jan 2010 16:37:04 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id t9YwjNDK8UlAq0Fi for ; Mon, 18 Jan 2010 16:37:04 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11448820-1927428 for ; Tue, 19 Jan 2010 11:07:03 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX25e-0003EY-26 for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX25d-0003aS-E2 for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:01 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/7] xfsprogs: fix some trivial warnings in xfs_db Subject: [PATCH 3/7] xfsprogs: fix some trivial warnings in xfs_db Date: Tue, 19 Jan 2010 11:36:49 +1100 Message-Id: <1263861413-13729-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861413-13729-1-git-send-email-david@fromorbit.com> References: <1263861413-13729-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263861426 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Three warnings, none harmful - one dir2 name sign warning and two cases where gcc can't work out if a variable is initialised correctly in a child function or not. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig --- db/check.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/db/check.c b/db/check.c index 7620d9c..f94a16b 100644 --- a/db/check.c +++ b/db/check.c @@ -2317,7 +2317,7 @@ process_data_dir_v2( tag_err += be16_to_cpu(*tagp) != (char *)dep - (char *)data; addr = xfs_dir2_db_off_to_dataptr(mp, db, (char *)dep - (char *)data); - xname.name = (char *)dep->name; + xname.name = (uchar_t *)dep->name; xname.len = dep->namelen; dir_hash_add(mp->m_dirnameops->hashname(&xname), addr); ptr += xfs_dir2_data_entsize(dep->namelen); @@ -3059,7 +3059,7 @@ process_leaf_node_dir_v2( xfs_ino_t lino; int nex; xfs_ino_t parent; - int t; + int t = 0; int v; int v2; int x; @@ -3403,7 +3403,7 @@ process_quota( xfs_fileoff_t qbno; char *s = NULL; int scicb; - int t; + int t = 0; switch (qtype) { case IS_USER_QUOTA: -- 1.6.5 From SRS0+8aWY+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:36:12 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_65 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0aBCc142305 for ; Mon, 18 Jan 2010 18:36:11 -0600 X-ASG-Debug-ID: 1263861429-028403060000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F1828F1C57F for ; Mon, 18 Jan 2010 16:37:09 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id 170gJLnTNCoZgMEC for ; Mon, 18 Jan 2010 16:37:09 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11561591-1927428 for ; Tue, 19 Jan 2010 11:07:08 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX25e-0003EW-0a for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX25d-0003aP-CI for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:01 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/7] xfsprogs: fix warning in adfs superblock probe Subject: [PATCH 2/7] xfsprogs: fix warning in adfs superblock probe Date: Tue, 19 Jan 2010 11:36:48 +1100 Message-Id: <1263861413-13729-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861413-13729-1-git-send-email-david@fromorbit.com> References: <1263861413-13729-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263861430 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0071 1.0000 -1.9745 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.97 X-Barracuda-Spam-Status: No, SCORE=-1.97 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The probe gets an array subscript warning because gcc is not smart enough to realise that a structure made up of multiple byte arrays in it can be referenced as a flat buffer and it is valid to access bytes beyond the first array in the structure.... Fix it by passing the adfs superblock in and using the internal checksum array to get the checksum value. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig --- libdisk/fstype.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libdisk/fstype.c b/libdisk/fstype.c index f84b4e4..548f297 100644 --- a/libdisk/fstype.c +++ b/libdisk/fstype.c @@ -142,16 +142,16 @@ may_be_swap(const char *s) { /* rather weak necessary condition */ static int -may_be_adfs(const char *s) { +may_be_adfs(const struct adfs_super_block *sb) { char *p; int sum; - p = (char *) s + 511; + p = (char *)sb->s_checksum; sum = 0; - while(--p != s) + while(--p != (char *)sb) sum = (sum >> 8) + (sum & 0xff) + *p; - return (sum == p[511]); + return (sum & 0xff) == sb->s_checksum[0]; } static int is_reiserfs_magic_string (struct reiserfs_super_block * rs) @@ -304,7 +304,7 @@ fstype(const char *device) { goto io_error; /* only a weak test */ - if (may_be_adfs((char *) &adfssb) + if (may_be_adfs(&adfssb) && (adfsblksize(adfssb) >= 8 && adfsblksize(adfssb) <= 10)) type = "adfs"; -- 1.6.5 From SRS0+4y67+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:36:16 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0aFbd142327 for ; Mon, 18 Jan 2010 18:36:16 -0600 X-ASG-Debug-ID: 1263861433-7f4c01bf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9FC111C5C65A for ; Mon, 18 Jan 2010 16:37:14 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id rGyjHO1csUeUhAVV for ; Mon, 18 Jan 2010 16:37:14 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11448822-1927428 for ; Tue, 19 Jan 2010 11:07:13 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX25o-0003Ey-88 for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:12 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX25d-0003ab-Iw for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:01 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 6/7] xfsprogs: fix sign warning in mkfs directory code Subject: [PATCH 6/7] xfsprogs: fix sign warning in mkfs directory code Date: Tue, 19 Jan 2010 11:36:52 +1100 Message-Id: <1263861413-13729-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861413-13729-1-git-send-email-david@fromorbit.com> References: <1263861413-13729-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263861435 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0187 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig --- mkfs/proto.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/mkfs/proto.c b/mkfs/proto.c index 8fc8c4c..3723685 100644 --- a/mkfs/proto.c +++ b/mkfs/proto.c @@ -432,7 +432,7 @@ parseproto( mode |= val; creds.cr_uid = (int)getnum(pp); creds.cr_gid = (int)getnum(pp); - xname.name = name; + xname.name = (uchar_t *)name; xname.len = name ? strlen(name) : 0; tp = libxfs_trans_alloc(mp, 0); flags = XFS_ILOG_CORE; -- 1.6.5 From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:36:16 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0aFd0142323 for ; Mon, 18 Jan 2010 18:36:15 -0600 X-ASG-Debug-ID: 1263861433-027b03600000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4B89111F797F for ; Mon, 18 Jan 2010 16:37:13 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id GciyH9BjozFi3D6D for ; Mon, 18 Jan 2010 16:37:13 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11543018-1927428 for ; Tue, 19 Jan 2010 11:07:12 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX25e-0003Ed-4G for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:02 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX25d-0003aV-Ff for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:01 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/7] xfsprogs: fix trivial warnings in xfs_fsr Subject: [PATCH 4/7] xfsprogs: fix trivial warnings in xfs_fsr Date: Tue, 19 Jan 2010 11:36:50 +1100 Message-Id: <1263861413-13729-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861413-13729-1-git-send-email-david@fromorbit.com> References: <1263861413-13729-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263861435 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean GCC complains about assignments between (unsigned long long *) and (__u64 *) pointers. Just add a cast to shut it up. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig --- fsr/xfs_fsr.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fsr/xfs_fsr.c b/fsr/xfs_fsr.c index 21f08c3..1f933c7 100644 --- a/fsr/xfs_fsr.c +++ b/fsr/xfs_fsr.c @@ -133,7 +133,7 @@ xfs_bulkstat_single(int fd, xfs_ino_t *lastip, xfs_bstat_t *ubuffer) { xfs_fsop_bulkreq_t bulkreq; - bulkreq.lastip = lastip; + bulkreq.lastip = (__u64 *)lastip; bulkreq.icount = 1; bulkreq.ubuffer = ubuffer; bulkreq.ocount = NULL; @@ -146,7 +146,7 @@ xfs_bulkstat(int fd, xfs_ino_t *lastip, int icount, { xfs_fsop_bulkreq_t bulkreq; - bulkreq.lastip = lastip; + bulkreq.lastip = (__u64 *)lastip; bulkreq.icount = icount; bulkreq.ubuffer = ubuffer; bulkreq.ocount = ocount; -- 1.6.5 From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:36:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0aHPm142351 for ; Mon, 18 Jan 2010 18:36:17 -0600 X-ASG-Debug-ID: 1263861433-027b03600002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3EEC911F797F for ; Mon, 18 Jan 2010 16:37:15 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id QJMRQpMxw8OjNqJb for ; Mon, 18 Jan 2010 16:37:15 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11543019-1927428 for ; Tue, 19 Jan 2010 11:07:13 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX25d-0003EV-Uq for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:01 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX25d-0003aN-9R for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:37:01 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/7] xfsprogs: fix missing error check in xfs_rtfree_range in libxfs Subject: [PATCH 1/7] xfsprogs: fix missing error check in xfs_rtfree_range in libxfs Date: Tue, 19 Jan 2010 11:36:47 +1100 Message-Id: <1263861413-13729-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861413-13729-1-git-send-email-david@fromorbit.com> References: <1263861413-13729-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263861437 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When xfs_rtfind_forw() returns an error, the block is returned uninitialised. xfs_rtfree_range() is not checking the error return, so could be using an uninitialised block number for modifying bitmap summary info. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig --- libxfs/xfs_rtalloc.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/libxfs/xfs_rtalloc.c b/libxfs/xfs_rtalloc.c index 6c3da52..4fbdaa9 100644 --- a/libxfs/xfs_rtalloc.c +++ b/libxfs/xfs_rtalloc.c @@ -466,6 +466,8 @@ xfs_rtfree_range( */ error = xfs_rtfind_forw(mp, tp, end, mp->m_sb.sb_rextents - 1, &postblock); + if (error) + return error; /* * If there are blocks not being freed at the front of the * old extent, add summary data for them to be allocated. -- 1.6.5 From SRS0+8aWY+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:40:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0exRK142602 for ; Mon, 18 Jan 2010 18:40:59 -0600 X-ASG-Debug-ID: 1263861717-029b03510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0918A11F8BD8 for ; Mon, 18 Jan 2010 16:41:57 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id PJ3Yics9GkrUkSJr for ; Mon, 18 Jan 2010 16:41:57 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11561630-1927428 for ; Tue, 19 Jan 2010 11:11:56 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX2AN-0003G0-Lu for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:41:55 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX2AN-0003ct-1l for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:41:55 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/2] xfs: rearrange xfs_mod_sb() to avoid array subscript warning Subject: [PATCH 2/2] xfs: rearrange xfs_mod_sb() to avoid array subscript warning Date: Tue, 19 Jan 2010 11:41:51 +1100 Message-Id: <1263861711-13900-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861711-13900-1-git-send-email-david@fromorbit.com> References: <1263861711-13900-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263861719 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean gcc warns of an array subscript out of bounds in xfs_mod_sb(). The code is written in such a way that if the array subscript is out of bounds, then it will assert fail. Rearrange the code to avoid the bounds check warning. Signed-off-by: Dave Chinner --- fs/xfs/xfs_mount.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 0df5045..d95bd18 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -1631,15 +1631,14 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fields) xfs_sb_to_disk(XFS_BUF_TO_SBP(bp), &mp->m_sb, fields); /* find modified range */ + f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields); + ASSERT((1LL << f) & XFS_SB_MOD_BITS); + last = xfs_sb_info[f + 1].offset - 1; f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields); ASSERT((1LL << f) & XFS_SB_MOD_BITS); first = xfs_sb_info[f].offset; - f = (xfs_sb_field_t)xfs_highbit64((__uint64_t)fields); - ASSERT((1LL << f) & XFS_SB_MOD_BITS); - last = xfs_sb_info[f + 1].offset - 1; - xfs_trans_log_buf(tp, bp, first, last); } -- 1.6.5 From SRS0+bDqv+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:40:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0exTV142603 for ; Mon, 18 Jan 2010 18:40:59 -0600 X-ASG-Debug-ID: 1263861717-7f4a02100000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2F0AD1C5C819 for ; Mon, 18 Jan 2010 16:41:57 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id E1pBLfPUrfvSZdzc for ; Mon, 18 Jan 2010 16:41:57 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11645766-1927428 for ; Tue, 19 Jan 2010 11:11:56 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX2AN-0003Fy-Ip for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:41:55 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX2AM-0003cp-TW for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:41:54 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/2] xfs: warning fixes needed for libxfs Subject: [PATCH 0/2] xfs: warning fixes needed for libxfs Date: Tue, 19 Jan 2010 11:41:49 +1100 Message-Id: <1263861711-13900-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263861719 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0762 1.0000 -1.5372 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.54 X-Barracuda-Spam-Status: No, SCORE=-1.54 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean These two patches are needed to suppress warnings in libxfs. The changes are being made to the kernel code so that a resync of the kernel code to the userspace libxfs will fix these warnings. From SRS0+8Vph+48+fromorbit.com=dave@internode.on.net Mon Jan 18 18:41:10 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J0f95l142649 for ; Mon, 18 Jan 2010 18:41:10 -0600 X-ASG-Debug-ID: 1263861727-471c00140000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A980111F8BDA for ; Mon, 18 Jan 2010 16:42:08 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id vbMpGtxKM9mHZnFw for ; Mon, 18 Jan 2010 16:42:08 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11404573-1927428 for ; Tue, 19 Jan 2010 11:12:07 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX2AN-0003Fz-KK for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:41:55 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX2AM-0003cr-V7 for xfs@oss.sgi.com; Tue, 19 Jan 2010 11:41:54 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/2] xfs: suppress spurious uninitialised var warning in xfs_bmapi() Subject: [PATCH 1/2] xfs: suppress spurious uninitialised var warning in xfs_bmapi() Date: Tue, 19 Jan 2010 11:41:50 +1100 Message-Id: <1263861711-13900-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263861711-13900-1-git-send-email-david@fromorbit.com> References: <1263861711-13900-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263861729 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Initialise the xfs_bmalloca_t structure to zero to avoid uninitialised variable warnings. This is done by zeroing the arg structure rather than using the uninitialised_var() trick so we know for certain that the structure is correctly initialised as xfs_bmapi is a very complex function and it is difficult to prove warnings are spurious. Signed-off-by: Dave Chinner --- fs/xfs/xfs_bmap.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 7c6d9ac..1869fb9 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -4471,7 +4471,7 @@ xfs_bmapi( xfs_fsblock_t abno; /* allocated block number */ xfs_extlen_t alen; /* allocated extent length */ xfs_fileoff_t aoff; /* allocated file offset */ - xfs_bmalloca_t bma; /* args for xfs_bmap_alloc */ + xfs_bmalloca_t bma = { 0 }; /* args for xfs_bmap_alloc */ xfs_btree_cur_t *cur; /* bmap btree cursor */ xfs_fileoff_t end; /* end of mapped file region */ int eof; /* we've hit the end of extents */ -- 1.6.5 From SRS0+3r1K+48+fromorbit.com=david@internode.on.net Mon Jan 18 19:03:48 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J13lec143936 for ; Mon, 18 Jan 2010 19:03:47 -0600 X-ASG-Debug-ID: 1263863085-4e9100aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7F6A211F8D1E for ; Mon, 18 Jan 2010 17:04:46 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id mk8S1cyHOYwNDQry for ; Mon, 18 Jan 2010 17:04:46 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11543199-1927428 for multiple; Tue, 19 Jan 2010 11:34:45 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NX2WR-0003Hf-OR; Tue, 19 Jan 2010 12:04:43 +1100 Date: Tue, 19 Jan 2010 12:04:43 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] mkfs: don't warn about topology when mkfsing a file Subject: Re: [PATCH] mkfs: don't warn about topology when mkfsing a file Message-ID: <20100119010443.GK7264@discord.disaster> References: <4B54B4D1.7020500@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B54B4D1.7020500@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263863087 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 18, 2010 at 01:21:53PM -0600, Eric Sandeen wrote: > Some tests were failing for me like: > > QA output created by 206 > === truncate file === > === mkfs.xfs === > +warning: unable to probe device toplology for device /mnt/test/fsfile.21615 > ... > > I thought about filtering the tests, but ... > > It seems that we shouldn't even be trying to get topology for a > plain file, should we? And then we won't warn about failure. > > > Signed-off-by: Eric Sandeen Sound pretty sane to me. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From SRS0+3r1K+48+fromorbit.com=david@internode.on.net Mon Jan 18 19:19:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J1JTWg145256 for ; Mon, 18 Jan 2010 19:19:29 -0600 X-ASG-Debug-ID: 1263863286-539b00630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AC95811F8B0B for ; Mon, 18 Jan 2010 17:08:06 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id hSBweH7FC0PosJlF for ; Mon, 18 Jan 2010 17:08:06 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11527257-1927428 for multiple; Tue, 19 Jan 2010 11:38:05 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NX2Zf-0003Ht-Vf; Tue, 19 Jan 2010 12:08:04 +1100 Date: Tue, 19 Jan 2010 12:08:03 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsteststs: get fsstress DIO working on non-xfs filesystems Subject: Re: [PATCH] xfsteststs: get fsstress DIO working on non-xfs filesystems Message-ID: <20100119010803.GL7264@discord.disaster> References: <4B54C8AB.6080607@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B54C8AB.6080607@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263863288 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20190 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 18, 2010 at 02:46:35PM -0600, Eric Sandeen wrote: > Pretty sure all DIO IO fails in fsstress today since XFS_IOC_DIOINFO > fails. If so, rather than just bailing out on the op, assign > some sane default DIO parameters. > > This falls down for 4k sector devices but not really sure how to get > the underlying sector size easily from here; I think we can live > with this for now. ioctl(fd, BLKSSZGET, ...) perhaps? And then if that fails, just hard code it? > hch suggested moving XFS_IOC_DIOINFO up higher in the vfs, that's > probably a good idea in the long run. Yeah, that makes sense to do. Cheers, Dave. -- Dave Chinner david@fromorbit.com From jgrosshart@gmail.com Mon Jan 18 22:17:28 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=BAYES_00,DATE_IN_FUTURE_03_06, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J4HRl9154692 for ; Mon, 18 Jan 2010 22:17:27 -0600 X-ASG-Debug-ID: 1263874705-41ec02200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-qy0-f188.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7A5121C5D54F for ; Mon, 18 Jan 2010 20:18:26 -0800 (PST) Received: from mail-qy0-f188.google.com (mail-qy0-f188.google.com [209.85.221.188]) by cuda.sgi.com with ESMTP id MoVksV0aEwx4be1O for ; Mon, 18 Jan 2010 20:18:26 -0800 (PST) Received: by qyk26 with SMTP id 26so950574qyk.5 for ; Mon, 18 Jan 2010 20:18:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:content-type :content-transfer-encoding; bh=S3gn4KoIE0SGduyssJtUcyo4OSb5OEmWMXpFsir7+lw=; b=BwPR4sJuIIxpe9DIskieQ2ZK0o+f3tVxPF3Gx85b/hVTpss3d9pJQ2RNLrqUxef0H9 jS6UV9prn7OH4A5IT/jk9Ld5vSQTbJ8uOlWDWHh2EaDZ4FG+zJGiJ9C8RhryEdSw66SQ lWsiLN+GeUir6k9KVckvd6uT07uqX9xRt+4qo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; b=wEUXFV2CBS8RXc8XiJy8jr1cKwn6xW1Tc/jD+7xv9D7lKDcZhAHwxH0wNK2NZ7boqS lG+EsTJ/49I0FzdYoaPqTFKavm+sMoied+yN6PKDd3xrg7IoOJwRcRPiZKLWGMP+08OQ 2+qQPzGaRdt+dh9UZ7+2cmrvoS6s1C4BIk6ig= Received: by 10.224.35.166 with SMTP id p38mr4428602qad.279.1263874705522; Mon, 18 Jan 2010 20:18:25 -0800 (PST) Received: from ?192.168.1.4? (cpe-98-28-18-35.columbus.res.rr.com [98.28.18.35]) by mx.google.com with ESMTPS id 2sm7395631qwi.17.2010.01.18.20.18.24 (version=SSLv3 cipher=RC4-MD5); Mon, 18 Jan 2010 20:18:24 -0800 (PST) Message-ID: <4B5578E0.5000201@gmail.com> Date: Tue, 19 Jan 2010 04:18:24 -0500 From: Jon User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20100113 Thunderbird/3.0 MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: acl build failure on x86_64 Subject: acl build failure on x86_64 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-qy0-f188.google.com[209.85.221.188] X-Barracuda-Start-Time: 1263874707 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0385 1.0000 -1.7728 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.35 X-Barracuda-Spam-Status: No, SCORE=-1.35 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DATE_IN_FUTURE_03_06, DATE_IN_FUTURE_03_06_2, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20200 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 DATE_IN_FUTURE_03_06 Date: is 3 to 6 hours after Received: date -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.42 DATE_IN_FUTURE_03_06_2 DATE_IN_FUTURE_03_06_2 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Brandon and anyone else who might be able to shed some light on this issue... I'm stumped. > /usr/bin/make -C chacl > make[2]: Entering directory `/tmp/acl-2.2.49/chacl' > gcc -g -O2 -DDEBUG -funsigned-char -fno-strict-aliasing -Wall > -DVERSION=\"2.2.49\" -DLOCALEDIR=\"/usr/share/locale\" > -DPACKAGE=\"acl\" -I../include -c -o chacl.o chacl.c > chacl.c: In function 'walk_dir': > chacl.c:335: warning: implicit declaration of function 'readdir64' > chacl.c:335: warning: assignment makes pointer from integer without a cast > chacl.c:337: error: dereferencing pointer to incomplete type > chacl.c:337: error: TONS MORE OF THESE ERRORS > make[2]: *** [chacl.o] Error 1 > make[2]: Leaving directory `/tmp/acl-2.2.49/chacl' > make[1]: *** [chacl] Error 2 > make[1]: Leaving directory `/tmp/acl-2.2.49' > make: *** [default] Error 2 This is a pure 64 bit bootstrap using gcc-4.4.2/glibc-2.11/binutils-2.20 following Greg Shaffers DIY Linux reference build. I've got almost 300 packages compiled and am at the tail end of my build so know this has to be isolated with ACL.... besides the occasional -fPIC issue with certain progs, this is the first stumbling block I've hit. Thanks for any and all help. Jon From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Tue Jan 19 02:58:44 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J8wigX177982 for ; Tue, 19 Jan 2010 02:58:44 -0600 X-ASG-Debug-ID: 1263891582-057401630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4AFD3173462 for ; Tue, 19 Jan 2010 00:59:43 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id JVyRrSKlIkjEBTj1 for ; Tue, 19 Jan 2010 00:59:43 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11709900-1927428 for ; Tue, 19 Jan 2010 19:29:42 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX9w3-0003fK-9n for xfs@oss.sgi.com; Tue, 19 Jan 2010 19:59:39 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX9w2-00080v-FS for xfs@oss.sgi.com; Tue, 19 Jan 2010 19:59:38 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/2] xfstests: clean up build output V2 Subject: [PATCH 0/2] xfstests: clean up build output V2 Date: Tue, 19 Jan 2010 19:59:32 +1100 Message-Id: <1263891574-30762-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263891584 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0901 1.0000 -1.4522 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.45 X-Barracuda-Spam-Status: No, SCORE=-1.45 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20218 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Essentially the same result as before, bu split into two patches; one for the top level makefile and rules cleanup and a second for the common target rules cleanup. From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Tue Jan 19 02:58:44 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J8wiQi177980 for ; Tue, 19 Jan 2010 02:58:44 -0600 X-ASG-Debug-ID: 1263891581-056b014b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 80643173460 for ; Tue, 19 Jan 2010 00:59:42 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id LUasShtDQAavuhbj for ; Tue, 19 Jan 2010 00:59:42 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11709898-1927428 for ; Tue, 19 Jan 2010 19:29:41 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX9w3-0003fM-DB for xfs@oss.sgi.com; Tue, 19 Jan 2010 19:59:39 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX9w2-00080z-K6 for xfs@oss.sgi.com; Tue, 19 Jan 2010 19:59:38 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/2] xfstests: Use common rules to build binaries Subject: [PATCH 2/2] xfstests: Use common rules to build binaries Date: Tue, 19 Jan 2010 19:59:34 +1100 Message-Id: <1263891574-30762-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263891574-30762-1-git-send-email-david@fromorbit.com> References: <1263891574-30762-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263891583 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0202 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20218 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Remove explicit target-per-file rules in the subdirectories being built and replace them with target based rules using the buildrules hooks for doing this. This results in the makefiles being simpler, smaller and more consistent. It does mean that all binaries are linked against the common set of libraries but this does not cause any harm. This patch does not address the dmapi subdirectory of the xfstests build system. Signed-off-by: Dave Chinner --- ltp/Makefile | 31 +++---------- src/Makefile | 101 +++++++----------------------------------- src/aio-dio-regress/Makefile | 7 ++- 3 files changed, 29 insertions(+), 110 deletions(-) diff --git a/ltp/Makefile b/ltp/Makefile index bcdac84..fee10f5 100644 --- a/ltp/Makefile +++ b/ltp/Makefile @@ -10,47 +10,32 @@ CFILES = $(TARGETS:=.c) HFILES = doio.h LDIRT = $(TARGETS) LCFLAGS = -DXFS -IFLAG = -I$(TOPDIR)/src #Used for including $(TOPDIR)/src/global.h +LCFLAGS += -I$(TOPDIR)/src #Used for including $(TOPDIR)/src/global.h ifeq ($(HAVE_ATTR_LIST), true) LCFLAGS += -DHAVE_ATTR_LIST +LLDLIBS += $(LIBATTR) endif ifeq ($(PKG_PLATFORM),irix) LCFLAGS += -DHAVE_ATTR_LIST +LLDLIBS += $(LIBATTR) endif ifeq ($(HAVE_AIO), true) TARGETS += aio-stress LCFLAGS += -DAIO -LIBAIO = -laio -lpthread +LLDLIBS += -laio -lpthread endif default: $(TARGETS) include $(BUILDRULES) -LINKTEST = $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) -doio: doio.c $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(IFLAG) +$(TARGETS): $(LIBTEST) + @echo " [CC] $@" + $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) -fsstress: fsstress.c $(LIBATTR) $(LIBTEST) - $(LINKTEST) $(LIBATTR) $(LIBTEST) $(LDLIBS) $(IFLAG) - -fsx: fsx.c - $(LINKTEST) $(LIBAIO) $(LDLIBS) $(IFLAG) - -growfiles: growfiles.c $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(LDLIBS) $(IFLAG) - -iogen: iogen.c $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(IFLAG) - -ifeq ($(HAVE_AIO), true) -aio-stress: aio-stress.c - $(LINKTEST) $(LIBAIO) $(LDLIBS) -endif - -install: +install: default $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/ltp $(INSTALL) -m 755 $(TARGETS) $(PKG_LIB_DIR)/ltp diff --git a/src/Makefile b/src/Makefile index 71a32c9..e2a42ce 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,6 +18,8 @@ LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize \ bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ t_futimens +LLDLIBS = $(LIBATTR) $(LIBHANDLE) $(LIBACL) + ifeq ($(HAVE_XLOG_ASSIGN_LSN), true) LINUX_TARGETS += loggen endif @@ -26,18 +28,17 @@ IRIX_TARGETS = open_unlink ifeq ($(PKG_PLATFORM),linux) TARGETS += $(LINUX_TARGETS) +TARGETS += t_immutable endif ifeq ($(PKG_PLATFORM),irix) TARGETS += $(IRIX_TARGETS) +LLDLIBS += -lgen endif ifeq ($(HAVE_DB), true) TARGETS += dbtest -endif - -ifeq ($(PKG_PLATFORM),linux) -TARGETS += t_immutable +LLDLIBS += $(LIBGDBM) endif ifeq ($(HAVE_AIO), true) @@ -47,96 +48,28 @@ endif CFILES = $(TARGETS:=.c) LDIRT = $(TARGETS) -default: $(TARGETS) $(SUBDIRS) - -include $(BUILDRULES) -LINKTEST = $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) - -randholes: randholes.o $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(LDLIBS) - -truncfile: truncfile.o $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(LDLIBS) - -dbtest: dbtest.o $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(LIBGDBM) $(LDLIBS) - -genhashnames: genhashnames.o - $(LINKTEST) - -nametest: nametest.o $(LIBTEST) - $(LINKTEST) $(LIBTEST) $(LDLIBS) - -bstat: bstat.o - $(LINKTEST) $(LIBHANDLE) $(LDLIBS) - -t_immutable: t_immutable.o - $(LINKTEST) $(LIBACL) $(LIBHANDLE) $(LDLIBS) - -loggen: loggen.o - $(LINKTEST) $(LDLIBS) -fstest: fstest.o - $(LINKTEST) - -resvtest: resvtest.o - $(LINKTEST) - -itrash: itrash.o - $(LINKTEST) - -multi_open_unlink: multi_open_unlink.o - $(LINKTEST) $(LIBATTR) $(LDLIBS) - -#scaleread: scaleread.o $(LDLIBS) -# $(LINKTEST) +default: $(TARGETS) $(SUBDIRS) -acl_get: acl_get.o - $(LINKTEST) $(LIBACL) $(LIBATTR) $(LDLIBS) +PREALLO_TARGETS = preallo_rw_pattern_reader preallo_rw_pattern_writer -dmiperf: dmiperf.o - $(LINKTEST) $(LIBATTR) $(LDLIBS) +include $(BUILDRULES) preallo_rw_pattern_reader: - $(CC) $(GCFLAGS) $(LDFLAGS) -DREAD iopat.c -o preallo_rw_pattern_reader + @echo " [CC] $@" + $(Q)$(LTLINK) iopat.c -DREAD -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) preallo_rw_pattern_writer: - $(CC) $(GCFLAGS) $(LDFLAGS) -DWRITE iopat.c -o preallo_rw_pattern_writer - -ftrunc: ftrunc.o - $(LINKTEST) - -trunc: trunc.o - $(LINKTEST) - -fs_perms: fs_perms.o - $(LINKTEST) + @echo " [CC] $@" + $(Q)$(LTLINK) iopat.c -DWRITE -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) -testx: testx.o - $(LINKTEST) +$(filter-out $(PREALLO_TARGETS), $(TARGETS)): $(LIBTEST) + @echo " [CC] $@" + $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) -looptest: looptest.o - $(LINKTEST) - -locktest: locktest.o - $(LINKTEST) - -unwritten_sync: unwritten_sync.o - $(LINKTEST) - -ifeq ($(PKG_PLATFORM),irix) -fill2: fill2.o - $(LINKTEST) -lgen - -runas: runas.o - $(LINKTEST) -lgen - -open_unlink: open_unlink.o $(LIBHANDLE) - $(LINKTEST) $(LIBHANDLE) $(LDLIBS) - -endif +LINKTEST = $(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) -install: $(addsuffix -install,$(SUBDIRS)) +install: default $(addsuffix -install,$(SUBDIRS)) $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/src $(INSTALL) -m 755 $(TARGETS) $(PKG_LIB_DIR)/src $(INSTALL) -m 755 fill2attr fill2fs fill2fs_check scaleread.sh $(PKG_LIB_DIR)/src diff --git a/src/aio-dio-regress/Makefile b/src/aio-dio-regress/Makefile index 9968093..f0e4d15 100644 --- a/src/aio-dio-regress/Makefile +++ b/src/aio-dio-regress/Makefile @@ -6,14 +6,15 @@ TARGETS = $(basename $(wildcard *.c)) CFILES = $(TARGETS:=.c) LDIRT = $(TARGETS) -LIBAIO = -laio -lpthread +LLDLIBS = -laio -lpthread default: $(TARGETS) include $(BUILDRULES) -$(TARGETS): %: %.c - $(CC) -g -Wall $(LIBAIO) -o $@ $*.c +$(TARGETS): + @echo " [CC] $@" + $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) install: $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/src/aio-dio-regress -- 1.6.5 From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Tue Jan 19 02:58:45 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_54,J_CHICKENPOX_65,J_CHICKENPOX_66, LOCAL_GNU_PATCH,URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J8wjH5177988 for ; Tue, 19 Jan 2010 02:58:45 -0600 X-ASG-Debug-ID: 1263891581-056b014b0002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2302C173462 for ; Tue, 19 Jan 2010 00:59:44 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id asUX0xBw3lG4UeI9 for ; Tue, 19 Jan 2010 00:59:44 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11709899-1927428 for ; Tue, 19 Jan 2010 19:29:41 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX9w3-0003fL-BI for xfs@oss.sgi.com; Tue, 19 Jan 2010 19:59:39 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX9w2-00080x-HB for xfs@oss.sgi.com; Tue, 19 Jan 2010 19:59:38 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/2] xfstests: Clean up build output Subject: [PATCH 1/2] xfstests: Clean up build output Date: Tue, 19 Jan 2010 19:59:33 +1100 Message-Id: <1263891574-30762-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263891574-30762-1-git-send-email-david@fromorbit.com> References: <1263891574-30762-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263891585 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20218 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We don't need to see every compiler command line for every file that is compiled. This makes it hard to see warnings and errors during compile. For progress notification, we really only need to see the directory/file being operated on. Turn down the verbosity of output by suppressing various make output and provide better overall visibility of which directory is being operated on, what the operation is and what is being done to the files by the build/clean process. This patch only addresses the top level makefile and build rules; it does not clean up the subdirectories - these will be addressed by a followup patch. It also does not touch the dmapi section of the xfstests build system. The old style verbose builds can still be run via "make V=1 ..." Signed-off-by: Dave Chinner --- Makefile | 28 +++++++++++++++++++++++----- include/buildmacros | 10 +++++----- include/buildrules | 24 +++++++++++++++++------- 3 files changed, 45 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index b017580..a4bb63f 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,21 @@ # Copyright (c) 2000-2008 Silicon Graphics, Inc. All Rights Reserved. # +ifeq ("$(origin V)", "command line") + BUILD_VERBOSE = $(V) +endif +ifndef BUILD_VERBOSE + BUILD_VERBOSE = 0 +endif + +ifeq ($(BUILD_VERBOSE),1) + Q = +else + Q = @ +endif + +MAKEOPTS = --no-print-directory Q=$(Q) + TOPDIR = . HAVE_BUILDDEFS = $(shell test -f $(TOPDIR)/include/builddefs && echo yes || echo no) @@ -11,11 +26,14 @@ endif TESTS = $(shell sed -n -e '/^[0-9][0-9][0-9]*/s/ .*//p' group) CONFIGURE = configure include/builddefs include/config.h -DMAPI_MAKEFILE = dmapi/Makefile LSRCFILES = configure configure.in aclocal.m4 README VERSION LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ check.log check.time +ifeq ($(HAVE_DMAPI), true) +DMAPI_MAKEFILE = dmapi/Makefile +endif + LIB_SUBDIRS = include lib TOOL_SUBDIRS = ltp src m4 @@ -23,13 +41,13 @@ SUBDIRS = $(LIB_SUBDIRS) $(TOOL_SUBDIRS) default: include/builddefs include/config.h $(DMAPI_MAKEFILE) new remake check $(TESTS) ifeq ($(HAVE_BUILDDEFS), no) - $(MAKE) $@ + $(Q)$(MAKE) $(MAKEOPTS) $@ else - $(MAKE) $(SUBDIRS) + $(Q)$(MAKE) $(MAKEOPTS) $(SUBDIRS) # automake doesn't always support "default" target # so do dmapi make explicitly with "all" ifeq ($(HAVE_DMAPI), true) - $(MAKE) -C $(TOPDIR)/dmapi all + $(Q)$(MAKE) $(MAKEOPTS) -C $(TOPDIR)/dmapi all endif endif @@ -76,7 +94,7 @@ install: default $(addsuffix -install,$(SUBDIRS)) install-dev install-lib: %-install: - $(MAKE) -C $* install + $(MAKE) $(MAKEOPTS) -C $* install realclean distclean: clean rm -f $(LDIRT) $(CONFIGURE) diff --git a/include/buildmacros b/include/buildmacros index 276d2c8..026ca4b 100644 --- a/include/buildmacros +++ b/include/buildmacros @@ -12,7 +12,7 @@ BUILDRULES = $(TOPDIR)/include/buildrules LDFLAGS += $(LOADERFLAGS) $(LLDFLAGS) LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB) -MAKEOPTS = --no-print-directory +MAKEOPTS = --no-print-directory Q=$(Q) SRCFILES = Makefile $(HFILES) $(CFILES) $(LSRCFILES) $(LFILES) $(YFILES) DEPDIRT = dep dep.bak @@ -41,10 +41,10 @@ LIBNAME = $(basename $(LTLIBRARY)) LTOBJECTS = $(OBJECTS:.o=.lo) LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -LTLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) -LTEXEC = $(LIBTOOL) --mode=execute -LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CCF) +LTLINK = $(LIBTOOL) --quiet --tag=CC --mode=link $(CC) +LTEXEC = $(LIBTOOL) --quiet --mode=execute +LTINSTALL = $(LIBTOOL) --quiet --mode=install $(INSTALL) +LTCOMPILE = $(LIBTOOL) --quiet --tag=CC --mode=compile $(CCF) ifeq ($(ENABLE_SHARED),yes) LTLDFLAGS += -rpath $(PKG_LIB_DIR) diff --git a/include/buildrules b/include/buildrules index e509833..5428391 100644 --- a/include/buildrules +++ b/include/buildrules @@ -7,11 +7,12 @@ _BUILDRULES_INCLUDED_ = 1 include $(TOPDIR)/include/builddefs clean clobber : $(addsuffix -clean,$(SUBDIRS)) - rm -f $(DIRT) - @rm -fr .libs + $(Q)rm -f $(DIRT) + $(Q)rm -fr .libs %-clean: - $(MAKE) -C $* clean + @echo "Cleaning $*" + $(Q)$(MAKE) $(MAKEOPTS) -q -C $* clean || $(MAKE) $(MAKEOPTS) -C $* clean # Never blow away subdirs ifdef SUBDIRS @@ -19,7 +20,8 @@ ifdef SUBDIRS .PHONY: $(SUBDIRS) $(SUBDIRS): - $(MAKE) -C $@ + @echo "Building $@" + $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@ endif # @@ -28,15 +30,23 @@ endif ifdef LTCOMMAND $(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES) - $(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) + @echo " [LD] $*" + $(Q)$(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) endif ifdef LTLIBRARY $(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS) - $(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) + @echo " [LD] $*" + $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) %.lo: %.c - $(LTCOMPILE) -c $< + @echo " [CC] $@" + $(Q)$(LTCOMPILE) -c $< +else +%.o: %.c + @echo " [CC] $@" + $(Q)$(CC) $(CFLAGS) -c $< + endif ifdef POTHEAD -- 1.6.5 From SRS0+bDqv+48+fromorbit.com=dave@internode.on.net Tue Jan 19 02:59:43 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_13,J_CHICKENPOX_31,J_CHICKENPOX_33, J_CHICKENPOX_62,J_CHICKENPOX_64,J_CHICKENPOX_65,J_CHICKENPOX_66, LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J8xg6C178085 for ; Tue, 19 Jan 2010 02:59:42 -0600 X-ASG-Debug-ID: 1263891637-17f602d40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1B79B11F9772 for ; Tue, 19 Jan 2010 01:00:38 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id L0EUUYmZeaGSJfiD for ; Tue, 19 Jan 2010 01:00:38 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11648319-1927428 for ; Tue, 19 Jan 2010 19:30:35 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX9ww-0003fq-3s for xfs@oss.sgi.com; Tue, 19 Jan 2010 20:00:34 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX9wv-00082Q-9d for xfs@oss.sgi.com; Tue, 19 Jan 2010 20:00:33 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: Convert all tests to use /bin/bash Subject: [PATCH] xfstests: Convert all tests to use /bin/bash Date: Tue, 19 Jan 2010 20:00:33 +1100 Message-Id: <1263891633-30868-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263891640 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20217 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean While most tests use /bin/sh, they are dependent on /bin/sh being a bash shell. Convert all the tests to execute via /bin/bash as it is much, much simpler than trying to debug and remove all the bashisms throughout the test code. Signed-off-by: Dave Chinner --- 001 | 2 +- 002 | 2 +- 003 | 2 +- 004 | 2 +- 005 | 2 +- 006 | 2 +- 007 | 2 +- 008 | 2 +- 009 | 2 +- 010 | 2 +- 011 | 2 +- 012 | 2 +- 013 | 2 +- 014 | 2 +- 015 | 2 +- 016 | 2 +- 017 | 2 +- 018 | 2 +- 019 | 2 +- 020 | 2 +- 021 | 2 +- 022 | 2 +- 023 | 2 +- 024 | 2 +- 025 | 2 +- 026 | 2 +- 027 | 2 +- 028 | 2 +- 029 | 2 +- 030 | 2 +- 031 | 2 +- 032 | 2 +- 033 | 2 +- 034 | 2 +- 035 | 2 +- 036 | 2 +- 037 | 2 +- 038 | 2 +- 039 | 2 +- 040 | 2 +- 041 | 2 +- 042 | 2 +- 043 | 2 +- 044 | 2 +- 045 | 2 +- 046 | 2 +- 047 | 2 +- 048 | 2 +- 049 | 2 +- 050 | 2 +- 051 | 4 ++-- 052 | 2 +- 053 | 2 +- 054 | 2 +- 055 | 2 +- 056 | 2 +- 057 | 2 +- 058 | 2 +- 059 | 2 +- 060 | 2 +- 061 | 2 +- 062 | 2 +- 063 | 2 +- 064 | 2 +- 065 | 2 +- 066 | 2 +- 067 | 2 +- 068 | 2 +- 069 | 2 +- 070 | 2 +- 071 | 2 +- 072 | 2 +- 073 | 2 +- 074 | 2 +- 075 | 2 +- 076 | 2 +- 077 | 2 +- 078 | 2 +- 079 | 2 +- 080 | 2 +- 081 | 2 +- 082 | 2 +- 083 | 2 +- 084 | 2 +- 085 | 2 +- 086 | 2 +- 087 | 2 +- 088 | 2 +- 089 | 2 +- 090 | 2 +- 091 | 2 +- 092 | 2 +- 093 | 4 ++-- 094 | 2 +- 095 | 2 +- 096 | 2 +- 097 | 2 +- 098 | 2 +- 099 | 4 ++-- 100 | 2 +- 101 | 2 +- 102 | 2 +- 103 | 2 +- 104 | 2 +- 105 | 2 +- 106 | 2 +- 107 | 2 +- 108 | 2 +- 109 | 2 +- 110 | 2 +- 111 | 2 +- 112 | 2 +- 113 | 2 +- 114 | 2 +- 115 | 2 +- 116 | 2 +- 117 | 2 +- 118 | 2 +- 119 | 2 +- 120 | 2 +- 121 | 2 +- 122 | 2 +- 123 | 4 ++-- 124 | 2 +- 125 | 2 +- 126 | 2 +- 127 | 2 +- 128 | 4 ++-- 129 | 2 +- 130 | 2 +- 131 | 2 +- 132 | 2 +- 133 | 2 +- 134 | 2 +- 135 | 2 +- 136 | 2 +- 137 | 2 +- 138 | 2 +- 139 | 2 +- 140 | 2 +- 141 | 2 +- 142 | 2 +- 143 | 2 +- 144 | 2 +- 145 | 2 +- 146 | 2 +- 147 | 2 +- 148 | 2 +- 149 | 2 +- 150 | 2 +- 151 | 2 +- 152 | 2 +- 153 | 2 +- 154 | 2 +- 155 | 2 +- 156 | 2 +- 157 | 2 +- 158 | 2 +- 159 | 2 +- 160 | 2 +- 161 | 2 +- 162 | 2 +- 163 | 2 +- 164 | 2 +- 165 | 2 +- 166 | 2 +- 167 | 2 +- 168 | 2 +- 169 | 2 +- 170 | 2 +- 171 | 2 +- 172 | 2 +- 173 | 2 +- 174 | 2 +- 175 | 2 +- 176 | 2 +- 177 | 2 +- 178 | 2 +- 179 | 2 +- 180 | 2 +- 181 | 2 +- 182 | 2 +- 183 | 2 +- 184 | 2 +- 185 | 2 +- 186 | 2 +- 187 | 2 +- 188 | 2 +- 189 | 2 +- 190 | 2 +- 191 | 2 +- 192 | 2 +- 193 | 2 +- 194 | 2 +- 195 | 2 +- 196 | 2 +- 197 | 2 +- 198 | 2 +- 199 | 2 +- 200 | 2 +- 201 | 2 +- 202 | 2 +- 203 | 2 +- 204 | 2 +- 205 | 2 +- 206 | 2 +- 207 | 2 +- 208 | 2 +- 209 | 2 +- 210 | 2 +- 211 | 2 +- 212 | 2 +- 213 | 2 +- 214 | 2 +- 215 | 2 +- 216 | 2 +- 217 | 2 +- 218 | 2 +- 219 | 2 +- 220 | 2 +- 221 | 2 +- 222 | 2 +- bench | 2 +- check | 2 +- common | 2 +- common.attr | 2 +- common.bonnie | 2 +- common.config | 2 +- common.dbench | 2 +- common.defrag | 2 +- common.dmapi | 2 +- common.dump | 2 +- common.filestreams | 2 +- common.filter | 2 +- common.log | 2 +- common.metaperf | 2 +- common.punch | 2 +- common.quota | 2 +- common.rc | 2 +- common.repair | 2 +- 240 files changed, 245 insertions(+), 245 deletions(-) diff --git a/001 b/001 index 4fe443d..8e3aabd 100755 --- a/001 +++ b/001 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 001 # # Random file copier to produce chains of identical files so the head diff --git a/002 b/002 index 237580b..896fd1e 100755 --- a/002 +++ b/002 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 002 # # simple inode link count test for a regular file diff --git a/003 b/003 index 6120cc5..61afac5 100755 --- a/003 +++ b/003 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 003 # # exercise xfs_db bug #784078 diff --git a/004 b/004 index a88fc10..9f28e17 100755 --- a/004 +++ b/004 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 004 # # exercise xfs_db bug #789674 and other freesp functionality diff --git a/005 b/005 index a9e9086..205256c 100755 --- a/005 +++ b/005 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 005 # # Test symlinks & ELOOP diff --git a/006 b/006 index 96f4426..e4d5e32 100755 --- a/006 +++ b/006 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 006 # # permname diff --git a/007 b/007 index f22d09b..50a8418 100755 --- a/007 +++ b/007 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 007 # # drive the src/nametest program diff --git a/008 b/008 index 519b1a9..dfc938a 100755 --- a/008 +++ b/008 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 008 # # randholes test diff --git a/009 b/009 index 37082c5..d2a19d8 100755 --- a/009 +++ b/009 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 009 # # XFS allocator test (preallocation - allocp, resvsp ,etc) diff --git a/010 b/010 index 9ee889a..78813a8 100755 --- a/010 +++ b/010 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 010 # # dbtest diff --git a/011 b/011 index 7906850..2fcc9d3 100755 --- a/011 +++ b/011 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 011 # # dirstress diff --git a/012 b/012 index 123c7a3..7d33f4c 100755 --- a/012 +++ b/012 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 012 # # holes diff --git a/013 b/013 index 4c5612b..58426ea 100755 --- a/013 +++ b/013 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 013 # # fsstress diff --git a/014 b/014 index ce5b0f8..a2be25a 100755 --- a/014 +++ b/014 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 014 # # truncfile diff --git a/015 b/015 index 9189e2d..8f2be7c 100755 --- a/015 +++ b/015 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 015 # # check out-of-space behaviour diff --git a/016 b/016 index 3a55d3a..980eb0b 100755 --- a/016 +++ b/016 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 016 # # test end of log overwrite bug #796141 diff --git a/017 b/017 index e72ab52..9ca0e72 100755 --- a/017 +++ b/017 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 017 # # test remount ro - pv 795642 diff --git a/018 b/018 index 8674ec5..85df390 100755 --- a/018 +++ b/018 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 018 # # xfs_logprint test - test v2 logs of different LR sizes diff --git a/019 b/019 index 44d3259..42e3c22 100755 --- a/019 +++ b/019 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 019 # # mkfs protofile test diff --git a/020 b/020 index c843bf5..0118e61 100755 --- a/020 +++ b/020 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 020 # # extended attributes diff --git a/021 b/021 index 11c8612..18284eb 100755 --- a/021 +++ b/021 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 021 # # xfs_db type attr test (pv 797508 linux-xfs & IRIX) diff --git a/022 b/022 index 90b46fb..76d18e6 100755 --- a/022 +++ b/022 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 022 # # Test out a level 0 dump/restore to a tape of a subdir diff --git a/023 b/023 index 8d77acb..b9eeafe 100755 --- a/023 +++ b/023 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 023 # # To test xfsdump/restore to tape using a directory with diff --git a/024 b/024 index ba3fec2..de5ab5f 100755 --- a/024 +++ b/024 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 024 # # Test out incremental dumps diff --git a/025 b/025 index a0da452..90d3389 100755 --- a/025 +++ b/025 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 025 # # Test dump/restore using -m option (min strategy) diff --git a/026 b/026 index 25a6a7d..ef6aaa6 100755 --- a/026 +++ b/026 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 026 # # Test xfsdump/xfsrestore to a dump file (as opposed to a tape) diff --git a/027 b/027 index 222599b..9df06c3 100755 --- a/027 +++ b/027 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 027 # # Test out "xfsdump | xfsrestore" diff --git a/028 b/028 index 45dd7c6..6628f66 100755 --- a/028 +++ b/028 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 028 # # To test out xfsinvutil diff --git a/029 b/029 index b9c5f11..e4fe715 100755 --- a/029 +++ b/029 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 029 # # exercise mkfs log (internal/external) zeroing diff --git a/030 b/030 index f4517f5..74147d4 100755 --- a/030 +++ b/030 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 030 # # exercise xfs_repair repairing broken filesystems diff --git a/031 b/031 index d6383d8..b062277 100755 --- a/031 +++ b/031 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 031 # # exercise xfs_repair - ensure repeated use doesn't corrupt diff --git a/032 b/032 index 5db89ad..839b913 100755 --- a/032 +++ b/032 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 032 # # cross check mkfs detection of foreign filesystems diff --git a/033 b/033 index 599af62..9651f26 100755 --- a/033 +++ b/033 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 033 # # exercise xfs_repair repairing broken filesystems (root inodes) diff --git a/034 b/034 index 8af259c..c09f63b 100755 --- a/034 +++ b/034 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 034 # # pv 801241 - check for reference leaks from the *handle xfsctls diff --git a/035 b/035 index 592605b..34f5cac 100755 --- a/035 +++ b/035 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 035 # # Test doing multiple dumps to tape and restoring the 2nd one diff --git a/036 b/036 index ac14e1a..4ed2ebc 100755 --- a/036 +++ b/036 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 036 # # Test xfsdump/restore minrmt to a remote IRIX tape diff --git a/037 b/037 index 736385d..fd1e1af 100755 --- a/037 +++ b/037 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 037 # # Test xfsdump/restore minrmt to a remote linux tape diff --git a/038 b/038 index 5796d93..f2af214 100755 --- a/038 +++ b/038 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 038 # # Test xfsdump/restore to a remote linux tape diff --git a/039 b/039 index b4dda5e..016d2bc 100755 --- a/039 +++ b/039 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 039 # # Test xfsdump/restore to a remote IRIX tape diff --git a/040 b/040 index 4481aeb..ea24ff5 100755 --- a/040 +++ b/040 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 040 # # srcdiff test diff --git a/041 b/041 index a49937c..2800811 100755 --- a/041 +++ b/041 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 041 # # growfs QA tests - repeatedly fill/grow the filesystem diff --git a/042 b/042 index ca6b365..7ac5492 100755 --- a/042 +++ b/042 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 042 # # xfs_fsr QA tests diff --git a/043 b/043 index cc8104e..189dc5b 100755 --- a/043 +++ b/043 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 043 # # Test out xfsdump/restore but rmv inventory prior to restore. diff --git a/044 b/044 index 80631ba..60a6e58 100755 --- a/044 +++ b/044 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 044 # # external log uuid/format tests (TODO - version 2 log format) diff --git a/045 b/045 index 736a777..db40333 100755 --- a/045 +++ b/045 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 045 # # test mount of two FSes with identical UUID and mount with unknown option diff --git a/046 b/046 index 4c4c39f..783459c 100755 --- a/046 +++ b/046 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 046 # # check on symlinks permissions diff --git a/047 b/047 index 72ed2d5..f5f6a52 100755 --- a/047 +++ b/047 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 047 # # invutil with interactive responses diff --git a/048 b/048 index 4d74b56..9d360d6 100755 --- a/048 +++ b/048 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 048 # # test return codes from xfsctl on bad userspace address diff --git a/049 b/049 index a0559c3..3d3f030 100755 --- a/049 +++ b/049 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 049 # # XFS on loop test diff --git a/050 b/050 index 306a7b5..57dfa92 100755 --- a/050 +++ b/050 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 050 # # Exercises basic XFS quota functionality diff --git a/051 b/051 index bf951c2..238abe9 100755 --- a/051 +++ b/051 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 051 # # Test out ACLs. @@ -100,7 +100,7 @@ echo "Setup file" # in order to execute it. touch file1 cat <file1 -#!/bin/sh +#!/bin/bash echo "Test was executed" EOF chmod u=rwx file1 diff --git a/052 b/052 index 3d8bb9e..2d8b73d 100755 --- a/052 +++ b/052 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 052 # # Ensure that quota(1) displays blocksizes matching ondisk dquots. diff --git a/053 b/053 index f28db3f..98644a7 100755 --- a/053 +++ b/053 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 053 # # xfs_repair breaks acls diff --git a/054 b/054 index b38efab..e5e500c 100755 --- a/054 +++ b/054 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 054 # # Check behavior of chown with both user and group quota enabled, diff --git a/055 b/055 index 330d933..309b9c3 100755 --- a/055 +++ b/055 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 055 # # Test xfsdump/restore to a remote IRIX tape using RMT user diff --git a/056 b/056 index 1578408..a19b85a 100755 --- a/056 +++ b/056 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 056 # # Test xfsdump/xfsrestore to a dump file (as opposed to a tape) diff --git a/057 b/057 index 5d427b0..f3219a3 100755 --- a/057 +++ b/057 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 057 # # Place holder for test 075. Test out the different acl_get semantics diff --git a/058 b/058 index c1290c8..43b2293 100755 --- a/058 +++ b/058 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 058 # # Place holder test 068. Test some ACL API functions. diff --git a/059 b/059 index 52033cc..6348f0e 100755 --- a/059 +++ b/059 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 059 # # place holder for IRIX 059 test for xfsdump/xfsrestore multi streams diff --git a/060 b/060 index 3f6e349..6e58e5b 100755 --- a/060 +++ b/060 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 060 # # place holder for IRIX 060 test for xfsdump/xfsrestore multi streams diff --git a/061 b/061 index 8c125d1..414675f 100755 --- a/061 +++ b/061 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 061 # # Test restoring a dump created in IRIX/XFS diff --git a/062 b/062 index b4144b9..76ad513 100755 --- a/062 +++ b/062 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 062 # # Exercises the getfattr/setfattr tools diff --git a/063 b/063 index 3bc4fd7..d2b8a9f 100755 --- a/063 +++ b/063 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 063 # # xfsdump/xfsrestore with EAs diff --git a/064 b/064 index be7b22d..16960c9 100755 --- a/064 +++ b/064 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 064 # # test multilevel dump and restores with hardlinks diff --git a/065 b/065 index 54419ae..f21a87f 100755 --- a/065 +++ b/065 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 065 # # Testing incremental dumps and cumulative restores with diff --git a/066 b/066 index 1d637d1..a6e76c1 100755 --- a/066 +++ b/066 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 066 # # Test dumping of large files diff --git a/067 b/067 index 2ac7878..5ab743e 100755 --- a/067 +++ b/067 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 067 # # Test out acl/dacls which fit in shortform in the inode diff --git a/068 b/068 index 82c1a4e..5d0053d 100755 --- a/068 +++ b/068 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 068 # # Test case to reproduce xfs_freeze hang under filsystem load. diff --git a/069 b/069 index cf55705..820ca5f 100755 --- a/069 +++ b/069 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 069 # # Test out writes with O_APPEND flag sets. diff --git a/070 b/070 index aeea518..5dca476 100755 --- a/070 +++ b/070 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 070 # # fsstress incarnation testing extended attributes writes diff --git a/071 b/071 index 303498e..be9b11b 100755 --- a/071 +++ b/071 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 071 # # Exercise IO at large file offsets. diff --git a/072 b/072 index 96b783d..981c408 100755 --- a/072 +++ b/072 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 072 # # Check some unwritten extent boundary conditions diff --git a/073 b/073 index 756c1c8..90fa1f0 100755 --- a/073 +++ b/073 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 073 # # Test xfs_copy diff --git a/074 b/074 index 9ce4563..b9fb9d5 100755 --- a/074 +++ b/074 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 074 # # fstest diff --git a/075 b/075 index 49d006d..0f0a6ed 100755 --- a/075 +++ b/075 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 075 # # fsx (non-AIO variant) diff --git a/076 b/076 index 0b1a195..e472b26 100755 --- a/076 +++ b/076 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 076 # # Test blockdev reads in parallel with filesystem reads/writes diff --git a/077 b/077 index 719c8c3..cdee8da 100755 --- a/077 +++ b/077 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 077 # # Check use of ACLs (extended attributes) on a full filesystem diff --git a/078 b/078 index acef5c1..b8d9132 100755 --- a/078 +++ b/078 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 078 # # Check several growfs corner cases diff --git a/079 b/079 index b26cc0a..151835c 100755 --- a/079 +++ b/079 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 079 # # Run the t_immutable test program for immutable/append-only files. diff --git a/080 b/080 index dc51c59..8ece84d 100755 --- a/080 +++ b/080 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 080 # # rwtest (iogen|doio) diff --git a/081 b/081 index c8eba80..96156c8 100755 --- a/081 +++ b/081 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 081 # # To test out logprint with quotas diff --git a/082 b/082 index ca19821..c413c10 100755 --- a/082 +++ b/082 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 082 # # Test out the v2 stripe logs with logprint diff --git a/083 b/083 index a61aa66..7342baa 100755 --- a/083 +++ b/083 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 083 # # Exercise filesystem full behaviour - run numerous fsstress diff --git a/084 b/084 index 212bbfa..622eb4f 100755 --- a/084 +++ b/084 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 084 # # Exercises unwritten extent reads and writes, looking diff --git a/085 b/085 index 7a62b0c..361aec1 100755 --- a/085 +++ b/085 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 085 # # To test log replay by shutdown of file system diff --git a/086 b/086 index 5a1270f..9c3f22d 100755 --- a/086 +++ b/086 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 086 # # To test log replay with version 2 logs diff --git a/087 b/087 index 14a9d4e..48e5eaa 100755 --- a/087 +++ b/087 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 087 # # * like 086 but want to create more/different kinds of metadata diff --git a/088 b/088 index 3ebda66..f6f0e26 100755 --- a/088 +++ b/088 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 088 # # test out CAP_DAC_OVERRIDE and CAP_DAC_SEARCH code in diff --git a/089 b/089 index 3fce2f8..e28e099 100755 --- a/089 +++ b/089 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 089 # # Emulate the way Linux mount manipulates /etc/mtab to attempt to diff --git a/090 b/090 index e71badb..0cdbe34 100755 --- a/090 +++ b/090 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 090 # # Exercise IO on the realtime device (direct, buffered, mmapd) diff --git a/091 b/091 index 0ee9c7a..6c4566f 100755 --- a/091 +++ b/091 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 091 # # fsx exercising direct IO -- sub-block sizes and concurrent buffered IO diff --git a/092 b/092 index 73384b9..429fa80 100755 --- a/092 +++ b/092 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 092 # # Make sure that we can mount inode64 filesystems diff --git a/093 b/093 index 3232476..5babfb3 100755 --- a/093 +++ b/093 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 093 # # Test out for IRIX the removal of file capabilities when @@ -75,7 +75,7 @@ user=`grep ':all=:all=' /etc/capability | tail -1 | $AWK_PROG -F: '{print $1}'` uid=`grep $user /etc/passwd | $AWK_PROG -F: '{print $3}'` cat >$tmp.append <>$file EOF chmod ugo+x $tmp.append diff --git a/094 b/094 index 97f6be7..8e8b5e7 100755 --- a/094 +++ b/094 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 094 # # Exercising the inheritable realtime inode bit. diff --git a/095 b/095 index 6e2005a..b85b97f 100755 --- a/095 +++ b/095 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 095 # # test out xfs_chver on IRIX diff --git a/096 b/096 index 6011f34..237edad 100755 --- a/096 +++ b/096 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 096 # # test out mkfs_xfs output on IRIX/Linux and some of its error handling diff --git a/097 b/097 index a6c57b0..2597d53 100755 --- a/097 +++ b/097 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 097. Modifed from UDFQA test 033. # # simple attr tests for EAs: diff --git a/098 b/098 index dcdfb16..e59f5ac 100755 --- a/098 +++ b/098 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 098. Modified from UDFQA test 035 # # simple attr tests for EAs: diff --git a/099 b/099 index 4827b89..90af18f 100755 --- a/099 +++ b/099 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 099. Modified from UDFQA test 036. # # ACL test @@ -103,7 +103,7 @@ echo "Setup file" # in order to execute it. touch file1 cat <file1 -#!/bin/sh +#!/bin/bash echo "Test was executed" EOF chmod u=rwx file1 diff --git a/100 b/100 index 7c22f87..f3504ce 100755 --- a/100 +++ b/100 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 100. Modified from UDF QA test 030. # # Test whether a tarred directory structure can be untarred onto diff --git a/101 b/101 index ca385d1..e58f8b6 100755 --- a/101 +++ b/101 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 101. Modified from UDFQA test 029. # # This tests mkfs_udf with -s [SIZE] option. diff --git a/102 b/102 index 048772c..dab9b5c 100755 --- a/102 +++ b/102 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 102 # # This tests mkfs_udf/mkudffs and the device detection code diff --git a/103 b/103 index 8d3e226..8f7e45b 100755 --- a/103 +++ b/103 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 103 # # Exercise the XFS nosymlinks inode flag diff --git a/104 b/104 index 5f18d08..b35c43b 100755 --- a/104 +++ b/104 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 104 # # XFS online growfs-while-allocating tests (data subvol variant) diff --git a/105 b/105 index a98a03e..e3163fd 100755 --- a/105 +++ b/105 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 105 # # Test fix of bug: diff --git a/106 b/106 index 30f740b..5bff660 100755 --- a/106 +++ b/106 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 106 # # Exercise basic xfs_quota functionality (user/group/project quota) diff --git a/107 b/107 index f36dc21..c270f0e 100755 --- a/107 +++ b/107 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 107 # # Project quota. diff --git a/108 b/108 index 3a1fee9..b429bc6 100755 --- a/108 +++ b/108 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 108 # # Simple quota accounting test for direct/buffered/mmap IO. diff --git a/109 b/109 index 1ec25ea..a9c174f 100755 --- a/109 +++ b/109 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 109 # # ENOSPC deadlock case from Asano Masahiro. diff --git a/110 b/110 index fa8ade9..cf5f663 100755 --- a/110 +++ b/110 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 110 # # Incorrect dir2 freetab warning case from Masanori Tsuda. diff --git a/111 b/111 index db86df6..719a0e0 100755 --- a/111 +++ b/111 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 111 # # Infinite xfs_bulkstat bad-inode loop case from Roger Willcocks. diff --git a/112 b/112 index d6c2952..557350a 100755 --- a/112 +++ b/112 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 112 # # fsx (AIO variant, based on 075) diff --git a/113 b/113 index f05275d..23676e0 100755 --- a/113 +++ b/113 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 113 # # aio-stress diff --git a/114 b/114 index 3596da8..8787937 100755 --- a/114 +++ b/114 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 114 # # Test some parent ptr stuff diff --git a/115 b/115 index b874cb8..8ef0e4c 100755 --- a/115 +++ b/115 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 115 # # Test out xfs_repair_ipaths diff --git a/116 b/116 index e902ce9..cc2bb0f 100755 --- a/116 +++ b/116 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 116 # # pv#940491 diff --git a/117 b/117 index 04c628e..915520f 100755 --- a/117 +++ b/117 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 117 # # Attempt to cause filesystem corruption with serial fsstresses doing diff --git a/118 b/118 index cb0e5ee..403655e 100755 --- a/118 +++ b/118 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 118 # # To test out pv#940675 crash in xfs_trans_brelse + quotas diff --git a/119 b/119 index 516f992..1509ece 100755 --- a/119 +++ b/119 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 119 # # Leaking reservation space in the GRH diff --git a/120 b/120 index dd6e91a..bf1e617 100755 --- a/120 +++ b/120 @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # FS QA Test No. 120 # # Test noatime mount option. diff --git a/121 b/121 index eb0158d..2137ebc 100755 --- a/121 +++ b/121 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 121 # # To test log replay for the unlinked list. diff --git a/122 b/122 index 9fbe437..4c11556 100755 --- a/122 +++ b/122 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 122 # # pv#952498 diff --git a/123 b/123 index f76b62c..27c1e66 100755 --- a/123 +++ b/123 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 123 # # Make sure user cannot overwrite, append, delete or move a file created by @@ -60,7 +60,7 @@ _user_do() { if [ "$HOSTOS" == "IRIX" ] then - echo $1 | /bin/sh "su $qa_user 2>&1" | _filter_user_do + echo $1 | /bin/bash "su $qa_user 2>&1" | _filter_user_do else echo $1 | su $qa_user 2>&1 | _filter_user_do fi diff --git a/124 b/124 index 5a44656..adae304 100755 --- a/124 +++ b/124 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 124 # # Test preallocated_rw_pattern_test modified from CXFSQA test preallocated_rw_pattern_test diff --git a/125 b/125 index afc31d0..e84109a 100755 --- a/125 +++ b/125 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 125 # # ftruncate test, modified from CXFSQA tests cxfs_ftrunc and cxfs_trunc diff --git a/126 b/126 index 7bb10de..44db64c 100755 --- a/126 +++ b/126 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 126 # # tests various file permission options modified from CXFSQA test fs_perms diff --git a/127 b/127 index 30f4fdb..8a61ffb 100755 --- a/127 +++ b/127 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 127 # # fsx tests modified from CXFSQA tests diff --git a/128 b/128 index c3f311d..7760b95 100755 --- a/128 +++ b/128 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 128 # # Test nosuid mount option modified from CXFSQA test mount_option_nosuid @@ -58,7 +58,7 @@ cp `which ls` $SCRATCH_MNT chmod 700 $SCRATCH_MNT/nosuid chmod 4755 $SCRATCH_MNT/ls -su -s/bin/sh - $qa_user -c "$SCRATCH_MNT/ls $SCRATCH_MNT/nosuid >/dev/null 2>&1" +su -s/bin/bash - $qa_user -c "$SCRATCH_MNT/ls $SCRATCH_MNT/nosuid >/dev/null 2>&1" if [ $? -eq 0 ] ; then echo "Error: we shouldn't be able to ls the directory" fi diff --git a/129 b/129 index 66b4cb9..c9f11d6 100755 --- a/129 +++ b/129 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 129 # # looptests created from CXFSQA test looptest diff --git a/130 b/130 index 816f4bc..21582ea 100755 --- a/130 +++ b/130 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 130 # # xfs_io vector read/write and trunc tests. modified from cxfsqa tests diff --git a/131 b/131 index de83fe2..9be0a14 100755 --- a/131 +++ b/131 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 131 # # lock test created from CXFSQA test lockfile_simple diff --git a/132 b/132 index 760315c..e90f56c 100755 --- a/132 +++ b/132 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 132 # # xfs_io aligned vector rw created from CXFSQA test diff --git a/133 b/133 index 26d16fe..9dbcb64 100755 --- a/133 +++ b/133 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 133 # # Concurrent I/O to same file to ensure no deadlocks diff --git a/134 b/134 index f00e1f0..0f97e18 100755 --- a/134 +++ b/134 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 134 # # test to reproduce PV951636: diff --git a/135 b/135 index a3a8ac9..915701f 100755 --- a/135 +++ b/135 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 135 # # Concurrent I/O to same file to ensure no deadlocks diff --git a/136 b/136 index d5d8a34..d394594 100755 --- a/136 +++ b/136 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 136 # # Test the attr2 code diff --git a/137 b/137 index 4db8127..42fb853 100755 --- a/137 +++ b/137 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 137 # # Test for NULL files problem diff --git a/138 b/138 index c9a2381..e7b5609 100755 --- a/138 +++ b/138 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 138 # # Test for NULL files problem diff --git a/139 b/139 index 3fb05cf..706a112 100755 --- a/139 +++ b/139 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 139 # # Test for NULL files problem diff --git a/140 b/140 index 84ee0f0..1f88302 100755 --- a/140 +++ b/140 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 140 # # Test for NULL files problem diff --git a/141 b/141 index 9ee27e4..cc501d6 100755 --- a/141 +++ b/141 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 141 # # Test for xfs_io mmap read problem diff --git a/142 b/142 index 0bc3ded..c09a968 100755 --- a/142 +++ b/142 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 142 # # Dmapi get/set_dmattr diff --git a/143 b/143 index c4763f5..7db6fea 100755 --- a/143 +++ b/143 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 143 # # Dmapi get/set_eventlist diff --git a/144 b/144 index cbbbc42..36b9263 100755 --- a/144 +++ b/144 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 144 # # Dmapi get/set_fileattr, get_bulkattr, get_dirattrs diff --git a/145 b/145 index 59ce6a2..3d6c158 100755 --- a/145 +++ b/145 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 145 # # Dmapi probe/punch_hole diff --git a/146 b/146 index 9e2eeae..477df83 100755 --- a/146 +++ b/146 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 146 # # Dmapi read/write_invis diff --git a/147 b/147 index c376567..b775478 100755 --- a/147 +++ b/147 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 147 # # Dmapi get/set_region diff --git a/148 b/148 index a2f0873..76cbf37 100755 --- a/148 +++ b/148 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 148 # # Exercise xfs parallel repair on broken filesystems diff --git a/149 b/149 index 0a1904a..5131a45 100755 --- a/149 +++ b/149 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 149 # # Exercise xfs_prepair - ensure repeated use doesn't corrupt diff --git a/150 b/150 index 96be389..a865875 100755 --- a/150 +++ b/150 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 150 # # Set DM_EVENT_RENAME event on a DMAPI filesystem and verify it is set. diff --git a/151 b/151 index 65fefbb..f10460d 100755 --- a/151 +++ b/151 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 151 # # Create three DMAPI sessions, diff --git a/152 b/152 index 53531ce..071be85 100755 --- a/152 +++ b/152 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 152 # # Verify DMAPI functions diff --git a/153 b/153 index 2f552f5..7c609d2 100755 --- a/153 +++ b/153 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 153 # # Associate filesystem with a session by setting DMAPI DM_EVENT_RENAME diff --git a/154 b/154 index 8520833..2384d26 100755 --- a/154 +++ b/154 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 154 # # Get DMAPI filesystem handle diff --git a/155 b/155 index 78abb9a..de88ecb 100755 --- a/155 +++ b/155 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 155 # # DMAPI event DM_EVENT_RENAME generation diff --git a/156 b/156 index 5305ee6..0f3b229 100755 --- a/156 +++ b/156 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 156 # # DMAPI get directory attributes (simple check diff --git a/157 b/157 index 7e1af5b..11488c6 100755 --- a/157 +++ b/157 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 157 # # get/set DMAPI attributes diff --git a/158 b/158 index d116321..2b95ec6 100755 --- a/158 +++ b/158 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 158 # # get/set file attributes diff --git a/159 b/159 index 0d6889f..203afca 100755 --- a/159 +++ b/159 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 159 # # Create DMAPI event and respond to it. diff --git a/160 b/160 index c3b4251..095951b 100755 --- a/160 +++ b/160 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 160 # # Change and view DMAPI access rights. diff --git a/161 b/161 index 82d950c..8d0aed2 100755 --- a/161 +++ b/161 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 161 # # DMAPI function punch hole. Create 3Mb file and punch a hole from diff --git a/162 b/162 index 072a8d4..409d3a1 100755 --- a/162 +++ b/162 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 162 # # Placing holds on objects diff --git a/163 b/163 index c5c4755..faf02e4 100755 --- a/163 +++ b/163 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 163 # # File descriptor to handle conversion diff --git a/164 b/164 index 01e56d3..03784c6 100755 --- a/164 +++ b/164 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 164 # # To test for short dio reads on IRIX and Linux - pv#962005/962547 diff --git a/165 b/165 index c5a321d..d47ad8e 100755 --- a/165 +++ b/165 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 165 # # Test out prealloc, direct writes and buffered read diff --git a/166 b/166 index e7b21aa..65c46da 100755 --- a/166 +++ b/166 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 166 # # ->page-mkwrite test - unwritten extents and mmap diff --git a/167 b/167 index 8ec174f..98b55e6 100755 --- a/167 +++ b/167 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 167 # # unwritten extent conversion test diff --git a/168 b/168 index 5d9d4eb..e044091 100755 --- a/168 +++ b/168 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 168 # # Check for DMAPI destroy events when removing files without attributes diff --git a/169 b/169 index ac0ecad..627981e 100755 --- a/169 +++ b/169 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 169 # # Test for file size consistency with append followed by umount/mount diff --git a/170 b/170 index 5785511..a807de0 100755 --- a/170 +++ b/170 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # # FSQA Test No. 170 # diff --git a/171 b/171 index d7bfdeb..7e70466 100755 --- a/171 +++ b/171 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 171 # # Check the filestreams allocator is doing its job. diff --git a/172 b/172 index e0a2d8c..3220697 100755 --- a/172 +++ b/172 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 172 # # Check the filestreams allocator is doing its job. diff --git a/173 b/173 index f57226a..9156403 100755 --- a/173 +++ b/173 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 173 # # Check the filestreams allocator is doing its job. diff --git a/174 b/174 index 9f97289..4828854 100755 --- a/174 +++ b/174 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 174 # # Check the filestreams allocator is doing its job. diff --git a/175 b/175 index 480c4c1..523dce1 100755 --- a/175 +++ b/175 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 175 # # Hole punching with extsize hints, holes may not reported by xfs_bmap. diff --git a/176 b/176 index 2aec086..b988783 100755 --- a/176 +++ b/176 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 176 # # Check if resvsp on file create effects bmap output after hole punch. diff --git a/177 b/177 index 94ea9c3..b6f4789 100755 --- a/177 +++ b/177 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 177 # # Test to reproduce PV#: 964316 diff --git a/178 b/178 index a0a8a42..e4e104e 100755 --- a/178 +++ b/178 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 178 # # Reproduce PV#:967665 diff --git a/179 b/179 index 5a801c9..5cec718 100755 --- a/179 +++ b/179 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 179 # # Test for NULL files problem diff --git a/180 b/180 index a11e947..6ba32fe 100755 --- a/180 +++ b/180 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 180 # # Test for NULL files problem diff --git a/181 b/181 index 44ed955..6db52ac 100755 --- a/181 +++ b/181 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 181 # # Like 121 only creating large EAs diff --git a/182 b/182 index 984e1e5..ae1f920 100755 --- a/182 +++ b/182 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 182 # # Test for NULL files problem diff --git a/183 b/183 index b302dcd..5558eb9 100755 --- a/183 +++ b/183 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 183 # # Test to check bulkstat returns unlinked-but-referenced inodes diff --git a/184 b/184 index 170e63a..8544dc1 100755 --- a/184 +++ b/184 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 184 # # check mknod makes working nodes. diff --git a/185 b/185 index 264f157..74c4d3c 100755 --- a/185 +++ b/185 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 185 # # Dmapi Punch/Probe Alignment compared to xfsctl(FREESPACE); diff --git a/186 b/186 index 524c9ee..94d399a 100755 --- a/186 +++ b/186 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 186 # # Test out: diff --git a/187 b/187 index cb5b9ca..6a489d0 100755 --- a/187 +++ b/187 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 187 # # To test out the noattr2 flag which is broken in pv#980021 diff --git a/188 b/188 index d0656ac..ed93e65 100755 --- a/188 +++ b/188 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 188 # # drive the src/nametest program for CI mode diff --git a/189 b/189 index 85fe5a4..8f1c0e1 100755 --- a/189 +++ b/189 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 189 # # Test remount behaviour diff --git a/190 b/190 index 07464ee..096b871 100755 --- a/190 +++ b/190 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FSQA Test No. 190 # # This test uses xfs_io to unreserve space in a file at various different diff --git a/191 b/191 index 0152c7d..b1e66bf 100755 --- a/191 +++ b/191 @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # FS QA Test No. 191 # # To call into the nfs4acl qa suite of Andreas Gruenbacher. diff --git a/192 b/192 index 3550ae6..0d0b294 100755 --- a/192 +++ b/192 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 192 # # Simple test of atime diff --git a/193 b/193 index 9c676c6..9891256 100755 --- a/193 +++ b/193 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 193 # # Test permission checks in ->setattr diff --git a/194 b/194 index 38c7a58..931068d 100755 --- a/194 +++ b/194 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 194 # # Test mapping around/over holes for sub-page blocks diff --git a/195 b/195 index b4aaeff..b910f72 100755 --- a/195 +++ b/195 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 195 # # Make sure the chattr dump flag gets picked up by xfsdump without a sync diff --git a/196 b/196 index 5da3659..6b9998f 100755 --- a/196 +++ b/196 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 196 # # Make sure renames accross project boundaries are properly rejected diff --git a/197 b/197 index 736ece8..0996630 100755 --- a/197 +++ b/197 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 197 # # Check that d_off can be represented in a 32 bit long type without diff --git a/198 b/198 index 97ba737..e46ec8d 100755 --- a/198 +++ b/198 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 198 # # Test that aio+dio into holes does completion at the proper offsets diff --git a/199 b/199 index 918e849..2151cd2 100755 --- a/199 +++ b/199 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 199 # # Check that the features2 location fixups work correctly. We check both diff --git a/200 b/200 index 712fb38..dcf0f38 100755 --- a/200 +++ b/200 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 200 # # Check out various mount/remount/unmount scenarious on a read-only blockdev. diff --git a/201 b/201 index add69fe..99bcde8 100755 --- a/201 +++ b/201 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 201 # # Test out the infamous xfs_btree_delrec corruption. diff --git a/202 b/202 index e5e35e7..cbdcb57 100755 --- a/202 +++ b/202 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 202 # # Test out the xfs_repair -o force_geometry option on single-AG filesystems. diff --git a/203 b/203 index 8a1c2d7..174bdae 100755 --- a/203 +++ b/203 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 203 # # Test out reallocation of the extent array in xfs_io. diff --git a/204 b/204 index 8c4e91e..1ac9ebf 100755 --- a/204 +++ b/204 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 204 # # Test out ENOSPC flushing on small filesystems. diff --git a/205 b/205 index c85e102..3f45185 100755 --- a/205 +++ b/205 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 205 # # Test out ENOSPC flushing on small filesystems. diff --git a/206 b/206 index 0935335..034bbf1 100755 --- a/206 +++ b/206 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 206 # # Test trim of last small AG for large filesystem resizes diff --git a/207 b/207 index 8e29e90..32e6299 100755 --- a/207 +++ b/207 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 207 # # Run aio-dio-extend-stat - test race in dio aio completion diff --git a/208 b/208 index 9848f2f..e1fdaa1 100755 --- a/208 +++ b/208 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 208 # # Run aio-dio-invalidate-failure - test race in read cache invalidation diff --git a/209 b/209 index 57cd429..06f10ae 100755 --- a/209 +++ b/209 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 209 # # Run aio-dio-invalidate-readahead - test sync DIO invalidation of readahead diff --git a/210 b/210 index 8db47b4..e093079 100755 --- a/210 +++ b/210 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 210 # # Run aio-dio-subblock-eof-read - test AIO read of last block of DIO file diff --git a/211 b/211 index 57ab2b4..9428320 100755 --- a/211 +++ b/211 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 211 # # Run aio-free-ring-with-bogus-nr-pages - test aio_setup_ring with bad nr_pages diff --git a/212 b/212 index f3e62ac..627a431 100755 --- a/212 +++ b/212 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 212 # # Run aio-io-setup-with-nonwritable-context-pointer - diff --git a/213 b/213 index 7d66338..9982dd4 100755 --- a/213 +++ b/213 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 213 # # Check some unwritten extent boundary conditions, fallocate version. diff --git a/214 b/214 index a71680a..eb18825 100755 --- a/214 +++ b/214 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 214 # # Basic unwritten extent sanity checks diff --git a/215 b/215 index 691e552..c61f7a5 100644 --- a/215 +++ b/215 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 215 # # Test out c/mtime updates after mapped writes. diff --git a/216 b/216 index f8ddb5d..7c046f5 100755 --- a/216 +++ b/216 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 216 # # log size mkfs test - ensure the log size scaling works for small filesystems diff --git a/217 b/217 index 18ab53e..6032578 100755 --- a/217 +++ b/217 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 217 # # large log size mkfs test - ensure the log size scaling works diff --git a/218 b/218 index 8c8afe7..53d0b61 100755 --- a/218 +++ b/218 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 218 # # Basic defragmentation sanity tests diff --git a/219 b/219 index 9d79d5c..08ecab6 100755 --- a/219 +++ b/219 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 219 # # Simple quota accounting test for direct/buffered/mmap IO. diff --git a/220 b/220 index 8d4987d..b913434 100644 --- a/220 +++ b/220 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 220 # # Test quota off handling. diff --git a/221 b/221 index c7fa64d..6681237 100644 --- a/221 +++ b/221 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 221 # # Check ctime updates when calling futimens without UTIME_OMIT for the diff --git a/222 b/222 index c22dd9a..574c181 100644 --- a/222 +++ b/222 @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # FS QA Test No. 222 # # xfs_fsr QA tests diff --git a/bench b/bench index 2ed4942..f415423 100755 --- a/bench +++ b/bench @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # Wrapper for automating benchmarking runs. # Usage: bench passes user group [script] diff --git a/check b/check index 5768be6..560ac7b 100755 --- a/check +++ b/check @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # Control script for QA # diff --git a/common b/common index e3d7d41..c66cbad 100644 --- a/common +++ b/common @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.attr b/common.attr index 5f16273..a6b9b3b 100644 --- a/common.attr +++ b/common.attr @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash #----------------------------------------------------------------------- # Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved. # This program is free software; you can redistribute it and/or modify diff --git a/common.bonnie b/common.bonnie index 6693502..96ca700 100644 --- a/common.bonnie +++ b/common.bonnie @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2002-2004 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.config b/common.config index fecbabe..26906aa 100644 --- a/common.config +++ b/common.config @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2000-2003,2006 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.dbench b/common.dbench index 584ef07..026acdf 100755 --- a/common.dbench +++ b/common.dbench @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2002-2005 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.defrag b/common.defrag index a0716de..1bcf01d 100644 --- a/common.defrag +++ b/common.defrag @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2009 Eric Sandeen # All Rights Reserved. diff --git a/common.dmapi b/common.dmapi index 3a3668d..c8a463a 100644 --- a/common.dmapi +++ b/common.dmapi @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.dump b/common.dump index db9a92e..f330daf 100644 --- a/common.dump +++ b/common.dump @@ -1,4 +1,4 @@ -#/bin/sh +##/bin/bash # # Copyright (c) 2000-2002,2005 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.filestreams b/common.filestreams index be8ec35..08eaf90 100644 --- a/common.filestreams +++ b/common.filestreams @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.filter b/common.filter index 067fafa..a0034c6 100644 --- a/common.filter +++ b/common.filter @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.log b/common.log index 56a2012..3958c48 100644 --- a/common.log +++ b/common.log @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.metaperf b/common.metaperf index f5384e5..9def379 100755 --- a/common.metaperf +++ b/common.metaperf @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2003-2005 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.punch b/common.punch index 42f6703..b6576f6 100644 --- a/common.punch +++ b/common.punch @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved. # diff --git a/common.quota b/common.quota index e2a7872..51bdc71 100644 --- a/common.quota +++ b/common.quota @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2000-2001,2005 Silicon Graphics, Inc. # All Rights Reserved. diff --git a/common.rc b/common.rc index 761170d..6424871 100644 --- a/common.rc +++ b/common.rc @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash #----------------------------------------------------------------------- # Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved. # This program is free software; you can redistribute it and/or modify diff --git a/common.repair b/common.repair index 66e8b20..c598782 100644 --- a/common.repair +++ b/common.repair @@ -1,4 +1,4 @@ -##/bin/sh +##/bin/bash # # Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. # -- 1.6.5 From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Tue Jan 19 03:02:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_62,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J92LAh178229 for ; Tue, 19 Jan 2010 03:02:21 -0600 X-ASG-Debug-ID: 1263891799-4e37018f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8084F1C5DD3E for ; Tue, 19 Jan 2010 01:03:19 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id GQqrJf40yFHIw2hx for ; Tue, 19 Jan 2010 01:03:19 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11529669-1927428 for ; Tue, 19 Jan 2010 19:33:18 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX9zZ-0003gH-IR for xfs@oss.sgi.com; Tue, 19 Jan 2010 20:03:17 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX9zY-00083z-PT for xfs@oss.sgi.com; Tue, 19 Jan 2010 20:03:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] xfsqa: xfs_check can see stale cached blocks Subject: [PATCH 3/3] xfsqa: xfs_check can see stale cached blocks Date: Tue, 19 Jan 2010 20:03:12 +1100 Message-Id: <1263891792-30952-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263891792-30952-1-git-send-email-david@fromorbit.com> References: <1263891792-30952-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263891801 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20218 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Test 017 is consistently failing now because the xfs_check uses buffered IO to read the block device and 017 runs xfs_check ona remount,ro filesystem. Hence the block device cache is never invalidated (the unmount path does this) and so xfs_check can see stale blocks from previous invocations instead of what is really on disk at the time it is run. Manually trash the page cache before running xfs_check to ensure that the blockdev cache is clean and we don't get false errors from stale blocks. Signed-off-by: Dave Chinner --- common.rc | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/common.rc b/common.rc index 6424871..896e38d 100644 --- a/common.rc +++ b/common.rc @@ -318,6 +318,7 @@ _scratch_xfs_check() SCRATCH_OPTIONS="" [ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \ SCRATCH_OPTIONS="-l $SCRATCH_LOGDEV" + [ "$HOSTOS" = "Linux" ] && echo 1 > /proc/sys/vm/drop_caches $XFS_CHECK_PROG $SCRATCH_OPTIONS $* $SCRATCH_DEV } @@ -931,6 +932,7 @@ _check_xfs_filesystem() ok=0 fi + [ "$HOSTOS" = "Linux" ] && echo 1 > /proc/sys/vm/drop_caches $XFS_CHECK_PROG $testoption $extra_log_options $device 2>&1 |\ _fix_malloc >$tmp.fs_check if [ -s $tmp.fs_check ] -- 1.6.5 From SRS0+M0si+48+fromorbit.com=dave@internode.on.net Tue Jan 19 03:02:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J92U6i178246 for ; Tue, 19 Jan 2010 03:02:31 -0600 X-ASG-Debug-ID: 1263891809-055a016e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A9A531734A6 for ; Tue, 19 Jan 2010 01:03:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id yDJ6Z616tzTOBh5L for ; Tue, 19 Jan 2010 01:03:29 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11709909-1927428 for ; Tue, 19 Jan 2010 19:33:28 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX9zZ-0003gF-Ex for xfs@oss.sgi.com; Tue, 19 Jan 2010 20:03:17 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX9zY-00083u-Kh for xfs@oss.sgi.com; Tue, 19 Jan 2010 20:03:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] xfsqa: update 214 golden output Subject: [PATCH 1/3] xfsqa: update 214 golden output Date: Tue, 19 Jan 2010 20:03:10 +1100 Message-Id: <1263891792-30952-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263891792-30952-1-git-send-email-david@fromorbit.com> References: <1263891792-30952-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1263891810 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0208 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20218 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean It does not contain the output from the recently added test, so fails when the test actually succeeds. Signed-off-by: Dave Chinner --- 214.out | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/214.out b/214.out index b6344c2..9a7a3cf 100644 --- a/214.out +++ b/214.out @@ -39,3 +39,7 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) * read 90112/90112 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +=== delalloc write 16k; fallocate same range === +wrote 16384/16384 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) + -- 1.6.5 From SRS0+bDqv+48+fromorbit.com=dave@internode.on.net Tue Jan 19 03:02:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J92Ueo178247 for ; Tue, 19 Jan 2010 03:02:31 -0600 X-ASG-Debug-ID: 1263891808-1ae502840000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A526711F97FD for ; Tue, 19 Jan 2010 01:03:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id dlM2iYLFKygoHKlp for ; Tue, 19 Jan 2010 01:03:29 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11648323-1927428 for ; Tue, 19 Jan 2010 19:33:28 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX9zZ-0003gG-Gk for xfs@oss.sgi.com; Tue, 19 Jan 2010 20:03:17 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX9zY-00083w-Nk for xfs@oss.sgi.com; Tue, 19 Jan 2010 20:03:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] xfsqa: Fix signal usage in aio-dio test code Subject: [PATCH 2/3] xfsqa: Fix signal usage in aio-dio test code Date: Tue, 19 Jan 2010 20:03:11 +1100 Message-Id: <1263891792-30952-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263891792-30952-1-git-send-email-david@fromorbit.com> References: <1263891792-30952-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263891810 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0200 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20217 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Using signal() to set up signal handlers doesn't always do what you want. A recent upgrade made test 208 fail because wait() was not getting interrupted by a SIGALRM. Tracing showed that signal() was being converted to a sigaction(SA_RESTART) handler, which allows syscalls that return ERESTARTSYS to immediately restart without returning EINTR to the calling process. The kernel code returns ERESTARTSYS to signal interruptions while in wait(). Replace the use of signal with sigaction() to ensure that the SA_RESTART flag is not set and the EINTR is delivered to the process sitting in wait(). This makes test 208 terminate at 200s again. Signed-off-by: Dave Chinner --- src/aio-dio-regress/aio-dio-invalidate-failure.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/src/aio-dio-regress/aio-dio-invalidate-failure.c b/src/aio-dio-regress/aio-dio-invalidate-failure.c index be01a3a..24f3e3c 100644 --- a/src/aio-dio-regress/aio-dio-invalidate-failure.c +++ b/src/aio-dio-regress/aio-dio-invalidate-failure.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -117,6 +118,7 @@ int main(int argc, char **argv) int fd; int fd2; int status; + struct sigaction sa; if (argc != 2) fail("only arg should be file name"); @@ -150,7 +152,12 @@ int main(int argc, char **argv) exit(0); } - signal(SIGALRM, alarm_handler); + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = alarm_handler; + sigemptyset(&sa.sa_mask); + if (sigaction(SIGALRM, &sa, NULL) == -1) + fail("sigaction: %d\n", errno); + alarm(SECONDS); pid = wait(&status); -- 1.6.5 From SRS0+bDqv+48+fromorbit.com=dave@internode.on.net Tue Jan 19 03:02:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J92Vfq178251 for ; Tue, 19 Jan 2010 03:02:31 -0600 X-ASG-Debug-ID: 1263891809-17f702b60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4147311F97FD for ; Tue, 19 Jan 2010 01:03:30 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id PiYiMH4wRuoMmrVp for ; Tue, 19 Jan 2010 01:03:30 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11648324-1927428 for ; Tue, 19 Jan 2010 19:33:28 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NX9zZ-0003gE-DX for xfs@oss.sgi.com; Tue, 19 Jan 2010 20:03:17 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NX9zY-00083s-J5 for xfs@oss.sgi.com; Tue, 19 Jan 2010 20:03:16 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] xfsqa: Fix various test-suite related failures Subject: [PATCH 0/3] xfsqa: Fix various test-suite related failures Date: Tue, 19 Jan 2010 20:03:09 +1100 Message-Id: <1263891792-30952-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263891811 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0025 1.0000 -2.0047 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20217 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean These are all code changes to the test suite to fix problems with the execution of tests on a bleeding edge system. From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:08:56 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J98sfG179512 for ; Tue, 19 Jan 2010 03:08:55 -0600 X-ASG-Debug-ID: 1263892194-057b01a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D0ACF1734F0 for ; Tue, 19 Jan 2010 01:09:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id cKPlZNkbT7nx1X1D for ; Tue, 19 Jan 2010 01:09:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXA5y-0006cW-4e; Tue, 19 Jan 2010 09:09:54 +0000 Date: Tue, 19 Jan 2010 04:09:54 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] mkfs: don't warn about topology when mkfsing a file Subject: Re: [PATCH] mkfs: don't warn about topology when mkfsing a file Message-ID: <20100119090953.GA24737@infradead.org> References: <4B54B4D1.7020500@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B54B4D1.7020500@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892194 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 18, 2010 at 01:21:53PM -0600, Eric Sandeen wrote: > Some tests were failing for me like: > > QA output created by 206 > === truncate file === > === mkfs.xfs === > +warning: unable to probe device toplology for device /mnt/test/fsfile.21615 > ... > > I thought about filtering the tests, but ... > > It seems that we shouldn't even be trying to get topology for a > plain file, should we? And then we won't warn about failure. Looks good to me. Would be even nicer if libblkid handled that case, but let's fix it where we can easily do it. Signed-off-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:12:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_14 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9CG5Q179779 for ; Tue, 19 Jan 2010 03:12:16 -0600 X-ASG-Debug-ID: 1263892396-055801ef0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B303F173602 for ; Tue, 19 Jan 2010 01:13:16 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id GeWUBtWs4ECh6D54 for ; Tue, 19 Jan 2010 01:13:16 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXA9E-0007bV-Cw; Tue, 19 Jan 2010 09:13:16 +0000 Date: Tue, 19 Jan 2010 04:13:16 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfsteststs: get fsstress DIO working on non-xfs filesystems Subject: Re: [PATCH] xfsteststs: get fsstress DIO working on non-xfs filesystems Message-ID: <20100119091316.GB24737@infradead.org> References: <4B54C8AB.6080607@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B54C8AB.6080607@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892396 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 18, 2010 at 02:46:35PM -0600, Eric Sandeen wrote: > Pretty sure all DIO IO fails in fsstress today since XFS_IOC_DIOINFO > fails. If so, rather than just bailing out on the op, assign > some sane default DIO parameters. > > This falls down for 4k sector devices but not really sure how to get > the underlying sector size easily from here; I think we can live > with this for now. > > hch suggested moving XFS_IOC_DIOINFO up higher in the vfs, that's > probably a good idea in the long run. > > Signed-off-by: Eric Sandeen > --- > > diff --git a/ltp/fsstress.c b/ltp/fsstress.c > index 6978381..dab6bf7 100644 > --- a/ltp/fsstress.c > +++ b/ltp/fsstress.c > @@ -1818,9 +1818,9 @@ dread_f(int opno, long r) > printf( > "%d/%d: dread - xfsctl(XFS_IOC_DIOINFO) %s failed %d\n", > procid, opno, f.path, errno); > - free_pathname(&f); > - close(fd); > - return; > + diob.d_maxiosz = -1U; > + diob.d_miniosz = 512; > + diob.d_mem = 512; > } > align = (__int64_t)diob.d_miniosz; > lr = ((__int64_t)random() << 32) + random(); > @@ -1888,9 +1888,9 @@ dwrite_f(int opno, long r) > printf("%d/%d: dwrite - xfsctl(XFS_IOC_DIOINFO)" > " %s failed %d\n", > procid, opno, f.path, errno); > - free_pathname(&f); > - close(fd); > - return; > + diob.d_maxiosz = -1U; > + diob.d_miniosz = 512; > + diob.d_mem = 512; Can you factor out the alignment bits into a small helper and use it in both places? static void get_alignment(pathname_t *f, int fd, struct dioattr *dio) { if (xfsctl(f->path, fd, XFS_IOC_DIOINFO, dio) < 0) { if (v) printf(...); /* use fallback values if the query fails. */ diob.d_maxiosz = -1U; diob.d_miniosz = 512; diob.d_mem = 512; } From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:14:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_63,J_CHICKENPOX_65,J_CHICKENPOX_66,URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9EXew179885 for ; Tue, 19 Jan 2010 03:14:34 -0600 X-ASG-Debug-ID: 1263892533-04ef02120000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 943D4173625 for ; Tue, 19 Jan 2010 01:15:33 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id bs6Q82SlAy2JOJLZ for ; Tue, 19 Jan 2010 01:15:33 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXABP-0008OH-QV; Tue, 19 Jan 2010 09:15:31 +0000 Date: Tue, 19 Jan 2010 04:15:31 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfsprogs: Do not remove configure information on clean Subject: Re: [PATCH 1/2] xfsprogs: Do not remove configure information on clean Message-ID: <20100119091531.GA29269@infradead.org> References: <1263861186-13589-1-git-send-email-david@fromorbit.com> <1263861186-13589-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861186-13589-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892533 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:33:05AM +1100, Dave Chinner wrote: > ??ormal packaging practice is to remove the configure scripts > on a 'make distclean' so that a 'make clean' doesn't result in > having to rerun the configure scripts. Change the clean targets > in the top level makefile to only clear configure files on > a distclean. > > Signed-off-by: Dave Chinner > --- > Makefile | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/Makefile b/Makefile > index 2d394e4..a7615ca 100644 > --- a/Makefile > +++ b/Makefile > @@ -15,7 +15,7 @@ SRCTAR = $(PKG_NAME)-$(PKG_VERSION).tar.gz > CONFIGURE = aclocal.m4 configure config.guess config.sub install-sh ltmain.sh > LSRCFILES = configure.in release.sh README VERSION $(CONFIGURE) > > -LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ > +DISTDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ > built .census install.* install-dev.* *.gz autom4te.cache/* libtool \ > include/builddefs include/platform_defs.h But this isn't all configure stuff, is it? install.* install-dev.* *.gz is from the install process, and .dep is part of make dep. From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:14:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9EwF3179921 for ; Tue, 19 Jan 2010 03:14:58 -0600 X-ASG-Debug-ID: 1263892558-4e3902180000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 591F01C5E0A9 for ; Tue, 19 Jan 2010 01:15:58 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id pC14ONkjflPoyOaq for ; Tue, 19 Jan 2010 01:15:58 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXABq-0008Qo-1Q; Tue, 19 Jan 2010 09:15:58 +0000 Date: Tue, 19 Jan 2010 04:15:58 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfsprogs: Make the compile output cleaner V3 Subject: Re: [PATCH 2/2] xfsprogs: Make the compile output cleaner V3 Message-ID: <20100119091558.GB29269@infradead.org> References: <1263861186-13589-1-git-send-email-david@fromorbit.com> <1263861186-13589-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861186-13589-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892558 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:15:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9FbXA179989 for ; Tue, 19 Jan 2010 03:15:37 -0600 X-ASG-Debug-ID: 1263892597-04ef021a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CE9E417362A for ; Tue, 19 Jan 2010 01:16:37 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 2S0EEQE0iRLqq82Y for ; Tue, 19 Jan 2010 01:16:37 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXACT-0008UF-HM; Tue, 19 Jan 2010 09:16:37 +0000 Date: Tue, 19 Jan 2010 04:16:37 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfstests: Clean up build output Subject: Re: [PATCH 1/2] xfstests: Clean up build output Message-ID: <20100119091637.GC29269@infradead.org> References: <1263891574-30762-1-git-send-email-david@fromorbit.com> <1263891574-30762-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263891574-30762-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892597 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:16:15 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9GEkg180032 for ; Tue, 19 Jan 2010 03:16:15 -0600 X-ASG-Debug-ID: 1263892634-4a9e026b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1450C1C5DC30 for ; Tue, 19 Jan 2010 01:17:14 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id WGYQ5nE2us36kFMa for ; Tue, 19 Jan 2010 01:17:14 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAD4-00007E-C3; Tue, 19 Jan 2010 09:17:14 +0000 Date: Tue, 19 Jan 2010 04:17:14 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: Use common rules to build binaries Subject: Re: [PATCH 2/2] xfstests: Use common rules to build binaries Message-ID: <20100119091714.GD29269@infradead.org> References: <1263891574-30762-1-git-send-email-david@fromorbit.com> <1263891574-30762-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263891574-30762-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892635 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:16:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9GV5k180052 for ; Tue, 19 Jan 2010 03:16:32 -0600 X-ASG-Debug-ID: 1263892651-17f303810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 90090F1EBB4 for ; Tue, 19 Jan 2010 01:17:31 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id GrZrnIDTApOZKwyd for ; Tue, 19 Jan 2010 01:17:31 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXADL-00009B-1g; Tue, 19 Jan 2010 09:17:31 +0000 Date: Tue, 19 Jan 2010 04:17:31 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] xfsqa: update 214 golden output Subject: Re: [PATCH 1/3] xfsqa: update 214 golden output Message-ID: <20100119091731.GE29269@infradead.org> References: <1263891792-30952-1-git-send-email-david@fromorbit.com> <1263891792-30952-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263891792-30952-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892651 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 08:03:10PM +1100, Dave Chinner wrote: > It does not contain the output from the recently added test, > so fails when the test actually succeeds. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:17:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9H6e2180084 for ; Tue, 19 Jan 2010 03:17:06 -0600 X-ASG-Debug-ID: 1263892686-4a9f02690000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BD7921C5E0CB for ; Tue, 19 Jan 2010 01:18:06 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id M3tJDStPxwwCoxyP for ; Tue, 19 Jan 2010 01:18:06 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXADu-0000G2-Eo; Tue, 19 Jan 2010 09:18:06 +0000 Date: Tue, 19 Jan 2010 04:18:06 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/3] xfsqa: Fix signal usage in aio-dio test code Subject: Re: [PATCH 2/3] xfsqa: Fix signal usage in aio-dio test code Message-ID: <20100119091806.GF29269@infradead.org> References: <1263891792-30952-1-git-send-email-david@fromorbit.com> <1263891792-30952-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263891792-30952-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892686 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 08:03:11PM +1100, Dave Chinner wrote: > Using signal() to set up signal handlers doesn't always do what you > want. A recent upgrade made test 208 fail because wait() was not > getting interrupted by a SIGALRM. Tracing showed that signal() was > being converted to a sigaction(SA_RESTART) handler, which allows > syscalls that return ERESTARTSYS to immediately restart without > returning EINTR to the calling process. The kernel code returns > ERESTARTSYS to signal interruptions while in wait(). > > Replace the use of signal with sigaction() to ensure that the > SA_RESTART flag is not set and the EINTR is delivered to the process > sitting in wait(). This makes test 208 terminate at 200s again. Yeah, signal is deprecated in favour of sigaction for a reason.. Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:18:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9I8Ki180134 for ; Tue, 19 Jan 2010 03:18:08 -0600 X-ASG-Debug-ID: 1263892747-4aab024b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1F1AE1C5E0D0 for ; Tue, 19 Jan 2010 01:19:08 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id p4WAdmFqLzIiCL0z for ; Tue, 19 Jan 2010 01:19:08 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAEt-0000LG-QB; Tue, 19 Jan 2010 09:19:07 +0000 Date: Tue, 19 Jan 2010 04:19:07 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/3] xfsqa: xfs_check can see stale cached blocks Subject: Re: [PATCH 3/3] xfsqa: xfs_check can see stale cached blocks Message-ID: <20100119091907.GG29269@infradead.org> References: <1263891792-30952-1-git-send-email-david@fromorbit.com> <1263891792-30952-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263891792-30952-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892748 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 08:03:12PM +1100, Dave Chinner wrote: > Test 017 is consistently failing now because the xfs_check uses > buffered IO to read the block device and 017 runs xfs_check ona > remount,ro filesystem. Hence the block device cache is never > invalidated (the unmount path does this) and so xfs_check can see > stale blocks from previous invocations instead of what is really on > disk at the time it is run. > > Manually trash the page cache before running xfs_check to ensure > that the blockdev cache is clean and we don't get false errors > from stale blocks. I don't think this is correct. We need to provide this synchronization from kernel land. IIRC Al even has a patch towards this in his tree, can't point you to it to try it because his tree on kernel.org seems messed up right now. From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:20:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9KXfp180231 for ; Tue, 19 Jan 2010 03:20:34 -0600 X-ASG-Debug-ID: 1263892893-17f703a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D3A46F1EC96 for ; Tue, 19 Jan 2010 01:21:33 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Ggjf2kZyAXLTE3Xy for ; Tue, 19 Jan 2010 01:21:33 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAHF-0001Ur-BK; Tue, 19 Jan 2010 09:21:33 +0000 Date: Tue, 19 Jan 2010 04:21:33 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/7] xfsprogs: fix some trivial warnings in xfs_db Subject: Re: [PATCH 3/7] xfsprogs: fix some trivial warnings in xfs_db Message-ID: <20100119092133.GB1784@infradead.org> References: <1263861413-13729-1-git-send-email-david@fromorbit.com> <1263861413-13729-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861413-13729-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892893 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:36:49AM +1100, Dave Chinner wrote: > - xname.name = (char *)dep->name; > + xname.name = (uchar_t *)dep->name; Aren't these both unsigned after the latest version of the signedness patches are in? Maybe just put the other one in for now. From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:21:41 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9LeYt180310 for ; Tue, 19 Jan 2010 03:21:41 -0600 X-ASG-Debug-ID: 1263892960-17f603da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 18DA1F1ECB0 for ; Tue, 19 Jan 2010 01:22:40 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id aEZiLXfuxF3jX3bn for ; Tue, 19 Jan 2010 01:22:40 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAIK-0001ku-J1; Tue, 19 Jan 2010 09:22:40 +0000 Date: Tue, 19 Jan 2010 04:22:40 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfs: suppress spurious uninitialised var warning in xfs_bmapi() Subject: Re: [PATCH 1/2] xfs: suppress spurious uninitialised var warning in xfs_bmapi() Message-ID: <20100119092240.GC1784@infradead.org> References: <1263861711-13900-1-git-send-email-david@fromorbit.com> <1263861711-13900-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861711-13900-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263892961 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:41:50AM +1100, Dave Chinner wrote: > Initialise the xfs_bmalloca_t structure to zero to avoid uninitialised > variable warnings. This is done by zeroing the arg structure rather than > using the uninitialised_var() trick so we know for certain that the > structure is correctly initialised as xfs_bmapi is a very complex > function and it is difficult to prove warnings are spurious. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:22:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9MKFO180351 for ; Tue, 19 Jan 2010 03:22:20 -0600 X-ASG-Debug-ID: 1263893000-0571021d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6DDC51733BD for ; Tue, 19 Jan 2010 01:23:20 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 7wH2qyGl1tE895Tr for ; Tue, 19 Jan 2010 01:23:20 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAIy-0001pu-4E; Tue, 19 Jan 2010 09:23:20 +0000 Date: Tue, 19 Jan 2010 04:23:20 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfs: rearrange xfs_mod_sb() to avoid array subscript warning Subject: Re: [PATCH 2/2] xfs: rearrange xfs_mod_sb() to avoid array subscript warning Message-ID: <20100119092320.GD1784@infradead.org> References: <1263861711-13900-1-git-send-email-david@fromorbit.com> <1263861711-13900-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861711-13900-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263893000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:41:51AM +1100, Dave Chinner wrote: > gcc warns of an array subscript out of bounds in xfs_mod_sb(). > The code is written in such a way that if the array subscript is > out of bounds, then it will assert fail. Rearrange the code to > avoid the bounds check warning. Does it avoid the warning also for non-debug builds where the assert goes away? Anyway, the reordering is correct, so: Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:23:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9NWtD180407 for ; Tue, 19 Jan 2010 03:23:33 -0600 X-ASG-Debug-ID: 1263893072-218602e80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DCF98F1ECC1 for ; Tue, 19 Jan 2010 01:24:32 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 9ElDv9oYKBS71tAt for ; Tue, 19 Jan 2010 01:24:32 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAK8-0001uf-Bb; Tue, 19 Jan 2010 09:24:32 +0000 Date: Tue, 19 Jan 2010 04:24:32 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/8] xfs: directory names are unsigned Subject: Re: [PATCH 1/8] xfs: directory names are unsigned Message-ID: <20100119092432.GA7168@infradead.org> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> <1263861026-13448-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861026-13448-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263893072 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:30:19AM +1100, Dave Chinner wrote: > Convert the struct xfs_name to use unsigned chars for the name > strings to match both what is stored on disk (__uint8_t) and what > the VFS expects (unsigned char). Looks good, Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:24:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9O8rD180451 for ; Tue, 19 Jan 2010 03:24:08 -0600 X-ASG-Debug-ID: 1263893107-4e3202460000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D5C51C5DDDE for ; Tue, 19 Jan 2010 01:25:08 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id nTJqOrK1R900gJu2 for ; Tue, 19 Jan 2010 01:25:08 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAKh-0002Ss-JD; Tue, 19 Jan 2010 09:25:07 +0000 Date: Tue, 19 Jan 2010 04:25:07 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/8] xfs: convert DM ops to use unsigned char names Subject: Re: [PATCH 2/8] xfs: convert DM ops to use unsigned char names Message-ID: <20100119092507.GB7168@infradead.org> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> <1263861026-13448-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861026-13448-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263893108 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:30:20AM +1100, Dave Chinner wrote: > dmops uses a signed char for it's namespace event. To be consistent > with the rest of the code, convert them to unsigned char for the > namespace string. Looks good, Reviewed-by: Christoph Hellwig possibly we should just get rid of the dm hooks now that they've been dead for years.. From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:24:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9OYrM180487 for ; Tue, 19 Jan 2010 03:24:34 -0600 X-ASG-Debug-ID: 1263893134-4e3602490000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BD6891C5DF21 for ; Tue, 19 Jan 2010 01:25:34 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id rDzv65e5oPrfQz9w for ; Tue, 19 Jan 2010 01:25:34 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAL8-0002VF-Ee; Tue, 19 Jan 2010 09:25:34 +0000 Date: Tue, 19 Jan 2010 04:25:34 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/8] xfs: convert dirnameops to unsigned char names Subject: Re: [PATCH 3/8] xfs: convert dirnameops to unsigned char names Message-ID: <20100119092534.GC7168@infradead.org> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> <1263861026-13448-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861026-13448-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263893134 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:30:21AM +1100, Dave Chinner wrote: > To be consistent across the codebase, convert the dirnameops to pass > the directory names by unsigned char strings. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:25:48 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9PmwX180554 for ; Tue, 19 Jan 2010 03:25:48 -0600 X-ASG-Debug-ID: 1263893208-4aa902950000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 838ED1C5DF57 for ; Tue, 19 Jan 2010 01:26:48 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Oy0H7GsdoIQdTXoG for ; Tue, 19 Jan 2010 01:26:48 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAMK-0002bh-7Q; Tue, 19 Jan 2010 09:26:48 +0000 Date: Tue, 19 Jan 2010 04:26:48 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/8] xfs: make xfs_dir_cilookup_result use unsigned char Subject: Re: [PATCH 4/8] xfs: make xfs_dir_cilookup_result use unsigned char Message-ID: <20100119092648.GD7168@infradead.org> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> <1263861026-13448-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861026-13448-5-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263893208 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:30:22AM +1100, Dave Chinner wrote: > For consistency with the result of the code. > > Signed-off-by: Dave Chinner > --- > fs/xfs/xfs_dir2.c | 2 +- > fs/xfs/xfs_dir2.h | 4 ++-- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/fs/xfs/xfs_dir2.c b/fs/xfs/xfs_dir2.c > index c21c527..3a8c6ba 100644 > --- a/fs/xfs/xfs_dir2.c > +++ b/fs/xfs/xfs_dir2.c > @@ -247,7 +247,7 @@ xfs_dir_createname( > int > xfs_dir_cilookup_result( > struct xfs_da_args *args, > - const char *name, > + const unsigned char *name, > int len) > { Given that the value we copy things into is unsigned anyway this looks correct, Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:26:02 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9Q272180576 for ; Tue, 19 Jan 2010 03:26:02 -0600 X-ASG-Debug-ID: 1263893222-0574024a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 89F651735B6 for ; Tue, 19 Jan 2010 01:27:02 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id En1R3fKlfq9yDJMa for ; Tue, 19 Jan 2010 01:27:02 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAMY-0002cE-6q; Tue, 19 Jan 2010 09:27:02 +0000 Date: Tue, 19 Jan 2010 04:27:02 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/8] xfs: xfs_buf_iomove() doesn't care about signedness Subject: Re: [PATCH 5/8] xfs: xfs_buf_iomove() doesn't care about signedness Message-ID: <20100119092701.GE7168@infradead.org> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> <1263861026-13448-6-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861026-13448-6-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263893222 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:30:23AM +1100, Dave Chinner wrote: > xfs_buf_iomove() uses xfs_caddr_t as it's parameter types, but it doesn't > care about the signedness of the variables as it is just copying the > data. Change the prototype to use void * so that we don't get sign > warnings at call sites. Looks good, Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:26:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9QnjG180625 for ; Tue, 19 Jan 2010 03:26:50 -0600 X-ASG-Debug-ID: 1263893269-0573025c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 132F91735C8 for ; Tue, 19 Jan 2010 01:27:49 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id bMGGQH0srfviRnqA for ; Tue, 19 Jan 2010 01:27:49 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXANJ-0002gK-Ob; Tue, 19 Jan 2010 09:27:49 +0000 Date: Tue, 19 Jan 2010 04:27:49 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/8] xfs: clean up sign warnings in dir2 code Subject: Re: [PATCH 7/8] xfs: clean up sign warnings in dir2 code Message-ID: <20100119092749.GF7168@infradead.org> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> <1263861026-13448-8-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861026-13448-8-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263893270 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:30:25AM +1100, Dave Chinner wrote: > We are now consistently using unsigned char strings for names > so fix up the remaining warnings in the dir2 code to complete > the cleanup. The cast in the initializers looks a bit ugly, but I don't know a better way either. Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:28:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9SdHM180722 for ; Tue, 19 Jan 2010 03:28:40 -0600 X-ASG-Debug-ID: 1263893379-5ee701ac0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0E86D1C5DFA7 for ; Tue, 19 Jan 2010 01:29:39 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FZTeTMkPy5GXemJ9 for ; Tue, 19 Jan 2010 01:29:39 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAP5-0002uy-Nr; Tue, 19 Jan 2010 09:29:39 +0000 Date: Tue, 19 Jan 2010 04:29:39 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 8/8] xfs: make compile warn about char sign mismatches again Subject: Re: [PATCH 8/8] xfs: make compile warn about char sign mismatches again Message-ID: <20100119092939.GG7168@infradead.org> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> <1263861026-13448-9-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861026-13448-9-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263893380 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:30:26AM +1100, Dave Chinner wrote: > The -fno-unsigned-char directive has no effect anymore as the > XFs build is clean. However, the kernel build hides pointer sign > differences so turn that back on so that we can clean up all the > mismatches prior to a userspace code resync. Not so happy about turning the warning on so we have local compiler warning differences from the rest of the kernel again, but it's not that bad, so Reviewed-by: Christoph Hellwig > index 6f26875..9f7c001 100644 > --- a/fs/xfs/xfs_vnodeops.c > +++ b/fs/xfs/xfs_vnodeops.c > @@ -2199,7 +2199,8 @@ xfs_symlink( > if (DM_EVENT_ENABLED(dp, DM_EVENT_SYMLINK)) { > error = XFS_SEND_NAMESP(mp, DM_EVENT_SYMLINK, dp, > DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, > - link_name->name, target_path, 0, 0, 0); > + link_name->name, > + (unsigned char *)target_path, 0, 0, 0); > if (error) > return error; > } > @@ -2395,7 +2396,8 @@ std_return: > dp, DM_RIGHT_NULL, > error ? NULL : ip, > DM_RIGHT_NULL, link_name->name, > - target_path, 0, error, 0); > + (unsigned char *)target_path, > + 0, error, 0); These changes are nowhere mentioned in the changelog. And they probably belong into the patch changing the dmapi events to take unsigned chars. From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:31:48 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9VlfW180897 for ; Tue, 19 Jan 2010 03:31:48 -0600 X-ASG-Debug-ID: 1263893567-055602710000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 11C68173669 for ; Tue, 19 Jan 2010 01:32:47 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id zESIiHBo8BAXG2Pz for ; Tue, 19 Jan 2010 01:32:47 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXAS7-00041d-Nz; Tue, 19 Jan 2010 09:32:47 +0000 Date: Tue, 19 Jan 2010 04:32:47 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/8] xfs: convert attr to use unsigned names Subject: Re: [PATCH 6/8] xfs: convert attr to use unsigned names Message-ID: <20100119093247.GH7168@infradead.org> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> <1263861026-13448-7-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861026-13448-7-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263893568 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:30:24AM +1100, Dave Chinner wrote: > To be consistent with the directory code, the attr code should use > unsigned names. Convert the names from the vfs at the highest level > to unsigned, and ??nsure they are consistenly used as unsigned down > to disk. > > Signed-off-by: Dave Chinner > --- > fs/xfs/linux-2.6/xfs_acl.c | 11 ++++++----- > fs/xfs/linux-2.6/xfs_ioctl.c | 18 +++++++++--------- > fs/xfs/linux-2.6/xfs_ioctl.h | 12 ++++++------ > fs/xfs/linux-2.6/xfs_ioctl32.c | 4 ++-- > fs/xfs/linux-2.6/xfs_iops.c | 4 ++-- > fs/xfs/linux-2.6/xfs_xattr.c | 27 +++++++++++++++++++-------- > fs/xfs/xfs_acl.h | 4 ++-- > fs/xfs/xfs_attr.c | 38 +++++++++++++++++++++++--------------- > fs/xfs/xfs_attr.h | 2 +- > fs/xfs/xfs_attr_leaf.c | 28 ++++++++++++++-------------- > fs/xfs/xfs_attr_sf.h | 2 +- > fs/xfs/xfs_vnodeops.h | 10 +++++----- > 12 files changed, 90 insertions(+), 70 deletions(-) > > diff --git a/fs/xfs/linux-2.6/xfs_acl.c b/fs/xfs/linux-2.6/xfs_acl.c It's a bit unfortunate that the highlevel xattr code gets char froms the VFS, but better convert them at the highest level and keep the lower ones clean, so: Reviewed-by: Christoph Hellwig From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:33:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9XfNm181015 for ; Tue, 19 Jan 2010 03:33:42 -0600 X-ASG-Debug-ID: 1263893681-215603970000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8187A124D0F9 for ; Tue, 19 Jan 2010 01:34:41 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ppFXd4HhkAaSiXbF for ; Tue, 19 Jan 2010 01:34:41 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXATw-0004Cb-Vg; Tue, 19 Jan 2010 09:34:40 +0000 Date: Tue, 19 Jan 2010 04:34:40 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/7] xfsprogs: fix some trivial warnings in xfs_db Subject: Re: [PATCH 3/7] xfsprogs: fix some trivial warnings in xfs_db Message-ID: <20100119093440.GA15482@infradead.org> References: <1263861413-13729-1-git-send-email-david@fromorbit.com> <1263861413-13729-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263861413-13729-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263893681 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 11:36:49AM +1100, Dave Chinner wrote: > Three warnings, none harmful - one dir2 name sign warning and > two cases where gcc can't work out if a variable is initialised > correctly in a child function or not. > > Signed-off-by: Dave Chinner > Reviewed-by: Christoph Hellwig > --- > db/check.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/db/check.c b/db/check.c > index 7620d9c..f94a16b 100644 > --- a/db/check.c > +++ b/db/check.c > @@ -2317,7 +2317,7 @@ process_data_dir_v2( > tag_err += be16_to_cpu(*tagp) != (char *)dep - (char *)data; > addr = xfs_dir2_db_off_to_dataptr(mp, db, > (char *)dep - (char *)data); > - xname.name = (char *)dep->name; > + xname.name = (uchar_t *)dep->name; Aren't hese now both unsigned after the kernel changes are sycned over? And btw, please also avoid uchar_t in xfsprogs, it will be gone with next full libxfs resync. From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:55:55 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9tsRj182570 for ; Tue, 19 Jan 2010 03:55:55 -0600 X-ASG-Debug-ID: 1263895014-0e5902a60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EBD66173732 for ; Tue, 19 Jan 2010 01:56:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 58DFlk9iVqG4cPuw for ; Tue, 19 Jan 2010 01:56:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXApS-0001FR-Ip for xfs@oss.sgi.com; Tue, 19 Jan 2010 09:56:54 +0000 Message-Id: <20100119095643.378866749@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 19 Jan 2010 04:56:43 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/3] random cleanups for 2.6.34 Subject: [PATCH 0/3] random cleanups for 2.6.34 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263895014 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:55:55 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_64,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9ttua182581 for ; Tue, 19 Jan 2010 03:55:55 -0600 X-ASG-Debug-ID: 1263895015-4e3803350000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9EE571C5E164 for ; Tue, 19 Jan 2010 01:56:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id RnWlM1PPoy0A3tNS for ; Tue, 19 Jan 2010 01:56:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXApT-0001GZ-7t for xfs@oss.sgi.com; Tue, 19 Jan 2010 09:56:55 +0000 Message-Id: <20100119095655.041953657@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 19 Jan 2010 04:56:45 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/3] xfs: kill XLOG_VEC_SET_TYPE Subject: [PATCH 2/3] xfs: kill XLOG_VEC_SET_TYPE References: <20100119095643.378866749@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-kill-XLOG_VEC_SET_TYPE X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263895015 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This macro only obsfucates the log item type assignments, so kill it. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_dquot_item.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot_item.c 2010-01-08 14:27:59.248004175 +0100 +++ xfs/fs/xfs/quota/xfs_dquot_item.c 2010-01-08 14:33:49.403031925 +0100 @@ -74,11 +74,11 @@ xfs_qm_dquot_logitem_format( logvec->i_addr = (xfs_caddr_t)&logitem->qli_format; logvec->i_len = sizeof(xfs_dq_logformat_t); - XLOG_VEC_SET_TYPE(logvec, XLOG_REG_TYPE_QFORMAT); + logvec->i_type = XLOG_REG_TYPE_QFORMAT; logvec++; logvec->i_addr = (xfs_caddr_t)&logitem->qli_dquot->q_core; logvec->i_len = sizeof(xfs_disk_dquot_t); - XLOG_VEC_SET_TYPE(logvec, XLOG_REG_TYPE_DQUOT); + logvec->i_type = XLOG_REG_TYPE_DQUOT; ASSERT(2 == logitem->qli_item.li_desc->lid_size); logitem->qli_format.qlf_size = 2; @@ -466,7 +466,7 @@ xfs_qm_qoff_logitem_format(xfs_qoff_logi log_vector->i_addr = (xfs_caddr_t)&(qf->qql_format); log_vector->i_len = sizeof(xfs_qoff_logitem_t); - XLOG_VEC_SET_TYPE(log_vector, XLOG_REG_TYPE_QUOTAOFF); + log_vector->i_type = XLOG_REG_TYPE_QUOTAOFF; qf->qql_format.qf_size = 1; } Index: xfs/fs/xfs/xfs_buf_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_buf_item.c 2010-01-08 14:27:59.260254129 +0100 +++ xfs/fs/xfs/xfs_buf_item.c 2010-01-08 14:29:09.596255635 +0100 @@ -250,7 +250,7 @@ xfs_buf_item_format( ((bip->bli_format.blf_map_size - 1) * sizeof(uint))); vecp->i_addr = (xfs_caddr_t)&bip->bli_format; vecp->i_len = base_size; - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_BFORMAT); + vecp->i_type = XLOG_REG_TYPE_BFORMAT; vecp++; nvecs = 1; @@ -297,14 +297,14 @@ xfs_buf_item_format( buffer_offset = first_bit * XFS_BLI_CHUNK; vecp->i_addr = xfs_buf_offset(bp, buffer_offset); vecp->i_len = nbits * XFS_BLI_CHUNK; - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_BCHUNK); + vecp->i_type = XLOG_REG_TYPE_BCHUNK; nvecs++; break; } else if (next_bit != last_bit + 1) { buffer_offset = first_bit * XFS_BLI_CHUNK; vecp->i_addr = xfs_buf_offset(bp, buffer_offset); vecp->i_len = nbits * XFS_BLI_CHUNK; - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_BCHUNK); + vecp->i_type = XLOG_REG_TYPE_BCHUNK; nvecs++; vecp++; first_bit = next_bit; @@ -316,7 +316,7 @@ xfs_buf_item_format( buffer_offset = first_bit * XFS_BLI_CHUNK; vecp->i_addr = xfs_buf_offset(bp, buffer_offset); vecp->i_len = nbits * XFS_BLI_CHUNK; - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_BCHUNK); + vecp->i_type = XLOG_REG_TYPE_BCHUNK; /* You would think we need to bump the nvecs here too, but we do not * this number is used by recovery, and it gets confused by the boundary * split here Index: xfs/fs/xfs/xfs_extfree_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_extfree_item.c 2010-01-08 14:27:59.274254026 +0100 +++ xfs/fs/xfs/xfs_extfree_item.c 2010-01-08 14:29:26.849016123 +0100 @@ -82,7 +82,7 @@ xfs_efi_item_format(xfs_efi_log_item_t * log_vector->i_addr = (xfs_caddr_t)&(efip->efi_format); log_vector->i_len = size; - XLOG_VEC_SET_TYPE(log_vector, XLOG_REG_TYPE_EFI_FORMAT); + log_vector->i_type = XLOG_REG_TYPE_EFI_FORMAT; ASSERT(size >= sizeof(xfs_efi_log_format_t)); } @@ -406,7 +406,7 @@ xfs_efd_item_format(xfs_efd_log_item_t * log_vector->i_addr = (xfs_caddr_t)&(efdp->efd_format); log_vector->i_len = size; - XLOG_VEC_SET_TYPE(log_vector, XLOG_REG_TYPE_EFD_FORMAT); + log_vector->i_type = XLOG_REG_TYPE_EFD_FORMAT; ASSERT(size >= sizeof(xfs_efd_log_format_t)); } Index: xfs/fs/xfs/xfs_inode_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.c 2010-01-08 14:27:59.286003706 +0100 +++ xfs/fs/xfs/xfs_inode_item.c 2010-01-08 14:32:40.497005581 +0100 @@ -228,7 +228,7 @@ xfs_inode_item_format( vecp->i_addr = (xfs_caddr_t)&iip->ili_format; vecp->i_len = sizeof(xfs_inode_log_format_t); - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_IFORMAT); + vecp->i_type = XLOG_REG_TYPE_IFORMAT; vecp++; nvecs = 1; @@ -279,7 +279,7 @@ xfs_inode_item_format( vecp->i_addr = (xfs_caddr_t)&ip->i_d; vecp->i_len = sizeof(struct xfs_icdinode); - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_ICORE); + vecp->i_type = XLOG_REG_TYPE_ICORE; vecp++; nvecs++; iip->ili_format.ilf_fields |= XFS_ILOG_CORE; @@ -336,7 +336,7 @@ xfs_inode_item_format( vecp->i_addr = (char *)(ip->i_df.if_u1.if_extents); vecp->i_len = ip->i_df.if_bytes; - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_IEXT); + vecp->i_type = XLOG_REG_TYPE_IEXT; } else #endif { @@ -355,7 +355,7 @@ xfs_inode_item_format( vecp->i_addr = (xfs_caddr_t)ext_buffer; vecp->i_len = xfs_iextents_copy(ip, ext_buffer, XFS_DATA_FORK); - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_IEXT); + vecp->i_type = XLOG_REG_TYPE_IEXT; } ASSERT(vecp->i_len <= ip->i_df.if_bytes); iip->ili_format.ilf_dsize = vecp->i_len; @@ -373,7 +373,7 @@ xfs_inode_item_format( ASSERT(ip->i_df.if_broot != NULL); vecp->i_addr = (xfs_caddr_t)ip->i_df.if_broot; vecp->i_len = ip->i_df.if_broot_bytes; - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_IBROOT); + vecp->i_type = XLOG_REG_TYPE_IBROOT; vecp++; nvecs++; iip->ili_format.ilf_dsize = ip->i_df.if_broot_bytes; @@ -399,7 +399,7 @@ xfs_inode_item_format( ASSERT((ip->i_df.if_real_bytes == 0) || (ip->i_df.if_real_bytes == data_bytes)); vecp->i_len = (int)data_bytes; - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_ILOCAL); + vecp->i_type = XLOG_REG_TYPE_ILOCAL; vecp++; nvecs++; iip->ili_format.ilf_dsize = (unsigned)data_bytes; @@ -477,7 +477,7 @@ xfs_inode_item_format( vecp->i_len = xfs_iextents_copy(ip, ext_buffer, XFS_ATTR_FORK); #endif - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_IATTR_EXT); + vecp->i_type = XLOG_REG_TYPE_IATTR_EXT; iip->ili_format.ilf_asize = vecp->i_len; vecp++; nvecs++; @@ -492,7 +492,7 @@ xfs_inode_item_format( ASSERT(ip->i_afp->if_broot != NULL); vecp->i_addr = (xfs_caddr_t)ip->i_afp->if_broot; vecp->i_len = ip->i_afp->if_broot_bytes; - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_IATTR_BROOT); + vecp->i_type = XLOG_REG_TYPE_IATTR_BROOT; vecp++; nvecs++; iip->ili_format.ilf_asize = ip->i_afp->if_broot_bytes; @@ -516,7 +516,7 @@ xfs_inode_item_format( ASSERT((ip->i_afp->if_real_bytes == 0) || (ip->i_afp->if_real_bytes == data_bytes)); vecp->i_len = (int)data_bytes; - XLOG_VEC_SET_TYPE(vecp, XLOG_REG_TYPE_IATTR_LOCAL); + vecp->i_type = XLOG_REG_TYPE_IATTR_LOCAL; vecp++; nvecs++; iip->ili_format.ilf_asize = (unsigned)data_bytes; Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2010-01-08 14:27:59.297004270 +0100 +++ xfs/fs/xfs/xfs_log.c 2010-01-08 14:33:35.830255519 +0100 @@ -617,7 +617,7 @@ xfs_log_unmount_write(xfs_mount_t *mp) if (! (XLOG_FORCED_SHUTDOWN(log))) { reg[0].i_addr = (void*)&magic; reg[0].i_len = sizeof(magic); - XLOG_VEC_SET_TYPE(®[0], XLOG_REG_TYPE_UNMOUNT); + reg[0].i_type = XLOG_REG_TYPE_UNMOUNT; error = xfs_log_reserve(mp, 600, 1, &tic, XFS_LOG, 0, XLOG_UNMOUNT_REC_TYPE); @@ -1236,7 +1236,7 @@ xlog_commit_record(xfs_mount_t *mp, reg[0].i_addr = NULL; reg[0].i_len = 0; - XLOG_VEC_SET_TYPE(®[0], XLOG_REG_TYPE_COMMIT); + reg[0].i_type = XLOG_REG_TYPE_COMMIT; ASSERT_ALWAYS(iclog); if ((error = xlog_write(mp, reg, 1, ticket, commitlsnp, Index: xfs/fs/xfs/xfs_log.h =================================================================== --- xfs.orig/fs/xfs/xfs_log.h 2010-01-08 14:33:55.979280121 +0100 +++ xfs/fs/xfs/xfs_log.h 2010-01-08 14:34:13.569006415 +0100 @@ -110,10 +110,8 @@ static inline xfs_lsn_t _lsn_cmp(xfs_lsn #define XLOG_REG_TYPE_TRANSHDR 19 #define XLOG_REG_TYPE_MAX 19 -#define XLOG_VEC_SET_TYPE(vecp, t) ((vecp)->i_type = (t)) - typedef struct xfs_log_iovec { - xfs_caddr_t i_addr; /* beginning address of region */ + xfs_caddr_t i_addr; /* beginning address of region */ int i_len; /* length in bytes of region */ uint i_type; /* type of region */ } xfs_log_iovec_t; Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2010-01-08 14:27:59.307004006 +0100 +++ xfs/fs/xfs/xfs_trans.c 2010-01-08 14:33:46.908006228 +0100 @@ -1121,7 +1121,7 @@ xfs_trans_fill_vecs( tp->t_header.th_num_items = nitems; log_vector->i_addr = (xfs_caddr_t)&tp->t_header; log_vector->i_len = sizeof(xfs_trans_header_t); - XLOG_VEC_SET_TYPE(log_vector, XLOG_REG_TYPE_TRANSHDR); + log_vector->i_type = XLOG_REG_TYPE_TRANSHDR; } From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:55:55 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_62,J_CHICKENPOX_64,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9ttG1182574 for ; Tue, 19 Jan 2010 03:55:55 -0600 X-ASG-Debug-ID: 1263895015-4e3603360000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 891F71C5E160 for ; Tue, 19 Jan 2010 01:56:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id MYUVh7dZIPOn7eRe for ; Tue, 19 Jan 2010 01:56:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXApS-0001G1-TD for xfs@oss.sgi.com; Tue, 19 Jan 2010 09:56:54 +0000 Message-Id: <20100119095654.708720933@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 19 Jan 2010 04:56:44 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/3] [PATCH] xfs: remove duplicate buffer flags Subject: [PATCH 1/3] [PATCH] xfs: remove duplicate buffer flags References: <20100119095643.378866749@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-buf-flags-cleanup X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263895015 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently we define aliases for the buffer flags in various namespaces, which only adds confusion. Remove all but the XBF_ flags to clean this up a bit. Note that we still abuse XFS_B_ASYNC/XBF_ASYNC for some non-buffer uses, but I'll clean that up later. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2010-01-17 11:13:28.899262696 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2010-01-17 11:14:36.978275990 +0100 @@ -275,33 +275,19 @@ extern void xfs_buf_terminate(void); ({ char __b[BDEVNAME_SIZE]; bdevname((target)->bt_bdev, __b); __b; }) -#define XFS_B_ASYNC XBF_ASYNC -#define XFS_B_DELWRI XBF_DELWRI -#define XFS_B_READ XBF_READ -#define XFS_B_WRITE XBF_WRITE -#define XFS_B_STALE XBF_STALE - -#define XFS_BUF_TRYLOCK XBF_TRYLOCK -#define XFS_INCORE_TRYLOCK XBF_TRYLOCK -#define XFS_BUF_LOCK XBF_LOCK -#define XFS_BUF_MAPPED XBF_MAPPED - -#define BUF_BUSY XBF_DONT_BLOCK - #define XFS_BUF_BFLAGS(bp) ((bp)->b_flags) #define XFS_BUF_ZEROFLAGS(bp) ((bp)->b_flags &= \ ~(XBF_READ|XBF_WRITE|XBF_ASYNC|XBF_DELWRI|XBF_ORDERED)) -#define XFS_BUF_STALE(bp) ((bp)->b_flags |= XFS_B_STALE) -#define XFS_BUF_UNSTALE(bp) ((bp)->b_flags &= ~XFS_B_STALE) -#define XFS_BUF_ISSTALE(bp) ((bp)->b_flags & XFS_B_STALE) +#define XFS_BUF_STALE(bp) ((bp)->b_flags |= XBF_STALE) +#define XFS_BUF_UNSTALE(bp) ((bp)->b_flags &= ~XBF_STALE) +#define XFS_BUF_ISSTALE(bp) ((bp)->b_flags & XBF_STALE) #define XFS_BUF_SUPER_STALE(bp) do { \ XFS_BUF_STALE(bp); \ xfs_buf_delwri_dequeue(bp); \ XFS_BUF_DONE(bp); \ } while (0) -#define XFS_BUF_MANAGE XBF_FS_MANAGED #define XFS_BUF_UNMANAGE(bp) ((bp)->b_flags &= ~XBF_FS_MANAGED) #define XFS_BUF_DELAYWRITE(bp) ((bp)->b_flags |= XBF_DELWRI) @@ -390,7 +376,7 @@ static inline void xfs_buf_relse(xfs_buf #define xfs_biomove(bp, off, len, data, rw) \ xfs_buf_iomove((bp), (off), (len), (data), \ - ((rw) == XFS_B_WRITE) ? XBRW_WRITE : XBRW_READ) + ((rw) == XBF_WRITE) ? XBRW_WRITE : XBRW_READ) #define xfs_biozero(bp, off, len) \ xfs_buf_iomove((bp), (off), (len), NULL, XBRW_ZERO) Index: xfs/fs/xfs/linux-2.6/xfs_fs_subr.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_fs_subr.c 2010-01-17 11:13:28.905253682 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_fs_subr.c 2010-01-17 11:14:36.979254745 +0100 @@ -79,7 +79,7 @@ xfs_flush_pages( xfs_iflags_clear(ip, XFS_ITRUNCATED); ret = -filemap_fdatawrite(mapping); } - if (flags & XFS_B_ASYNC) + if (flags & XBF_ASYNC) return ret; ret2 = xfs_wait_on_pages(ip, first, last); if (!ret) Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2010-01-17 11:13:28.910254109 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2010-01-17 11:14:36.980004841 +0100 @@ -234,7 +234,7 @@ xfs_sync_inode_data( } error = xfs_flush_pages(ip, 0, -1, (flags & SYNC_WAIT) ? - 0 : XFS_B_ASYNC, FI_NONE); + 0 : XBF_ASYNC, FI_NONE); xfs_iunlock(ip, XFS_IOLOCK_SHARED); out_wait: @@ -370,7 +370,7 @@ xfs_sync_fsdata( if (flags & SYNC_TRYLOCK) { ASSERT(!(flags & SYNC_WAIT)); - bp = xfs_getsb(mp, XFS_BUF_TRYLOCK); + bp = xfs_getsb(mp, XBF_TRYLOCK); if (!bp) goto out; Index: xfs/fs/xfs/quota/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot.c 2010-01-17 11:13:28.922253750 +0100 +++ xfs/fs/xfs/quota/xfs_dquot.c 2010-01-17 11:14:36.982004327 +0100 @@ -1527,8 +1527,7 @@ xfs_qm_dqflock_pushbuf_wait( * the flush lock when the I/O completes. */ bp = xfs_incore(dqp->q_mount->m_ddev_targp, dqp->q_blkno, - XFS_QI_DQCHUNKLEN(dqp->q_mount), - XFS_INCORE_TRYLOCK); + XFS_QI_DQCHUNKLEN(dqp->q_mount), XBF_TRYLOCK); if (bp != NULL) { if (XFS_BUF_ISDELAYWRITE(bp)) { int error; Index: xfs/fs/xfs/quota/xfs_dquot_item.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot_item.c 2010-01-17 11:13:28.929273219 +0100 +++ xfs/fs/xfs/quota/xfs_dquot_item.c 2010-01-17 11:14:36.983004314 +0100 @@ -237,8 +237,7 @@ xfs_qm_dquot_logitem_pushbuf( } mp = dqp->q_mount; bp = xfs_incore(mp->m_ddev_targp, qip->qli_format.qlf_blkno, - XFS_QI_DQCHUNKLEN(mp), - XFS_INCORE_TRYLOCK); + XFS_QI_DQCHUNKLEN(mp), XBF_TRYLOCK); if (bp != NULL) { if (XFS_BUF_ISDELAYWRITE(bp)) { dopush = ((qip->qli_item.li_flags & XFS_LI_IN_AIL) && Index: xfs/fs/xfs/xfs_alloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_alloc.c 2010-01-17 11:13:28.936023938 +0100 +++ xfs/fs/xfs/xfs_alloc.c 2010-01-17 11:14:36.984004512 +0100 @@ -2180,7 +2180,7 @@ xfs_alloc_read_agf( ASSERT(agno != NULLAGNUMBER); error = xfs_read_agf(mp, tp, agno, - (flags & XFS_ALLOC_FLAG_TRYLOCK) ? XFS_BUF_TRYLOCK : 0, + (flags & XFS_ALLOC_FLAG_TRYLOCK) ? XBF_TRYLOCK : 0, bpp); if (error) return error; Index: xfs/fs/xfs/xfs_attr.c =================================================================== --- xfs.orig/fs/xfs/xfs_attr.c 2010-01-17 11:13:28.944004633 +0100 +++ xfs/fs/xfs/xfs_attr.c 2010-01-17 11:14:36.986004697 +0100 @@ -2007,15 +2007,14 @@ xfs_attr_rmtval_get(xfs_da_args_t *args) dblkno = XFS_FSB_TO_DADDR(mp, map[i].br_startblock); blkcnt = XFS_FSB_TO_BB(mp, map[i].br_blockcount); error = xfs_read_buf(mp, mp->m_ddev_targp, dblkno, - blkcnt, - XFS_BUF_LOCK | XBF_DONT_BLOCK, + blkcnt, XBF_LOCK | XBF_DONT_BLOCK, &bp); if (error) return(error); tmp = (valuelen < XFS_BUF_SIZE(bp)) ? valuelen : XFS_BUF_SIZE(bp); - xfs_biomove(bp, 0, tmp, dst, XFS_B_READ); + xfs_biomove(bp, 0, tmp, dst, XBF_READ); xfs_buf_relse(bp); dst += tmp; valuelen -= tmp; @@ -2141,13 +2140,13 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) blkcnt = XFS_FSB_TO_BB(mp, map.br_blockcount); bp = xfs_buf_get(mp->m_ddev_targp, dblkno, blkcnt, - XFS_BUF_LOCK | XBF_DONT_BLOCK); + XBF_LOCK | XBF_DONT_BLOCK); ASSERT(bp); ASSERT(!XFS_BUF_GETERROR(bp)); tmp = (valuelen < XFS_BUF_SIZE(bp)) ? valuelen : XFS_BUF_SIZE(bp); - xfs_biomove(bp, 0, tmp, src, XFS_B_WRITE); + xfs_biomove(bp, 0, tmp, src, XBF_WRITE); if (tmp < XFS_BUF_SIZE(bp)) xfs_biozero(bp, tmp, XFS_BUF_SIZE(bp) - tmp); if ((error = xfs_bwrite(mp, bp))) {/* GROT: NOTE: synchronous write */ @@ -2208,8 +2207,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *ar /* * If the "remote" value is in the cache, remove it. */ - bp = xfs_incore(mp->m_ddev_targp, dblkno, blkcnt, - XFS_INCORE_TRYLOCK); + bp = xfs_incore(mp->m_ddev_targp, dblkno, blkcnt, XBF_TRYLOCK); if (bp) { XFS_BUF_STALE(bp); XFS_BUF_UNDELAYWRITE(bp); Index: xfs/fs/xfs/xfs_attr_leaf.c =================================================================== --- xfs.orig/fs/xfs/xfs_attr_leaf.c 2010-01-17 11:13:28.953004730 +0100 +++ xfs/fs/xfs/xfs_attr_leaf.c 2010-01-17 11:14:36.988005370 +0100 @@ -2950,7 +2950,7 @@ xfs_attr_leaf_freextent(xfs_trans_t **tr map.br_blockcount); bp = xfs_trans_get_buf(*trans, dp->i_mount->m_ddev_targp, - dblkno, dblkcnt, XFS_BUF_LOCK); + dblkno, dblkcnt, XBF_LOCK); xfs_trans_binval(*trans, bp); /* * Roll to next transaction. Index: xfs/fs/xfs/xfs_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_btree.c 2010-01-17 11:13:28.963004676 +0100 +++ xfs/fs/xfs/xfs_btree.c 2010-01-17 11:14:36.991003726 +0100 @@ -977,7 +977,7 @@ xfs_btree_get_buf_block( xfs_daddr_t d; /* need to sort out how callers deal with failures first */ - ASSERT(!(flags & XFS_BUF_TRYLOCK)); + ASSERT(!(flags & XBF_TRYLOCK)); d = xfs_btree_ptr_to_daddr(cur, ptr); *bpp = xfs_trans_get_buf(cur->bc_tp, mp->m_ddev_targp, d, @@ -1008,7 +1008,7 @@ xfs_btree_read_buf_block( int error; /* need to sort out how callers deal with failures first */ - ASSERT(!(flags & XFS_BUF_TRYLOCK)); + ASSERT(!(flags & XBF_TRYLOCK)); d = xfs_btree_ptr_to_daddr(cur, ptr); error = xfs_trans_read_buf(mp, cur->bc_tp, mp->m_ddev_targp, d, Index: xfs/fs/xfs/xfs_ialloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.c 2010-01-17 11:13:28.972004564 +0100 +++ xfs/fs/xfs/xfs_ialloc.c 2010-01-17 11:14:36.993004399 +0100 @@ -205,7 +205,7 @@ xfs_ialloc_inode_init( d = XFS_AGB_TO_DADDR(mp, agno, agbno + (j * blks_per_cluster)); fbuf = xfs_trans_get_buf(tp, mp->m_ddev_targp, d, mp->m_bsize * blks_per_cluster, - XFS_BUF_LOCK); + XBF_LOCK); ASSERT(fbuf); ASSERT(!XFS_BUF_GETERROR(fbuf)); Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2010-01-17 11:13:28.981004243 +0100 +++ xfs/fs/xfs/xfs_inode.c 2010-01-17 11:14:36.997004559 +0100 @@ -151,7 +151,7 @@ xfs_imap_to_bp( "an error %d on %s. Returning error.", error, mp->m_fsname); } else { - ASSERT(buf_flags & XFS_BUF_TRYLOCK); + ASSERT(buf_flags & XBF_TRYLOCK); } return error; } @@ -239,7 +239,7 @@ xfs_inotobp( if (error) return error; - error = xfs_imap_to_bp(mp, tp, &imap, &bp, XFS_BUF_LOCK, imap_flags); + error = xfs_imap_to_bp(mp, tp, &imap, &bp, XBF_LOCK, imap_flags); if (error) return error; @@ -285,7 +285,7 @@ xfs_itobp( return error; if (!bp) { - ASSERT(buf_flags & XFS_BUF_TRYLOCK); + ASSERT(buf_flags & XBF_TRYLOCK); ASSERT(tp == NULL); *bpp = NULL; return EAGAIN; @@ -807,7 +807,7 @@ xfs_iread( * Get pointers to the on-disk inode and the buffer containing it. */ error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &bp, - XFS_BUF_LOCK, iget_flags); + XBF_LOCK, iget_flags); if (error) return error; dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); @@ -1751,7 +1751,7 @@ xfs_iunlink( * Here we put the head pointer into our next pointer, * and then we fall through to point the head at us. */ - error = xfs_itobp(mp, tp, ip, &dip, &ibp, XFS_BUF_LOCK); + error = xfs_itobp(mp, tp, ip, &dip, &ibp, XBF_LOCK); if (error) return error; @@ -1833,7 +1833,7 @@ xfs_iunlink_remove( * of dealing with the buffer when there is no need to * change it. */ - error = xfs_itobp(mp, tp, ip, &dip, &ibp, XFS_BUF_LOCK); + error = xfs_itobp(mp, tp, ip, &dip, &ibp, XBF_LOCK); if (error) { cmn_err(CE_WARN, "xfs_iunlink_remove: xfs_itobp() returned an error %d on %s. Returning error.", @@ -1895,7 +1895,7 @@ xfs_iunlink_remove( * Now last_ibp points to the buffer previous to us on * the unlinked list. Pull us from the list. */ - error = xfs_itobp(mp, tp, ip, &dip, &ibp, XFS_BUF_LOCK); + error = xfs_itobp(mp, tp, ip, &dip, &ibp, XBF_LOCK); if (error) { cmn_err(CE_WARN, "xfs_iunlink_remove: xfs_itobp() returned an error %d on %s. Returning error.", @@ -2040,7 +2040,7 @@ xfs_ifree_cluster( bp = xfs_trans_get_buf(tp, mp->m_ddev_targp, blkno, mp->m_bsize * blks_per_cluster, - XFS_BUF_LOCK); + XBF_LOCK); pre_flushed = 0; lip = XFS_BUF_FSPRIVATE(bp, xfs_log_item_t *); @@ -2151,7 +2151,7 @@ xfs_ifree( xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); - error = xfs_itobp(ip->i_mount, tp, ip, &dip, &ibp, XFS_BUF_LOCK); + error = xfs_itobp(ip->i_mount, tp, ip, &dip, &ibp, XBF_LOCK); if (error) return error; @@ -2952,7 +2952,7 @@ xfs_iflush( * Get the buffer containing the on-disk inode. */ error = xfs_itobp(mp, NULL, ip, &dip, &bp, - noblock ? XFS_BUF_TRYLOCK : XFS_BUF_LOCK); + noblock ? XBF_TRYLOCK : XBF_LOCK); if (error || !bp) { xfs_ifunlock(ip); return error; Index: xfs/fs/xfs/xfs_inode_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.c 2010-01-17 11:13:28.986004320 +0100 +++ xfs/fs/xfs/xfs_inode_item.c 2010-01-17 11:14:36.998003569 +0100 @@ -785,7 +785,7 @@ xfs_inode_item_pushbuf( mp = ip->i_mount; bp = xfs_incore(mp->m_ddev_targp, iip->ili_format.ilf_blkno, - iip->ili_format.ilf_len, XFS_INCORE_TRYLOCK); + iip->ili_format.ilf_len, XBF_TRYLOCK); if (bp != NULL) { if (XFS_BUF_ISDELAYWRITE(bp)) { Index: xfs/fs/xfs/xfs_log_recover.c =================================================================== --- xfs.orig/fs/xfs/xfs_log_recover.c 2010-01-17 11:13:28.992003548 +0100 +++ xfs/fs/xfs/xfs_log_recover.c 2010-01-17 11:14:37.000007106 +0100 @@ -2184,9 +2184,9 @@ xlog_recover_do_buffer_trans( } mp = log->l_mp; - buf_flags = XFS_BUF_LOCK; + buf_flags = XBF_LOCK; if (!(flags & XFS_BLI_INODE_BUF)) - buf_flags |= XFS_BUF_MAPPED; + buf_flags |= XBF_MAPPED; bp = xfs_buf_read(mp->m_ddev_targp, blkno, len, buf_flags); if (XFS_BUF_ISERROR(bp)) { @@ -2288,7 +2288,7 @@ xlog_recover_do_inode_trans( } bp = xfs_buf_read(mp->m_ddev_targp, in_f->ilf_blkno, in_f->ilf_len, - XFS_BUF_LOCK); + XBF_LOCK); if (XFS_BUF_ISERROR(bp)) { xfs_ioerror_alert("xlog_recover_do..(read#2)", mp, bp, in_f->ilf_blkno); @@ -3146,7 +3146,7 @@ xlog_recover_process_one_iunlink( /* * Get the on disk inode to find the next inode in the bucket. */ - error = xfs_itobp(mp, NULL, ip, &dip, &ibp, XFS_BUF_LOCK); + error = xfs_itobp(mp, NULL, ip, &dip, &ibp, XBF_LOCK); if (error) goto fail_iput; Index: xfs/fs/xfs/xfs_mount.c =================================================================== --- xfs.orig/fs/xfs/xfs_mount.c 2010-01-17 11:13:28.998011086 +0100 +++ xfs/fs/xfs/xfs_mount.c 2010-01-17 11:14:37.003004344 +0100 @@ -665,7 +665,7 @@ xfs_readsb(xfs_mount_t *mp, int flags) * access to the superblock. */ sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); - extra_flags = XFS_BUF_LOCK | XFS_BUF_MANAGE | XFS_BUF_MAPPED; + extra_flags = XBF_LOCK | XBF_FS_MANAGED | XBF_MAPPED; bp = xfs_buf_read(mp->m_ddev_targp, XFS_SB_DADDR, BTOBB(sector_size), extra_flags); @@ -1970,7 +1970,7 @@ xfs_getsb( ASSERT(mp->m_sb_bp != NULL); bp = mp->m_sb_bp; - if (flags & XFS_BUF_TRYLOCK) { + if (flags & XBF_TRYLOCK) { if (!XFS_BUF_CPSEMA(bp)) { return NULL; } Index: xfs/fs/xfs/xfs_trans_buf.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans_buf.c 2010-01-17 11:13:29.004006961 +0100 +++ xfs/fs/xfs/xfs_trans_buf.c 2010-01-17 11:14:37.004004332 +0100 @@ -75,13 +75,14 @@ xfs_trans_get_buf(xfs_trans_t *tp, xfs_buf_log_item_t *bip; if (flags == 0) - flags = XFS_BUF_LOCK | XFS_BUF_MAPPED; + flags = XBF_LOCK | XBF_MAPPED; /* * Default to a normal get_buf() call if the tp is NULL. */ if (tp == NULL) - return xfs_buf_get(target_dev, blkno, len, flags | BUF_BUSY); + return xfs_buf_get(target_dev, blkno, len, + flags | XBF_DONT_BLOCK); /* * If we find the buffer in the cache with this transaction @@ -117,14 +118,14 @@ xfs_trans_get_buf(xfs_trans_t *tp, } /* - * We always specify the BUF_BUSY flag within a transaction so - * that get_buf does not try to push out a delayed write buffer + * We always specify the XBF_DONT_BLOCK flag within a transaction + * so that get_buf does not try to push out a delayed write buffer * which might cause another transaction to take place (if the * buffer was delayed alloc). Such recursive transactions can * easily deadlock with our current transaction as well as cause * us to run out of stack space. */ - bp = xfs_buf_get(target_dev, blkno, len, flags | BUF_BUSY); + bp = xfs_buf_get(target_dev, blkno, len, flags | XBF_DONT_BLOCK); if (bp == NULL) { return NULL; } @@ -290,15 +291,15 @@ xfs_trans_read_buf( int error; if (flags == 0) - flags = XFS_BUF_LOCK | XFS_BUF_MAPPED; + flags = XBF_LOCK | XBF_MAPPED; /* * Default to a normal get_buf() call if the tp is NULL. */ if (tp == NULL) { - bp = xfs_buf_read(target, blkno, len, flags | BUF_BUSY); + bp = xfs_buf_read(target, blkno, len, flags | XBF_DONT_BLOCK); if (!bp) - return (flags & XFS_BUF_TRYLOCK) ? + return (flags & XBF_TRYLOCK) ? EAGAIN : XFS_ERROR(ENOMEM); if (XFS_BUF_GETERROR(bp) != 0) { @@ -385,14 +386,14 @@ xfs_trans_read_buf( } /* - * We always specify the BUF_BUSY flag within a transaction so - * that get_buf does not try to push out a delayed write buffer + * We always specify the XBF_DONT_BLOCK flag within a transaction + * so that get_buf does not try to push out a delayed write buffer * which might cause another transaction to take place (if the * buffer was delayed alloc). Such recursive transactions can * easily deadlock with our current transaction as well as cause * us to run out of stack space. */ - bp = xfs_buf_read(target, blkno, len, flags | BUF_BUSY); + bp = xfs_buf_read(target, blkno, len, flags | XBF_DONT_BLOCK); if (bp == NULL) { *bpp = NULL; return 0; @@ -472,8 +473,8 @@ shutdown_abort: if (XFS_BUF_ISSTALE(bp) && XFS_BUF_ISDELAYWRITE(bp)) cmn_err(CE_NOTE, "about to pop assert, bp == 0x%p", bp); #endif - ASSERT((XFS_BUF_BFLAGS(bp) & (XFS_B_STALE|XFS_B_DELWRI)) != - (XFS_B_STALE|XFS_B_DELWRI)); + ASSERT((XFS_BUF_BFLAGS(bp) & (XBF_STALE|XBF_DELWRI)) != + (XBF_STALE|XBF_DELWRI)); trace_xfs_trans_read_buf_shut(bp, _RET_IP_); xfs_buf_relse(bp); Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2010-01-17 11:13:29.013028221 +0100 +++ xfs/fs/xfs/xfs_vnodeops.c 2010-01-17 11:14:37.006004587 +0100 @@ -256,7 +256,7 @@ xfs_setattr( iattr->ia_size > ip->i_d.di_size) { code = xfs_flush_pages(ip, ip->i_d.di_size, iattr->ia_size, - XFS_B_ASYNC, FI_NONE); + XBF_ASYNC, FI_NONE); } /* wait for all I/O to complete */ @@ -1096,7 +1096,7 @@ xfs_release( */ truncated = xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED); if (truncated && VN_DIRTY(VFS_I(ip)) && ip->i_delayed_blks > 0) - xfs_flush_pages(ip, 0, -1, XFS_B_ASYNC, FI_NONE); + xfs_flush_pages(ip, 0, -1, XBF_ASYNC, FI_NONE); } if (ip->i_d.di_nlink != 0) { Index: xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2010-01-17 11:13:28.917253952 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2010-01-17 11:14:37.008004213 +0100 @@ -1169,7 +1169,7 @@ xfs_bioerror_relse( XFS_BUF_STALE(bp); XFS_BUF_CLR_IODONE_FUNC(bp); XFS_BUF_CLR_BDSTRAT_FUNC(bp); - if (!(fl & XFS_B_ASYNC)) { + if (!(fl & XBF_ASYNC)) { /* * Mark b_error and B_ERROR _both_. * Lot's of chunkcache code assumes that. From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 03:55:57 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_42,J_CHICKENPOX_63,J_CHICKENPOX_65, LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0J9tuaC182597 for ; Tue, 19 Jan 2010 03:55:56 -0600 X-ASG-Debug-ID: 1263895015-5a7501010000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4500C124D00C for ; Tue, 19 Jan 2010 01:56:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id XwUomllColD3cXNy for ; Tue, 19 Jan 2010 01:56:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXApT-0001H6-Hb for xfs@oss.sgi.com; Tue, 19 Jan 2010 09:56:55 +0000 Message-Id: <20100119095655.363711060@bombadil.infradead.org> User-Agent: quilt/0.47-1 Date: Tue, 19 Jan 2010 04:56:46 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/3] xfs: cleanup up xfs_log_force calling conventions Subject: [PATCH 3/3] xfs: cleanup up xfs_log_force calling conventions References: <20100119095643.378866749@bombadil.infradead.org> Content-Disposition: inline; filename=xfs-cleanup-xfs_log_force X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263895016 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Remove the XFS_LOG_FORCE argument which was always set, and the XFS_LOG_URGE define, which was never used. Split xfs_log_force into a two helpers - xfs_log_force which forces the whole log, and xfs_log_force_lsn which forces up to the specified LSN. The underlying implementations already were entirely separate, as were the users. Also re-indent the new _xfs_log_force/_xfs_log_force which previously had a weird coding style. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2010-01-19 10:49:11.258004245 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2010-01-19 10:49:33.500272635 +0100 @@ -296,10 +296,7 @@ xfs_sync_data( if (error) return XFS_ERROR(error); - xfs_log_force(mp, 0, - (flags & SYNC_WAIT) ? - XFS_LOG_FORCE | XFS_LOG_SYNC : - XFS_LOG_FORCE); + xfs_log_force(mp, (flags & SYNC_WAIT) ? XFS_LOG_SYNC : 0); return 0; } @@ -325,10 +322,6 @@ xfs_commit_dummy_trans( struct xfs_inode *ip = mp->m_rootip; struct xfs_trans *tp; int error; - int log_flags = XFS_LOG_FORCE; - - if (flags & SYNC_WAIT) - log_flags |= XFS_LOG_SYNC; /* * Put a dummy transaction in the log to tell recovery @@ -350,7 +343,7 @@ xfs_commit_dummy_trans( xfs_iunlock(ip, XFS_ILOCK_EXCL); /* the log force ensures this transaction is pushed to disk */ - xfs_log_force(mp, 0, log_flags); + xfs_log_force(mp, (flags & SYNC_WAIT) ? XFS_LOG_SYNC : 0); return error; } @@ -390,7 +383,7 @@ xfs_sync_fsdata( * become pinned in between there and here. */ if (XFS_BUF_ISPINNED(bp)) - xfs_log_force(mp, 0, XFS_LOG_FORCE); + xfs_log_force(mp, 0); } @@ -575,7 +568,7 @@ xfs_flush_inodes( igrab(inode); xfs_syncd_queue_work(ip->i_mount, inode, xfs_flush_inodes_work, &completion); wait_for_completion(&completion); - xfs_log_force(ip->i_mount, (xfs_lsn_t)0, XFS_LOG_FORCE|XFS_LOG_SYNC); + xfs_log_force(ip->i_mount, XFS_LOG_SYNC); } /* @@ -591,7 +584,7 @@ xfs_sync_worker( int error; if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { - xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); + xfs_log_force(mp, 0); xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); /* dgc: errors ignored here */ error = xfs_qm_sync(mp, SYNC_TRYLOCK); Index: xfs/fs/xfs/quota/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot.c 2010-01-19 10:49:11.259003604 +0100 +++ xfs/fs/xfs/quota/xfs_dquot.c 2010-01-19 10:49:33.501273601 +0100 @@ -1248,7 +1248,7 @@ xfs_qm_dqflush( */ if (XFS_BUF_ISPINNED(bp)) { trace_xfs_dqflush_force(dqp); - xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); + xfs_log_force(mp, 0); } if (flags & XFS_QMOPT_DELWRI) { @@ -1531,11 +1531,9 @@ xfs_qm_dqflock_pushbuf_wait( if (bp != NULL) { if (XFS_BUF_ISDELAYWRITE(bp)) { int error; - if (XFS_BUF_ISPINNED(bp)) { - xfs_log_force(dqp->q_mount, - (xfs_lsn_t)0, - XFS_LOG_FORCE); - } + + if (XFS_BUF_ISPINNED(bp)) + xfs_log_force(dqp->q_mount, 0); error = xfs_bawrite(dqp->q_mount, bp); if (error) xfs_fs_cmn_err(CE_WARN, dqp->q_mount, Index: xfs/fs/xfs/quota/xfs_dquot_item.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot_item.c 2010-01-19 10:49:18.096003841 +0100 +++ xfs/fs/xfs/quota/xfs_dquot_item.c 2010-01-19 10:49:33.502274007 +0100 @@ -190,7 +190,7 @@ xfs_qm_dqunpin_wait( /* * Give the log a push so we don't wait here too long. */ - xfs_log_force(dqp->q_mount, (xfs_lsn_t)0, XFS_LOG_FORCE); + xfs_log_force(dqp->q_mount, 0); wait_event(dqp->q_pinwait, (atomic_read(&dqp->q_pincount) == 0)); } @@ -245,10 +245,9 @@ xfs_qm_dquot_logitem_pushbuf( qip->qli_pushbuf_flag = 0; xfs_dqunlock(dqp); - if (XFS_BUF_ISPINNED(bp)) { - xfs_log_force(mp, (xfs_lsn_t)0, - XFS_LOG_FORCE); - } + if (XFS_BUF_ISPINNED(bp)) + xfs_log_force(mp, 0); + if (dopush) { int error; #ifdef XFSRACEDEBUG Index: xfs/fs/xfs/quota/xfs_qm_syscalls.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm_syscalls.c 2010-01-17 23:33:04.517003350 +0100 +++ xfs/fs/xfs/quota/xfs_qm_syscalls.c 2010-01-19 10:49:33.503004548 +0100 @@ -1192,9 +1192,9 @@ xfs_qm_internalqcheck( if (! XFS_IS_QUOTA_ON(mp)) return XFS_ERROR(ESRCH); - xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); + xfs_log_force(mp, XFS_LOG_SYNC); XFS_bflush(mp->m_ddev_targp); - xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); + xfs_log_force(mp, XFS_LOG_SYNC); XFS_bflush(mp->m_ddev_targp); mutex_lock(&qcheck_lock); Index: xfs/fs/xfs/xfs_alloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_alloc.c 2010-01-19 10:49:11.262004266 +0100 +++ xfs/fs/xfs/xfs_alloc.c 2010-01-19 10:49:33.504003976 +0100 @@ -2601,5 +2601,5 @@ xfs_alloc_search_busy(xfs_trans_t *tp, * transaction that freed the block */ if (lsn) - xfs_log_force(tp->t_mountp, lsn, XFS_LOG_FORCE|XFS_LOG_SYNC); + xfs_log_force_lsn(tp->t_mountp, lsn, XFS_LOG_SYNC); } Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2010-01-19 10:49:11.270004307 +0100 +++ xfs/fs/xfs/xfs_inode.c 2010-01-19 10:49:33.506010936 +0100 @@ -2484,8 +2484,11 @@ __xfs_iunpin_wait( return; /* Give the log a push to start the unpinning I/O */ - xfs_log_force(ip->i_mount, (iip && iip->ili_last_lsn) ? - iip->ili_last_lsn : 0, XFS_LOG_FORCE); + if (iip && iip->ili_last_lsn) + xfs_log_force_lsn(ip->i_mount, iip->ili_last_lsn, 0); + else + xfs_log_force(ip->i_mount, 0); + if (wait) wait_event(ip->i_ipin_wait, (atomic_read(&ip->i_pincount) == 0)); } @@ -2970,7 +2973,7 @@ xfs_iflush( * get stuck waiting in the write for too long. */ if (XFS_BUF_ISPINNED(bp)) - xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); + xfs_log_force(mp, 0); /* * inode clustering: Index: xfs/fs/xfs/xfs_inode_item.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.c 2010-01-19 10:49:18.098003398 +0100 +++ xfs/fs/xfs/xfs_inode_item.c 2010-01-19 10:49:33.507004429 +0100 @@ -804,10 +804,9 @@ xfs_inode_item_pushbuf( trace_xfs_inode_item_push(bp, _RET_IP_); - if (XFS_BUF_ISPINNED(bp)) { - xfs_log_force(mp, (xfs_lsn_t)0, - XFS_LOG_FORCE); - } + if (XFS_BUF_ISPINNED(bp)) + xfs_log_force(mp, 0); + if (dopush) { int error; error = xfs_bawrite(mp, bp); Index: xfs/fs/xfs/xfs_log.c =================================================================== --- xfs.orig/fs/xfs/xfs_log.c 2010-01-19 10:49:18.100003304 +0100 +++ xfs/fs/xfs/xfs_log.c 2010-01-19 10:49:33.510003623 +0100 @@ -79,11 +79,6 @@ STATIC int xlog_state_release_iclog(xlo STATIC void xlog_state_switch_iclogs(xlog_t *log, xlog_in_core_t *iclog, int eventual_size); -STATIC int xlog_state_sync(xlog_t *log, - xfs_lsn_t lsn, - uint flags, - int *log_flushed); -STATIC int xlog_state_sync_all(xlog_t *log, uint flags, int *log_flushed); STATIC void xlog_state_want_sync(xlog_t *log, xlog_in_core_t *iclog); /* local functions to manipulate grant head */ @@ -296,65 +291,6 @@ xfs_log_done(xfs_mount_t *mp, return lsn; } /* xfs_log_done */ - -/* - * Force the in-core log to disk. If flags == XFS_LOG_SYNC, - * the force is done synchronously. - * - * Asynchronous forces are implemented by setting the WANT_SYNC - * bit in the appropriate in-core log and then returning. - * - * Synchronous forces are implemented with a signal variable. All callers - * to force a given lsn to disk will wait on a the sv attached to the - * specific in-core log. When given in-core log finally completes its - * write to disk, that thread will wake up all threads waiting on the - * sv. - */ -int -_xfs_log_force( - xfs_mount_t *mp, - xfs_lsn_t lsn, - uint flags, - int *log_flushed) -{ - xlog_t *log = mp->m_log; - int dummy; - - if (!log_flushed) - log_flushed = &dummy; - - ASSERT(flags & XFS_LOG_FORCE); - - XFS_STATS_INC(xs_log_force); - - if (log->l_flags & XLOG_IO_ERROR) - return XFS_ERROR(EIO); - if (lsn == 0) - return xlog_state_sync_all(log, flags, log_flushed); - else - return xlog_state_sync(log, lsn, flags, log_flushed); -} /* _xfs_log_force */ - -/* - * Wrapper for _xfs_log_force(), to be used when caller doesn't care - * about errors or whether the log was flushed or not. This is the normal - * interface to use when trying to unpin items or move the log forward. - */ -void -xfs_log_force( - xfs_mount_t *mp, - xfs_lsn_t lsn, - uint flags) -{ - int error; - error = _xfs_log_force(mp, lsn, flags, NULL); - if (error) { - xfs_fs_cmn_err(CE_WARN, mp, "xfs_log_force: " - "error %d returned.", error); - } -} - - /* * Attaches a new iclog I/O completion callback routine during * transaction commit. If the log is in error state, a non-zero @@ -601,7 +537,7 @@ xfs_log_unmount_write(xfs_mount_t *mp) if (mp->m_flags & XFS_MOUNT_RDONLY) return 0; - error = _xfs_log_force(mp, 0, XFS_LOG_FORCE|XFS_LOG_SYNC, NULL); + error = _xfs_log_force(mp, XFS_LOG_SYNC, NULL); ASSERT(error || !(XLOG_FORCED_SHUTDOWN(log))); #ifdef DEBUG @@ -2853,7 +2789,6 @@ xlog_state_switch_iclogs(xlog_t *log, log->l_iclog = iclog->ic_next; } /* xlog_state_switch_iclogs */ - /* * Write out all data in the in-core log as of this exact moment in time. * @@ -2881,11 +2816,17 @@ xlog_state_switch_iclogs(xlog_t *log, * b) when we return from flushing out this iclog, it is still * not in the active nor dirty state. */ -STATIC int -xlog_state_sync_all(xlog_t *log, uint flags, int *log_flushed) +int +_xfs_log_force( + struct xfs_mount *mp, + uint flags, + int *log_flushed) { - xlog_in_core_t *iclog; - xfs_lsn_t lsn; + struct log *log = mp->m_log; + struct xlog_in_core *iclog; + xfs_lsn_t lsn; + + XFS_STATS_INC(xs_log_force); spin_lock(&log->l_icloglock); @@ -2931,7 +2872,9 @@ xlog_state_sync_all(xlog_t *log, uint fl if (xlog_state_release_iclog(log, iclog)) return XFS_ERROR(EIO); - *log_flushed = 1; + + if (log_flushed) + *log_flushed = 1; spin_lock(&log->l_icloglock); if (be64_to_cpu(iclog->ic_header.h_lsn) == lsn && iclog->ic_state != XLOG_STATE_DIRTY) @@ -2975,19 +2918,37 @@ maybe_sleep: */ if (iclog->ic_state & XLOG_STATE_IOERROR) return XFS_ERROR(EIO); - *log_flushed = 1; - + if (log_flushed) + *log_flushed = 1; } else { no_sleep: spin_unlock(&log->l_icloglock); } return 0; -} /* xlog_state_sync_all */ +} +/* + * Wrapper for _xfs_log_force(), to be used when caller doesn't care + * about errors or whether the log was flushed or not. This is the normal + * interface to use when trying to unpin items or move the log forward. + */ +void +xfs_log_force( + xfs_mount_t *mp, + uint flags) +{ + int error; + + error = _xfs_log_force(mp, flags, NULL); + if (error) { + xfs_fs_cmn_err(CE_WARN, mp, "xfs_log_force: " + "error %d returned.", error); + } +} /* - * Used by code which implements synchronous log forces. + * Force the in-core log to disk for a specific LSN. * * Find in-core log with lsn. * If it is in the DIRTY state, just return. @@ -2995,109 +2956,142 @@ no_sleep: * state and go to sleep or return. * If it is in any other state, go to sleep or return. * - * If filesystem activity goes to zero, the iclog will get flushed only by - * bdflush(). + * Synchronous forces are implemented with a signal variable. All callers + * to force a given lsn to disk will wait on a the sv attached to the + * specific in-core log. When given in-core log finally completes its + * write to disk, that thread will wake up all threads waiting on the + * sv. */ -STATIC int -xlog_state_sync(xlog_t *log, - xfs_lsn_t lsn, - uint flags, - int *log_flushed) +int +_xfs_log_force_lsn( + struct xfs_mount *mp, + xfs_lsn_t lsn, + uint flags, + int *log_flushed) { - xlog_in_core_t *iclog; - int already_slept = 0; - -try_again: - spin_lock(&log->l_icloglock); - iclog = log->l_iclog; + struct log *log = mp->m_log; + struct xlog_in_core *iclog; + int already_slept = 0; - if (iclog->ic_state & XLOG_STATE_IOERROR) { - spin_unlock(&log->l_icloglock); - return XFS_ERROR(EIO); - } + ASSERT(lsn != 0); - do { - if (be64_to_cpu(iclog->ic_header.h_lsn) != lsn) { - iclog = iclog->ic_next; - continue; - } + XFS_STATS_INC(xs_log_force); - if (iclog->ic_state == XLOG_STATE_DIRTY) { +try_again: + spin_lock(&log->l_icloglock); + iclog = log->l_iclog; + if (iclog->ic_state & XLOG_STATE_IOERROR) { spin_unlock(&log->l_icloglock); - return 0; + return XFS_ERROR(EIO); } - if (iclog->ic_state == XLOG_STATE_ACTIVE) { - /* - * We sleep here if we haven't already slept (e.g. - * this is the first time we've looked at the correct - * iclog buf) and the buffer before us is going to - * be sync'ed. The reason for this is that if we - * are doing sync transactions here, by waiting for - * the previous I/O to complete, we can allow a few - * more transactions into this iclog before we close - * it down. - * - * Otherwise, we mark the buffer WANT_SYNC, and bump - * up the refcnt so we can release the log (which drops - * the ref count). The state switch keeps new transaction - * commits from using this buffer. When the current commits - * finish writing into the buffer, the refcount will drop to - * zero and the buffer will go out then. - */ - if (!already_slept && - (iclog->ic_prev->ic_state & (XLOG_STATE_WANT_SYNC | - XLOG_STATE_SYNCING))) { - ASSERT(!(iclog->ic_state & XLOG_STATE_IOERROR)); - XFS_STATS_INC(xs_log_force_sleep); - sv_wait(&iclog->ic_prev->ic_write_wait, PSWP, - &log->l_icloglock, s); - *log_flushed = 1; - already_slept = 1; - goto try_again; - } else { + do { + if (be64_to_cpu(iclog->ic_header.h_lsn) != lsn) { + iclog = iclog->ic_next; + continue; + } + + if (iclog->ic_state == XLOG_STATE_DIRTY) { + spin_unlock(&log->l_icloglock); + return 0; + } + + if (iclog->ic_state == XLOG_STATE_ACTIVE) { + /* + * We sleep here if we haven't already slept (e.g. + * this is the first time we've looked at the correct + * iclog buf) and the buffer before us is going to + * be sync'ed. The reason for this is that if we + * are doing sync transactions here, by waiting for + * the previous I/O to complete, we can allow a few + * more transactions into this iclog before we close + * it down. + * + * Otherwise, we mark the buffer WANT_SYNC, and bump + * up the refcnt so we can release the log (which + * drops the ref count). The state switch keeps new + * transaction commits from using this buffer. When + * the current commits finish writing into the buffer, + * the refcount will drop to zero and the buffer will + * go out then. + */ + if (!already_slept && + (iclog->ic_prev->ic_state & + (XLOG_STATE_WANT_SYNC | XLOG_STATE_SYNCING))) { + ASSERT(!(iclog->ic_state & XLOG_STATE_IOERROR)); + + XFS_STATS_INC(xs_log_force_sleep); + + sv_wait(&iclog->ic_prev->ic_write_wait, + PSWP, &log->l_icloglock, s); + if (log_flushed) + *log_flushed = 1; + already_slept = 1; + goto try_again; + } atomic_inc(&iclog->ic_refcnt); xlog_state_switch_iclogs(log, iclog, 0); spin_unlock(&log->l_icloglock); if (xlog_state_release_iclog(log, iclog)) return XFS_ERROR(EIO); - *log_flushed = 1; + if (log_flushed) + *log_flushed = 1; spin_lock(&log->l_icloglock); } - } - if ((flags & XFS_LOG_SYNC) && /* sleep */ - !(iclog->ic_state & (XLOG_STATE_ACTIVE | XLOG_STATE_DIRTY))) { + if ((flags & XFS_LOG_SYNC) && /* sleep */ + !(iclog->ic_state & + (XLOG_STATE_ACTIVE | XLOG_STATE_DIRTY))) { + /* + * Don't wait on completion if we know that we've + * gotten a log write error. + */ + if (iclog->ic_state & XLOG_STATE_IOERROR) { + spin_unlock(&log->l_icloglock); + return XFS_ERROR(EIO); + } + XFS_STATS_INC(xs_log_force_sleep); + sv_wait(&iclog->ic_force_wait, PSWP, &log->l_icloglock, s); + /* + * No need to grab the log lock here since we're + * only deciding whether or not to return EIO + * and the memory read should be atomic. + */ + if (iclog->ic_state & XLOG_STATE_IOERROR) + return XFS_ERROR(EIO); - /* - * Don't wait on completion if we know that we've - * gotten a log write error. - */ - if (iclog->ic_state & XLOG_STATE_IOERROR) { + if (log_flushed) + *log_flushed = 1; + } else { /* just return */ spin_unlock(&log->l_icloglock); - return XFS_ERROR(EIO); } - XFS_STATS_INC(xs_log_force_sleep); - sv_wait(&iclog->ic_force_wait, PSWP, &log->l_icloglock, s); - /* - * No need to grab the log lock here since we're - * only deciding whether or not to return EIO - * and the memory read should be atomic. - */ - if (iclog->ic_state & XLOG_STATE_IOERROR) - return XFS_ERROR(EIO); - *log_flushed = 1; - } else { /* just return */ - spin_unlock(&log->l_icloglock); - } - return 0; - } while (iclog != log->l_iclog); + return 0; + } while (iclog != log->l_iclog); - spin_unlock(&log->l_icloglock); - return 0; -} /* xlog_state_sync */ + spin_unlock(&log->l_icloglock); + return 0; +} + +/* + * Wrapper for _xfs_log_force_lsn(), to be used when caller doesn't care + * about errors or whether the log was flushed or not. This is the normal + * interface to use when trying to unpin items or move the log forward. + */ +void +xfs_log_force_lsn( + xfs_mount_t *mp, + xfs_lsn_t lsn, + uint flags) +{ + int error; + error = _xfs_log_force_lsn(mp, lsn, flags, NULL); + if (error) { + xfs_fs_cmn_err(CE_WARN, mp, "xfs_log_force: " + "error %d returned.", error); + } +} /* * Called when we want to mark the current iclog as being ready to sync to @@ -3462,7 +3456,6 @@ xfs_log_force_umount( xlog_ticket_t *tic; xlog_t *log; int retval; - int dummy; log = mp->m_log; @@ -3536,13 +3529,14 @@ xfs_log_force_umount( } spin_unlock(&log->l_grant_lock); - if (! (log->l_iclog->ic_state & XLOG_STATE_IOERROR)) { + if (!(log->l_iclog->ic_state & XLOG_STATE_IOERROR)) { ASSERT(!logerror); /* * Force the incore logs to disk before shutting the * log down completely. */ - xlog_state_sync_all(log, XFS_LOG_FORCE|XFS_LOG_SYNC, &dummy); + _xfs_log_force(mp, XFS_LOG_SYNC, NULL); + spin_lock(&log->l_icloglock); retval = xlog_state_ioerror(log); spin_unlock(&log->l_icloglock); Index: xfs/fs/xfs/xfs_log.h =================================================================== --- xfs.orig/fs/xfs/xfs_log.h 2010-01-19 10:49:18.100003304 +0100 +++ xfs/fs/xfs/xfs_log.h 2010-01-19 10:49:33.511025262 +0100 @@ -70,14 +70,8 @@ static inline xfs_lsn_t _lsn_cmp(xfs_lsn * Flags to xfs_log_force() * * XFS_LOG_SYNC: Synchronous force in-core log to disk - * XFS_LOG_FORCE: Start in-core log write now. - * XFS_LOG_URGE: Start write within some window of time. - * - * Note: Either XFS_LOG_FORCE or XFS_LOG_URGE must be set. */ #define XFS_LOG_SYNC 0x1 -#define XFS_LOG_FORCE 0x2 -#define XFS_LOG_URGE 0x4 #endif /* __KERNEL__ */ @@ -138,12 +132,17 @@ xfs_lsn_t xfs_log_done(struct xfs_mount void **iclog, uint flags); int _xfs_log_force(struct xfs_mount *mp, - xfs_lsn_t lsn, uint flags, int *log_forced); void xfs_log_force(struct xfs_mount *mp, - xfs_lsn_t lsn, uint flags); +int _xfs_log_force_lsn(struct xfs_mount *mp, + xfs_lsn_t lsn, + uint flags, + int *log_forced); +void xfs_log_force_lsn(struct xfs_mount *mp, + xfs_lsn_t lsn, + uint flags); int xfs_log_mount(struct xfs_mount *mp, struct xfs_buftarg *log_target, xfs_daddr_t start_block, Index: xfs/fs/xfs/xfs_log_recover.c =================================================================== --- xfs.orig/fs/xfs/xfs_log_recover.c 2010-01-19 10:49:11.274010893 +0100 +++ xfs/fs/xfs/xfs_log_recover.c 2010-01-19 10:49:33.513003936 +0100 @@ -3913,8 +3913,7 @@ xlog_recover_finish( * case the unlink transactions would have problems * pushing the EFIs out of the way. */ - xfs_log_force(log->l_mp, (xfs_lsn_t)0, - (XFS_LOG_FORCE | XFS_LOG_SYNC)); + xfs_log_force(log->l_mp, XFS_LOG_SYNC); xlog_recover_process_iunlinks(log); Index: xfs/fs/xfs/xfs_mount.c =================================================================== --- xfs.orig/fs/xfs/xfs_mount.c 2010-01-19 10:49:11.275004245 +0100 +++ xfs/fs/xfs/xfs_mount.c 2010-01-19 10:49:33.515003771 +0100 @@ -1455,7 +1455,7 @@ xfs_unmountfs( * push out the iclog we will never get that unlocked. hence we * need to force the log first. */ - xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); + xfs_log_force(mp, XFS_LOG_SYNC); xfs_reclaim_inodes(mp, XFS_IFLUSH_ASYNC); xfs_qm_unmount(mp); @@ -1465,7 +1465,7 @@ xfs_unmountfs( * that nothing is pinned. This is important because bflush() * will skip pinned buffers. */ - xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); + xfs_log_force(mp, XFS_LOG_SYNC); xfs_binval(mp->m_ddev_targp); if (mp->m_rtdev_targp) { Index: xfs/fs/xfs/xfs_trans.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans.c 2010-01-19 10:49:18.101004269 +0100 +++ xfs/fs/xfs/xfs_trans.c 2010-01-19 10:49:33.515003771 +0100 @@ -981,9 +981,8 @@ shut_us_down: */ if (sync) { if (!error) { - error = _xfs_log_force(mp, commit_lsn, - XFS_LOG_FORCE | XFS_LOG_SYNC, - log_flushed); + error = _xfs_log_force_lsn(mp, commit_lsn, + XFS_LOG_SYNC, log_flushed); } XFS_STATS_INC(xs_trans_sync); } else { Index: xfs/fs/xfs/xfs_trans_ail.c =================================================================== --- xfs.orig/fs/xfs/xfs_trans_ail.c 2010-01-17 23:33:04.576253340 +0100 +++ xfs/fs/xfs/xfs_trans_ail.c 2010-01-19 10:49:33.516004248 +0100 @@ -371,7 +371,7 @@ xfsaild_push( * move forward in the AIL. */ XFS_STATS_INC(xs_push_ail_flush); - xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); + xfs_log_force(mp, 0); } if (!count) { Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c 2010-01-19 10:49:11.278003231 +0100 +++ xfs/fs/xfs/xfs_vnodeops.c 2010-01-19 10:49:33.518003874 +0100 @@ -631,9 +631,8 @@ xfs_fsync( xfs_iunlock(ip, XFS_ILOCK_SHARED); if (xfs_ipincount(ip)) { - error = _xfs_log_force(ip->i_mount, (xfs_lsn_t)0, - XFS_LOG_FORCE | XFS_LOG_SYNC, - &log_flushed); + error = _xfs_log_force(ip->i_mount, XFS_LOG_SYNC, + &log_flushed); } else { /* * If the inode is not pinned and nothing has changed From SRS0+6f/b+48+fromorbit.com=david@internode.on.net Tue Jan 19 05:08:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_63,J_CHICKENPOX_65,J_CHICKENPOX_66,URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0JB8V1N187284 for ; Tue, 19 Jan 2010 05:08:32 -0600 X-ASG-Debug-ID: 1263899369-1c9300af0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E02815173ED for ; Tue, 19 Jan 2010 03:09:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id RBeA0dNdJpIz90IE for ; Tue, 19 Jan 2010 03:09:29 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11407504-1927428 for multiple; Tue, 19 Jan 2010 21:39:28 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXBxe-0003rR-NM; Tue, 19 Jan 2010 22:09:26 +1100 Date: Tue, 19 Jan 2010 22:09:26 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfsprogs: Do not remove configure information on clean Subject: Re: [PATCH 1/2] xfsprogs: Do not remove configure information on clean Message-ID: <20100119110926.GA14035@discord.disaster> References: <1263861186-13589-1-git-send-email-david@fromorbit.com> <1263861186-13589-2-git-send-email-david@fromorbit.com> <20100119091531.GA29269@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100119091531.GA29269@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263899371 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0203 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20226 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 04:15:31AM -0500, Christoph Hellwig wrote: > On Tue, Jan 19, 2010 at 11:33:05AM +1100, Dave Chinner wrote: > > ??ormal packaging practice is to remove the configure scripts > > on a 'make distclean' so that a 'make clean' doesn't result in > > having to rerun the configure scripts. Change the clean targets > > in the top level makefile to only clear configure files on > > a distclean. > > > > Signed-off-by: Dave Chinner > > --- > > Makefile | 4 ++-- > > 1 files changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index 2d394e4..a7615ca 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -15,7 +15,7 @@ SRCTAR = $(PKG_NAME)-$(PKG_VERSION).tar.gz > > CONFIGURE = aclocal.m4 configure config.guess config.sub install-sh ltmain.sh > > LSRCFILES = configure.in release.sh README VERSION $(CONFIGURE) > > > > -LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ > > +DISTDIRT = config.log .dep config.status config.cache confdefs.h conftest* \ > > built .census install.* install-dev.* *.gz autom4te.cache/* libtool \ > > include/builddefs include/platform_defs.h > > But this isn't all configure stuff, is it? install.* install-dev.* *.gz > is from the install process, and .dep is part of make dep. Hmm - I never do make installs - I always build packages because I build on a different machine to the ones I test one. I'll check it out, but I've never seen install* files generated in the top level. For the *.gz files, the tarballs are generated by "make dist", so shouldn't they be removed by "make distclean"? As to depenencies, we have no "make dep" target, there doesn't appear to be any makefile gunk to generate them, and the dependencies are completely busted. That's on my list to fix. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+ig8V+48+fromorbit.com=david@internode.on.net Tue Jan 19 05:10:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0JBAxxo187443 for ; Tue, 19 Jan 2010 05:10:59 -0600 X-ASG-Debug-ID: 1263899517-673201640000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 72A1E173E8F for ; Tue, 19 Jan 2010 03:11:57 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id D5JCkrqCKbrkTAf7 for ; Tue, 19 Jan 2010 03:11:57 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11564578-1927428 for multiple; Tue, 19 Jan 2010 21:41:56 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXC03-0003rg-DJ; Tue, 19 Jan 2010 22:11:55 +1100 Date: Tue, 19 Jan 2010 22:11:55 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfs: rearrange xfs_mod_sb() to avoid array subscript warning Subject: Re: [PATCH 2/2] xfs: rearrange xfs_mod_sb() to avoid array subscript warning Message-ID: <20100119111155.GB14035@discord.disaster> References: <1263861711-13900-1-git-send-email-david@fromorbit.com> <1263861711-13900-3-git-send-email-david@fromorbit.com> <20100119092320.GD1784@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100119092320.GD1784@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1263899519 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 04:23:20AM -0500, Christoph Hellwig wrote: > On Tue, Jan 19, 2010 at 11:41:51AM +1100, Dave Chinner wrote: > > gcc warns of an array subscript out of bounds in xfs_mod_sb(). > > The code is written in such a way that if the array subscript is > > out of bounds, then it will assert fail. Rearrange the code to > > avoid the bounds check warning. > > Does it avoid the warning also for non-debug builds where the assert > goes away? Anyway, the reordering is correct, so: Yes. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+6f/b+48+fromorbit.com=david@internode.on.net Tue Jan 19 05:14:14 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0JBEDE1187614 for ; Tue, 19 Jan 2010 05:14:13 -0600 X-ASG-Debug-ID: 1263899711-6d9e033d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2ECF4151745B for ; Tue, 19 Jan 2010 03:15:12 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id GBg5kt4v2dtTd5dW for ; Tue, 19 Jan 2010 03:15:12 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11407521-1927428 for multiple; Tue, 19 Jan 2010 21:45:11 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXC3B-0003rv-EM; Tue, 19 Jan 2010 22:15:09 +1100 Date: Tue, 19 Jan 2010 22:15:09 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 8/8] xfs: make compile warn about char sign mismatches again Subject: Re: [PATCH 8/8] xfs: make compile warn about char sign mismatches again Message-ID: <20100119111509.GC14035@discord.disaster> References: <1263861026-13448-1-git-send-email-david@fromorbit.com> <1263861026-13448-9-git-send-email-david@fromorbit.com> <20100119092939.GG7168@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100119092939.GG7168@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263899713 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20226 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 04:29:39AM -0500, Christoph Hellwig wrote: > On Tue, Jan 19, 2010 at 11:30:26AM +1100, Dave Chinner wrote: > > The -fno-unsigned-char directive has no effect anymore as the > > XFs build is clean. However, the kernel build hides pointer sign > > differences so turn that back on so that we can clean up all the > > mismatches prior to a userspace code resync. > > Not so happy about turning the warning on so we have local compiler > warning differences from the rest of the kernel again, but it's not > that bad, so > > > Reviewed-by: Christoph Hellwig > > > index 6f26875..9f7c001 100644 > > --- a/fs/xfs/xfs_vnodeops.c > > +++ b/fs/xfs/xfs_vnodeops.c > > @@ -2199,7 +2199,8 @@ xfs_symlink( > > if (DM_EVENT_ENABLED(dp, DM_EVENT_SYMLINK)) { > > error = XFS_SEND_NAMESP(mp, DM_EVENT_SYMLINK, dp, > > DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, > > - link_name->name, target_path, 0, 0, 0); > > + link_name->name, > > + (unsigned char *)target_path, 0, 0, 0); > > if (error) > > return error; > > } > > @@ -2395,7 +2396,8 @@ std_return: > > dp, DM_RIGHT_NULL, > > error ? NULL : ip, > > DM_RIGHT_NULL, link_name->name, > > - target_path, 0, error, 0); > > + (unsigned char *)target_path, > > + 0, error, 0); > > These changes are nowhere mentioned in the changelog. And they probably > belong into the patch changing the dmapi events to take unsigned chars. I though I fixed that. Oh well, I'll fix it up again.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+40ff10b3af8edaaf1071+2340+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 19 06:14:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0JCE5pe190847 for ; Tue, 19 Jan 2010 06:14:06 -0600 X-ASG-Debug-ID: 1263903305-5cc701350000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0F1FB1C5EB1D for ; Tue, 19 Jan 2010 04:15:05 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 5BNdNOB17EYV0eWB for ; Tue, 19 Jan 2010 04:15:05 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXCzB-0003Jt-41; Tue, 19 Jan 2010 12:15:05 +0000 Date: Tue, 19 Jan 2010 07:15:05 -0500 From: Christoph Hellwig To: Nick Piggin Cc: Christoph Hellwig , xfs@oss.sgi.com, linux-mm@kvack.org X-ASG-Orig-Subj: Re: [patch 2/2] xfs: use scalable vmap API Subject: Re: [patch 2/2] xfs: use scalable vmap API Message-ID: <20100119121505.GA9428@infradead.org> References: <20081021082542.GA6974@wotan.suse.de> <20081021082735.GB6974@wotan.suse.de> <20081021120932.GB13348@infradead.org> <20081022093018.GD4359@wotan.suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081022093018.GD4359@wotan.suse.de> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263903306 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Nick, I've looked into retesting and re-enabling the swithc to your scalabale vmap API (original commit 95f8e302c04c0b0c6de35ab399a5551605eeb006). The good thing is that I can't reproduce the original regressions in xfstests I've seen. The bad news is that starting from the second consequitive xfstests run we're not able to vmalloc the log buffers anymore. It seems the use of this API introduces some leak of vmalloc space. Any idea how to debug this further? From SRS0+3r1K+48+fromorbit.com=david@internode.on.net Tue Jan 19 17:11:36 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0JNBZQl224179 for ; Tue, 19 Jan 2010 17:11:35 -0600 X-ASG-Debug-ID: 1263942752-40bd024c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 024A41C63BC3 for ; Tue, 19 Jan 2010 15:12:33 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id ikpv4LQAcFjbRIYd for ; Tue, 19 Jan 2010 15:12:33 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11531098-1927428 for multiple; Wed, 20 Jan 2010 09:42:31 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXNFO-0004eG-AB; Wed, 20 Jan 2010 10:12:30 +1100 Date: Wed, 20 Jan 2010 10:12:30 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/3] [PATCH] xfs: remove duplicate buffer flags Subject: Re: [PATCH 1/3] [PATCH] xfs: remove duplicate buffer flags Message-ID: <20100119231230.GD14035@discord.disaster> References: <20100119095643.378866749@bombadil.infradead.org> <20100119095654.708720933@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100119095654.708720933@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263942755 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20268 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 04:56:44AM -0500, Christoph Hellwig wrote: > Currently we define aliases for the buffer flags in various namespaces, > which only adds confusion. Remove all but the XBF_ flags to clean this > up a bit. > > Note that we still abuse XFS_B_ASYNC/XBF_ASYNC for some non-buffer uses, > but I'll clean that up later. > > Signed-off-by: Christoph Hellwig Looks good. This has been on my "things for a rainy day" list for quite some time. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From SRS0+hMks+48+fromorbit.com=david@internode.on.net Tue Jan 19 17:13:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0JNDboE224282 for ; Tue, 19 Jan 2010 17:13:38 -0600 X-ASG-Debug-ID: 1263942876-230102e80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0E9DDF24441 for ; Tue, 19 Jan 2010 15:14:36 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id ZdFF0qvpZgDSjPtf for ; Tue, 19 Jan 2010 15:14:36 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11452899-1927428 for multiple; Wed, 20 Jan 2010 09:44:35 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXNHN-0004eS-Ub; Wed, 20 Jan 2010 10:14:33 +1100 Date: Wed, 20 Jan 2010 10:14:33 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/3] xfs: kill XLOG_VEC_SET_TYPE Subject: Re: [PATCH 2/3] xfs: kill XLOG_VEC_SET_TYPE Message-ID: <20100119231433.GE14035@discord.disaster> References: <20100119095643.378866749@bombadil.infradead.org> <20100119095655.041953657@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100119095655.041953657@bombadil.infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263942878 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0205 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20269 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 04:56:45AM -0500, Christoph Hellwig wrote: > This macro only obsfucates the log item type assignments, so kill it. Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From aelder@sgi.com Tue Jan 19 17:14:09 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0JNE98T224322 for ; Tue, 19 Jan 2010 17:14:09 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 166C08F80D0; Tue, 19 Jan 2010 15:15:07 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: Re: [1/3] xfs: remove duplicate buffer flags Date: Tue, 19 Jan 2010 17:14:16 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A699B@cf--amer001e--3.americas.sgi.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Re: [1/3] xfs: remove duplicate buffer flags Thread-Index: AcqZXSMO5ZNoVcD/TSaCHMwsoyY3dw== From: "Alex Elder" To: Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I didn't get these in my e-mail, but I've reviewed these three patches and all look good. Gratuitous commententary below, but for all three: Reviewed-by: Alex Elder -Alex [1/3] xfs: remove duplicate buffer flags I agree that aliases like this obscure the code. It's possible they were done for reasons of architectural purity or something, but I think this change is an improvement. [2/3] xfs: kill XLOG_VEC_SET_TYPE Definite improvement. [3/3] xfs: cleanup up xfs_log_force calling conventions > Index: xfs/fs/xfs/xfs_log.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/xfs_log.c 2010-01-19 10:49:18.100003304 +0100 > +++ xfs/fs/xfs/xfs_log.c 2010-01-19 10:49:33.510003623 +0100 . . . +void +xfs_log_force_lsn( + xfs_mount_t *mp, + xfs_lsn_t lsn, + uint flags) +{ + int error; =20 + error =3D _xfs_log_force_lsn(mp, lsn, flags, NULL); + if (error) { + xfs_fs_cmn_err(CE_WARN, mp, "xfs_log_force: " Function name should be fixed in this statement. I will fix that for you. + "error %d returned.", error); + } +} =20 . . . > @@ -3536,13 +3529,14 @@ xfs_log_force_umount( > } > spin_unlock(&log->l_grant_lock); > =20 > - if (! (log->l_iclog->ic_state & XLOG_STATE_IOERROR)) { > + if (!(log->l_iclog->ic_state & XLOG_STATE_IOERROR)) { > ASSERT(!logerror); > /* > * Force the incore logs to disk before shutting the > * log down completely. > */ > - xlog_state_sync_all(log, XFS_LOG_FORCE|XFS_LOG_SYNC, &dummy); > + _xfs_log_force(mp, XFS_LOG_SYNC, NULL); > + This is a really good change. It was a strange to have this be the only other spot that called xlog_state_sync_all(). (And of course now you've incorporated the state_sync functions back into _xfs_log_force*().) > spin_lock(&log->l_icloglock); > retval =3D xlog_state_ioerror(log); > spin_unlock(&log->l_icloglock); > From sandeen@sandeen.net Tue Jan 19 17:24:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0JNOj5u224762 for ; Tue, 19 Jan 2010 17:24:46 -0600 X-ASG-Debug-ID: 1263943545-660f01b50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 10399176B80 for ; Tue, 19 Jan 2010 15:25:45 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id bnh06vAF3AMkkfFQ for ; Tue, 19 Jan 2010 15:25:45 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id C5CA19C8F03; Tue, 19 Jan 2010 17:25:44 -0600 (CST) Message-ID: <4B563F78.9060203@sandeen.net> Date: Tue, 19 Jan 2010 17:25:44 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: Convert all tests to use /bin/bash Subject: Re: [PATCH] xfstests: Convert all tests to use /bin/bash References: <1263891633-30868-1-git-send-email-david@fromorbit.com> In-Reply-To: <1263891633-30868-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263943546 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20270 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > While most tests use /bin/sh, they are dependent on /bin/sh being a > bash shell. Convert all the tests to execute via /bin/bash as it is > much, much simpler than trying to debug and remove all the bashisms > throughout the test code. > > Signed-off-by: Dave Chinner Seems fine, Reviewed-by: Eric Sandeen From sandeen@sandeen.net Tue Jan 19 17:36:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0JNaPiF225284 for ; Tue, 19 Jan 2010 17:36:26 -0600 X-ASG-Debug-ID: 1263944245-65c301ab0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E1998176C29 for ; Tue, 19 Jan 2010 15:37:25 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id 9ytNw8XY6k2AwCDi for ; Tue, 19 Jan 2010 15:37:25 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 3806CA7B5F7; Tue, 19 Jan 2010 17:37:25 -0600 (CST) Message-ID: <4B564235.60403@sandeen.net> Date: Tue, 19 Jan 2010 17:37:25 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: Convert all tests to use /bin/bash Subject: Re: [PATCH] xfstests: Convert all tests to use /bin/bash References: <1263891633-30868-1-git-send-email-david@fromorbit.com> In-Reply-To: <1263891633-30868-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1263944245 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20270 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > While most tests use /bin/sh, they are dependent on /bin/sh being a > bash shell. Convert all the tests to execute via /bin/bash as it is > much, much simpler than trying to debug and remove all the bashisms > throughout the test code. > > Signed-off-by: Dave Chinner well, spoke a little too soon. OK as far as it goes, but not quite far enough :) the "new" file still contains sh and I guess it could be used as a template so maybe fix that up. and do you care about things like: | tee -a $here/$seq.full | sh in 001? -Eric From SRS0+2wEF+49+fromorbit.com=david@internode.on.net Tue Jan 19 18:32:55 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K0WsRE227480 for ; Tue, 19 Jan 2010 18:32:55 -0600 X-ASG-Debug-ID: 1263947633-01a502320000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0FC44F25466 for ; Tue, 19 Jan 2010 16:33:53 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id UrBVEHiDUzDu5Meu for ; Tue, 19 Jan 2010 16:33:53 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11409196-1927428 for multiple; Wed, 20 Jan 2010 11:03:52 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXOW6-0004rO-Qe; Wed, 20 Jan 2010 11:33:50 +1100 Date: Wed, 20 Jan 2010 11:33:50 +1100 From: Dave Chinner To: aelder@sgi.com Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: [GIT PULL] xfs: Warning fixes for 2.6.34 Subject: [GIT PULL] xfs: Warning fixes for 2.6.34 Message-ID: <20100120003350.GF14035@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1263947635 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20273 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alex, This is the series that Christoph reviewed this morning. I've fixed up the hunks that were in the wrong patch. Please pull. ---- The following changes since commit 4e23471a3f3aba885ea70100db47ccacb5f069f6: Christoph Hellwig (1): xfs: move more buffer helpers into xfs_buf.c are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/dgc/xfs.git warnings Dave Chinner (10): xfs: directory names are unsigned xfs: convert DM ops to use unsigned char names xfs: convert dirnameops to unsigned char names xfs: make xfs_dir_cilookup_result use unsigned char xfs: xfs_buf_iomove() doesn't care about signedness xfs: convert attr to use unsigned names xfs: clean up sign warnings in dir2 code xfs: make compile warn about char sign mismatches again xfs: suppress spurious uninitialised var warning in xfs_bmapi() xfs: rearrange xfs_mod_sb() to avoid array subscript warning fs/xfs/Makefile | 2 +- fs/xfs/linux-2.6/xfs_acl.c | 11 ++++++----- fs/xfs/linux-2.6/xfs_buf.c | 2 +- fs/xfs/linux-2.6/xfs_buf.h | 2 +- fs/xfs/linux-2.6/xfs_ioctl.c | 18 +++++++++--------- fs/xfs/linux-2.6/xfs_ioctl.h | 12 ++++++------ fs/xfs/linux-2.6/xfs_ioctl32.c | 4 ++-- fs/xfs/linux-2.6/xfs_iops.c | 4 ++-- fs/xfs/linux-2.6/xfs_xattr.c | 27 +++++++++++++++++++-------- fs/xfs/xfs_acl.h | 4 ++-- fs/xfs/xfs_attr.c | 38 +++++++++++++++++++++++--------------- fs/xfs/xfs_attr.h | 2 +- fs/xfs/xfs_attr_leaf.c | 28 ++++++++++++++-------------- fs/xfs/xfs_attr_sf.h | 2 +- fs/xfs/xfs_bmap.c | 2 +- fs/xfs/xfs_da_btree.c | 4 ++-- fs/xfs/xfs_da_btree.h | 5 +++-- fs/xfs/xfs_dir2.c | 8 ++++---- fs/xfs/xfs_dir2.h | 4 ++-- fs/xfs/xfs_dir2_block.c | 9 +++++---- fs/xfs/xfs_dir2_leaf.c | 2 +- fs/xfs/xfs_dir2_sf.c | 2 +- fs/xfs/xfs_mount.c | 7 +++---- fs/xfs/xfs_mount.h | 3 ++- fs/xfs/xfs_types.h | 4 ++-- fs/xfs/xfs_vnodeops.c | 6 ++++-- fs/xfs/xfs_vnodeops.h | 10 +++++----- 27 files changed, 123 insertions(+), 99 deletions(-) -- Dave Chinner david@fromorbit.com From SRS0+K6gO+49+fromorbit.com=david@internode.on.net Tue Jan 19 18:40:00 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K0e0Iu227875 for ; Tue, 19 Jan 2010 18:40:00 -0600 X-ASG-Debug-ID: 1263948058-65a4038c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8BD7B176F5A for ; Tue, 19 Jan 2010 16:40:59 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id DRYDalwx2zZbDxoG for ; Tue, 19 Jan 2010 16:40:59 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11547566-1927428 for multiple; Wed, 20 Jan 2010 11:10:57 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXOcy-0004sQ-6t; Wed, 20 Jan 2010 11:40:56 +1100 Date: Wed, 20 Jan 2010 11:40:56 +1100 From: Dave Chinner To: aelder@sgi.com Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [GIT PULL] xfs: Warning fixes for 2.6.34 Subject: Re: [GIT PULL] xfs: Warning fixes for 2.6.34 Message-ID: <20100120004056.GG14035@discord.disaster> References: <20100120003350.GF14035@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100120003350.GF14035@discord.disaster> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1263948060 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3048 1.0000 -0.3281 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.33 X-Barracuda-Spam-Status: No, SCORE=-0.33 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20274 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 11:33:50AM +1100, Dave Chinner wrote: > Alex, > > This is the series that Christoph reviewed this morning. I've fixed > up the hunks that were in the wrong patch. Please pull. > > ---- > > The following changes since commit 4e23471a3f3aba885ea70100db47ccacb5f069f6: > Christoph Hellwig (1): > xfs: move more buffer helpers into xfs_buf.c > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/dgc/xfs.git warnings Looks like something has gone wrong when I pushed the warnings branch - I can't pull this tree right now. I'll get back to you... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+55gv+49+fromorbit.com=david@internode.on.net Tue Jan 19 19:24:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K1OxMU229751 for ; Tue, 19 Jan 2010 19:24:59 -0600 X-ASG-Debug-ID: 1263950756-3d0d011c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5F8AC11F8E09 for ; Tue, 19 Jan 2010 17:25:57 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id 3DfOZeFUkSJIEsSX for ; Tue, 19 Jan 2010 17:25:57 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11453737-1927428 for multiple; Wed, 20 Jan 2010 11:55:56 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXPKU-0004x4-JH; Wed, 20 Jan 2010 12:25:54 +1100 Date: Wed, 20 Jan 2010 12:25:54 +1100 From: Dave Chinner To: aelder@sgi.com Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [GIT PULL] xfs: Warning fixes for 2.6.34 Subject: Re: [GIT PULL] xfs: Warning fixes for 2.6.34 Message-ID: <20100120012554.GH14035@discord.disaster> References: <20100120003350.GF14035@discord.disaster> <20100120004056.GG14035@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100120004056.GG14035@discord.disaster> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263950759 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1577 1.0000 -1.0581 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.06 X-Barracuda-Spam-Status: No, SCORE=-1.06 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20277 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 11:40:56AM +1100, Dave Chinner wrote: > On Wed, Jan 20, 2010 at 11:33:50AM +1100, Dave Chinner wrote: > > Alex, > > > > This is the series that Christoph reviewed this morning. I've fixed > > up the hunks that were in the wrong patch. Please pull. > > > > ---- > > > > The following changes since commit 4e23471a3f3aba885ea70100db47ccacb5f069f6: > > Christoph Hellwig (1): > > xfs: move more buffer helpers into xfs_buf.c > > > > are available in the git repository at: > > > > git://git.kernel.org/pub/scm/linux/kernel/git/dgc/xfs.git warnings > > Looks like something has gone wrong when I pushed the warnings > branch - I can't pull this tree right now. I'll get back to you... Ok, recloned my staging tree and re-pushed to the kernel.org tree, and it appears to be working now. I don't know what was wrong, but it's working now... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+T51K+49+fromorbit.com=dave@internode.on.net Tue Jan 19 21:37:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K3bJBA235613 for ; Tue, 19 Jan 2010 21:37:20 -0600 X-ASG-Debug-ID: 1263958696-7caf02180000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 47724177467 for ; Tue, 19 Jan 2010 19:38:17 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id IhBv9TIb6PWPH0BO for ; Tue, 19 Jan 2010 19:38:17 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11651449-1927428 for ; Wed, 20 Jan 2010 14:08:15 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXROY-00053F-85 for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:14 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXROX-00008O-5F for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:13 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/8] xfstests: fix printf format warnings in aio-stress.c Subject: [PATCH 4/8] xfstests: fix printf format warnings in aio-stress.c Date: Wed, 20 Jan 2010 14:38:04 +1100 Message-Id: <1263958688-435-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263958688-435-1-git-send-email-david@fromorbit.com> References: <1263958688-435-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263958699 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0196 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dave Chinner --- ltp/aio-stress.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ltp/aio-stress.c b/ltp/aio-stress.c index ab9e006..57a2158 100644 --- a/ltp/aio-stress.c +++ b/ltp/aio-stress.c @@ -1167,9 +1167,9 @@ restart: if (t->stage_mb_trans && t->num_files > 0) { double seconds = time_since_now(&stage_time); - fprintf(stderr, "thread %d %s totals (%.2f MB/s) %.2f MB in %.2fs\n", - t - global_thread_info, this_stage, t->stage_mb_trans/seconds, - t->stage_mb_trans, seconds); + fprintf(stderr, "thread %llu %s totals (%.2f MB/s) %.2f MB in %.2fs\n", + (unsigned long long)(t - global_thread_info), this_stage, + t->stage_mb_trans/seconds, t->stage_mb_trans, seconds); } if (num_threads > 1) { @@ -1449,16 +1449,19 @@ int main(int ac, char **av) if (file_size < num_contexts * context_offset) { fprintf(stderr, "file size %Lu too small for %d contexts\n", - file_size, num_contexts); + (unsigned long long)file_size, num_contexts); exit(1); } - fprintf(stderr, "file size %LuMB, record size %luKB, depth %d, ios per iteration %d\n", file_size / (1024 * 1024), rec_len / 1024, depth, io_iter); + fprintf(stderr, "file size %LuMB, record size %luKB, depth %d, ios per iteration %d\n", + (unsigned long long)file_size / (1024 * 1024), + rec_len / 1024, depth, io_iter); fprintf(stderr, "max io_submit %d, buffer alignment set to %luKB\n", max_io_submit, (page_size_mask + 1)/1024); fprintf(stderr, "threads %d files %d contexts %d context offset %LuMB verification %s\n", num_threads, num_files, num_contexts, - context_offset / (1024 * 1024), verify ? "on" : "off"); + (unsigned long long)context_offset / (1024 * 1024), + verify ? "on" : "off"); /* open all the files and do any required setup for them */ for (i = optind ; i < ac ; i++) { int thread_index; -- 1.6.5 From SRS0+T51K+49+fromorbit.com=dave@internode.on.net Tue Jan 19 21:37:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_25,J_CHICKENPOX_34,J_CHICKENPOX_35, J_CHICKENPOX_36,J_CHICKENPOX_37,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K3bJAH235614 for ; Tue, 19 Jan 2010 21:37:20 -0600 X-ASG-Debug-ID: 1263958697-7cb002220000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2FA0E177465 for ; Tue, 19 Jan 2010 19:38:17 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id PDs47ISMUY1Up4gc for ; Tue, 19 Jan 2010 19:38:17 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11651450-1927428 for ; Wed, 20 Jan 2010 14:08:16 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXROY-00053V-Kc for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:14 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXROX-00008Y-H1 for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:13 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 7/8] xfstests: fix printf warnings in locktest.c Subject: [PATCH 7/8] xfstests: fix printf warnings in locktest.c Date: Wed, 20 Jan 2010 14:38:07 +1100 Message-Id: <1263958688-435-8-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263958688-435-1-git-send-email-david@fromorbit.com> References: <1263958688-435-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263958699 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0208 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dave Chinner --- src/locktest.c | 35 ++++++++++++++++++++--------------- 1 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/locktest.c b/src/locktest.c index 7552ace..a108b6f 100644 --- a/src/locktest.c +++ b/src/locktest.c @@ -718,7 +718,7 @@ send_ctl(void) if (debug > 1) { fprintf(stderr, "send_ctl: test=%d, command=%d offset=%"LL"d, length=%"LL"d, result=%d, error=%d\n", - ctl.test, ctl.command, ctl.offset, ctl.length,ctl.result, ctl.error); + ctl.test, ctl.command, (long long)ctl.offset, (long long)ctl.length,ctl.result, ctl.error); } ctl.test= bswap_uint32(ctl.test); @@ -741,7 +741,7 @@ send_ctl(void) if (nwrite < 0) perror("send_ctl: write"); else - fprintf(stderr, "send_ctl[%d]: write() returns %d, not %d as expected\n", + fprintf(stderr, "send_ctl[%d]: write() returns %d, not %lu as expected\n", ctl.test, nwrite, sizeof(ctl)); exit(1); /*NOTREACHED*/ @@ -756,7 +756,7 @@ void recv_ctl(void) if (nread < 0) perror("recv_ctl: read"); else { - fprintf(stderr, "recv_ctl[%d]: read() returns %d, not %d as expected\n", + fprintf(stderr, "recv_ctl[%d]: read() returns %d, not %lu as expected\n", ctl.test, nread, sizeof(ctl)); fprintf(stderr, "socket might has been closed by other locktest\n"); } @@ -773,7 +773,7 @@ void recv_ctl(void) if (debug > 1) { fprintf(stderr, "recv_ctl: test=%d, command=%d offset=%"LL"d, length=%"LL"d, result=%d, error=%d\n", - ctl.test, ctl.command, ctl.offset, ctl.length, ctl.result, ctl.error); + ctl.test, ctl.command, (long long)ctl.offset, (long long)ctl.length, ctl.result, ctl.error); } } @@ -1040,14 +1040,16 @@ main(int argc, char *argv[]) fail_flag++; /* We have a failure */ if(debug) - fprintf(stderr, "Server failure in test %d, while %sing using offset %llu, length %llu - err = %d:%s\n", + fprintf(stderr, "Server failure in test %d, while %sing using offset %lld, length %lld - err = %d:%s\n", ctl.test, tests[index][COMMAND]==WRLOCK?"write lock": tests[index][COMMAND]==RDLOCK?"read lock": tests[index][COMMAND]==UNLOCK?"unlock": tests[index][COMMAND]==F_OPEN?"open":"clos", - tests[index][OFFSET], tests[index][LENGTH], saved_errno, strerror(saved_errno)); - fprintf(stderr, "Server failure in %llu:%s\n", - tests[index][TEST_NUM], + (long long)tests[index][OFFSET], + (long long)tests[index][LENGTH], + saved_errno, strerror(saved_errno)); + fprintf(stderr, "Server failure in %lld:%s\n", + (long long)tests[index][TEST_NUM], descriptions[tests[index][TEST_NUM] - 1]); } } @@ -1058,12 +1060,13 @@ main(int argc, char *argv[]) end=1; } if(debug > 1) - fprintf(stderr, "Sending command to client (%d) - %s - %llu:%llu\n", + fprintf(stderr, "Sending command to client (%d) - %s - %lld:%lld\n", index, tests[index][COMMAND]==WRLOCK?"write lock": tests[index][COMMAND]==RDLOCK?"read lock": tests[index][COMMAND]==UNLOCK?"unlock": tests[index][COMMAND]==F_OPEN?"open":"clos", - tests[index][OFFSET], tests[index][LENGTH]); + (long long)tests[index][OFFSET], + (long long)tests[index][LENGTH]); /* get the client to do something */ ctl.index = index; send_ctl(); @@ -1075,14 +1078,15 @@ main(int argc, char *argv[]) if( ctl.result == FAIL ) { fail_flag++; if(debug) - fprintf(stderr, "Client failure in test %d, while %sing using offset %llu, length %llu - err = %d:%s\n", + fprintf(stderr, "Client failure in test %d, while %sing using offset %lld, length %lld - err = %d:%s\n", ctl.test, ctl.command==WRLOCK?"write lock": ctl.command==RDLOCK?"read lock": ctl.command==UNLOCK?"unlock": ctl.command==F_OPEN?"open":"clos", - ctl.offset, ctl.length, ctl.error, strerror(ctl.error)); - fprintf(stderr, "Client failure in %llu:%s\n", - tests[index][TEST_NUM], + (long long)ctl.offset, (long long)ctl.length, + ctl.error, strerror(ctl.error)); + fprintf(stderr, "Client failure in %lld:%s\n", + (long long)tests[index][TEST_NUM], descriptions[tests[index][TEST_NUM] - 1]); } } @@ -1144,7 +1148,8 @@ main(int argc, char *argv[]) } if( result != tests[index][RESULT] ) { if(debug) - fprintf(stderr,"Got %d, wanted %llu\n", result, tests[index][RESULT]); + fprintf(stderr,"Got %d, wanted %lld\n", result, + (long long)tests[index][RESULT]); ctl.result = FAIL; ctl.error = saved_errno; fail_count++; -- 1.6.5 From SRS0+T51K+49+fromorbit.com=dave@internode.on.net Tue Jan 19 21:37:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K3bKID235622 for ; Tue, 19 Jan 2010 21:37:20 -0600 X-ASG-Debug-ID: 1263958696-7caf02180002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EAD5817746C for ; Tue, 19 Jan 2010 19:38:19 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id RgUiHSjLT7n0ymec for ; Tue, 19 Jan 2010 19:38:19 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11651452-1927428 for ; Wed, 20 Jan 2010 14:08:17 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXROY-00053E-6K for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:14 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXROX-00008L-3b for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:13 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/8] xfstests: Don't use tempnam in growfiles.c Subject: [PATCH 3/8] xfstests: Don't use tempnam in growfiles.c Date: Wed, 20 Jan 2010 14:38:03 +1100 Message-Id: <1263958688-435-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263958688-435-1-git-send-email-david@fromorbit.com> References: <1263958688-435-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263958700 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0109 1.0000 -1.9501 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.95 X-Barracuda-Spam-Status: No, SCORE=-1.95 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean tempnam() generates a compiler warning as a dangerous function. This code doesn't care about security issues with tempnam, so remove it and just manually build the filenames without the randomness of tempnam. Signed-off-by: Dave Chinner --- ltp/growfiles.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ltp/growfiles.c b/ltp/growfiles.c index a987b5a..52c9079 100644 --- a/ltp/growfiles.c +++ b/ltp/growfiles.c @@ -1162,10 +1162,9 @@ no whole file checking will be performed!\n", Progname, TagName, (int)getpid()); /* * construct auto filename and insert them into filenames space */ - for(ind=0;ind; Tue, 19 Jan 2010 21:37:20 -0600 X-ASG-Debug-ID: 1263958697-7cb002220002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E2B1317746B for ; Tue, 19 Jan 2010 19:38:19 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id VbjnQ8vl4PeecreU for ; Tue, 19 Jan 2010 19:38:19 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11651453-1927428 for ; Wed, 20 Jan 2010 14:08:18 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXROY-00053D-5r for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:14 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXROX-00008I-20 for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:13 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/8] xfstests: fix bulkstat related compile warnings. Subject: [PATCH 2/8] xfstests: fix bulkstat related compile warnings. Date: Wed, 20 Jan 2010 14:38:02 +1100 Message-Id: <1263958688-435-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263958688-435-1-git-send-email-david@fromorbit.com> References: <1263958688-435-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263958700 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Use correct types for bulkstat structure to avoid pointer warnings. Signed-off-by: Dave Chinner --- ltp/fsstress.c | 4 ++-- src/bulkstat_unlink_test.c | 2 +- src/bulkstat_unlink_test_modified.c | 2 +- src/t_immutable.c | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 6978381..c37cddf 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -1550,7 +1550,7 @@ bulkstat_f(int opno, long r) { int count; int fd; - __uint64_t last; + __u64 last; int nent; xfs_bstat_t *t; __int64_t total; @@ -1583,7 +1583,7 @@ bulkstat1_f(int opno, long r) pathname_t f; int fd; int good; - __uint64_t ino; + __u64 ino; struct stat64 s; xfs_bstat_t t; int v; diff --git a/src/bulkstat_unlink_test.c b/src/bulkstat_unlink_test.c index 17d07c0..afd69ff 100644 --- a/src/bulkstat_unlink_test.c +++ b/src/bulkstat_unlink_test.c @@ -68,7 +68,7 @@ main(int argc, char *argv[]) printf("Iteration %d ... (%d files)", k, nfiles); memset(&a, 0, sizeof(xfs_fsop_bulkreq_t)); - a.lastip = &last_inode; + a.lastip = (__u64 *)&last_inode; a.icount = nfiles; a.ubuffer = ret; a.ocount = &count; diff --git a/src/bulkstat_unlink_test_modified.c b/src/bulkstat_unlink_test_modified.c index 4acc912..3a50d61 100644 --- a/src/bulkstat_unlink_test_modified.c +++ b/src/bulkstat_unlink_test_modified.c @@ -61,7 +61,7 @@ main(int argc, char *argv[]) memset(genlist, 0, nfiles * sizeof(__u32)); memset(ret, 0, nfiles * sizeof(xfs_bstat_t)); memset(&a, 0, sizeof(xfs_fsop_bulkreq_t)); - a.lastip = &last_inode; + a.lastip = (__u64 *)&last_inode; a.icount = nfiles; a.ubuffer = ret; a.ocount = &count; diff --git a/src/t_immutable.c b/src/t_immutable.c index 07a36cd..7bb3154 100644 --- a/src/t_immutable.c +++ b/src/t_immutable.c @@ -283,7 +283,7 @@ static int test_immutable(const char *dir) ino = st.st_ino; - bulkreq.lastip = &ino; + bulkreq.lastip = (__u64 *)&ino; bulkreq.icount = 1; bulkreq.ubuffer = &bstat; bulkreq.ocount = NULL; @@ -943,7 +943,7 @@ static int test_append(const char *dir) ino = st.st_ino; - bulkreq.lastip = &ino; + bulkreq.lastip = (__u64 *)&ino; bulkreq.icount = 1; bulkreq.ubuffer = &bstat; bulkreq.ocount = NULL; @@ -1353,7 +1353,7 @@ static int test_append(const char *dir) ino = st.st_ino; - bulkreq.lastip = &ino; + bulkreq.lastip = (__u64 *)&ino; bulkreq.icount = 1; bulkreq.ubuffer = &bstat; bulkreq.ocount = NULL; -- 1.6.5 From SRS0+T51K+49+fromorbit.com=dave@internode.on.net Tue Jan 19 21:37:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K3bMVZ235654 for ; Tue, 19 Jan 2010 21:37:22 -0600 X-ASG-Debug-ID: 1263958697-7cb002220004-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A10D017746D for ; Tue, 19 Jan 2010 19:38:21 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id SiiffmozbV4HzHZ4 for ; Tue, 19 Jan 2010 19:38:21 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11651451-1927428 for ; Wed, 20 Jan 2010 14:08:17 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXROY-00053U-I4 for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:14 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXROX-00008U-FE for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:13 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 6/8] xfstests: fix printf format warnings in looptest.c Subject: [PATCH 6/8] xfstests: fix printf format warnings in looptest.c Date: Wed, 20 Jan 2010 14:38:06 +1100 Message-Id: <1263958688-435-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263958688-435-1-git-send-email-david@fromorbit.com> References: <1263958688-435-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263958702 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0211 1.0000 -1.8841 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.88 X-Barracuda-Spam-Status: No, SCORE=-1.88 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dave Chinner --- src/looptest.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/looptest.c b/src/looptest.c index d951f2b..3d99f38 100755 --- a/src/looptest.c +++ b/src/looptest.c @@ -202,7 +202,7 @@ main(int argc, char *argv[]) if ((flags & FLAG_OPENCLOSE) && (flags & FLAG_SEQUENTIAL)) { if (flags & FLAG_VERBOSE) - printf("seek %" LL "d\n", seek_to); + printf("seek %" LL "d\n", (long long)seek_to); if (SEEK(f, seek_to, FILE_BEGIN) < 0) PERROR("SEEK", GET_LAST_ERROR); } @@ -212,7 +212,7 @@ main(int argc, char *argv[]) if (!(flags & FLAG_SEQUENTIAL)) { if (flags & FLAG_VERBOSE) - printf("seek %" LL "d\n", seek_to); + printf("seek %" LL "d\n", (long long)seek_to); if (SEEK(f, seek_to, FILE_BEGIN) < 0) PERROR("SEEK", GET_LAST_ERROR); } @@ -233,7 +233,7 @@ main(int argc, char *argv[]) if (!(flags & FLAG_SEQUENTIAL) || (flags & FLAG_WRITE)) { if (flags & FLAG_VERBOSE) - printf("seek %" LL "d\n", seek_to); + printf("seek %" LL "d\n", (long long)seek_to); if (SEEK(f, seek_to, FILE_BEGIN) < 0) PERROR("SEEK", GET_LAST_ERROR); } @@ -279,7 +279,7 @@ main(int argc, char *argv[]) seek_to += bufsize; if (flags & FLAG_TRUNCATE) { if (flags & FLAG_VERBOSE) - printf("seek %" LL "d\n", seek_to); + printf("seek %" LL "d\n", (long long)seek_to); if (SEEK(f, seek_to, FILE_BEGIN) < 0) PERROR("SEEK", GET_LAST_ERROR); } -- 1.6.5 From SRS0+T51K+49+fromorbit.com=dave@internode.on.net Tue Jan 19 21:37:27 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_42,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K3bQ2f235688 for ; Tue, 19 Jan 2010 21:37:26 -0600 X-ASG-Debug-ID: 1263958705-679d03250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 543A7177470 for ; Tue, 19 Jan 2010 19:38:26 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id jicuDAECfFHk2knC for ; Tue, 19 Jan 2010 19:38:26 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11651454-1927428 for ; Wed, 20 Jan 2010 14:08:25 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXROY-00053G-9f for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:14 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXROX-00008R-6y for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:13 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/8] xfstests: fix compile warnings in iopat.c Subject: [PATCH 5/8] xfstests: fix compile warnings in iopat.c Date: Wed, 20 Jan 2010 14:38:05 +1100 Message-Id: <1263958688-435-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263958688-435-1-git-send-email-david@fromorbit.com> References: <1263958688-435-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263958707 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1335 1.0000 -1.1955 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.20 X-Barracuda-Spam-Status: No, SCORE=-1.20 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Printf format warnings and return value warnings need fixing. Signed-off-by: Dave Chinner --- src/iopat.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/iopat.c b/src/iopat.c index c06071f..f34de19 100644 --- a/src/iopat.c +++ b/src/iopat.c @@ -47,12 +47,13 @@ int main(int argc, char **argv) read(fd, &x, 1048576); for (i = 0; i < 131072; i++) { if (x[i] != i) { - printf("error: %d %d %d\n",i,8*i,x[i]); + printf("error: %d %d %lld\n", i ,8 * i, (long long)x[i]); exit(1); } } #endif close(fd); + exit(0); } -- 1.6.5 From SRS0+T51K+49+fromorbit.com=dave@internode.on.net Tue Jan 19 21:37:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K3bSjS235702 for ; Tue, 19 Jan 2010 21:37:28 -0600 X-ASG-Debug-ID: 1263958705-679d03250002-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3AF2F177473 for ; Tue, 19 Jan 2010 19:38:27 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id rF93NE0DlB4kMDam for ; Tue, 19 Jan 2010 19:38:27 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11651457-1927428 for ; Wed, 20 Jan 2010 14:08:25 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXROi-00053B-0b for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:24 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXROW-00008E-Tm for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:12 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/8] xfstests: fix compile warnings Subject: [PATCH 0/8] xfstests: fix compile warnings Date: Wed, 20 Jan 2010 14:38:00 +1100 Message-Id: <1263958688-435-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263958709 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1364 1.0000 -1.1790 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.18 X-Barracuda-Spam-Status: No, SCORE=-1.18 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This series fixes all the compile warnings when building xfstests. It doesn't deal with the dmapi subdirectory but cleans everything else up. From SRS0+T51K+49+fromorbit.com=dave@internode.on.net Tue Jan 19 21:37:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K3bU48235717 for ; Tue, 19 Jan 2010 21:37:30 -0600 X-ASG-Debug-ID: 1263958705-679d03250004-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E47A6177475 for ; Tue, 19 Jan 2010 19:38:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id C0vqegYOMGod9ZAo for ; Tue, 19 Jan 2010 19:38:29 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11651456-1927428 for ; Wed, 20 Jan 2010 14:08:25 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXROi-00053X-Mf for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:24 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXROX-00008a-Ik for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:13 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 8/8] xfstests: don't redefine _GNU_SOURCE in aio tests Subject: [PATCH 8/8] xfstests: don't redefine _GNU_SOURCE in aio tests Date: Wed, 20 Jan 2010 14:38:08 +1100 Message-Id: <1263958688-435-9-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263958688-435-1-git-send-email-david@fromorbit.com> References: <1263958688-435-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263958710 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0819 1.0000 -1.5022 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.50 X-Barracuda-Spam-Status: No, SCORE=-1.50 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Dave Chinner --- src/aio-dio-regress/aio-dio-subblock-eof-read.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diff --git a/src/aio-dio-regress/aio-dio-subblock-eof-read.c b/src/aio-dio-regress/aio-dio-subblock-eof-read.c index cbcff97..a48841d 100644 --- a/src/aio-dio-regress/aio-dio-subblock-eof-read.c +++ b/src/aio-dio-regress/aio-dio-subblock-eof-read.c @@ -31,8 +31,6 @@ * worth of data, and the user issued a 4k read, we want to ensure that * the return value is 300, not 4k. */ - -#define _GNU_SOURCE #include #include #include -- 1.6.5 From SRS0+T51K+49+fromorbit.com=dave@internode.on.net Tue Jan 19 21:37:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K3bWv3235732 for ; Tue, 19 Jan 2010 21:37:32 -0600 X-ASG-Debug-ID: 1263958711-7c9c02200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 16574177477 for ; Tue, 19 Jan 2010 19:38:31 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id Hf2v6wHxM1uiGJYs for ; Tue, 19 Jan 2010 19:38:31 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11651455-1927428 for ; Wed, 20 Jan 2010 14:08:25 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXROi-00053C-12 for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:24 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXROW-00008G-VN for xfs@oss.sgi.com; Wed, 20 Jan 2010 14:38:12 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/8] xfstests: fix compile warning in doio.c Subject: [PATCH 1/8] xfstests: fix compile warning in doio.c Date: Wed, 20 Jan 2010 14:38:01 +1100 Message-Id: <1263958688-435-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1263958688-435-1-git-send-email-david@fromorbit.com> References: <1263958688-435-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1263958713 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0121 1.0000 -1.9420 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.94 X-Barracuda-Spam-Status: No, SCORE=-1.94 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Use of sigblock is deprecated. Use sigprocmask instead. Signed-off-by: Dave Chinner --- ltp/doio.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ltp/doio.c b/ltp/doio.c index a1c92c9..0fe206d 100644 --- a/ltp/doio.c +++ b/ltp/doio.c @@ -350,7 +350,7 @@ char **argv; { int i, pid, stat, ex_stat; struct sigaction sa; - int omask; + sigset_t block_mask, old_mask; umask(0); /* force new file modes to known values */ #if _CRAYMPP Npes = sysconf(_SC_CRAY_NPES); /* must do this before parse_cmdline */ @@ -434,7 +434,9 @@ char **argv; Children[i] = -1; } - omask = sigblock(sigmask(SIGCLD)); + sigemptyset(&block_mask); + sigaddset(&block_mask, SIGCHLD); + sigprocmask(SIG_BLOCK, &block_mask, &old_mask); /* * Fork Nprocs. This [parent] process is a watchdog, to notify the -- 1.6.5 From nscott@aconex.com Tue Jan 19 21:53:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K3rx0S236209 for ; Tue, 19 Jan 2010 21:53:59 -0600 X-ASG-Debug-ID: 1263959697-24f700eb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postoffice2.aconex.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 455AB1C5CC15 for ; Tue, 19 Jan 2010 19:54:57 -0800 (PST) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id KH7PQCbfc9SpG7eb for ; Tue, 19 Jan 2010 19:54:57 -0800 (PST) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam & Virus Firewall) with ESMTP id 7DD2C1CE84C; Wed, 20 Jan 2010 14:54:56 +1100 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id 99UaAd4bM6u9KG0i; Wed, 20 Jan 2010 14:54:56 +1100 (EST) Received: from gatekeeper.aconex.com (gatekeeper.yarra.acx [192.168.102.10]) by postoffice.aconex.com (Postfix) with ESMTP id C5FD5A50133; Wed, 20 Jan 2010 14:52:40 +1100 (EST) Received: from localhost (localhost.localdomain [127.0.0.1]) by gatekeeper.aconex.com (Postfix) with ESMTP id 640F6488379; Wed, 20 Jan 2010 14:54:56 +1100 (EST) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at aconex.com Received: from gatekeeper.aconex.com ([127.0.0.1]) by localhost (gatekeeper.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Hh2GMiXqvmef; Wed, 20 Jan 2010 14:54:52 +1100 (EST) Received: from mail-au.aconex.com (mail-au.aconex.com [192.168.102.12]) by gatekeeper.aconex.com (Postfix) with ESMTP id 121E448837D; Wed, 20 Jan 2010 14:54:52 +1100 (EST) Date: Wed, 20 Jan 2010 14:54:51 +1100 (EST) From: Nathan Scott To: Jon Cc: xfs@oss.sgi.com Message-ID: <1067945374.1918531263959691412.JavaMail.root@mail-au.aconex.com> In-Reply-To: <4B5578E0.5000201@gmail.com> X-ASG-Orig-Subj: Re: acl build failure on x86_64 Subject: Re: acl build failure on x86_64 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [203.89.192.141] X-Mailer: Zimbra 5.0.18_GA_3011.RHEL5_64 (ZimbraWebClient - [unknown] (Linux)/5.0.18_GA_3011.RHEL5_64) X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1263959699 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1501 1.0000 -1.1009 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.10 X-Barracuda-Spam-Status: No, SCORE=-1.10 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20287 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean ----- "Jon" wrote: > Brandon and anyone else who might be able to shed some light on this > issue... I'm stumped. > > > /usr/bin/make -C chacl > > make[2]: Entering directory `/tmp/acl-2.2.49/chacl' > > gcc -g -O2 -DDEBUG -funsigned-char -fno-strict-aliasing -Wall > > -DVERSION=\"2.2.49\" -DLOCALEDIR=\"/usr/share/locale\" > > -DPACKAGE=\"acl\" -I../include -c -o chacl.o chacl.c > > chacl.c: In function 'walk_dir': > > chacl.c:335: warning: implicit declaration of function 'readdir64' Your compile line is missing "-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" I think - see include/builddefs.in which shows how this is meant to be pulled into your cc line for a Linux build. cheers. -- Nathan From SRS0+ce/S+49+fromorbit.com=dave@internode.on.net Tue Jan 19 23:57:54 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K5vrfv242656 for ; Tue, 19 Jan 2010 23:57:53 -0600 X-ASG-Debug-ID: 1263967130-7bea017d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 97ACA124DFDF for ; Tue, 19 Jan 2010 21:58:51 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id wr9LXwSkfPtleFyR for ; Tue, 19 Jan 2010 21:58:51 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11455416-1927428 for ; Wed, 20 Jan 2010 16:28:49 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXTaa-0005AY-4t for xfs@oss.sgi.com; Wed, 20 Jan 2010 16:58:48 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXTaY-0001z9-VV for xfs@oss.sgi.com; Wed, 20 Jan 2010 16:58:46 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: kill in 131 needs to be quiet Subject: [PATCH] xfstests: kill in 131 needs to be quiet Date: Wed, 20 Jan 2010 16:58:46 +1100 Message-Id: <1263967126-7603-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1263967133 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0364 1.0000 -1.7859 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.79 X-Barracuda-Spam-Status: No, SCORE=-1.79 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20293 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean If the kill fails because the processes have already terminates, the output from kill (no such process) will cause the test to fail. Make sure kill doesn't output anything. Signed-off-by: Dave Chinner --- 131 | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/131 b/131 index 9be0a14..783765e 100755 --- a/131 +++ b/131 @@ -34,8 +34,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15 _cleanup() { - kill $locktest_pid2 - kill $locktest_pid1 + kill $locktest_pid2 2&>1 /dev/null + kill $locktest_pid1 2&>1 /dev/null _cleanup_testdir } -- 1.6.5 From SRS0+fLB3+49+fromorbit.com=dave@internode.on.net Tue Jan 19 23:58:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K5wNNd242681 for ; Tue, 19 Jan 2010 23:58:23 -0600 X-ASG-Debug-ID: 1263967161-7beb017e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8120D124DFE1 for ; Tue, 19 Jan 2010 21:59:22 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id cm2O147xIQTslCEX for ; Tue, 19 Jan 2010 21:59:22 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11533700-1927428 for ; Wed, 20 Jan 2010 16:29:21 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXTb5-0005Ad-IU for xfs@oss.sgi.com; Wed, 20 Jan 2010 16:59:19 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXTb4-00020T-Cx for xfs@oss.sgi.com; Wed, 20 Jan 2010 16:59:18 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] [RFC] xfstests: deprecate busted log printing tests Subject: [PATCH] [RFC] xfstests: deprecate busted log printing tests Date: Wed, 20 Jan 2010 16:59:18 +1100 Message-Id: <1263967158-7685-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1263967163 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0006 1.0000 -2.0169 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20293 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Tests 018, 081 and 082 read the contents of the log and assume that the contents will always be the same. They are trying to ensure that the contents of the log don't change for a given fixed load. This has several problems - high level changes to the filesystem and VFS code can change the order and contents of the log. Changes to the way we sync the filesystem will change the contents of the log. background writeback occurring in the middle of the test will change the contents of the log by allowing the tail to move. Even changes to the default mkfs parameters can break them! The tests also assume that unmount leaves a dirty log behind. We've fixed lots of problems in sync and the unmount paths over recent times, so now a clean unmount leaves a clean log behind. That is, there is nothing left in the log print output for these tests to check. IOWs, major surgery is required for these tests to be returned to their former break-when-something-changes behaviour. However, these tests are a maintenance nightmare. They spend more time broken and failing than they do passing, and then it's not long before they get broken again. They have to cover all sorts of different permutations of log configurations and that will continue to grow and increase the complexity of making these tests continue to work. And to top it all off, I can't remember a bug actually ever being found by these tests. Hence I think we should just stop using them altogether. So this patch deprecates 018, 081 and 082 rather than fixes them. It introduces a "deprecated" test group and puts them in it. That means the tests can still be run on older systems where they may have some use, but will not be run automatically any more, nor will any attempt be made to keep them up to date or working. Signed-off-by: Dave Chinner --- group | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/group b/group index 3de9354..342ac89 100644 --- a/group +++ b/group @@ -104,6 +104,10 @@ atime # Test preallocation calls prealloc +# Old tests that we won't spend any effort trying to run and make work +# on current systems +deprecated + # # test-group association ... one line per test # @@ -124,7 +128,7 @@ prealloc 015 other auto quick 016 rw auto quick 017 mount auto quick -018 log logprint v2log auto quick +018 deprecated # log logprint v2log 019 mkfs auto quick 020 metadata attr udf auto quick 021 db attr auto quick @@ -187,8 +191,8 @@ prealloc 078 growfs auto quick 079 acl attr ioctl metadata auto quick 080 rw ioctl -081 log logprint quota auto quick -082 log logprint v2log auto quick +081 deprecated # log logprint quota +082 deprecated # log logprint v2log 083 rw auto 084 ioctl rw auto 085 log auto quick -- 1.6.5 From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 02:17:12 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K8H9XC253417 for ; Wed, 20 Jan 2010 02:17:12 -0600 X-ASG-Debug-ID: 1263975489-0772002e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2E2691C64CFD for ; Wed, 20 Jan 2010 00:18:09 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id kEj3XPAiDrKUeAJ3 for ; Wed, 20 Jan 2010 00:18:09 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXVlP-0002xv-PW; Wed, 20 Jan 2010 08:18:07 +0000 Date: Wed, 20 Jan 2010 03:18:07 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: kill in 131 needs to be quiet Subject: Re: [PATCH] xfstests: kill in 131 needs to be quiet Message-ID: <20100120081807.GA9968@infradead.org> References: <1263967126-7603-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263967126-7603-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263975490 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 04:58:46PM +1100, Dave Chinner wrote: > If the kill fails because the processes have already terminates, > the output from kill (no such process) will cause the test to > fail. Make sure kill doesn't output anything. > > Signed-off-by: Dave Chinner Yes, I see the same here, Reviewed-by: Christoph Hellwig From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 02:25:12 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K8PBCf253859 for ; Wed, 20 Jan 2010 02:25:12 -0600 X-ASG-Debug-ID: 1263975971-43d502430000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 949DCF1A509 for ; Wed, 20 Jan 2010 00:26:11 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 1ry2tHDX6LeM0dp9 for ; Wed, 20 Jan 2010 00:26:11 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXVtC-0002OK-VO; Wed, 20 Jan 2010 08:26:10 +0000 Date: Wed, 20 Jan 2010 03:26:10 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/8] xfstests: fix compile warning in doio.c Subject: Re: [PATCH 1/8] xfstests: fix compile warning in doio.c Message-ID: <20100120082610.GA6721@infradead.org> References: <1263958688-435-1-git-send-email-david@fromorbit.com> <1263958688-435-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263958688-435-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263975972 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 02:25:37 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K8Pa3Q253890 for ; Wed, 20 Jan 2010 02:25:36 -0600 X-ASG-Debug-ID: 1263975996-43bc02650000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2C5CDF25EB2 for ; Wed, 20 Jan 2010 00:26:36 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id JTA0kcXMSAMI3qgG for ; Wed, 20 Jan 2010 00:26:36 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXVtc-0003BY-Kw; Wed, 20 Jan 2010 08:26:36 +0000 Date: Wed, 20 Jan 2010 03:26:36 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/8] xfstests: fix bulkstat related compile warnings. Subject: Re: [PATCH 2/8] xfstests: fix bulkstat related compile warnings. Message-ID: <20100120082636.GB6721@infradead.org> References: <1263958688-435-1-git-send-email-david@fromorbit.com> <1263958688-435-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263958688-435-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263975997 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 02:27:09 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K8R9Pn253990 for ; Wed, 20 Jan 2010 02:27:09 -0600 X-ASG-Debug-ID: 1263976089-43c902a00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F13C8F2615D for ; Wed, 20 Jan 2010 00:28:09 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id W9ti6LwcqPELKBoQ for ; Wed, 20 Jan 2010 00:28:09 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXVv7-0005lN-ER; Wed, 20 Jan 2010 08:28:09 +0000 Date: Wed, 20 Jan 2010 03:28:09 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/8] xfstests: Don't use tempnam in growfiles.c Subject: Re: [PATCH 3/8] xfstests: Don't use tempnam in growfiles.c Message-ID: <20100120082809.GC6721@infradead.org> References: <1263958688-435-1-git-send-email-david@fromorbit.com> <1263958688-435-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263958688-435-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263976089 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 02:38:03PM +1100, Dave Chinner wrote: > tempnam() generates a compiler warning as a dangerous function. > This code doesn't care about security issues with tempnam, so > remove it and just manually build the filenames without the > randomness of tempnam. Looks good, Reviewed-by: Christoph Hellwig Btw, I wonder if we should sync back changes to the ltp/* files to LTP.. From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 02:29:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K8THGw254123 for ; Wed, 20 Jan 2010 02:29:18 -0600 X-ASG-Debug-ID: 1263976218-7ea101130000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B2C5E1C64CAC for ; Wed, 20 Jan 2010 00:30:18 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id aNjq9CrAfstpAX27 for ; Wed, 20 Jan 2010 00:30:18 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXVxC-0002Ie-Cj; Wed, 20 Jan 2010 08:30:18 +0000 Date: Wed, 20 Jan 2010 03:30:18 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/8] xfstests: fix printf format warnings in aio-stress.c Subject: Re: [PATCH 4/8] xfstests: fix printf format warnings in aio-stress.c Message-ID: <20100120083018.GD6721@infradead.org> References: <1263958688-435-1-git-send-email-david@fromorbit.com> <1263958688-435-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263958688-435-5-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263976218 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > diff --git a/ltp/aio-stress.c b/ltp/aio-stress.c > index ab9e006..57a2158 100644 > --- a/ltp/aio-stress.c > +++ b/ltp/aio-stress.c > @@ -1167,9 +1167,9 @@ restart: > > if (t->stage_mb_trans && t->num_files > 0) { > double seconds = time_since_now(&stage_time); > - fprintf(stderr, "thread %d %s totals (%.2f MB/s) %.2f MB in %.2fs\n", > - t - global_thread_info, this_stage, t->stage_mb_trans/seconds, > - t->stage_mb_trans, seconds); > + fprintf(stderr, "thread %llu %s totals (%.2f MB/s) %.2f MB in %.2fs\n", > + (unsigned long long)(t - global_thread_info), this_stage, > + t->stage_mb_trans/seconds, t->stage_mb_trans, seconds); Differences between two pointers in C99 is a ptrdiff_t. Probably not worth searching the printf sepcifier for it and just casting it up, so ok. Reviewed-by: Christoph Hellwig From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 02:30:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_42,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K8Ud5e254220 for ; Wed, 20 Jan 2010 02:30:40 -0600 X-ASG-Debug-ID: 1263976300-718b03c80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BA8CA177C86 for ; Wed, 20 Jan 2010 00:31:40 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FgzjMqq7gPGg63OC for ; Wed, 20 Jan 2010 00:31:40 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXVyW-0004B9-Cs; Wed, 20 Jan 2010 08:31:40 +0000 Date: Wed, 20 Jan 2010 03:31:40 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/8] xfstests: fix compile warnings in iopat.c Subject: Re: [PATCH 5/8] xfstests: fix compile warnings in iopat.c Message-ID: <20100120083140.GE6721@infradead.org> References: <1263958688-435-1-git-send-email-david@fromorbit.com> <1263958688-435-6-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263958688-435-6-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263976300 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 02:38:05PM +1100, Dave Chinner wrote: > Printf format warnings and return value warnings need fixing. > > Signed-off-by: Dave Chinner > --- > src/iopat.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/src/iopat.c b/src/iopat.c > index c06071f..f34de19 100644 > --- a/src/iopat.c > +++ b/src/iopat.c > @@ -47,12 +47,13 @@ int main(int argc, char **argv) > read(fd, &x, 1048576); > for (i = 0; i < 131072; i++) { > if (x[i] != i) { > - printf("error: %d %d %d\n",i,8*i,x[i]); > + printf("error: %d %d %lld\n", i ,8 * i, (long long)x[i]); > exit(1); Instead of the casting we could also use the C99 macro for the uin64_t format. But either way good enough for the tests, Reviewed-by: Christoph Hellwig From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 02:31:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K8VHrW254270 for ; Wed, 20 Jan 2010 02:31:17 -0600 X-ASG-Debug-ID: 1263976337-195a01490000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C6F96177C8A for ; Wed, 20 Jan 2010 00:32:17 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 8PvraYaG0hJMIVpT for ; Wed, 20 Jan 2010 00:32:17 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXVz7-00054g-GU; Wed, 20 Jan 2010 08:32:17 +0000 Date: Wed, 20 Jan 2010 03:32:17 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/8] xfstests: fix printf format warnings in looptest.c Subject: Re: [PATCH 6/8] xfstests: fix printf format warnings in looptest.c Message-ID: <20100120083217.GF6721@infradead.org> References: <1263958688-435-1-git-send-email-david@fromorbit.com> <1263958688-435-7-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263958688-435-7-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263976337 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 02:38:06PM +1100, Dave Chinner wrote: > Signed-off-by: Dave Chinner > --- > src/looptest.c | 8 ++++---- > 1 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/src/looptest.c b/src/looptest.c > index d951f2b..3d99f38 100755 > --- a/src/looptest.c > +++ b/src/looptest.c > @@ -202,7 +202,7 @@ main(int argc, char *argv[]) > > if ((flags & FLAG_OPENCLOSE) && (flags & FLAG_SEQUENTIAL)) { > if (flags & FLAG_VERBOSE) > - printf("seek %" LL "d\n", seek_to); > + printf("seek %" LL "d\n", (long long)seek_to); > if (SEEK(f, seek_to, FILE_BEGIN) < 0) > PERROR("SEEK", GET_LAST_ERROR); > seek_to += bufsize; Ok. Reviewed-by: Christoph Hellwig What an ugly code in this file, urggg. From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 02:31:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K8Vald254297 for ; Wed, 20 Jan 2010 02:31:37 -0600 X-ASG-Debug-ID: 1263976357-43cd02d90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F177F26185 for ; Wed, 20 Jan 2010 00:32:37 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id zPI4xLaU4aEtmKMu for ; Wed, 20 Jan 2010 00:32:37 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXVzR-0005np-3x; Wed, 20 Jan 2010 08:32:37 +0000 Date: Wed, 20 Jan 2010 03:32:37 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/8] xfstests: fix printf warnings in locktest.c Subject: Re: [PATCH 7/8] xfstests: fix printf warnings in locktest.c Message-ID: <20100120083237.GG6721@infradead.org> References: <1263958688-435-1-git-send-email-david@fromorbit.com> <1263958688-435-8-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263958688-435-8-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263976357 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 02:38:07PM +1100, Dave Chinner wrote: > Signed-off-by: Dave Chinner > --- > src/locktest.c | 35 ++++++++++++++++++++--------------- > 1 files changed, 20 insertions(+), 15 deletions(-) Looks good, Reviewed-by: Christoph Hellwig From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 02:32:09 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K8W9mp254335 for ; Wed, 20 Jan 2010 02:32:09 -0600 X-ASG-Debug-ID: 1263976389-43c702a80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A2BC4F26188 for ; Wed, 20 Jan 2010 00:33:09 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id vhnIOaQFn3mt7Hjs for ; Wed, 20 Jan 2010 00:33:09 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXVzx-0006VL-2d; Wed, 20 Jan 2010 08:33:09 +0000 Date: Wed, 20 Jan 2010 03:33:09 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 8/8] xfstests: don't redefine _GNU_SOURCE in aio tests Subject: Re: [PATCH 8/8] xfstests: don't redefine _GNU_SOURCE in aio tests Message-ID: <20100120083308.GH6721@infradead.org> References: <1263958688-435-1-git-send-email-david@fromorbit.com> <1263958688-435-9-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263958688-435-9-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263976389 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 02:38:08PM +1100, Dave Chinner wrote: > Signed-off-by: Dave Chinner Yes, I think Eric fixed this in most others earlier already. Reviewed-by: Christoph Hellwig From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 02:32:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0K8Wf9i254378 for ; Wed, 20 Jan 2010 02:32:41 -0600 X-ASG-Debug-ID: 1263976422-718b03da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7D666177CB1 for ; Wed, 20 Jan 2010 00:33:42 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 5Mdqf06ARuIoaas9 for ; Wed, 20 Jan 2010 00:33:42 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXW0U-0007N2-47; Wed, 20 Jan 2010 08:33:42 +0000 Date: Wed, 20 Jan 2010 03:33:42 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] [RFC] xfstests: deprecate busted log printing tests Subject: Re: [PATCH] [RFC] xfstests: deprecate busted log printing tests Message-ID: <20100120083341.GI6721@infradead.org> References: <1263967158-7685-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263967158-7685-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1263976422 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 04:59:18PM +1100, Dave Chinner wrote: > Tests 018, 081 and 082 read the contents of the log and assume that the > contents will always be the same. They are trying to ensure that the > contents of the log don't change for a given fixed load. > > This has several problems - high level changes to the filesystem and > VFS code can change the order and contents of the log. Changes to > the way we sync the filesystem will change the contents of the log. > background writeback occurring in the middle of the test will change > the contents of the log by allowing the tail to move. Even changes > to the default mkfs parameters can break them! > > The tests also assume that unmount leaves a dirty log behind. We've > fixed lots of problems in sync and the unmount paths over recent > times, so now a clean unmount leaves a clean log behind. That is, > there is nothing left in the log print output for these tests to > check. IOWs, major surgery is required for these tests to be > returned to their former break-when-something-changes behaviour. > > However, these tests are a maintenance nightmare. They spend more > time broken and failing than they do passing, and then it's not long > before they get broken again. They have to cover all sorts of > different permutations of log configurations and that will continue > to grow and increase the complexity of making these tests continue > to work. And to top it all off, I can't remember a bug actually ever > being found by these tests. Hence I think we should just stop using > them altogether. > > So this patch deprecates 018, 081 and 082 rather than fixes them. > It introduces a "deprecated" test group and puts them in it. That > means the tests can still be run on older systems where they may > have some use, but will not be run automatically any more, nor > will any attempt be made to keep them up to date or working. Sounds fine to me. Btw, at some point we should switch check to only run the auto group by default. From salviati@freeconsole.org Wed Jan 20 04:28:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, MIME_8BIT_HEADER autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KASKVZ000458 for ; Wed, 20 Jan 2010 04:28:20 -0600 X-ASG-Debug-ID: 1263983358-4a4b02de0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f227.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 111651781F5 for ; Wed, 20 Jan 2010 02:29:18 -0800 (PST) Received: from mail-ew0-f227.google.com (mail-ew0-f227.google.com [209.85.219.227]) by cuda.sgi.com with ESMTP id li32kq59nGQEWete for ; Wed, 20 Jan 2010 02:29:18 -0800 (PST) Received: by ewy27 with SMTP id 27so6103879ewy.36 for ; Wed, 20 Jan 2010 02:29:17 -0800 (PST) MIME-Version: 1.0 Received: by 10.216.87.134 with SMTP id y6mr3313387wee.20.1263983357223; Wed, 20 Jan 2010 02:29:17 -0800 (PST) From: =?UTF-8?B?VXRrYW4gR8O8bmfDtnJkw7w=?= Date: Wed, 20 Jan 2010 12:28:57 +0200 Message-ID: <6e2cff861001200228y6ba1186dmb105f046c5eac328@mail.gmail.com> X-ASG-Orig-Subj: xfsr: a tool to save stuff from crippled XFS partition Subject: xfsr: a tool to save stuff from crippled XFS partition To: xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-ew0-f227.google.com[209.85.219.227] X-Barracuda-Start-Time: 1263983360 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3328 1.0000 -0.2158 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.19 X-Barracuda-Spam-Status: No, SCORE=0.19 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20310 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Here's a dirty, incomplete tool I wrote awhile ago for those who crippled their XFS partition, either by running mkfs or writing random stuff on the device file: http://freeconsole.org/crew/salviati/#sec-stuff-comp-xfsr The source uses only some headers from xfsprogs, considering the FS could fail the sanity of the official tools. The whole thing is ugly, but it's better than saying goodbye to whole data, I guess :) From siccegge@stud.informatik.uni-erlangen.de Wed Jan 20 06:51:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KCpVEX008515 for ; Wed, 20 Jan 2010 06:51:33 -0600 X-ASG-Debug-ID: 1263991949-352b00d80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from faui40.informatik.uni-erlangen.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 658831DB2D7F; Wed, 20 Jan 2010 04:52:29 -0800 (PST) Received: from faui40.informatik.uni-erlangen.de (faui40.informatik.uni-erlangen.de [131.188.34.40]) by cuda.sgi.com with ESMTP id Chk787NLpa4Mj5ef; Wed, 20 Jan 2010 04:52:29 -0800 (PST) Received: from faui49h (faui49h.informatik.uni-erlangen.de [131.188.42.58]) by faui40.informatik.uni-erlangen.de (Postfix) with SMTP id B3F325F0CA; Wed, 20 Jan 2010 13:52:26 +0100 (MET) Received: by faui49h (sSMTP sendmail emulation); Wed, 20 Jan 2010 13:52:50 +0100 Date: Wed, 20 Jan 2010 13:52:49 +0100 From: Christoph Egger To: linux-kernel@vger.kernel.org, hch@infradead.org, xfs@oss.sgi.com, xfs-masters@oss.sgi.com Cc: siccegge@stud.informatik.uni-erlangen.de, Reinhard.Tartler@informatik.uni-erlangen.de X-ASG-Orig-Subj: Obsolete config in kernel build system (XFS_TRACE) Subject: Obsolete config in kernel build system (XFS_TRACE) Message-ID: <20100120125249.GC3580@faui49.informatik.uni-erlangen.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: faui40.informatik.uni-erlangen.de[131.188.34.40] X-Barracuda-Start-Time: 1263991950 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0012 1.0000 -2.0129 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20319 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi all! As part of the VAMOS[0] research project at the University of Erlangen we're checking referential integrity between kernel KConfig options and in-code Conditional blocks. Git commit 0b1b213fcf3a8486ada99a2bab84ab8c6f51b264 by Christoph Hellwig removed all References to CONFIG_XFS_TRACE, which is unreferenced from KConfig side from the linux source code so there's only a small bit of it left in KBuild. Mayee remove it as well? ./fs/xfs/Makefile:95 +++> xfs-$(CONFIG_XFS_TRACE) += xfs_btree_trace.o <+++ Please keep me informed of this patch getting confirmed / merged so we can keep track of it. Regards Christoph Egger From rpjday@crashcourse.ca Wed Jan 20 06:57:36 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KCvZ7J008800 for ; Wed, 20 Jan 2010 06:57:36 -0600 X-ASG-Debug-ID: 1263992313-374b011c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from astoria.ccjclearline.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6456917A1AA; Wed, 20 Jan 2010 04:58:34 -0800 (PST) Received: from astoria.ccjclearline.com (astoria.ccjclearline.com [64.235.106.9]) by cuda.sgi.com with ESMTP id Up5ySq4wUIEFf9n4; Wed, 20 Jan 2010 04:58:34 -0800 (PST) Received: from cpe002129687b04-cm001225dbafb6.cpe.net.cable.rogers.com ([99.235.241.187] helo=crashcourse.ca) by astoria.ccjclearline.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1NXa8a-0006mf-TY; Wed, 20 Jan 2010 07:58:21 -0500 Date: Wed, 20 Jan 2010 07:57:23 -0500 (EST) From: "Robert P. J. Day" X-X-Sender: rpjday@localhost To: Christoph Egger cc: linux-kernel@vger.kernel.org, hch@infradead.org, xfs@oss.sgi.com, xfs-masters@oss.sgi.com, Reinhard.Tartler@informatik.uni-erlangen.de X-ASG-Orig-Subj: Re: Obsolete config in kernel build system (XFS_TRACE) Subject: Re: Obsolete config in kernel build system (XFS_TRACE) In-Reply-To: <20100120125249.GC3580@faui49.informatik.uni-erlangen.de> Message-ID: References: <20100120125249.GC3580@faui49.informatik.uni-erlangen.de> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - astoria.ccjclearline.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - crashcourse.ca X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: astoria.ccjclearline.com[64.235.106.9] X-Barracuda-Start-Time: 1263992315 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20319 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, 20 Jan 2010, Christoph Egger wrote: > Hi all! > > As part of the VAMOS[0] research project at the University of > Erlangen we're checking referential integrity between kernel KConfig > options and in-code Conditional blocks. > > Git commit 0b1b213fcf3a8486ada99a2bab84ab8c6f51b264 by > Christoph Hellwig removed all References to CONFIG_XFS_TRACE, which is > unreferenced from KConfig side from the linux source code so there's > only a small bit of it left in KBuild. Mayee remove it as well? > > ./fs/xfs/Makefile:95 > +++> > > xfs-$(CONFIG_XFS_TRACE) += xfs_btree_trace.o > > <+++ if the reference is being removed from the Makefile, wouldn't it also make sense to delete the corresponding source file as well? rday -- ======================================================================== Robert P. J. Day Waterloo, Ontario, CANADA Linux Consulting, Training and Kernel Pedantry. Web page: http://crashcourse.ca Twitter: http://twitter.com/rpjday ======================================================================== From jgrosshart@gmail.com Wed Jan 20 08:28:45 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KESj5t013387 for ; Wed, 20 Jan 2010 08:28:45 -0600 X-ASG-Debug-ID: 1263997784-364b00310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f222.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BBB3617B237 for ; Wed, 20 Jan 2010 06:29:44 -0800 (PST) Received: from mail-ew0-f222.google.com (mail-ew0-f222.google.com [209.85.219.222]) by cuda.sgi.com with ESMTP id QXATW6OaMva0YY8p for ; Wed, 20 Jan 2010 06:29:44 -0800 (PST) Received: by ewy22 with SMTP id 22so6128786ewy.19 for ; Wed, 20 Jan 2010 06:29:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=PzOABnX4hy7Ds/35vQYElTV/+vZA2H6WalUBcAnsgCw=; b=j05teacTxKka2sxGazzAbFaXWqQqVqz0fjzBxgVNWfkvLy+whwJtudvFyDq+tAs8IY eipx3J/ptkOHs54k3YX1fA2KEJFblPdRHh43DbGihY/fWwJhvuZuPHLuu6iWkKCaOWTH owWhvRdAo9PAuTMwvXv4wmaEy0Jroj+PlmMQ8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=QzVlqYsIF9bAiNA0eDTMMFPcY/+wxpAgC/FwjNJopjBFYddOAZD7r+Z6gShexxwbYh NTjSXUINmrcPwhcXGEtajz974fW8Qbr46xo7n+5y7lKaI7LJpPKOoH189Z+NxWw/hYFl 96KTukMuyPOVPKP1AvrBSPcNS0VOwYiTA3r0M= MIME-Version: 1.0 Received: by 10.216.90.67 with SMTP id d45mr24706wef.42.1263997783724; Wed, 20 Jan 2010 06:29:43 -0800 (PST) In-Reply-To: <1067945374.1918531263959691412.JavaMail.root@mail-au.aconex.com> References: <4B5578E0.5000201@gmail.com> <1067945374.1918531263959691412.JavaMail.root@mail-au.aconex.com> Date: Wed, 20 Jan 2010 09:29:43 -0500 Message-ID: <9cf823c61001200629x5be69ea3t6fca943a9b0844f3@mail.gmail.com> X-ASG-Orig-Subj: Re: acl build failure on x86_64 Subject: Re: acl build failure on x86_64 From: Jon Grosshart To: Nathan Scott Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ew0-f222.google.com[209.85.219.222] X-Barracuda-Start-Time: 1263997785 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20324 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 10:54 PM, Nathan Scott wrote: > > ----- "Jon" wrote: > >> Brandon and anyone else who might be able to shed some light on this >> issue... I'm stumped. >> >> > /usr/bin/make -C chacl >> > make[2]: Entering directory `/tmp/acl-2.2.49/chacl' >> > gcc -g -O2 -DDEBUG -funsigned-char -fno-strict-aliasing -Wall >> > -DVERSION=3D\"2.2.49\" -DLOCALEDIR=3D\"/usr/share/locale\" >> > -DPACKAGE=3D\"acl\" -I../include =A0 =A0 -c -o chacl.o chacl.c >> > chacl.c: In function 'walk_dir': >> > chacl.c:335: warning: implicit declaration of function 'readdir64' > > Your compile line is missing "-D_GNU_SOURCE -D_FILE_OFFSET_BITS=3D64" > I think - see include/builddefs.in which shows how this is meant to > be pulled into your cc line for a Linux build. > > cheers. > > -- > Nathan > Right you are. This line in configure was the culprit: test -z "$PLATFORM" || pkg_platform=3D"$PLATFORM" In my /etc/bashrc I set this variable for all my build script to use: export PLATFORM=3D$(arch) Apparently, $pkg_platform shouldn't be "x86_64" as far as acl is concerned.= ... Thanks Nathan. Jon From jgrosshart@gmail.com Wed Jan 20 08:49:05 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KEn5Tu014426 for ; Wed, 20 Jan 2010 08:49:05 -0600 X-ASG-Debug-ID: 1263999004-3394013d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f222.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0939C17AAE6 for ; Wed, 20 Jan 2010 06:50:05 -0800 (PST) Received: from mail-ew0-f222.google.com (mail-ew0-f222.google.com [209.85.219.222]) by cuda.sgi.com with ESMTP id TEySxDdAUwuyENv8 for ; Wed, 20 Jan 2010 06:50:05 -0800 (PST) Received: by ewy22 with SMTP id 22so6151889ewy.19 for ; Wed, 20 Jan 2010 06:50:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=W4PSy1cfsqWYw2i0gI2e5GrrfS8vunUElvgVklnF7+Q=; b=uVEmjAkD5noglrD6IGiGbt9UkhRZNImOtbyYVAQYhBP9fnQBa3VTY96M47Ltfp8zgf FqpKA5WNKe48JErkOAq56qKN+Sel5gsw5L7POmb1qRnr1pffFLIhwyijl6dblK99oxM4 ZNHNUlDnCGphCMGo3vlDXOZkkJoxpC6pb/LcU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=wjkbXsu+ih9JO/801OvIfW0tAQJWJCgqS5PoWYIwmYqyQBpXVlz8CCXyBYB/cTjVMW m7smBnXVZzBG3AvA2+z6BUdBBiKwXe1KfrgfDxGKzqMwdQP4L7RFLz15NmzoLvmccfNW YJoyDsVsZph7wVEymTgQ94724mkwrDeBK0hA0= MIME-Version: 1.0 Received: by 10.216.87.143 with SMTP id y15mr28846wee.39.1263999004222; Wed, 20 Jan 2010 06:50:04 -0800 (PST) In-Reply-To: <9cf823c61001200629x5be69ea3t6fca943a9b0844f3@mail.gmail.com> References: <4B5578E0.5000201@gmail.com> <1067945374.1918531263959691412.JavaMail.root@mail-au.aconex.com> <9cf823c61001200629x5be69ea3t6fca943a9b0844f3@mail.gmail.com> Date: Wed, 20 Jan 2010 09:50:04 -0500 Message-ID: <9cf823c61001200650w3fc7502fi13cd828bb2d8d3d5@mail.gmail.com> X-ASG-Orig-Subj: Re: acl build failure on x86_64 Subject: Re: acl build failure on x86_64 From: Jon Grosshart To: xfs@oss.sgi.com Content-Type: multipart/mixed; boundary=0016e6d77e32a4a64a047d99b3b3 X-Barracuda-Connect: mail-ew0-f222.google.com[209.85.219.222] X-Barracuda-Start-Time: 1263999006 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0005 1.0000 -2.0178 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20326 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean --0016e6d77e32a4a64a047d99b3b3 Content-Type: text/plain; charset=ISO-8859-1 Also, on a side note, would be nice from a packagers stand point to have the attached DESTDIR patch applied to both acl and attr...... Thanks again Nathan. --0016e6d77e32a4a64a047d99b3b3 Content-Type: application/octet-stream; name="acl-destdir.patch" Content-Disposition: attachment; filename="acl-destdir.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g4oiztkl0 ZGlmZiAtdXJOIGFjbC0yLjIuNDktb3JpZy9pbmNsdWRlL2J1aWxkZGVmcy5pbiBhY2wtMi4yLjQ5 L2luY2x1ZGUvYnVpbGRkZWZzLmluCi0tLSBhY2wtMi4yLjQ5LW9yaWcvaW5jbHVkZS9idWlsZGRl ZnMuaW4JMjAwOS0wNi0yMiAxNDozNzozMS4wMDAwMDAwMDAgLTA0MDAKKysrIGFjbC0yLjIuNDkv aW5jbHVkZS9idWlsZGRlZnMuaW4JMjAxMC0wMS0yMCAwOTo0NDoxMy4wMDAwMDAwMDAgLTA1MDAK QEAgLTI4LDE0ICsyOCwxNCBAQAogUEtHX1ZFUlNJT04JPSBAcGtnX3ZlcnNpb25ACiBQS0dfUExB VEZPUk0JPSBAcGtnX3BsYXRmb3JtQAogUEtHX0RJU1RSSUJVVElPTj0gQHBrZ19kaXN0cmlidXRp b25ACi1QS0dfQklOX0RJUgk9IEBiaW5kaXJACi1QS0dfU0JJTl9ESVIJPSBAc2JpbmRpckAKLVBL R19MSUJfRElSCT0gQGxpYmRpckBAbGliZGlyc3VmZml4QAotUEtHX0RFVkxJQl9ESVIJPSBAbGli ZXhlY2RpckBAbGliZGlyc3VmZml4QAotUEtHX0lOQ19ESVIJPSBAaW5jbHVkZWRpckAKLVBLR19N QU5fRElSCT0gQG1hbmRpckAKLVBLR19ET0NfRElSCT0gQGRhdGFkaXJAL2RvYy9AcGtnX25hbWVA Ci1QS0dfTE9DQUxFX0RJUgk9IEBkYXRhZGlyQC9sb2NhbGUKK1BLR19CSU5fRElSCT0gJChERVNU RElSKUBiaW5kaXJACitQS0dfU0JJTl9ESVIJPSAkKERFU1RESVIpQHNiaW5kaXJACitQS0dfTElC X0RJUgk9ICQoREVTVERJUilAbGliZGlyQEBsaWJkaXJzdWZmaXhACitQS0dfREVWTElCX0RJUgk9 ICQoREVTVERJUilAbGliZXhlY2RpckBAbGliZGlyc3VmZml4QAorUEtHX0lOQ19ESVIJPSAkKERF U1RESVIpQGluY2x1ZGVkaXJACitQS0dfTUFOX0RJUgk9ICQoREVTVERJUilAbWFuZGlyQAorUEtH X0RPQ19ESVIJPSAkKERFU1RESVIpQGRhdGFkaXJAL2RvYy9AcGtnX25hbWVACitQS0dfTE9DQUxF X0RJUgk9ICQoREVTVERJUilAZGF0YWRpckAvbG9jYWxlCiAKIENDCQk9IEBjY0AKIEFXSwkJPSBA YXdrQApkaWZmIC11ck4gYWNsLTIuMi40OS1vcmlnL2luY2x1ZGUvYnVpbGRtYWNyb3MgYWNsLTIu Mi40OS9pbmNsdWRlL2J1aWxkbWFjcm9zCi0tLSBhY2wtMi4yLjQ5LW9yaWcvaW5jbHVkZS9idWls ZG1hY3JvcwkyMDA5LTA2LTIyIDE0OjM3OjMxLjAwMDAwMDAwMCAtMDQwMAorKysgYWNsLTIuMi40 OS9pbmNsdWRlL2J1aWxkbWFjcm9zCTIwMTAtMDEtMjAgMDk6NDI6MjEuMDAwMDAwMDAwIC0wNTAw CkBAIC00MCw3ICs0MCw3IEBACiAJICAkKExGSUxFUzoubD0ubykgXAogCSAgJChZRklMRVM6JS55 PSUudGFiLm8pCiAKLUlOU1RBTEwJPSAkKFRPUERJUikvaW5jbHVkZS9pbnN0YWxsLXNoIC1vICQo UEtHX1VTRVIpIC1nICQoUEtHX0dST1VQKQorSU5TVEFMTAk9ICQoVE9QRElSKS9pbmNsdWRlL2lu c3RhbGwtc2ggCiAKIFNIRUxMID0gL2Jpbi9zaAogSU1BR0VTX0RJUiA9ICQoVE9QRElSKS9hbGwt aW1hZ2VzCg== --0016e6d77e32a4a64a047d99b3b3-- From aelder@sgi.com Wed Jan 20 09:52:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KFqbEZ017396 for ; Wed, 20 Jan 2010 09:52:37 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 28083AC00E; Wed, 20 Jan 2010 07:53:34 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] [RFC] xfstests: deprecate busted log printing tests Date: Wed, 20 Jan 2010 09:53:27 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69A1@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1263967158-7685-1-git-send-email-david@fromorbit.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] [RFC] xfstests: deprecate busted log printing tests Thread-Index: AcqZloFeluh4QV1lQGW1sc2bpXWC/gAUTimA From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > Tests 018, 081 and 082 read the contents of the log and assume that = the > contents will always be the same. They are trying to ensure that the > contents of the log don't change for a given fixed load. >=20 > This has several problems - high level changes to the filesystem and > VFS code can change the order and contents of the log. Changes to > the way we sync the filesystem will change the contents of the log. > background writeback occurring in the middle of the test will change > the contents of the log by allowing the tail to move. Even changes > to the default mkfs parameters can break them! >=20 > The tests also assume that unmount leaves a dirty log behind. We've > fixed lots of problems in sync and the unmount paths over recent > times, so now a clean unmount leaves a clean log behind. That is, > there is nothing left in the log print output for these tests to > check. IOWs, major surgery is required for these tests to be > returned to their former break-when-something-changes behaviour. >=20 > However, these tests are a maintenance nightmare. They spend more > time broken and failing than they do passing, and then it's not long > before they get broken again. They have to cover all sorts of > different permutations of log configurations and that will continue > to grow and increase the complexity of making these tests continue > to work. And to top it all off, I can't remember a bug actually ever > being found by these tests. Hence I think we should just stop using > them altogether. >=20 > So this patch deprecates 018, 081 and 082 rather than fixes them. > It introduces a "deprecated" test group and puts them in it. That > means the tests can still be run on older systems where they may > have some use, but will not be run automatically any more, nor > will any attempt be made to keep them up to date or working. I think this is a reasonable thing to do. My only thought is that it might be good to somehow indicate *when* or *why* something got deprecated. I.e., suppose a new feature BLAH_ASYNC makes a test no longer produce output in a well-defined order. It might be nice if, along with "deprecated" it was somehow indicated that the absense of BLAH_ASYNC allows the test to still function. Having said that, it sounds too complicated to me. If it becomes a real issue we can address it, for starters by just documenting it in the comments or something. -Alex > Signed-off-by: Dave Chinner > --- > group | 10 +++++++--- > 1 files changed, 7 insertions(+), 3 deletions(-) >=20 > diff --git a/group b/group > index 3de9354..342ac89 100644 > --- a/group > +++ b/group > @@ -104,6 +104,10 @@ atime > # Test preallocation calls > prealloc >=20 > +# Old tests that we won't spend any effort trying to run and make = work > +# on current systems > +deprecated > + > # > # test-group association ... one line per test > # > @@ -124,7 +128,7 @@ prealloc > 015 other auto quick > 016 rw auto quick > 017 mount auto quick > -018 log logprint v2log auto quick > +018 deprecated # log logprint v2log > 019 mkfs auto quick > 020 metadata attr udf auto quick > 021 db attr auto quick > @@ -187,8 +191,8 @@ prealloc > 078 growfs auto quick > 079 acl attr ioctl metadata auto quick > 080 rw ioctl > -081 log logprint quota auto quick > -082 log logprint v2log auto quick > +081 deprecated # log logprint quota > +082 deprecated # log logprint v2log > 083 rw auto > 084 ioctl rw auto > 085 log auto quick From SRS0+K6gO+49+fromorbit.com=david@internode.on.net Wed Jan 20 15:26:14 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KLQEqr033285 for ; Wed, 20 Jan 2010 15:26:14 -0600 X-ASG-Debug-ID: 1264022832-3d5d01b20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 81F971C67DDF for ; Wed, 20 Jan 2010 13:27:13 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id 9OY4iRqGG3scwFD0 for ; Wed, 20 Jan 2010 13:27:13 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11715579-1927428 for multiple; Thu, 21 Jan 2010 07:57:12 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXi50-00065r-Tp; Thu, 21 Jan 2010 08:27:10 +1100 Date: Thu, 21 Jan 2010 08:27:10 +1100 From: Dave Chinner To: Alex Elder Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] [RFC] xfstests: deprecate busted log printing tests Subject: Re: [PATCH] [RFC] xfstests: deprecate busted log printing tests Message-ID: <20100120212710.GK14035@discord.disaster> References: <1263967158-7685-1-git-send-email-david@fromorbit.com> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69A1@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69A1@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1264022834 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0008 1.0000 -2.0155 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20351 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 09:53:27AM -0600, Alex Elder wrote: > Dave Chinner wrote: > > Tests 018, 081 and 082 read the contents of the log and assume that the > > contents will always be the same. They are trying to ensure that the > > contents of the log don't change for a given fixed load. > > > > This has several problems - high level changes to the filesystem and > > VFS code can change the order and contents of the log. Changes to > > the way we sync the filesystem will change the contents of the log. > > background writeback occurring in the middle of the test will change > > the contents of the log by allowing the tail to move. Even changes > > to the default mkfs parameters can break them! > > > > The tests also assume that unmount leaves a dirty log behind. We've > > fixed lots of problems in sync and the unmount paths over recent > > times, so now a clean unmount leaves a clean log behind. That is, > > there is nothing left in the log print output for these tests to > > check. IOWs, major surgery is required for these tests to be > > returned to their former break-when-something-changes behaviour. > > > > However, these tests are a maintenance nightmare. They spend more > > time broken and failing than they do passing, and then it's not long > > before they get broken again. They have to cover all sorts of > > different permutations of log configurations and that will continue > > to grow and increase the complexity of making these tests continue > > to work. And to top it all off, I can't remember a bug actually ever > > being found by these tests. Hence I think we should just stop using > > them altogether. > > > > So this patch deprecates 018, 081 and 082 rather than fixes them. > > It introduces a "deprecated" test group and puts them in it. That > > means the tests can still be run on older systems where they may > > have some use, but will not be run automatically any more, nor > > will any attempt be made to keep them up to date or working. > > I think this is a reasonable thing to do. My only thought > is that it might be good to somehow indicate *when* or *why* > something got deprecated. That is what the commit message is for ;) i.e. use git blame to find the commit that marked a test deprecated and then go read the commit message, which in this case would be all of the above... Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+f18e2ea1b5a65c96855d+2341+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 20 15:54:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_63,J_CHICKENPOX_74,LOCALPART_IN_SUBJECT autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KLsVBi034871 for ; Wed, 20 Jan 2010 15:54:32 -0600 X-ASG-Debug-ID: 1264024531-4c3d005b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4926817DE58 for ; Wed, 20 Jan 2010 13:55:31 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id k6GWaQtWbqvteMvw for ; Wed, 20 Jan 2010 13:55:31 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXiWQ-0007FD-LU for xfs@oss.sgi.com; Wed, 20 Jan 2010 21:55:30 +0000 Date: Wed, 20 Jan 2010 16:55:30 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfs: replace KM_LARGE with explicit vmalloc use Subject: xfs: replace KM_LARGE with explicit vmalloc use Message-ID: <20100120215530.GA27535@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264024532 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We use the KM_LARGE flag to make kmem_alloc and friends use vmalloc if nessecary. As we only need this for a few boot/mount time allocations just switch to explicit vmalloc calls there. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/kmem.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/kmem.c 2010-01-17 13:33:52.749254562 +0100 +++ xfs/fs/xfs/linux-2.6/kmem.c 2010-01-17 21:07:10.919003863 +0100 @@ -16,7 +16,6 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include -#include #include #include #include @@ -24,8 +23,25 @@ #include "time.h" #include "kmem.h" -#define MAX_VMALLOCS 6 -#define MAX_SLAB_SIZE 0x20000 +/* + * Greedy allocation. May fail and may return vmalloced memory. + * + * Must be freed using kmem_free_large. + */ +void * +kmem_zalloc_greedy(size_t *size, size_t minsize, size_t maxsize) +{ + void *ptr; + size_t kmsize = maxsize; + + while (!(ptr = kmem_zalloc_large(kmsize))) { + if ((kmsize >>= 1) <= minsize) + kmsize = minsize; + } + if (ptr) + *size = kmsize; + return ptr; +} void * kmem_alloc(size_t size, unsigned int __nocast flags) @@ -34,19 +50,8 @@ kmem_alloc(size_t size, unsigned int __n gfp_t lflags = kmem_flags_convert(flags); void *ptr; -#ifdef DEBUG - if (unlikely(!(flags & KM_LARGE) && (size > PAGE_SIZE))) { - printk(KERN_WARNING "Large %s attempt, size=%ld\n", - __func__, (long)size); - dump_stack(); - } -#endif - do { - if (size < MAX_SLAB_SIZE || retries > MAX_VMALLOCS) - ptr = kmalloc(size, lflags); - else - ptr = __vmalloc(size, lflags, PAGE_KERNEL); + ptr = kmalloc(size, lflags); if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP))) return ptr; if (!(++retries % 100)) @@ -68,27 +73,6 @@ kmem_zalloc(size_t size, unsigned int __ return ptr; } -void * -kmem_zalloc_greedy(size_t *size, size_t minsize, size_t maxsize, - unsigned int __nocast flags) -{ - void *ptr; - size_t kmsize = maxsize; - unsigned int kmflags = (flags & ~KM_SLEEP) | KM_NOSLEEP; - - while (!(ptr = kmem_zalloc(kmsize, kmflags))) { - if ((kmsize <= minsize) && (flags & KM_NOSLEEP)) - break; - if ((kmsize >>= 1) <= minsize) { - kmsize = minsize; - kmflags = flags; - } - } - if (ptr) - *size = kmsize; - return ptr; -} - void kmem_free(const void *ptr) { Index: xfs/fs/xfs/linux-2.6/kmem.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/kmem.h 2010-01-17 13:33:52.755254557 +0100 +++ xfs/fs/xfs/linux-2.6/kmem.h 2010-01-17 21:07:10.919003863 +0100 @@ -21,6 +21,7 @@ #include #include #include +#include /* * General memory allocation interfaces @@ -30,7 +31,6 @@ #define KM_NOSLEEP 0x0002u #define KM_NOFS 0x0004u #define KM_MAYFAIL 0x0008u -#define KM_LARGE 0x0010u /* * We use a special process flag to avoid recursive callbacks into @@ -42,7 +42,7 @@ kmem_flags_convert(unsigned int __nocast { gfp_t lflags; - BUG_ON(flags & ~(KM_SLEEP|KM_NOSLEEP|KM_NOFS|KM_MAYFAIL|KM_LARGE)); + BUG_ON(flags & ~(KM_SLEEP|KM_NOSLEEP|KM_NOFS|KM_MAYFAIL)); if (flags & KM_NOSLEEP) { lflags = GFP_ATOMIC | __GFP_NOWARN; @@ -56,10 +56,25 @@ kmem_flags_convert(unsigned int __nocast extern void *kmem_alloc(size_t, unsigned int __nocast); extern void *kmem_zalloc(size_t, unsigned int __nocast); -extern void *kmem_zalloc_greedy(size_t *, size_t, size_t, unsigned int __nocast); extern void *kmem_realloc(const void *, size_t, size_t, unsigned int __nocast); extern void kmem_free(const void *); +static inline void *kmem_zalloc_large(size_t size) +{ + void *ptr; + + ptr = vmalloc(size); + if (ptr) + memset(ptr, 0, size); + return ptr; +} +static inline void kmem_free_large(void *ptr) +{ + vfree(ptr); +} + +extern void *kmem_zalloc_greedy(size_t *, size_t, size_t); + /* * Zone interfaces */ Index: xfs/fs/xfs/quota/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm.c 2010-01-17 13:33:52.767254546 +0100 +++ xfs/fs/xfs/quota/xfs_qm.c 2010-01-17 21:07:10.921003908 +0100 @@ -118,9 +118,14 @@ xfs_Gqm_init(void) */ udqhash = kmem_zalloc_greedy(&hsize, XFS_QM_HASHSIZE_LOW * sizeof(xfs_dqhash_t), - XFS_QM_HASHSIZE_HIGH * sizeof(xfs_dqhash_t), - KM_SLEEP | KM_MAYFAIL | KM_LARGE); - gdqhash = kmem_zalloc(hsize, KM_SLEEP | KM_LARGE); + XFS_QM_HASHSIZE_HIGH * sizeof(xfs_dqhash_t)); + if (!udqhash) + goto out; + + gdqhash = kmem_zalloc_large(hsize); + if (!udqhash) + goto out_free_udqhash; + hsize /= sizeof(xfs_dqhash_t); ndquot = hsize << 8; @@ -170,6 +175,11 @@ xfs_Gqm_init(void) mutex_init(&qcheck_lock); #endif return xqm; + + out_free_udqhash: + kmem_free_large(udqhash); + out: + return NULL; } /* @@ -189,8 +199,8 @@ xfs_qm_destroy( xfs_qm_list_destroy(&(xqm->qm_usr_dqhtable[i])); xfs_qm_list_destroy(&(xqm->qm_grp_dqhtable[i])); } - kmem_free(xqm->qm_usr_dqhtable); - kmem_free(xqm->qm_grp_dqhtable); + kmem_free_large(xqm->qm_usr_dqhtable); + kmem_free_large(xqm->qm_grp_dqhtable); xqm->qm_usr_dqhtable = NULL; xqm->qm_grp_dqhtable = NULL; xqm->qm_dqhashmask = 0; @@ -219,8 +229,12 @@ xfs_qm_hold_quotafs_ref( */ mutex_lock(&xfs_Gqm_lock); - if (xfs_Gqm == NULL) + if (!xfs_Gqm) { xfs_Gqm = xfs_Gqm_init(); + if (!xfs_Gqm) + return ENOMEM; + } + /* * We can keep a list of all filesystems with quotas mounted for * debugging and statistical purposes, but ... Index: xfs/fs/xfs/xfs_itable.c =================================================================== --- xfs.orig/fs/xfs/xfs_itable.c 2010-01-17 13:33:52.778254478 +0100 +++ xfs/fs/xfs/xfs_itable.c 2010-01-17 21:07:10.922012487 +0100 @@ -408,8 +408,10 @@ xfs_bulkstat( (XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog); nimask = ~(nicluster - 1); nbcluster = nicluster >> mp->m_sb.sb_inopblog; - irbuf = kmem_zalloc_greedy(&irbsize, PAGE_SIZE, PAGE_SIZE * 4, - KM_SLEEP | KM_MAYFAIL | KM_LARGE); + irbuf = kmem_zalloc_greedy(&irbsize, PAGE_SIZE, PAGE_SIZE * 4); + if (!irbuf) + return ENOMEM; + nirbuf = irbsize / sizeof(*irbuf); /* @@ -727,7 +729,7 @@ xfs_bulkstat( /* * Done, we're either out of filesystem or space to put the data. */ - kmem_free(irbuf); + kmem_free_large(irbuf); *ubcountp = ubelem; /* * Found some inodes, return them now and return the error next time. Index: xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2010-01-17 15:06:01.607003933 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2010-01-17 21:07:10.924003662 +0100 @@ -1525,8 +1525,8 @@ xfs_alloc_bufhash( btp->bt_hashshift = external ? 3 : 8; /* 8 or 256 buckets */ btp->bt_hashmask = (1 << btp->bt_hashshift) - 1; - btp->bt_hash = kmem_zalloc((1 << btp->bt_hashshift) * - sizeof(xfs_bufhash_t), KM_SLEEP | KM_LARGE); + btp->bt_hash = kmem_zalloc_large((1 << btp->bt_hashshift) * + sizeof(xfs_bufhash_t)); for (i = 0; i < (1 << btp->bt_hashshift); i++) { spin_lock_init(&btp->bt_hash[i].bh_lock); INIT_LIST_HEAD(&btp->bt_hash[i].bh_list); @@ -1537,7 +1537,7 @@ STATIC void xfs_free_bufhash( xfs_buftarg_t *btp) { - kmem_free(btp->bt_hash); + kmem_free_large(btp->bt_hash); btp->bt_hash = NULL; } From SRS0+lCzm+49+fromorbit.com=david@internode.on.net Wed Jan 20 16:01:11 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KM1A9n035135 for ; Wed, 20 Jan 2010 16:01:10 -0600 X-ASG-Debug-ID: 1264024929-174001c50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8EDBA124EF81 for ; Wed, 20 Jan 2010 14:02:09 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id sPmPG28eODWjJCeF for ; Wed, 20 Jan 2010 14:02:09 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11654113-1927428 for ; Thu, 21 Jan 2010 08:32:08 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXico-00069s-Oz for xfs@oss.sgi.com; Thu, 21 Jan 2010 09:02:06 +1100 Date: Thu, 21 Jan 2010 09:02:06 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 0/8] xfstests: fix compile warnings Subject: Re: [PATCH 0/8] xfstests: fix compile warnings Message-ID: <20100120220206.GN14035@discord.disaster> References: <1263958688-435-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1263958688-435-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1264024931 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1298 1.0000 -1.2171 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.22 X-Barracuda-Spam-Status: No, SCORE=-1.22 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20352 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 02:38:00PM +1100, Dave Chinner wrote: > This series fixes all the compile warnings when building xfstests. > It doesn't deal with the dmapi subdirectory but cleans everything else > up. Pushed into xfstests-dev tree. -- Dave Chinner david@fromorbit.com From SRS0+pDtJ+49+fromorbit.com=david@internode.on.net Wed Jan 20 16:01:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KM1UW1035164 for ; Wed, 20 Jan 2010 16:01:30 -0600 X-ASG-Debug-ID: 1264024949-3519024f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F40917D398 for ; Wed, 20 Jan 2010 14:02:30 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id lrBgkks0bRUwyZS5 for ; Wed, 20 Jan 2010 14:02:30 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11570859-1927428 for multiple; Thu, 21 Jan 2010 08:32:29 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXidA-0006A2-5V; Thu, 21 Jan 2010 09:02:28 +1100 Date: Thu, 21 Jan 2010 09:02:28 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: kill in 131 needs to be quiet Subject: Re: [PATCH] xfstests: kill in 131 needs to be quiet Message-ID: <20100120220228.GO14035@discord.disaster> References: <1263967126-7603-1-git-send-email-david@fromorbit.com> <20100120081807.GA9968@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100120081807.GA9968@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1264024951 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0182 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ3078 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20353 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_SC5_MJ3078 Custom Rule MJ3078 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 03:18:07AM -0500, Christoph Hellwig wrote: > On Wed, Jan 20, 2010 at 04:58:46PM +1100, Dave Chinner wrote: > > If the kill fails because the processes have already terminates, > > the output from kill (no such process) will cause the test to > > fail. Make sure kill doesn't output anything. > > > > Signed-off-by: Dave Chinner > > Yes, I see the same here, > > > Reviewed-by: Christoph Hellwig Pushed. -- Dave Chinner david@fromorbit.com From SRS0+pDtJ+49+fromorbit.com=david@internode.on.net Wed Jan 20 16:45:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0KMjg0F036896 for ; Wed, 20 Jan 2010 16:45:42 -0600 X-ASG-Debug-ID: 1264027600-2bac00b90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5985C1C68ED8; Wed, 20 Jan 2010 14:46:40 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id f78jHhRvKLCcVvJC; Wed, 20 Jan 2010 14:46:40 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11571171-1927428 for multiple; Thu, 21 Jan 2010 09:16:33 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NXjJi-0006DP-E6; Thu, 21 Jan 2010 09:46:26 +1100 Date: Thu, 21 Jan 2010 09:46:26 +1100 From: Dave Chinner To: Christoph Egger Cc: linux-kernel@vger.kernel.org, hch@infradead.org, xfs@oss.sgi.com, xfs-masters@oss.sgi.com, Reinhard.Tartler@informatik.uni-erlangen.de X-ASG-Orig-Subj: Re: Obsolete config in kernel build system (XFS_TRACE) Subject: Re: Obsolete config in kernel build system (XFS_TRACE) Message-ID: <20100120224626.GP14035@discord.disaster> References: <20100120125249.GC3580@faui49.informatik.uni-erlangen.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100120125249.GC3580@faui49.informatik.uni-erlangen.de> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1264027602 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0051 1.0000 -1.9875 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.99 X-Barracuda-Spam-Status: No, SCORE=-1.99 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20355 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 20, 2010 at 01:52:49PM +0100, Christoph Egger wrote: > Hi all! > > As part of the VAMOS[0] research project at the University of > Erlangen we're checking referential integrity between kernel KConfig > options and in-code Conditional blocks. > > Git commit 0b1b213fcf3a8486ada99a2bab84ab8c6f51b264 by > Christoph Hellwig removed all References to CONFIG_XFS_TRACE, which is > unreferenced from KConfig side from the linux source code so there's > only a small bit of it left in KBuild. Mayee remove it as well? > > ./fs/xfs/Makefile:95 > +++> > > xfs-$(CONFIG_XFS_TRACE) += xfs_btree_trace.o > > <+++ > > Please keep me informed of this patch getting confirmed / > merged so we can keep track of it. Christoph's conversion to use the kernel trace infrastructure is a work in progress. It's no small task - he's converted around 220 trace points points so far. However, the btree tracing code has not been converted yet. IIRC this is because the kernel trace code didn't have the required infrastructure at the time of initial conversion. Hence the old code has not yet been completely removed because the conversion is not yet complete. It will go away when the conversion is completed. Cheers, Dave. -- Dave Chinner david@fromorbit.com From tj@kernel.org Wed Jan 20 19:21:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0L1LHGI042833 for ; Wed, 20 Jan 2010 19:21:18 -0600 X-ASG-Debug-ID: 1264036937-4840023d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hera.kernel.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0E03B17E775; Wed, 20 Jan 2010 17:22:17 -0800 (PST) Received: from hera.kernel.org (hera.kernel.org [140.211.167.34]) by cuda.sgi.com with ESMTP id bsW8I6HeF5JPh4lj; Wed, 20 Jan 2010 17:22:17 -0800 (PST) Received: from htj.dyndns.org (localhost [127.0.0.1]) by hera.kernel.org (8.14.3/8.14.3) with ESMTP id o0L1M9CD027675 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Thu, 21 Jan 2010 01:22:11 GMT X-Virus-Status: Clean X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: clamav-milter 0.95.2 at hera.kernel.org Received: from [127.0.0.2] (htj.dyndns.org [127.0.0.2]) by htj.dyndns.org (Postfix) with ESMTPSA id 6CAB710062C82; Thu, 21 Jan 2010 10:28:20 +0900 (KST) Message-ID: <4B57ADB4.70002@kernel.org> Date: Thu, 21 Jan 2010 10:28:20 +0900 From: Tejun Heo User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091130 SUSE/3.0.0-1.1.1 Thunderbird/3.0 MIME-Version: 1.0 To: lkml , Alex Elder , xfs@oss.sgi.com CC: Carsten Aulbert X-ASG-Orig-Subj: Circular locking dependency warning involing xfs on 2.6.27 Subject: Circular locking dependency warning involing xfs on 2.6.27 X-Enigmail-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.3 (hera.kernel.org [127.0.0.1]); Thu, 21 Jan 2010 01:22:11 +0000 (UTC) X-Barracuda-Connect: hera.kernel.org[140.211.167.34] X-Barracuda-Start-Time: 1264036938 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.51 X-Barracuda-Spam-Status: No, SCORE=-1.51 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE_7582B, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20367 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE_7582B Custom Rule 7582B 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hello, This is on a pretty old kernel but Carsten reports that it happens occassionally in a pretty large setup involving 1500+ machines (please feel free to fill in). This happens pretty sporadically so reporting it just in case this is a yet unknown problem. As I understand it, testing with newer kernel isn't out of question but it being a production environment, not a very easy thing. Thanks. [12207.016809] ======================================================= [12207.021881] [ INFO: possible circular locking dependency detected ] [12207.021881] 2.6.27.43-atlas-generic #1 [12207.021881] ------------------------------------------------------- [12207.231253] inspiralSensMon/8833 is trying to acquire lock: [12207.231253] (iprune_mutex){--..}, at: [] shrink_icache_memory+0x4b/0x23b [12207.231253] [12207.231253] but task is already holding lock: [12207.231253] (&(&ip->i_iolock)->mr_lock){----}, at: [] xfs_ilock+0x44/0x79 [12207.231253] [12207.231253] which lock already depends on the new lock. [12207.231253] [12207.231253] [12207.231253] the existing dependency chain (in reverse order) is: [12207.231253] [12207.231253] -> #1 (&(&ip->i_iolock)->mr_lock){----}: [12207.231253] [] __lock_acquire+0x12a7/0x15bc [12207.231253] [] lock_acquire+0x8d/0xba [12207.231253] [] down_write_nested+0x2a/0x36 [12207.231253] [] xfs_ilock+0x27/0x79 [12207.231253] [] xfs_ireclaim+0x41/0x87 [12207.231253] [] xfs_finish_reclaim+0x142/0x150 [12207.231253] [] xfs_reclaim+0x77/0xfc [12207.231253] [] xfs_fs_clear_inode+0xe2/0x106 [12207.231253] [] clear_inode+0x71/0xca [12207.231253] [] dispose_list+0x5b/0x10e [12207.231253] [] shrink_icache_memory+0x205/0x23b [12207.231253] [] shrink_slab+0xe3/0x158 [12207.231253] [] kswapd+0x40e/0x572 [12207.231253] [] kthread+0x49/0x76 [12207.231253] [] child_rip+0xa/0x11 [12207.231253] [] 0xffffffffffffffff [12207.231253] [12207.231253] -> #0 (iprune_mutex){--..}: [12207.231253] [] __lock_acquire+0xfbc/0x15bc [12207.231253] [] lock_acquire+0x8d/0xba [12207.231253] [] mutex_lock_nested+0xe3/0x28a [12207.231253] [] shrink_icache_memory+0x4b/0x23b [12207.231253] [] shrink_slab+0xe3/0x158 [12207.231253] [] try_to_free_pages+0x227/0x313 [12207.231253] [] __alloc_pages_internal+0x261/0x40c [12207.231253] [] __do_page_cache_readahead+0xf0/0x1f7 [12207.231253] [] ondemand_readahead+0x1cf/0x1e4 [12207.231253] [] page_cache_async_readahead+0x78/0x84 [12207.231253] [] generic_file_aio_read+0x27d/0x5d6 [12207.231253] [] xfs_read+0x18e/0x205 [12207.231253] [] xfs_file_aio_read+0x51/0x53 [12207.231253] [] do_sync_read+0xe7/0x12d [12207.231253] [] vfs_read+0xab/0x134 [12207.231253] [] sys_read+0x47/0x6f [12207.231253] [] system_call_fastpath+0x16/0x1b [12207.231253] [] 0xffffffffffffffff [12207.231253] [12207.231253] other info that might help us debug this: [12207.231253] [12207.231253] 2 locks held by inspiralSensMon/8833: [12207.231253] #0: (&(&ip->i_iolock)->mr_lock){----}, at: [] xfs_ilock+0x44/0x79 [12207.231253] #1: (shrinker_rwsem){----}, at: [] shrink_slab+0x38/0x158 [12207.231253] [12207.231253] stack backtrace: [12207.231253] Pid: 8833, comm: inspiralSensMon Not tainted 2.6.27.43-atlas-generic #1 [12207.231253] [12207.231253] Call Trace: [12207.231253] [] print_circular_bug_tail+0xb8/0xc3 [12207.231253] [] __lock_acquire+0xfbc/0x15bc [12207.231253] [] lock_acquire+0x8d/0xba [12207.231253] [] ? shrink_icache_memory+0x4b/0x23b [12207.231253] [] mutex_lock_nested+0xe3/0x28a [12207.231253] [] ? shrink_icache_memory+0x4b/0x23b [12207.231253] [] ? shrink_icache_memory+0x4b/0x23b [12207.231253] [] shrink_icache_memory+0x4b/0x23b [12207.231253] [] shrink_slab+0xe3/0x158 [12207.231253] [] try_to_free_pages+0x227/0x313 [12207.231253] [] ? isolate_pages_global+0x0/0x34 [12207.231253] [] __alloc_pages_internal+0x261/0x40c [12207.231253] [] __do_page_cache_readahead+0xf0/0x1f7 [12207.231253] [] ? __do_page_cache_readahead+0x7b/0x1f7 [12207.231253] [] ondemand_readahead+0x1cf/0x1e4 [12207.231253] [] page_cache_async_readahead+0x78/0x84 [12207.231253] [] ? find_get_page+0x0/0xc9 [12207.231253] [] generic_file_aio_read+0x27d/0x5d6 [12207.231253] [] ? xfs_ilock+0x44/0x79 [12207.231253] [] xfs_read+0x18e/0x205 [12207.231253] [] xfs_file_aio_read+0x51/0x53 [12207.231253] [] do_sync_read+0xe7/0x12d [12207.231253] [] ? __up_write+0x29/0x11e [12207.231253] [] ? autoremove_wake_function+0x0/0x38 [12207.231253] [] ? trace_hardirqs_on_caller+0xf7/0x11b [12207.231253] [] ? __up_write+0x10f/0x11e [12207.231253] [] ? security_file_permission+0x11/0x13 [12207.231253] [] vfs_read+0xab/0x134 [12207.231253] [] sys_read+0x47/0x6f [12207.231253] [] system_call_fastpath+0x16/0x1b -- tejun From gbkwon@gmail.com Wed Jan 20 22:11:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_26,J_CHICKENPOX_27,J_CHICKENPOX_28 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0L4BQxb049059 for ; Wed, 20 Jan 2010 22:11:26 -0600 X-ASG-Debug-ID: 1264047146-4c0d001d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yx0-f173.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 131961786F46 for ; Wed, 20 Jan 2010 20:12:26 -0800 (PST) Received: from mail-yx0-f173.google.com (mail-yx0-f173.google.com [209.85.210.173]) by cuda.sgi.com with ESMTP id GOFdPxNW99svIivh for ; Wed, 20 Jan 2010 20:12:26 -0800 (PST) Received: by yxe3 with SMTP id 3so895548yxe.20 for ; Wed, 20 Jan 2010 20:12:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:from:date:message-id :subject:to:content-type; bh=fLYaNIhJIUVr/8dTsca16oJMrvOEu0XiROBUlaRHjkQ=; b=kwm/1CqVQCuU/Hx+NB12Pfxez9wDu2MOBv5V5hA29XqyL2hNIYncbX+w+djskZskbS tuHil1T3o3ePXvBqLXkEWnefvoGxDhbxqB7C5ra6L6DvSq+Mze4MviVh+uHLgu2ftRcD D+M2WwsKT1fNRbyvnm7GG3uI1FlePEhw8HiGA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=ekQaGiNtLZ+PD0gOUexSeFlchrPOx0KBsR9Y1HwjGcRwajwmowFJrgar5kGzht/oKR FNVT36yGVqg5bti5CxVEMgJ52n2nRwQUN6+nwdXCKyTSaSaO0g3kOwEuZWYGUY7giT3R Zj+utLuHwKcTiHZHas6xBOchMctNagpjKdlwc= MIME-Version: 1.0 Received: by 10.90.21.24 with SMTP id 24mr1009313agu.23.1264047146075; Wed, 20 Jan 2010 20:12:26 -0800 (PST) From: "Guk-Bong, Kwon" Date: Thu, 21 Jan 2010 13:12:06 +0900 Message-ID: <77cc6e171001202012y9472a42m849bcea8910ca290@mail.gmail.com> X-ASG-Orig-Subj: [help] project quota information incorrect over nfs ... Subject: [help] project quota information incorrect over nfs ... To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-yx0-f173.google.com[209.85.210.173] X-Barracuda-Start-Time: 1264047147 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20377 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean hi all i tested xfs project quota over nfs... exported directory(/test/111) df size, df used is correct. but df avail is incorrect... ===================================================================== linux nfs server ===================================================================== #uname -a Linux 2.6.27.23 #2 SMP Wed May 20 15:35:13 KST 2009 x86_64 Intel(R) Xeon(R) CPU E5405 @ 2.00GHz GenuineIntel GNU/Linux #xfs_repair -V xfs_repair version 2.9.8 #df Filesystem Size Used Avail Use% Mounted on /dev/sda1 5.0G 2.2G 2.6G 47% / /dev/sda2 5.0G 180M 4.5G 4% /var none 250M 44K 249M 1% /dev/shm /dev/mapper/LD-test 1014M 500M 500M 50% /test #cat /proc/mounts rootfs / rootfs rw 0 0 /proc /proc proc rw 0 0 /dev/root / ext3 rw,noatime,nodiratime,errors=continue,data=journal 0 0 /proc /proc proc rw 0 0 /sys /sys sysfs rw 0 0 /dev/shm /dev/shm tmpfs rw 0 0 none /dev/pts devpts rw,gid=5,mode=620 0 0 nfsd /proc/fs/nfsd nfsd rw 0 0 /dev/sda2 /var ext3 rw,noatime,nodiratime,errors=continue,data=journal 0 0 /dev/LD/test /test xfs rw,noatime,attr2,nobarrier,prjquota,grpquota 0 0 #cat /etc/projid 1:1 #cat /etc/projects 1:/test/111 # xfs_quota -x -c 'report -p -b -h' /test Project quota on /test (/dev/LD/test) Blocks Project ID Used Soft Hard Warn/Grace ---------- --------------------------------- 1 0 0 100M 00 [------] #ls -al /test/111/ total 0 drwxrwxrwx 2 root root 6 Jan 19 06:42 ./ drwxr-xr-x 3 root root 116 Jan 19 11:08 ../ #exportfs -v /test/111 0.0.0.0/0.0.0.0(rw,async,wdelay,no_root_squash,no_subtree_check) ===================================================================== linux nfs client ===================================================================== $ uname -a Linux 2.6.32.2 #2 Mon Jan 11 16:32:50 KST 2010 x86_64 AMD Athlon(tm) 64 Processor 3000+ AuthenticAMD GNU/Linux $ mount -t nfs nfs_server:/test/111 /mnt/nfs $ cat /proc/mounts rootfs / rootfs rw 0 0 /dev/root / ext3 rw,noatime,errors=continue,data=writeback 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 udev /dev tmpfs rw,nosuid,relatime,size=10240k,mode=755 0 0 devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620 0 0 none /dev/shm tmpfs rw,relatime 0 0 nfsd /proc/fs/nfsd nfsd rw,nosuid,nodev,noexec,relatime 0 0 nfs_server:/test/111 /mnt/nfs nfs rw,relatime,vers=3,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.160,mountvers=3,mountproto=tcp,addr=192.168.0.160 0 0 $ df -h Filesystem Size Used Avail Use% Mounted on /dev/hda2 9.4G 5.4G 3.7G 60% / udev 10M 196K 9.9M 2% /dev none 250M 0 250M 0% /dev/shm nfs_server:/test/111 100M 0 500M 0% /mnt/nfs $ ls -al /mnt/nfs/ total 4.0K drwxrwxrwx 2 root root 6 2010-01-19 06:42 ./ drwxr-xr-x 73 root root 4.0K 2009-03-03 19:34 ../ ===================================================================== nfs client "nfs_server:/test/111" Size is correct..(100M) but nfs client "nfs_server:/test/111" Avail is incorrect.. (500M) "Avail" is big than "Size" ... this stat is normal?? -- thanks From SRS0+l3gH+50+fromorbit.com=dave@internode.on.net Thu Jan 21 00:02:05 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, URIBL_BLACK autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0L6240H056219 for ; Thu, 21 Jan 2010 00:02:05 -0600 X-ASG-Debug-ID: 1264053782-702a03830000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D028317C1DB for ; Wed, 20 Jan 2010 22:03:03 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id Hoj9RHWwKULXegDs for ; Wed, 20 Jan 2010 22:03:03 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11460002-1927428 for ; Thu, 21 Jan 2010 16:33:01 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXq8B-0006cO-Tl for xfs@oss.sgi.com; Thu, 21 Jan 2010 17:02:59 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXq8A-0001aQ-Ac for xfs@oss.sgi.com; Thu, 21 Jan 2010 17:02:58 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/2] xfstests: rebuild aclocal.m4 Subject: [PATCH 1/2] xfstests: rebuild aclocal.m4 Date: Thu, 21 Jan 2010 17:02:52 +1100 Message-Id: <1264053773-6054-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1264053773-6054-1-git-send-email-david@fromorbit.com> References: <1264053773-6054-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1264053784 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20385 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean The local m4 configuration has not been built in a long time. Trying to rebuild it results in failures with dmapi library detection and libxfs.h detection macros. Fix the errors and rebuild it. Note: the new format for the aclocal.m4 file uses m4_include directives which means it is much smaller than before and won't need updating unless we include new m4 macro files. Signed-off-by: Dave Chinner --- aclocal.m4 | 526 +---------------------------------------------- configure.in | 2 +- m4/package_dmapidev.m4 | 15 +- 3 files changed, 22 insertions(+), 521 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 6e1e672..02f56f2 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,7 +1,7 @@ -# generated automatically by aclocal 1.9.6 -*- Autoconf -*- +# generated automatically by aclocal 1.11 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005 Free Software Foundation, Inc. +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -11,515 +11,13 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. -# The AC_MULTILIB macro was extracted and modified from -# gettext-0.15's AC_LIB_PREPARE_MULTILIB macro in the lib-prefix.m4 file -# so that the correct paths can be used for 64-bit libraries. -# -dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl From Bruno Haible. - -dnl AC_MULTILIB creates a variable libdirsuffix, containing -dnl the suffix of the libdir, either "" or "64". -dnl Only do this if the given enable parameter is "yes". -AC_DEFUN([AC_MULTILIB], -[ - dnl There is no formal standard regarding lib and lib64. The current - dnl practice is that on a system supporting 32-bit and 64-bit instruction - dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit - dnl libraries go under $prefix/lib. We determine the compiler's default - dnl mode by looking at the compiler's library search path. If at least - dnl of its elements ends in /lib64 or points to a directory whose absolute - dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the - dnl default, namely "lib". - enable_lib64="$1" - libdirsuffix="" - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test "$enable_lib64" = "yes" -a -n "$searchpath"; then - save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) libdirsuffix=64 ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) libdirsuffix=64 ;; - esac ;; - esac - fi - done - IFS="$save_IFS" - fi - AC_SUBST(libdirsuffix) -]) - -AC_DEFUN([AC_PACKAGE_NEED_SYS_ACL_H], - [ AC_CHECK_HEADERS([sys/acl.h]) - if test "$ac_cv_header_sys_acl_h" != "yes"; then - echo - echo 'FATAL ERROR: sys/acl.h does not exist.' - echo 'Install the access control lists (acl) development package.' - echo 'Alternatively, run "make install-dev" from the acl source.' - exit 1 - fi - ]) - -AC_DEFUN([AC_PACKAGE_NEED_ACL_LIBACL_H], - [ AC_CHECK_HEADERS([acl/libacl.h]) - if test "$ac_cv_header_acl_libacl_h" != "yes"; then - echo - echo 'FATAL ERROR: acl/libacl.h does not exist.' - echo 'Install the access control lists (acl) development package.' - echo 'Alternatively, run "make install-dev" from the acl source.' - exit 1 - fi - ]) - - -AC_DEFUN([AC_PACKAGE_NEED_ACLINIT_LIBACL], - [ AC_CHECK_LIB(acl, acl_init,, [ - echo - echo 'FATAL ERROR: could not find a valid Access Control List library.' - echo 'Install either the libacl (rpm) or the libacl1 (deb) package.' - echo 'Alternatively, run "make install-lib" from the acl source.' - exit 1 - ]) - libacl="-lacl" - test -f `pwd`/../acl/libacl/libacl.la && \ - libacl="`pwd`/../acl/libacl/libacl.la" - test -f ${libexecdir}${libdirsuffix}/libacl.la && \ - libacl="${libexecdir}${libdirsuffix}/libacl.la" - AC_SUBST(libacl) - ]) - -AC_DEFUN([AC_PACKAGE_WANT_AIO], - [ AC_CHECK_HEADERS(libaio.h, [ have_aio=true ], [ have_aio=false ]) - AC_SUBST(have_aio) - ]) - -AC_DEFUN([AC_PACKAGE_WANT_DMAPI], - [ AC_CHECK_HEADERS(sys/dmapi/dmapi.h, [ have_dmapi=true ], [ have_dmapi=false ]) - AC_SUBST(have_dmapi) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_ATTR_XATTR_H], - [ AC_CHECK_HEADERS([attr/xattr.h]) - if test "$ac_cv_header_attr_xattr_h" != "yes"; then - echo - echo 'FATAL ERROR: attr/xattr.h does not exist.' - echo 'Install the extended attributes (attr) development package.' - echo 'Alternatively, run "make install-dev" from the attr source.' - exit 1 - fi - ]) - -AC_DEFUN([AC_PACKAGE_NEED_ATTR_ERROR_H], - [ AC_CHECK_HEADERS([attr/error_context.h]) - if test "$ac_cv_header_attr_error_context_h" != "yes"; then - echo - echo 'FATAL ERROR: attr/error_context.h does not exist.' - echo 'Install the extended attributes (attr) development package.' - echo 'Alternatively, run "make install-dev" from the attr source.' - exit 1 - fi - ]) - -AC_DEFUN([AC_PACKAGE_NEED_ATTRIBUTES_H], - [ have_attributes_h=false - AC_CHECK_HEADERS([attr/attributes.h sys/attributes.h], [have_attributes_h=true], ) - if test "$have_attributes_h" = "false"; then - echo - echo 'FATAL ERROR: attributes.h does not exist.' - echo 'Install the extended attributes (attr) development package.' - echo 'Alternatively, run "make install-dev" from the attr source.' - exit 1 - fi - ]) - -AC_DEFUN([AC_PACKAGE_WANT_ATTRLIST_LIBATTR], - [ AC_CHECK_LIB(attr, attr_list, [have_attr_list=true], [have_attr_list=false]) - AC_SUBST(have_attr_list) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_GETXATTR_LIBATTR], - [ AC_CHECK_LIB(attr, getxattr,, [ - echo - echo 'FATAL ERROR: could not find a valid Extended Attributes library.' - echo 'Install the extended attributes (attr) development package.' - echo 'Alternatively, run "make install-lib" from the attr source.' - exit 1 - ]) - libattr="-lattr" - test -f `pwd`/../attr/libattr/libattr.la && \ - libattr="`pwd`/../attr/libattr/libattr.la" - test -f ${libexecdir}${libdirsuffix}/libattr.la && \ - libattr="${libexecdir}${libdirsuffix}/libattr.la" - AC_SUBST(libattr) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_ATTRGET_LIBATTR], - [ AC_CHECK_LIB(attr, attr_get,, [ - echo - echo 'FATAL ERROR: could not find a valid Extended Attributes library.' - echo 'Install the extended attributes (attr) development package.' - echo 'Alternatively, run "make install-lib" from the attr source.' - exit 1 - ]) - libattr="-lattr" - test -f `pwd`/../attr/libattr/libattr.la && \ - libattr="`pwd`/../attr/libattr/libattr.la" - test -f ${libexecdir}${libdirsuffix}/libattr.la && \ - libattr="${libexecdir}${libdirsuffix}/libattr.la" - AC_SUBST(libattr) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_ATTRIBUTES_MACROS], - [ AC_MSG_CHECKING([macros in attr/attributes.h]) - AC_TRY_LINK([ -#include -#include ], - [ int x = ATTR_SECURE; ], [ echo ok ], [ - echo - echo 'FATAL ERROR: could not find a current attributes header.' - echo 'Upgrade the extended attributes (attr) development package.' - echo 'Alternatively, run "make install-dev" from the attr source.' - exit 1 ]) - ]) - -AC_DEFUN([AC_PACKAGE_WANT_NDBM], - [ AC_CHECK_HEADERS(ndbm.h, [ have_db=true ], [ have_db=false ]) - libgdbm="" - AC_SUBST(libgdbm) - AC_SUBST(have_db) - ]) - -AC_DEFUN([AC_PACKAGE_WANT_GDBM], - [ AC_CHECK_HEADERS([gdbm/ndbm.h], [ have_db=true ], [ have_db=false ]) - if test $have_db = true; then - libgdbm="-lgdbm" - fi - AC_SUBST(libgdbm) - AC_SUBST(have_db) - ]) - -# -# Generic macro, sets up all of the global packaging variables. -# The following environment variables may be set to override defaults: -# DEBUG OPTIMIZER MALLOCLIB PLATFORM DISTRIBUTION INSTALL_USER INSTALL_GROUP -# BUILD_VERSION -# -AC_DEFUN([AC_PACKAGE_GLOBALS], - [ pkg_name="$1" - AC_SUBST(pkg_name) - - . ./VERSION - pkg_version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} - AC_SUBST(pkg_version) - pkg_release=$PKG_BUILD - test -z "$BUILD_VERSION" || pkg_release="$BUILD_VERSION" - AC_SUBST(pkg_release) - - DEBUG=${DEBUG:-'-DDEBUG'} dnl -DNDEBUG - debug_build="$DEBUG" - AC_SUBST(debug_build) - - OPTIMIZER=${OPTIMIZER:-'-g -O2'} - opt_build="$OPTIMIZER" - AC_SUBST(opt_build) - - MALLOCLIB=${MALLOCLIB:-''} dnl /usr/lib/libefence.a - malloc_lib="$MALLOCLIB" - AC_SUBST(malloc_lib) - - pkg_user=`id -u -n` - test -z "$INSTALL_USER" || pkg_user="$INSTALL_USER" - AC_SUBST(pkg_user) - - pkg_group=`id -g -n` - test -z "$INSTALL_GROUP" || pkg_group="$INSTALL_GROUP" - AC_SUBST(pkg_group) - - pkg_distribution=`uname -s` - test -z "$DISTRIBUTION" || pkg_distribution="$DISTRIBUTION" - AC_SUBST(pkg_distribution) - - pkg_platform=`uname -s | tr 'A-Z' 'a-z' | sed -e 's/irix64/irix/'` - test -z "$PLATFORM" || pkg_platform="$PLATFORM" - AC_SUBST(pkg_platform) - ]) - -# -# Check for specified utility (env var) - if unset, fail. -# -AC_DEFUN([AC_PACKAGE_NEED_UTILITY], - [ if test -z "$2"; then - echo - echo FATAL ERROR: $3 does not seem to be installed. - echo $1 cannot be built without a working $4 installation. - exit 1 - fi - ]) - -# -# Generic macro, sets up all of the global build variables. -# The following environment variables may be set to override defaults: -# CC MAKE LIBTOOL TAR ZIP MAKEDEPEND AWK SED ECHO SORT -# MSGFMT MSGMERGE RPM -# -AC_DEFUN([AC_PACKAGE_UTILITIES], - [ AC_PROG_CC - cc="$CC" - AC_SUBST(cc) - AC_PACKAGE_NEED_UTILITY($1, "$cc", cc, [C compiler]) - - if test -z "$MAKE"; then - AC_PATH_PROG(MAKE, gmake,, /usr/bin:/usr/local/bin:/usr/freeware/bin) - fi - if test -z "$MAKE"; then - AC_PATH_PROG(MAKE, make,, /usr/bin) - fi - make=$MAKE - AC_SUBST(make) - AC_PACKAGE_NEED_UTILITY($1, "$make", make, [GNU make]) - - if test -z "$LIBTOOL"; then - AC_PATH_PROG(LIBTOOL, glibtool,, /usr/bin) - fi - if test -z "$LIBTOOL"; then - AC_PATH_PROG(LIBTOOL, libtool,, /usr/bin:/usr/local/bin:/usr/freeware/bin) - fi - libtool=$LIBTOOL - AC_SUBST(libtool) - AC_PACKAGE_NEED_UTILITY($1, "$libtool", libtool, [GNU libtool]) - - if test -z "$TAR"; then - AC_PATH_PROG(TAR, tar,, /usr/freeware/bin:/bin:/usr/local/bin:/usr/bin) - fi - tar=$TAR - AC_SUBST(tar) - if test -z "$ZIP"; then - AC_PATH_PROG(ZIP, gzip,, /bin:/usr/bin:/usr/local/bin:/usr/freeware/bin) - fi - - zip=$ZIP - AC_SUBST(zip) - - if test -z "$MAKEDEPEND"; then - AC_PATH_PROG(MAKEDEPEND, makedepend, /bin/true) - fi - makedepend=$MAKEDEPEND - AC_SUBST(makedepend) - - if test -z "$AWK"; then - AC_PATH_PROG(AWK, awk,, /bin:/usr/bin) - fi - awk=$AWK - AC_SUBST(awk) - - if test -z "$SED"; then - AC_PATH_PROG(SED, sed,, /bin:/usr/bin) - fi - sed=$SED - AC_SUBST(sed) - - if test -z "$ECHO"; then - AC_PATH_PROG(ECHO, echo,, /bin:/usr/bin) - fi - echo=$ECHO - AC_SUBST(echo) - - if test -z "$SORT"; then - AC_PATH_PROG(SORT, sort,, /bin:/usr/bin) - fi - sort=$SORT - AC_SUBST(sort) - - dnl check if symbolic links are supported - AC_PROG_LN_S - - if test "$enable_gettext" = yes; then - if test -z "$MSGFMT"; then - AC_PATH_PROG(MSGFMT, msgfmt,, /usr/bin:/usr/local/bin:/usr/freeware/bin) - fi - msgfmt=$MSGFMT - AC_SUBST(msgfmt) - AC_PACKAGE_NEED_UTILITY($1, "$msgfmt", msgfmt, gettext) - - if test -z "$MSGMERGE"; then - AC_PATH_PROG(MSGMERGE, msgmerge,, /usr/bin:/usr/local/bin:/usr/freeware/bin) - fi - msgmerge=$MSGMERGE - AC_SUBST(msgmerge) - AC_PACKAGE_NEED_UTILITY($1, "$msgmerge", msgmerge, gettext) - fi - - if test -z "$RPM"; then - AC_PATH_PROG(RPM, rpm,, /bin:/usr/bin:/usr/freeware/bin) - fi - rpm=$RPM - AC_SUBST(rpm) - - dnl .. and what version is rpm - rpm_version=0 - test -n "$RPM" && test -x "$RPM" && rpm_version=`$RPM --version \ - | awk '{print $NF}' | awk -F. '{V=1; print $V}'` - AC_SUBST(rpm_version) - dnl At some point in rpm 4.0, rpm can no longer build rpms, and - dnl rpmbuild is needed (rpmbuild may go way back; not sure) - dnl So, if rpm version >= 4.0, look for rpmbuild. Otherwise build w/ rpm - if test $rpm_version -ge 4; then - AC_PATH_PROG(RPMBUILD, rpmbuild) - rpmbuild=$RPMBUILD - else - rpmbuild=$RPM - fi - AC_SUBST(rpmbuild) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_UUID_H], - [ AC_CHECK_HEADERS([uuid.h sys/uuid.h uuid/uuid.h]) - if test $ac_cv_header_uuid_h = no -a \ - $ac_cv_header_sys_uuid_h = no -a \ - $ac_cv_header_uuid_uuid_h = no; then - echo - echo 'FATAL ERROR: could not find a valid UUID header.' - echo 'Install the Universally Unique Identifiers development package.' - exit 1 - fi - ]) - -AC_DEFUN([AC_PACKAGE_NEED_UUIDCOMPARE], - [ AC_CHECK_FUNCS(uuid_compare) - if test $ac_cv_func_uuid_compare = yes; then - libuuid="" - else - AC_CHECK_LIB(uuid, uuid_compare,, [ - echo - echo 'FATAL ERROR: could not find a valid UUID library.' - echo 'Install the Universally Unique Identifiers library package.' - exit 1]) - libuuid="-luuid" - fi - AC_SUBST(libuuid) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_XFS_XFS_H], - [ AC_CHECK_HEADERS([xfs/xfs.h]) - if test "$ac_cv_header_xfs_xfs_h" != "yes"; then - echo - echo 'FATAL ERROR: cannot find a valid header file.' - echo 'Install or upgrade the XFS development package.' - echo 'Alternatively, run "make install-dev" from the xfsprogs source.' - exit 1 - fi - ]) - -AC_DEFUN([AC_PACKAGE_WANT_XFS_LIBXFS_H], - [ AC_CHECK_HEADERS([xfs/libxfs.h], [ have_libxfs=true ], [ have_libxfs=false ]) - AC_SUBST(have_libxfs) - ]) - -AC_DEFUN([AC_PACKAGE_WANT_XLOG_ASSIGN_LSN], - [ AC_CHECK_DECL(xlog_assign_lsn, - [ have_xlog_assign_lsn=true ], [ have_xlog_assign_lsn=false ], - [[#include ]]) - AC_SUBST(have_xlog_assign_lsn) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_XFS_XQM_H], - [ AC_CHECK_HEADERS([xfs/xqm.h]) - if test "$ac_cv_header_xfs_xqm_h" != "yes"; then - echo - echo 'FATAL ERROR: cannot find a valid header file.' - echo 'Install or upgrade the XFS development package.' - echo 'Alternatively, run "make install-dev" from the xfsprogs source.' - exit 1 - fi - ]) - -AC_DEFUN([AC_PACKAGE_NEED_XFS_HANDLE_H], - [ AC_CHECK_HEADERS([xfs/handle.h]) - if test "$ac_cv_header_xfs_handle_h" != "yes"; then - echo - echo 'FATAL ERROR: cannot find a valid header file.' - echo 'Install or upgrade the XFS development package.' - echo 'Alternatively, run "make install-dev" from the xfsprogs source.' - exit 1 - fi - ]) - -AC_DEFUN([AC_PACKAGE_NEED_LIBXFSINIT_LIBXFS], - [ AC_CHECK_LIB(xfs, libxfs_init,, [ - echo - echo 'FATAL ERROR: could not find a valid XFS base library.' - echo 'Install or upgrade the XFS library package.' - echo 'Alternatively, run "make install-dev" from the xfsprogs source.' - exit 1 - ]) - libxfs="-lxfs" - test -f `pwd`/../xfsprogs/libxfs/libxfs.la && \ - libxfs="`pwd`/../xfsprogs/libxfs/libxfs.la" - test -f ${libexecdir}${libdirsuffix}/libxfs.la && \ - libxfs="${libexecdir}${libdirsuffix}/libxfs.la" - AC_SUBST(libxfs) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_OPEN_BY_FSHANDLE], - [ AC_CHECK_LIB(handle, open_by_fshandle,, [ - echo - echo 'FATAL ERROR: could not find a current XFS handle library.' - echo 'Install or upgrade the XFS library package.' - echo 'Alternatively, run "make install-dev" from the xfsprogs source.' - exit 1 - ]) - libhdl="-lhandle" - test -f `pwd`/../xfsprogs/libhandle/libhandle.la && \ - libhdl="`pwd`/../xfsprogs/libhandle/libhandle.la" - test -f ${libexecdir}${libdirsuffix}/libhandle.la && \ - libhdl="${libexecdir}${libdirsuffix}/libhandle.la" - AC_SUBST(libhdl) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_ATTRLIST_LIBHANDLE], - [ AC_CHECK_LIB(handle, attr_list_by_handle,, [ - echo - echo 'FATAL ERROR: could not find a current XFS handle library.' - echo 'Install or upgrade the XFS library package.' - echo 'Alternatively, run "make install-lib" from the xfsprogs source.' - exit 1 - ]) - libhdl="-lhandle" - test -f `pwd`/../xfsprogs/libhandle/libhandle.la && \ - libhdl="`pwd`/../xfsprogs/libhandle/libhandle.la" - test -f ${libexecdir}${libdirsuffix}/libhandle.la && \ - libhdl="${libexecdir}${libdirsuffix}/libhandle.la" - AC_SUBST(libhdl) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_IRIX_LIBHANDLE], - [ - AC_MSG_CHECKING([libhandle.a for IRIX]) - libhdl="`pwd`/../irix/libhandle/libhandle.a" - if ! test -f $libhdl; then - echo 'no' - echo 'FATAL ERROR: could not find IRIX XFS handle library.' - exit 1 - fi - echo 'yes' - AC_SUBST(libhdl) - ]) - -AC_DEFUN([AC_PACKAGE_NEED_XFSCTL_MACRO], - [ AC_MSG_CHECKING([xfsctl from xfs/xfs.h]) - AC_TRY_LINK([#include ], [ int x = xfsctl(0, 0, 0, 0); ], - [ echo ok ], - [ echo - echo 'FATAL ERROR: cannot find required macros in the XFS headers.' - echo 'Upgrade your XFS programs (xfsprogs) development package.' - echo 'Alternatively, run "make install-dev" from the xfsprogs source.' - exit 1 - ]) - ]) - +m4_include([m4/multilib.m4]) +m4_include([m4/package_acldev.m4]) +m4_include([m4/package_aiodev.m4]) +m4_include([m4/package_attrdev.m4]) +m4_include([m4/package_dmapidev.m4]) +m4_include([m4/package_gdbmdev.m4]) +m4_include([m4/package_globals.m4]) +m4_include([m4/package_utilies.m4]) +m4_include([m4/package_uuiddev.m4]) +m4_include([m4/package_xfslibs.m4]) diff --git a/configure.in b/configure.in index 6c2afe7..0d6f153 100644 --- a/configure.in +++ b/configure.in @@ -45,7 +45,7 @@ in *) AC_MULTILIB($enable_lib64) AC_PACKAGE_NEED_XFS_XFS_H - AC_PACKAGE_WANT_XFS_LIBXFS_H + AC_PACKAGE_WANT_LIBXFS_H AC_PACKAGE_WANT_XLOG_ASSIGN_LSN AC_PACKAGE_NEED_XFS_XQM_H AC_PACKAGE_NEED_XFSCTL_MACRO diff --git a/m4/package_dmapidev.m4 b/m4/package_dmapidev.m4 index 89330bd..652db30 100644 --- a/m4/package_dmapidev.m4 +++ b/m4/package_dmapidev.m4 @@ -9,13 +9,15 @@ AC_DEFUN([AC_PACKAGE_NEED_XFS_DMAPI_H], fi ]) -AC_DEFUN([AC_PACKAGE_NEED_MAKEHANDLE_LIBDM], - [ AC_CHECK_LIB(dm, dm_make_handle,, [ +AC_DEFUN([AC_PACKAGE_WANT_DMAPI], + [ AC_CHECK_LIB(dm, dm_make_handle, [ have_dmapi=true ], [ + have_dmapi=false echo - echo 'FATAL ERROR: could not find a valid DMAPI base library.' - echo 'Install the data migration API (dmapi) library package.' - echo 'Alternatively, run "make install" from the dmapi source.' - exit 1 + echo 'WARNING: could not find a valid DMAPI base library.' + echo 'If you want DMAPI support please install the data migration' + echo 'API (dmapi) library package. Alternatively, run "make install"' + echo 'from the dmapi source.' + echo ]) libdm="-ldm" test -f `pwd`/../dmapi/libdm/libdm.la && \ @@ -23,4 +25,5 @@ AC_DEFUN([AC_PACKAGE_NEED_MAKEHANDLE_LIBDM], test -f ${libexecdir}${libdirsuffix}/libdm.la && \ libdm="${libexecdir}${libdirsuffix}/libdm.la" AC_SUBST(libdm) + AC_SUBST(have_dmapi) ]) -- 1.6.5 From SRS0+Kn7d+50+fromorbit.com=dave@internode.on.net Thu Jan 21 00:02:09 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_13 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0L6289A056239 for ; Thu, 21 Jan 2010 00:02:09 -0600 X-ASG-Debug-ID: 1264053787-148702700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 503EFF2F531 for ; Wed, 20 Jan 2010 22:03:07 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id D8Suvw4R3CI4Bb7Z for ; Wed, 20 Jan 2010 22:03:07 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11416006-1927428 for ; Thu, 21 Jan 2010 16:33:06 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXq8B-0006cP-VM for xfs@oss.sgi.com; Thu, 21 Jan 2010 17:03:00 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXq8A-0001aS-Dg for xfs@oss.sgi.com; Thu, 21 Jan 2010 17:02:58 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/2] xfstests: Automatic build dependency calculations Subject: [PATCH 2/2] xfstests: Automatic build dependency calculations Date: Thu, 21 Jan 2010 17:02:53 +1100 Message-Id: <1264053773-6054-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1264053773-6054-1-git-send-email-david@fromorbit.com> References: <1264053773-6054-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1264053789 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20384 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently the xfstest builds do not have any automatic dependency calculations. It relies on a separate make depend run to build or update dependency information. It also relies on an external makedepend binary. If that binary does not exist, the dependencies do not get calculated. To remove the dependency on makedepend, gcc can be used instead as it has a command to generate dependency information. This patch changes the dependency rule building to use gcc. In case anyone uses an old (several years) gcc compiler or a compiler that doesn't support gcc compatible dependency generation, a new configure check is added to turn off dependency checking so builds can still be done. To use the dependencies automatically, we need to use a special include makefile directive to include the build dependencies into the current makefile. Essentially once the dependencies are calculated, they can be included into the makefile and make will recalculate the build dependencies automatically based on that information. Hence we get a build that automatically calculates and keeps dependencies up to date without dependence on any external tools. Signed-off-by: Dave Chinner --- .gitignore | 3 +++ include/builddefs.in | 4 ---- include/buildrules | 36 ++++++++++-------------------------- lib/Makefile | 4 +++- ltp/Makefile | 3 ++- m4/package_utilies.m4 | 27 +++++++++++++++++++++++---- src/Makefile | 19 ++++++++++--------- src/aio-dio-regress/Makefile | 4 +++- 8 files changed, 54 insertions(+), 46 deletions(-) diff --git a/.gitignore b/.gitignore index d7cbab1..563c30a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,12 @@ *.lo *.o *.la +.dep autom4te.cache configure +config.log +config.status include/builddefs include/config.h include/config.h.in diff --git a/include/builddefs.in b/include/builddefs.in index 7827ed5..23a4991 100644 --- a/include/builddefs.in +++ b/include/builddefs.in @@ -65,18 +65,14 @@ GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall ifeq ($(PKG_PLATFORM),linux) PCFLAGS = -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 $(GCCFLAGS) -DEPENDFLAGS = -D__linux__ endif ifeq ($(PKG_PLATFORM),darwin) PCFLAGS = -traditional-cpp $(GCCFLAGS) -DEPENDFLAGS = -D__APPLE__ endif ifeq ($(PKG_PLATFORM),irix) PCFLAGS = -nostdinc -I$(ROOT)/usr/include -I$(TOPDIR)/../irix/include -DEPENDFLAGS = -D__sgi__ endif ifeq ($(PKG_PLATFORM),freebsd) -DEPENDFLAGS = -D__FreeBSD__ endif GCFLAGS = $(OPTIMIZER) $(DEBUG) $(CPPFLAGS) \ diff --git a/include/buildrules b/include/buildrules index 5428391..5388210 100644 --- a/include/buildrules +++ b/include/buildrules @@ -8,7 +8,7 @@ include $(TOPDIR)/include/builddefs clean clobber : $(addsuffix -clean,$(SUBDIRS)) $(Q)rm -f $(DIRT) - $(Q)rm -fr .libs + $(Q)rm -fr .libs .dep %-clean: @echo "Cleaning $*" @@ -70,32 +70,16 @@ endif # _BUILDRULES_INCLUDED_ $(_FORCE): -.PHONY : depend +# dependency build is automatic, relies on gcc -MM to generate. +.PHONY : depend ltdepend -DEPENDSCRIPT := $(MAKEDEPEND) $(DEPENDFLAGS) -f - -- $(CFLAGS) -- $(CFILES) | \ - $(SED) -e 's,`pwd`,$(TOPDIR),g' \ - -e 's, */[^ ]*,,g' \ - -e '/^[^ ]*: *$$/d' \ - -e '/^ *$$/d' +MAKEDEP := $(MAKEDEPEND) $(CFLAGS) -ifdef LTLIBRARY -DEPENDSCRIPT := $(DEPENDSCRIPT) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' -endif +ltdepend: $(CFILES) $(HFILES) + @echo " [DEP]" + $(Q)$(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' > .dep -depend : $(CFILES) $(HFILES) $(addsuffix -depend,$(SUBDIRS)) - $(DEPENDSCRIPT) > .dep - test -s .dep || rm -f .dep +depend: $(CFILES) $(HFILES) + @echo " [DEP]" + $(Q)$(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1,' > .dep -%-depend: - $(MAKE) -C $* depend - -# Include dep, but only if it exists -ifeq ($(shell test -f .dep && echo .dep), .dep) -include .dep -else -ifdef LTLIBRARY -$(LTOBJECTS): $(HFILES) -else -$(OBJECTS): $(HFILES) -endif -endif diff --git a/lib/Makefile b/lib/Makefile index 435c38c..43fb0a0 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -19,8 +19,10 @@ CFILES = dataascii.c databin.c datapid.c file_lock.c forker.c \ str_to_bytes.c tlibio.c write_log.c \ random.c -default: $(LTLIBRARY) +default: ltdepend $(LTLIBRARY) include $(BUILDRULES) install install-dev: default + +-include .dep diff --git a/ltp/Makefile b/ltp/Makefile index fee10f5..d74a9df 100644 --- a/ltp/Makefile +++ b/ltp/Makefile @@ -27,7 +27,7 @@ LCFLAGS += -DAIO LLDLIBS += -laio -lpthread endif -default: $(TARGETS) +default: depend $(TARGETS) include $(BUILDRULES) @@ -39,3 +39,4 @@ install: default $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/ltp $(INSTALL) -m 755 $(TARGETS) $(PKG_LIB_DIR)/ltp +-include .dep diff --git a/m4/package_utilies.m4 b/m4/package_utilies.m4 index c034a7c..726406c 100644 --- a/m4/package_utilies.m4 +++ b/m4/package_utilies.m4 @@ -11,9 +11,27 @@ AC_DEFUN([AC_PACKAGE_NEED_UTILITY], ]) # +#check compiler can generate dependencies +# +AC_DEFUN([AC_PACKAGE_GCC_DEPS], + [AC_CACHE_CHECK(whether gcc -MM is supported, + ac_cv_gcc_nodeps, + [cat > conftest.c < + int main() { exit(0); } +EOF + ac_cv_gcc_nodeps=no + if ${CC} -MM conftest.c >/dev/null 2>&1; then + ac_cv_gcc_nodeps=yes + fi + rm -f conftest.c a.out + ]) + ]) + +# # Generic macro, sets up all of the global build variables. # The following environment variables may be set to override defaults: -# CC MAKE LIBTOOL TAR ZIP MAKEDEPEND AWK SED ECHO SORT +# CC MAKE LIBTOOL TAR ZIP eMAKEDEPEND AWK SED ECHO SORT # MSGFMT MSGMERGE RPM # AC_DEFUN([AC_PACKAGE_UTILITIES], @@ -54,10 +72,11 @@ AC_DEFUN([AC_PACKAGE_UTILITIES], zip=$ZIP AC_SUBST(zip) - if test -z "$MAKEDEPEND"; then - AC_PATH_PROG(MAKEDEPEND, makedepend, /bin/true) + AC_PACKAGE_GCC_DEPS() + makedepend="$cc -MM" + if test $ac_cv_gcc_nodeps = no; then + makedepend=/bin/true fi - makedepend=$MAKEDEPEND AC_SUBST(makedepend) if test -z "$AWK"; then diff --git a/src/Makefile b/src/Makefile index e2a42ce..398b9dc 100644 --- a/src/Makefile +++ b/src/Makefile @@ -13,11 +13,12 @@ TARGETS = dirstress fill fill2 getpagesize holes lstat64 \ multi_open_unlink dmiperf unwritten_sync genhashnames LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize \ - preallo_rw_pattern_reader preallo_rw_pattern_writer ftrunc trunc \ - fs_perms testx looptest locktest unwritten_mmap \ + ftrunc trunc fs_perms testx looptest locktest unwritten_mmap \ bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ t_futimens +SUBDIRS = + LLDLIBS = $(LIBATTR) $(LIBHANDLE) $(LIBACL) ifeq ($(HAVE_XLOG_ASSIGN_LSN), true) @@ -27,6 +28,7 @@ endif IRIX_TARGETS = open_unlink ifeq ($(PKG_PLATFORM),linux) +PREALLO_TARGETS = preallo_rw_pattern_reader TARGETS += $(LINUX_TARGETS) TARGETS += t_immutable endif @@ -45,13 +47,10 @@ ifeq ($(HAVE_AIO), true) SUBDIRS += aio-dio-regress endif -CFILES = $(TARGETS:=.c) -LDIRT = $(TARGETS) - +CFILES := $(TARGETS:=.c) +LDIRT := $(TARGETS) $(PREALLO_TARGETS) -default: $(TARGETS) $(SUBDIRS) - -PREALLO_TARGETS = preallo_rw_pattern_reader preallo_rw_pattern_writer +default: depend $(TARGETS) $(PREALLO_TARGETS) $(SUBDIRS) include $(BUILDRULES) @@ -63,7 +62,7 @@ preallo_rw_pattern_writer: @echo " [CC] $@" $(Q)$(LTLINK) iopat.c -DWRITE -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) -$(filter-out $(PREALLO_TARGETS), $(TARGETS)): $(LIBTEST) +$(TARGETS): $(LIBTEST) @echo " [CC] $@" $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) @@ -77,3 +76,5 @@ install: default $(addsuffix -install,$(SUBDIRS)) %-install: $(MAKE) -C $* install + +-include .dep diff --git a/src/aio-dio-regress/Makefile b/src/aio-dio-regress/Makefile index f0e4d15..3f9d1c2 100644 --- a/src/aio-dio-regress/Makefile +++ b/src/aio-dio-regress/Makefile @@ -8,7 +8,7 @@ LDIRT = $(TARGETS) LLDLIBS = -laio -lpthread -default: $(TARGETS) +default: depend $(TARGETS) include $(BUILDRULES) @@ -19,3 +19,5 @@ $(TARGETS): install: $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/src/aio-dio-regress $(INSTALL) -m 755 $(TARGETS) $(PKG_LIB_DIR)/src/aio-dio-regress + +-include .dep -- 1.6.5 From SRS0+OIgv+50+fromorbit.com=dave@internode.on.net Thu Jan 21 00:02:13 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0L62CNp056257 for ; Thu, 21 Jan 2010 00:02:12 -0600 X-ASG-Debug-ID: 1264053792-14b402810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AEE69F2F535 for ; Wed, 20 Jan 2010 22:03:12 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id M0v5FH4B9o8Af7z1 for ; Wed, 20 Jan 2010 22:03:12 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11574636-1927428 for ; Thu, 21 Jan 2010 16:33:11 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXq8B-0006cN-SE for xfs@oss.sgi.com; Thu, 21 Jan 2010 17:02:59 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXq8A-0001aO-8z for xfs@oss.sgi.com; Thu, 21 Jan 2010 17:02:58 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/2] xfstests: Automatic build dependencies Subject: [PATCH 0/2] xfstests: Automatic build dependencies Date: Thu, 21 Jan 2010 17:02:51 +1100 Message-Id: <1264053773-6054-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1264053793 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0554 1.0000 -1.6660 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.67 X-Barracuda-Spam-Status: No, SCORE=-1.67 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20384 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This patch series removes the need for 'make depend' by building the dependencies as part of the normal build. The first patch is cleaning up the current aclocal.m4 file and it's generation as the second patch introduces a new configure test that required regeneration. The second patch is what changes the dependency calculation to use gcc rather than makedepend and the makefile changes needed to build and include those depencies automatically. From SRS0+OIgv+50+fromorbit.com=dave@internode.on.net Thu Jan 21 01:42:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_13,J_CHICKENPOX_93 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0L7gNC2059913 for ; Thu, 21 Jan 2010 01:42:24 -0600 X-ASG-Debug-ID: 1264059802-055a00750000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1CEBFBCB4FC for ; Wed, 20 Jan 2010 23:43:22 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id HgWhl2rjGs5RknMn for ; Wed, 20 Jan 2010 23:43:22 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11575089-1927428 for ; Thu, 21 Jan 2010 18:13:21 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXrhH-0006k5-QD for xfs@oss.sgi.com; Thu, 21 Jan 2010 18:43:19 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXrhG-0006X7-66 for xfs@oss.sgi.com; Thu, 21 Jan 2010 18:43:18 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: Automatic build dependency calculations Subject: [PATCH] xfsprogs: Automatic build dependency calculations Date: Thu, 21 Jan 2010 18:43:18 +1100 Message-Id: <1264059798-25085-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1264059804 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20391 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently the xfsprogs builds do not have any automatic dependency calculations. It relies on a separate make depend run to build or update dependency information. It also relies on an external makedepend binary. If that binary does not exist, the dependencies do not get calculated. To remove the dependency on makedepend, gcc can be used instead as it has a command to generate dependency information. This patch changes the dependency rule building to use gcc. In case anyone uses an old (several years) gcc compiler or a compiler that doesn't support gcc compatible dependency generation, a new configure check is added to turn off dependency checking so builds can still be done. To use the dependencies automatically, we need to use a special include makefile directive to include the build dependencies into the current makefile. Essentially once the dependencies are calculated, they can be included into the makefile and make will recalculate the build dependencies automatically based on that information. Hence we get a build that automatically calculates and keeps dependencies up to date without dependence on any external tools. Signed-off-by: Dave Chinner --- copy/Makefile | 4 +++- db/Makefile | 4 +++- estimate/Makefile | 4 +++- fsr/Makefile | 4 +++- growfs/Makefile | 4 +++- include/buildrules | 36 +++++++++++------------------------- io/Makefile | 4 +++- libdisk/Makefile | 4 +++- libhandle/Makefile | 4 +++- libxcmd/Makefile | 4 +++- libxfs/Makefile | 4 +++- libxlog/Makefile | 4 +++- logprint/Makefile | 4 +++- m4/package_utilies.m4 | 24 +++++++++++++++++++++--- mdrestore/Makefile | 4 +++- mkfs/Makefile | 4 +++- quota/Makefile | 4 +++- repair/Makefile | 4 +++- rtcp/Makefile | 4 +++- 19 files changed, 83 insertions(+), 45 deletions(-) diff --git a/copy/Makefile b/copy/Makefile index 3bdc72b..54f6dfb 100644 --- a/copy/Makefile +++ b/copy/Makefile @@ -13,7 +13,7 @@ LLDLIBS = $(LIBXFS) $(LIBUUID) $(LIBPTHREAD) $(LIBRT) LTDEPENDENCIES = $(LIBXFS) LLDFLAGS = -static -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -21,3 +21,5 @@ install: default $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: + +-include .dep diff --git a/db/Makefile b/db/Makefile index 69a85d7..5c7d054 100644 --- a/db/Makefile +++ b/db/Makefile @@ -30,7 +30,7 @@ LLDLIBS += $(LIBEDITLINE) $(LIBTERMCAP) CFLAGS += -DENABLE_EDITLINE endif -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -42,3 +42,5 @@ install: default $(INSTALL) -m 755 xfs_ncheck.sh $(PKG_SBIN_DIR)/xfs_ncheck $(INSTALL) -m 755 xfs_metadump.sh $(PKG_SBIN_DIR)/xfs_metadump install-dev: + +-include .dep diff --git a/estimate/Makefile b/estimate/Makefile index c972403..18971e4 100644 --- a/estimate/Makefile +++ b/estimate/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/include/builddefs LTCOMMAND = xfs_estimate CFILES = xfs_estimate.c -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -16,3 +16,5 @@ install: default $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: + +-include .dep diff --git a/fsr/Makefile b/fsr/Makefile index b7b0ab8..a9d1bf6 100644 --- a/fsr/Makefile +++ b/fsr/Makefile @@ -9,7 +9,7 @@ LTCOMMAND = xfs_fsr CFILES = xfs_fsr.c LLDLIBS = $(LIBHANDLE) -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -17,3 +17,5 @@ install: default $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: + +-include .dep diff --git a/growfs/Makefile b/growfs/Makefile index 2bab89f..88cbf4f 100644 --- a/growfs/Makefile +++ b/growfs/Makefile @@ -22,7 +22,7 @@ LTDEPENDENCIES = $(LIBXFS) $(LIBXCMD) LLDFLAGS = -static LSRCFILES = xfs_info.sh -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -31,3 +31,5 @@ install: default $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) $(INSTALL) -m 755 xfs_info.sh $(PKG_SBIN_DIR)/xfs_info install-dev: + +-include .dep diff --git a/include/buildrules b/include/buildrules index fdc60e6..d1a3a6f 100644 --- a/include/buildrules +++ b/include/buildrules @@ -89,33 +89,19 @@ endif # _BUILDRULES_INCLUDED_ $(_FORCE): -.PHONY : depend install-qa +# dependency build is automatic, relies on gcc -MM to generate. +.PHONY : depend ltdepend install-qa -DEPENDSCRIPT := $(MAKEDEPEND) $(DEPENDFLAGS) -f - -- $(CFLAGS) -- $(CFILES) | \ - $(SED) \ - -e 's,`pwd`,$(TOPDIR),g' \ - -e 's, */[^ ]*,,g' \ - -e '/^[^ ]*: *$$/d' \ - -e '/^ *$$/d' +MAKEDEP := $(MAKEDEPEND) $(CFLAGS) -ifdef LTLIBRARY -DEPENDSCRIPT := $(DEPENDSCRIPT) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' -endif +ltdepend: $(CFILES) $(HFILES) + @echo " [DEP]" + $(Q)$(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' > .dep -depend : $(CFILES) $(HFILES) $(addsuffix -depend,$(SUBDIRS)) - $(DEPENDSCRIPT) > .dep - test -s .dep || rm -f .dep +depend: $(CFILES) $(HFILES) + @echo " [DEP]" + $(Q)$(MAKEDEP) $(CFILES) > .dep -%-depend: - $(MAKE) -C $* depend -# Include dep, but only if it exists -ifeq ($(shell test -f .dep && echo .dep), .dep) -include .dep -else -ifdef LTLIBRARY -$(LTOBJECTS): $(HFILES) -else -$(OBJECTS): $(HFILES) -endif -endif +# $(Q)$(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1,' > .dep + diff --git a/io/Makefile b/io/Makefile index 59c2860..fc98166 100644 --- a/io/Makefile +++ b/io/Makefile @@ -63,7 +63,7 @@ ifeq ($(HAVE_FALLOCATE),yes) LCFLAGS += -DHAVE_FALLOCATE endif -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -74,3 +74,5 @@ install: default $(LTINSTALL) -m 755 xfs_freeze.sh $(PKG_SBIN_DIR)/xfs_freeze $(LTINSTALL) -m 755 xfs_mkfile.sh $(PKG_SBIN_DIR)/xfs_mkfile install-dev: + +-include .dep diff --git a/libdisk/Makefile b/libdisk/Makefile index 4c0dacb..32416a5 100644 --- a/libdisk/Makefile +++ b/libdisk/Makefile @@ -20,7 +20,7 @@ else LSRCFILES = $(LINUX_DRIVERS) endif -default: $(LTLIBRARY) +default: ltdepend $(LTLIBRARY) include $(BUILDRULES) @@ -29,3 +29,5 @@ install: default install-dev: default install-qa: install-dev + +-include .dep diff --git a/libhandle/Makefile b/libhandle/Makefile index 4ce0878..9422c34 100644 --- a/libhandle/Makefile +++ b/libhandle/Makefile @@ -15,7 +15,7 @@ LTLDFLAGS += -Wl,--version-script,libhandle.sym CFILES = handle.c jdm.c LSRCFILES = libhandle.sym -default: $(LTLIBRARY) +default: ltdepend $(LTLIBRARY) include $(BUILDRULES) @@ -26,3 +26,5 @@ install-dev: default $(INSTALL_LTLIB_DEV) install-qa: install-dev + +-include .dep diff --git a/libxcmd/Makefile b/libxcmd/Makefile index 53922b7..60b6f9e 100644 --- a/libxcmd/Makefile +++ b/libxcmd/Makefile @@ -28,8 +28,10 @@ ifeq ($(ENABLE_EDITLINE),yes) LCFLAGS += -DENABLE_EDITLINE endif -default: $(LTLIBRARY) +default: ltdepend $(LTLIBRARY) include $(BUILDRULES) install install-dev install-qa: default + +-include .dep diff --git a/libxfs/Makefile b/libxfs/Makefile index 1914927..8f80cdc 100644 --- a/libxfs/Makefile +++ b/libxfs/Makefile @@ -36,7 +36,7 @@ FCFLAGS = -I. # don't try linking xfs_repair with a debug libxfs. DEBUG = -DNDEBUG -default: $(LTLIBRARY) +default: ltdepend $(LTLIBRARY) include $(BUILDRULES) @@ -45,3 +45,5 @@ install: default install-dev: default install-qa: default + +-include .dep diff --git a/libxlog/Makefile b/libxlog/Makefile index 988d01c..7358fb1 100644 --- a/libxlog/Makefile +++ b/libxlog/Makefile @@ -15,8 +15,10 @@ CFILES = xfs_log_recover.c util.c # don't want to link xfs_repair with a debug libxlog. DEBUG = -DNDEBUG -default: $(LTLIBRARY) +default: ltdepend $(LTLIBRARY) include $(BUILDRULES) install install-dev install-qa: default + +-include .dep diff --git a/logprint/Makefile b/logprint/Makefile index 1c7d997..2d656a4 100644 --- a/logprint/Makefile +++ b/logprint/Makefile @@ -16,7 +16,7 @@ LLDLIBS = $(LIBXFS) $(LIBXLOG) $(LIBUUID) $(LIBRT) $(LIBPTHREAD) LTDEPENDENCIES = $(LIBXFS) $(LIBXLOG) LLDFLAGS = -static -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -24,3 +24,5 @@ install: default $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: + +-include .dep diff --git a/m4/package_utilies.m4 b/m4/package_utilies.m4 index f42bd6b..475ce0b 100644 --- a/m4/package_utilies.m4 +++ b/m4/package_utilies.m4 @@ -11,6 +11,23 @@ AC_DEFUN([AC_PACKAGE_NEED_UTILITY], ]) # +#check compiler can generate dependencies +# +AC_DEFUN([AC_PACKAGE_GCC_DEPS], + [AC_CACHE_CHECK(whether gcc -MM is supported, + ac_cv_gcc_nodeps, + [cat > conftest.c < + int main() { exit(0); } +EOF + ac_cv_gcc_nodeps=no + if ${CC} -MM conftest.c >/dev/null 2>&1; then + ac_cv_gcc_nodeps=yes + fi + rm -f conftest.c a.out + ]) + ]) +# # Generic macro, sets up all of the global build variables. # The following environment variables may be set to override defaults: # CC MAKE LIBTOOL TAR ZIP MAKEDEPEND AWK SED ECHO SORT @@ -44,10 +61,11 @@ AC_DEFUN([AC_PACKAGE_UTILITIES], zip=$ZIP AC_SUBST(zip) - if test -z "$MAKEDEPEND"; then - AC_PATH_PROG(MAKEDEPEND, makedepend, /bin/true) + AC_PACKAGE_GCC_DEPS() + makedepend="$cc -MM" + if test $ac_cv_gcc_nodeps = no; then + makedepend=/bin/true fi - makedepend=$MAKEDEPEND AC_SUBST(makedepend) if test -z "$AWK"; then diff --git a/mdrestore/Makefile b/mdrestore/Makefile index 6dc6cd4..fd35d80 100644 --- a/mdrestore/Makefile +++ b/mdrestore/Makefile @@ -12,7 +12,7 @@ LLDLIBS = $(LIBXFS) $(LIBRT) $(LIBPTHREAD) LTDEPENDENCIES = $(LIBXFS) LLDFLAGS = -static -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -20,3 +20,5 @@ install: $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: + +-include .dep diff --git a/mkfs/Makefile b/mkfs/Makefile index a749262..8b61c2f 100644 --- a/mkfs/Makefile +++ b/mkfs/Makefile @@ -27,7 +27,7 @@ endif LSRCFILES = $(FSTYP).c LDIRT = $(FSTYP) -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) ifneq ($(ENABLE_BLKID),yes) default: $(FSTYP) @@ -43,3 +43,5 @@ install: default $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR) $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_ROOT_SBIN_DIR) install-dev: + +-include .dep diff --git a/quota/Makefile b/quota/Makefile index 7aedd56..9c6411e 100644 --- a/quota/Makefile +++ b/quota/Makefile @@ -28,7 +28,7 @@ LLDLIBS += $(LIBEDITLINE) $(LIBTERMCAP) CFLAGS += -DENABLE_EDITLINE endif -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -36,3 +36,5 @@ install: default $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: + +-include .dep diff --git a/repair/Makefile b/repair/Makefile index fa96df5..b0e03f8 100644 --- a/repair/Makefile +++ b/repair/Makefile @@ -24,7 +24,7 @@ LLDLIBS = $(LIBXFS) $(LIBXLOG) $(LIBUUID) $(LIBRT) $(LIBPTHREAD) LTDEPENDENCIES = $(LIBXFS) $(LIBXLOG) LLDFLAGS = -static -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) globals.o: globals.h @@ -48,3 +48,5 @@ install: default $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR) $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_ROOT_SBIN_DIR) install-dev: + +-include .dep diff --git a/rtcp/Makefile b/rtcp/Makefile index 5f1a803..9a5b66f 100644 --- a/rtcp/Makefile +++ b/rtcp/Makefile @@ -9,7 +9,7 @@ LTCOMMAND = xfs_rtcp CFILES = xfs_rtcp.c LLDFLAGS = -static -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -17,3 +17,5 @@ install: default $(INSTALL) -m 755 -d $(PKG_SBIN_DIR) $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: + +-include .dep -- 1.6.5 From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 02:55:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0L8tvhr062428 for ; Thu, 21 Jan 2010 02:55:59 -0600 X-ASG-Debug-ID: 1264064218-16a902410000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C528C1C6A1EC; Thu, 21 Jan 2010 00:56:58 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FxbH40zqrRoZKNjS; Thu, 21 Jan 2010 00:56:58 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXsqV-0000Ea-RN; Thu, 21 Jan 2010 08:56:55 +0000 Date: Thu, 21 Jan 2010 03:56:55 -0500 From: Christoph Hellwig To: Tejun Heo Cc: lkml , Alex Elder , xfs@oss.sgi.com, Carsten Aulbert X-ASG-Orig-Subj: Re: Circular locking dependency warning involing xfs on 2.6.27 Subject: Re: Circular locking dependency warning involing xfs on 2.6.27 Message-ID: <20100121085655.GA687@infradead.org> References: <4B57ADB4.70002@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B57ADB4.70002@kernel.org> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264064218 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 21, 2010 at 10:28:20AM +0900, Tejun Heo wrote: > Hello, > > This is on a pretty old kernel but Carsten reports that it happens > occassionally in a pretty large setup involving 1500+ machines (please > feel free to fill in). This happens pretty sporadically so reporting > it just in case this is a yet unknown problem. As I understand it, > testing with newer kernel isn't out of question but it being a > production environment, not a very easy thing. I think the one below is gone. We still have a very similar one that can only happen during unmount, and we're trying to sort that one at the VFS level (see the current thread on -fsdevel) From andreas.utterberg@gmail.com Thu Jan 21 03:15:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_41 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0L9FnHF063248 for ; Thu, 21 Jan 2010 03:15:49 -0600 X-ASG-Debug-ID: 1264065409-396901f60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f209.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5C05617F6FA for ; Thu, 21 Jan 2010 01:16:49 -0800 (PST) Received: from mail-fx0-f209.google.com (mail-fx0-f209.google.com [209.85.220.209]) by cuda.sgi.com with ESMTP id 28gEXLthPMtALYZE for ; Thu, 21 Jan 2010 01:16:49 -0800 (PST) Received: by fxm1 with SMTP id 1so7546104fxm.36 for ; Thu, 21 Jan 2010 01:16:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=z7ICoUrll1kXXETEvRlhmbLT86y+WGmo2BjjT0hOp3E=; b=ujtmKSnJpvpxRvo/dZe+yBjJqvFi+SS/PGgV3UyE2ArStqi1rlQ7Tnc3YxAa2ENDNH f0VFDFlz7OAZfZAWDwSus5hUMMXVm9OiJgJvB68kmcX0rpZ+nZvYhZePrr/bSU4DvQg4 4n4bi2/CSbk5zwXucpJ3nEgw4K1bM2IBzDF08= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=q+uTWf/yhC1cg4szhXsjZcwNdTTKv5ZieZWSFxX/gn0W3dlElUIPNAbwE3k6vFMSxk uOgca2xmdpsyLwiol0POaTJyVTumJZUicrnb6VRJ+p1pK8XrPEsN9G6qHCB5XueY8g9L yItiPlmkhN4dibrP5EbstvsMznJmeOIpAikOo= MIME-Version: 1.0 Received: by 10.223.73.20 with SMTP id o20mr1093835faj.71.1264065405414; Thu, 21 Jan 2010 01:16:45 -0800 (PST) Date: Thu, 21 Jan 2010 10:16:45 +0100 Message-ID: <23d352591001210116s73926b58g97173d8a1b1e82c3@mail.gmail.com> X-ASG-Orig-Subj: Badness in xfs_write at fs/xfs/linux-2.6/xfs_lrw.c:838 Subject: Badness in xfs_write at fs/xfs/linux-2.6/xfs_lrw.c:838 From: andutt To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-fx0-f209.google.com[209.85.220.209] X-Barracuda-Start-Time: 1264065410 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20395 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Xfs foks I have some problem with an XFS filesystem, im running Suse SLES 10 SP2, with 2.6.16.60-0.42.7-smp kernel untop of a veritas 1Tb volume, a couple of times per day i get following in my kernel log. Badness in xfs_write at fs/xfs/linux-2.6/xfs_lrw.c:838 Call Trace: {:xfs:xfs_write+1415} {get_futex_key+71} {unqueue_me+134} {:xfs:xfs_file_aio_write+103} {do_sync_write+199} {default_wake_function+0} {find_extend_vma+22} {do_futex+1869} {autoremove_wake_function+0} {thread_return+0} {vfs_write+215} {sys_pwrite64+82} {error_exit+0} {system_call+126} Badness in xfs_write at fs/xfs/linux-2.6/xfs_lrw.c:838 I have used xfs_check on the device, and it did not report any errors and the filesystem is mounteble with no errors, do you guys have any idea:s on how to proceed?, or what could be the source of the problem? Thanx in advance! /Andreas From SRS0+Kn7d+50+fromorbit.com=dave@internode.on.net Thu Jan 21 03:49:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_13 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0L9nTOp065054 for ; Thu, 21 Jan 2010 03:49:30 -0600 X-ASG-Debug-ID: 1264067428-38c603a40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 47B1A12F42CD for ; Thu, 21 Jan 2010 01:50:29 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id 9ugSJlBVd9G46jJa for ; Thu, 21 Jan 2010 01:50:29 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11416768-1927428 for ; Thu, 21 Jan 2010 20:20:28 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NXtgI-0006pp-GN for xfs@oss.sgi.com; Thu, 21 Jan 2010 20:50:26 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NXtgG-0000ai-R8 for xfs@oss.sgi.com; Thu, 21 Jan 2010 20:50:24 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsdump: Automatic build dependency calculations Subject: [PATCH] xfsdump: Automatic build dependency calculations Date: Thu, 21 Jan 2010 20:50:24 +1100 Message-Id: <1264067424-2242-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1264067430 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20397 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently the xfsdump builds do not have any automatic dependency calculations. It relies on a separate make depend run to build or update dependency information. It also relies on an external makedepend binary. If that binary does not exist, the dependencies do not get calculated. To remove the dependency on makedepend, gcc can be used instead as it has a command to generate dependency information. This patch changes the dependency rule building to use gcc. In case anyone uses an old (several years) gcc compiler or a compiler that doesn't support gcc compatible dependency generation, a new configure check is added to turn off dependency checking so builds can still be done. To use the dependencies automatically, we need to use a special include makefile directive to include the build dependencies into the current makefile. Essentially once the dependencies are calculated, they can be included into the makefile and make will recalculate the build dependencies automatically based on that information. Hence we get a build that automatically calculates and keeps dependencies up to date without dependence on any external tools. Signed-off-by: Dave Chinner --- dump/Makefile | 6 +++++- include/buildrules | 36 +++++++++--------------------------- inventory/Makefile | 2 ++ invutil/Makefile | 6 +++++- librmt/Makefile | 4 +++- m4/package_utilies.m4 | 25 ++++++++++++++++++++++--- restore/Makefile | 6 +++++- 7 files changed, 51 insertions(+), 34 deletions(-) diff --git a/dump/Makefile b/dump/Makefile index a0c74dc..e0e6f34 100644 --- a/dump/Makefile +++ b/dump/Makefile @@ -94,7 +94,7 @@ LTDEPENDENCIES = $(LIBRMT) LCFLAGS = -DDUMP -DRMT -DBASED -DDOSOCKS -DINVCONVFIX -DSIZEEST -DPIPEINVFIX -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -105,6 +105,8 @@ install: default $(INSTALL) -S $(PKG_ROOT_SBIN_DIR)/$(LTCOMMAND) $(PKG_SBIN_DIR)/$(LTCOMMAND) install-dev: +depend: $(COMMINCL) $(COMMON) $(INVINCL) $(INVCOMMON) + $(COMMINCL) $(COMMON): @echo " [LN] $@" $(Q)$(RM) $@; $(LN_S) ../common/$@ $@ @@ -112,3 +114,5 @@ $(COMMINCL) $(COMMON): $(INVINCL) $(INVCOMMON): @echo " [LN] $@" $(Q)$(RM) $@; $(LN_S) ../inventory/$@ $@ + +-include .dep diff --git a/include/buildrules b/include/buildrules index a9eb092..625e85c 100644 --- a/include/buildrules +++ b/include/buildrules @@ -89,33 +89,15 @@ endif # _BUILDRULES_INCLUDED_ $(_FORCE): -.PHONY : depend +# dependency build is automatic, relies on gcc -MM to generate. +.PHONY : depend ltdepend -DEPENDSCRIPT := $(MAKEDEPEND) $(DEPENDFLAGS) -f - -- $(CFLAGS) -- $(CFILES) | \ - $(SED) \ - -e 's,`pwd`,$(TOPDIR),g' \ - -e 's, */[^ ]*,,g' \ - -e '/^[^ ]*: *$$/d' \ - -e '/^ *$$/d' +MAKEDEP := $(MAKEDEPEND) $(CFLAGS) -ifdef LTLIBRARY -DEPENDSCRIPT := $(DEPENDSCRIPT) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' -endif - -depend : $(CFILES) $(HFILES) $(addsuffix -depend,$(SUBDIRS)) - $(DEPENDSCRIPT) > .dep - test -s .dep || rm -f .dep +ltdepend: $(CFILES) $(HFILES) + @echo " [DEP]" + $(Q)$(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' > .dep -%-depend: - $(MAKE) -C $* depend - -# Include dep, but only if it exists -ifeq ($(shell test -f .dep && echo .dep), .dep) -include .dep -else -ifdef LTLIBRARY -$(LTOBJECTS): $(HFILES) $(LHFILES) -else -$(OBJECTS): $(HFILES) $(LHFILES) -endif -endif +depend: $(CFILES) $(HFILES) + @echo " [DEP]" + $(Q)$(MAKEDEP) $(CFILES) > .dep diff --git a/inventory/Makefile b/inventory/Makefile index 6624fba..4bc1e09 100644 --- a/inventory/Makefile +++ b/inventory/Makefile @@ -12,3 +12,5 @@ LSRCFILES = inv_api.c inv_core.c inv_fstab.c inv_idx.c inv_mgr.c \ default install install-dev: include $(BUILDRULES) + +-include .dep diff --git a/invutil/Makefile b/invutil/Makefile index 9e361f1..c5c61d1 100644 --- a/invutil/Makefile +++ b/invutil/Makefile @@ -61,7 +61,7 @@ else LSRCFILES += $(CURSESCOMMON) $(CURSESINCL) endif -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -70,6 +70,8 @@ install: default $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR) install-dev: +depend: $(COMMINCL) $(COMMON) $(INVINCL) $(INVCOMMON) + $(COMMINCL) $(COMMON): @echo " [LN] $@" $(Q)$(RM) $@; $(LN_S) ../common/$@ $@ @@ -77,3 +79,5 @@ $(COMMINCL) $(COMMON): $(INVINCL) $(INVCOMMON): @echo " [LN] $@" $(Q)$(RM) $@; $(LN_S) ../inventory/$@ $@ + +-include .dep diff --git a/librmt/Makefile b/librmt/Makefile index 2831375..2493d21 100644 --- a/librmt/Makefile +++ b/librmt/Makefile @@ -15,8 +15,10 @@ CFILES = \ rmtaccess.c rmtcreat.c rmtioctl.c rmtopen.c rmtwrite.c \ rmtmsg.c -default: $(LTLIBRARY) +default: ltdepend $(LTLIBRARY) include $(BUILDRULES) install install-dev: default + +-include .dep diff --git a/m4/package_utilies.m4 b/m4/package_utilies.m4 index f42bd6b..0c379c9 100644 --- a/m4/package_utilies.m4 +++ b/m4/package_utilies.m4 @@ -11,6 +11,24 @@ AC_DEFUN([AC_PACKAGE_NEED_UTILITY], ]) # +#check compiler can generate dependencies +# +AC_DEFUN([AC_PACKAGE_GCC_DEPS], + [AC_CACHE_CHECK(whether gcc -MM is supported, + ac_cv_gcc_nodeps, + [cat > conftest.c < + int main() { exit(0); } +EOF + ac_cv_gcc_nodeps=no + if ${CC} -MM conftest.c >/dev/null 2>&1; then + ac_cv_gcc_nodeps=yes + fi + rm -f conftest.c a.out + ]) + ]) + +# # Generic macro, sets up all of the global build variables. # The following environment variables may be set to override defaults: # CC MAKE LIBTOOL TAR ZIP MAKEDEPEND AWK SED ECHO SORT @@ -44,10 +62,11 @@ AC_DEFUN([AC_PACKAGE_UTILITIES], zip=$ZIP AC_SUBST(zip) - if test -z "$MAKEDEPEND"; then - AC_PATH_PROG(MAKEDEPEND, makedepend, /bin/true) + AC_PACKAGE_GCC_DEPS() + makedepend="$cc -MM" + if test $ac_cv_gcc_nodeps = no; then + makedepend=/bin/true fi - makedepend=$MAKEDEPEND AC_SUBST(makedepend) if test -z "$AWK"; then diff --git a/restore/Makefile b/restore/Makefile index a587632..d70f88d 100644 --- a/restore/Makefile +++ b/restore/Makefile @@ -106,7 +106,7 @@ LCFLAGS = -DRESTORE -DRMT -DBASED -DDOSOCKS -DINVCONVFIX -DPIPEINVFIX \ -DEOMFIX -DSESSCPLT -DWHITEPARSE -DNODECHK -DDIRENTHDR_CHECKSUM \ -DF_FSSETDM -default: $(LTCOMMAND) +default: depend $(LTCOMMAND) include $(BUILDRULES) @@ -117,6 +117,8 @@ install: default $(INSTALL) -S $(PKG_ROOT_SBIN_DIR)/$(LTCOMMAND) $(PKG_SBIN_DIR)/$(LTCOMMAND) install-dev: +depend: $(COMMINCL) $(COMMON) $(INVINCL) $(INVCOMMON) + $(COMMINCL) $(COMMON): @echo " [LN] $@" $(Q)$(RM) $@; $(LN_S) ../common/$@ $@ @@ -124,3 +126,5 @@ $(COMMINCL) $(COMMON): $(INVINCL) $(INVCOMMON): @echo " [LN] $@" $(Q)$(RM) $@; $(LN_S) ../inventory/$@ $@ + +-include .dep -- 1.6.5 From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 05:16:21 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LBGJMm068430 for ; Thu, 21 Jan 2010 05:16:21 -0600 X-ASG-Debug-ID: 1264072640-4b5302dc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E906D1C6A5F0 for ; Thu, 21 Jan 2010 03:17:20 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id y8RB7jpECcBXaHqz for ; Thu, 21 Jan 2010 03:17:20 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXv2O-0007Ao-6H; Thu, 21 Jan 2010 11:17:20 +0000 Date: Thu, 21 Jan 2010 06:17:20 -0500 From: Christoph Hellwig To: "Guk-Bong, Kwon" Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [help] project quota information incorrect over nfs ... Subject: Re: [help] project quota information incorrect over nfs ... Message-ID: <20100121111720.GA20641@infradead.org> References: <77cc6e171001202012y9472a42m849bcea8910ca290@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <77cc6e171001202012y9472a42m849bcea8910ca290@mail.gmail.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264072640 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 21, 2010 at 01:12:06PM +0900, Guk-Bong, Kwon wrote: > nfs client "nfs_server:/test/111" Size is correct..(100M) > > but nfs client "nfs_server:/test/111" Avail is incorrect.. (500M) > > "Avail" is big than "Size" ... > > this stat is normal?? No, it's not. The patch below should fix it, but I'm not sure how easily backportable it is to 2.6.27: Signed-off-by: Christoph Hellwig Index: linux-2.6/fs/xfs/quota/xfs_qm_bhv.c =================================================================== --- linux-2.6.orig/fs/xfs/quota/xfs_qm_bhv.c 2010-01-21 12:13:51.397003969 +0100 +++ linux-2.6/fs/xfs/quota/xfs_qm_bhv.c 2010-01-21 12:14:14.290009571 +0100 @@ -59,7 +59,7 @@ xfs_fill_statvfs_from_dquot( be64_to_cpu(dp->d_blk_hardlimit); if (limit && statp->f_blocks > limit) { statp->f_blocks = limit; - statp->f_bfree = + statp->f_bfree = statp->f_bavail = (statp->f_blocks > be64_to_cpu(dp->d_bcount)) ? (statp->f_blocks - be64_to_cpu(dp->d_bcount)) : 0; } From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 05:20:16 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LBKFAf068548 for ; Thu, 21 Jan 2010 05:20:16 -0600 X-ASG-Debug-ID: 1264072877-4b5a02e40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 593761C6A525 for ; Thu, 21 Jan 2010 03:21:17 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FPZEOED5c1Hl2Kgx for ; Thu, 21 Jan 2010 03:21:17 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXv6B-0007u7-RK; Thu, 21 Jan 2010 11:21:15 +0000 Date: Thu, 21 Jan 2010 06:21:15 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfstests: rebuild aclocal.m4 Subject: Re: [PATCH 1/2] xfstests: rebuild aclocal.m4 Message-ID: <20100121112115.GA27634@infradead.org> References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264053773-6054-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264072877 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 21, 2010 at 05:02:52PM +1100, Dave Chinner wrote: > The local m4 configuration has not been built in a long time. > Trying to rebuild it results in failures with dmapi library > detection and libxfs.h detection macros. Fix the errors and rebuild > it. > > Note: the new format for the aclocal.m4 file uses m4_include > directives which means it is much smaller th an before and won't > need updating unless we include new m4 macro files. Looks good, but shouldn't we create aclocal.m4 automocatically as part of make configure which generates the rest of the auto* stuff and stop having it checked into the git repository? From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 05:23:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LBNPk7068668 for ; Thu, 21 Jan 2010 05:23:25 -0600 X-ASG-Debug-ID: 1264073066-4b6c02e90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F3DB91C6A5F6 for ; Thu, 21 Jan 2010 03:24:26 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FATX9QUY27l3y5i6 for ; Thu, 21 Jan 2010 03:24:26 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXv9G-0007yl-MC; Thu, 21 Jan 2010 11:24:26 +0000 Date: Thu, 21 Jan 2010 06:24:26 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Subject: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Message-ID: <20100121112426.GB27634@infradead.org> References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264053773-6054-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264073067 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize \ > - preallo_rw_pattern_reader preallo_rw_pattern_writer ftrunc trunc \ > - fs_perms testx looptest locktest unwritten_mmap \ > + ftrunc trunc fs_perms testx looptest locktest unwritten_mmap \ > bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ > t_futimens > > +SUBDIRS = > + > LLDLIBS = $(LIBATTR) $(LIBHANDLE) $(LIBACL) > > ifeq ($(HAVE_XLOG_ASSIGN_LSN), true) > @@ -27,6 +28,7 @@ endif > IRIX_TARGETS = open_unlink > > ifeq ($(PKG_PLATFORM),linux) > +PREALLO_TARGETS = preallo_rw_pattern_reader What happens to the writer here? Before introducing more special cases for this duplicates let me post my patch to make the file compiled more normal, will send it out ASAP. Otherwise looks good to me. From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 05:31:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LBVnN1068998 for ; Thu, 21 Jan 2010 05:31:49 -0600 X-ASG-Debug-ID: 1264073570-2fed009f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C370317C452 for ; Thu, 21 Jan 2010 03:32:50 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 2BRwlkiIWAkgySJC for ; Thu, 21 Jan 2010 03:32:50 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXvHO-0000xI-5y for xfs@oss.sgi.com; Thu, 21 Jan 2010 11:32:50 +0000 Date: Thu, 21 Jan 2010 06:32:50 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: simplify build of preallo_rw_pattern_reader/writer Subject: [PATCH] xfstests: simplify build of preallo_rw_pattern_reader/writer Message-ID: <20100121113250.GA3580@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264073570 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Instead of having complicated build system hacks just create two two-line source files defining READ/WRITE and including iopat.c Signed-off-by: Christoph Hellwig Index: xfstests-dev/src/Makefile =================================================================== --- xfstests-dev.orig/src/Makefile 2010-01-21 11:24:43.000000000 +0000 +++ xfstests-dev/src/Makefile 2010-01-21 11:26:09.000000000 +0000 @@ -51,19 +51,9 @@ LDIRT = $(TARGETS) default: $(TARGETS) $(SUBDIRS) -PREALLO_TARGETS = preallo_rw_pattern_reader preallo_rw_pattern_writer - include $(BUILDRULES) -preallo_rw_pattern_reader: - @echo " [CC] $@" - $(Q)$(LTLINK) iopat.c -DREAD -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) - -preallo_rw_pattern_writer: - @echo " [CC] $@" - $(Q)$(LTLINK) iopat.c -DWRITE -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) - -$(filter-out $(PREALLO_TARGETS), $(TARGETS)): $(LIBTEST) +$(TARGETS): $(LIBTEST) @echo " [CC] $@" $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) Index: xfstests-dev/src/preallo_rw_pattern_reader.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests-dev/src/preallo_rw_pattern_reader.c 2010-01-21 11:24:19.000000000 +0000 @@ -0,0 +1,2 @@ +#define READ +#include "iopat.c" Index: xfstests-dev/src/preallo_rw_pattern_writer.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests-dev/src/preallo_rw_pattern_writer.c 2010-01-21 11:24:30.000000000 +0000 @@ -0,0 +1,2 @@ +#define WRITE +#include "iopat.c" From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 05:33:01 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_34 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LBX1Dh069044 for ; Thu, 21 Jan 2010 05:33:01 -0600 X-ASG-Debug-ID: 1264073642-306500ae0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B5EC017F65B for ; Thu, 21 Jan 2010 03:34:02 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id k2DA2Mp3XiLyDTF8 for ; Thu, 21 Jan 2010 03:34:02 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXvIY-00010j-E7 for xfs@oss.sgi.com; Thu, 21 Jan 2010 11:34:02 +0000 Date: Thu, 21 Jan 2010 06:34:02 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: fix format string warnings in locktest.c Subject: [PATCH] xfstests: fix format string warnings in locktest.c Message-ID: <20100121113402.GB3580@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264073642 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Christoph Hellwig Index: xfstests-dev/src/locktest.c =================================================================== --- xfstests-dev.orig/src/locktest.c 2010-01-21 11:26:53.000000000 +0000 +++ xfstests-dev/src/locktest.c 2010-01-21 11:27:13.000000000 +0000 @@ -741,7 +741,7 @@ send_ctl(void) if (nwrite < 0) perror("send_ctl: write"); else - fprintf(stderr, "send_ctl[%d]: write() returns %d, not %lu as expected\n", + fprintf(stderr, "send_ctl[%d]: write() returns %d, not %zu as expected\n", ctl.test, nwrite, sizeof(ctl)); exit(1); /*NOTREACHED*/ @@ -756,7 +756,7 @@ void recv_ctl(void) if (nread < 0) perror("recv_ctl: read"); else { - fprintf(stderr, "recv_ctl[%d]: read() returns %d, not %lu as expected\n", + fprintf(stderr, "recv_ctl[%d]: read() returns %d, not %zu as expected\n", ctl.test, nread, sizeof(ctl)); fprintf(stderr, "socket might has been closed by other locktest\n"); } From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 05:33:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LBXLis069071 for ; Thu, 21 Jan 2010 05:33:21 -0600 X-ASG-Debug-ID: 1264073661-103103940000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EFE5312F4A90 for ; Thu, 21 Jan 2010 03:34:22 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id EfF5i4iD7stxGCH2 for ; Thu, 21 Jan 2010 03:34:22 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXvIr-00011F-Et for xfs@oss.sgi.com; Thu, 21 Jan 2010 11:34:21 +0000 Date: Thu, 21 Jan 2010 06:34:21 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: fix format string warnings in aio-dio-extend-stat.c Subject: [PATCH] xfstests: fix format string warnings in aio-dio-extend-stat.c Message-ID: <20100121113421.GC3580@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264073662 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Christoph Hellwig Index: xfstests-dev/src/aio-dio-regress/aio-dio-extend-stat.c =================================================================== --- xfstests-dev.orig/src/aio-dio-regress/aio-dio-extend-stat.c 2010-01-21 11:27:36.000000000 +0000 +++ xfstests-dev/src/aio-dio-regress/aio-dio-extend-stat.c 2010-01-21 11:28:15.000000000 +0000 @@ -149,8 +149,9 @@ void fun_read(void *ptr) if (filestat.st_size < exSize) fail("write of %lu bytes @%llu finished, " "expected filesize at least %llu, but " - "got %ld\n", event->obj->u.c.nbytes, - event->obj->u.c.offset, exSize, filestat.st_size); + "got %lld\n", event->obj->u.c.nbytes, + event->obj->u.c.offset, exSize, + (long long)filestat.st_size); } } } From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 05:40:02 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LBe28f069525 for ; Thu, 21 Jan 2010 05:40:02 -0600 X-ASG-Debug-ID: 1264074063-47ee038f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8C1551C6A735 for ; Thu, 21 Jan 2010 03:41:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id X3nblGVA5RpiI5km for ; Thu, 21 Jan 2010 03:41:03 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXvPL-0002I3-8a; Thu, 21 Jan 2010 11:41:03 +0000 Date: Thu, 21 Jan 2010 06:41:03 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: Automatic build dependency calculations Subject: Re: [PATCH] xfsprogs: Automatic build dependency calculations Message-ID: <20100121114103.GA8789@infradead.org> References: <1264059798-25085-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264059798-25085-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264074063 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, and gcc can create dependencies since at least 2.7 days, so basically forever. Reviewed-by: Christoph Hellwig From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 05:40:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LBeP4Y069555 for ; Thu, 21 Jan 2010 05:40:26 -0600 X-ASG-Debug-ID: 1264074086-2ddf01330000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3D3C612F4AA6 for ; Thu, 21 Jan 2010 03:41:27 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id AhOshEDV82EKlnCi for ; Thu, 21 Jan 2010 03:41:27 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXvPi-0002Ih-NP; Thu, 21 Jan 2010 11:41:26 +0000 Date: Thu, 21 Jan 2010 06:41:26 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsdump: Automatic build dependency calculations Subject: Re: [PATCH] xfsdump: Automatic build dependency calculations Message-ID: <20100121114126.GB8789@infradead.org> References: <1264067424-2242-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264067424-2242-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264074087 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 06:18:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LCI5il070883 for ; Thu, 21 Jan 2010 06:18:07 -0600 X-ASG-Debug-ID: 1264076346-61d0015b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 30D7F1C6A932; Thu, 21 Jan 2010 04:19:06 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 88e7ba8qxP1OkEep; Thu, 21 Jan 2010 04:19:06 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NXw08-0000Sz-Gp; Thu, 21 Jan 2010 12:19:04 +0000 Date: Thu, 21 Jan 2010 07:19:04 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Egger , hch@infradead.org, xfs-masters@oss.sgi.com, Reinhard.Tartler@informatik.uni-erlangen.de, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Obsolete config in kernel build system (XFS_TRACE) Subject: Re: Obsolete config in kernel build system (XFS_TRACE) Message-ID: <20100121121904.GA1082@infradead.org> References: <20100120125249.GC3580@faui49.informatik.uni-erlangen.de> <20100120224626.GP14035@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100120224626.GP14035@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264076347 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 21, 2010 at 09:46:26AM +1100, Dave Chinner wrote: > Christoph's conversion to use the kernel trace infrastructure is > a work in progress. It's no small task - he's converted around 220 > trace points points so far. > > However, the btree tracing code has not been converted yet. IIRC > this is because the kernel trace code didn't have the required > infrastructure at the time of initial conversion. Hence the old code > has not yet been completely removed because the conversion is not > yet complete. It will go away when the conversion is completed. The btree ones are rather difficult because it will require attaching difference events to a single tracepoint and filter on which one we want, so it may take a bit of time. The existing xfs_btree_trace.c won't be much use for that and if we really need it we can look at it in git history. Christoph, can you send a properly signed off patch to kill xfs_btree_trace.c and and the #ifdef XFS_BTREE_TRACE code in xfs_btree_trace.h? From aelder@sgi.com Thu Jan 21 08:00:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LE07Yi075674 for ; Thu, 21 Jan 2010 08:00:07 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 69CC38F8037; Thu, 21 Jan 2010 06:01:06 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfstests: simplify build of preallo_rw_pattern_reader/writer Date: Thu, 21 Jan 2010 08:00:14 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69AA@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100121113250.GA3580@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfstests: simplify build of preallo_rw_pattern_reader/writer Thread-Index: Acqajca+f2c3FPa4RMqQQrTaD0bC6wAFCUhw From: "Alex Elder" To: "Christoph Hellwig" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Instead of having complicated build system hacks just create two = two-line > source files defining READ/WRITE and including iopat.c Kind of a coin toss which is better... But this is simpler. > Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder > Index: xfstests-dev/src/Makefile > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfstests-dev.orig/src/Makefile 2010-01-21 11:24:43.000000000 +0000 > +++ xfstests-dev/src/Makefile 2010-01-21 11:26:09.000000000 +0000 > @@ -51,19 +51,9 @@ LDIRT =3D $(TARGETS) >=20 > default: $(TARGETS) $(SUBDIRS) >=20 > -PREALLO_TARGETS =3D preallo_rw_pattern_reader = preallo_rw_pattern_writer > - > include $(BUILDRULES) >=20 > -preallo_rw_pattern_reader: > - @echo " [CC] $@" > - $(Q)$(LTLINK) iopat.c -DREAD -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) = $(LIBTEST) > - > -preallo_rw_pattern_writer: > - @echo " [CC] $@" > - $(Q)$(LTLINK) iopat.c -DWRITE -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) = $(LIBTEST) > - > -$(filter-out $(PREALLO_TARGETS), $(TARGETS)): $(LIBTEST) > +$(TARGETS): $(LIBTEST) > @echo " [CC] $@" > $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(LIBTEST) >=20 > Index: xfstests-dev/src/preallo_rw_pattern_reader.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ xfstests-dev/src/preallo_rw_pattern_reader.c 2010-01-21 = 11:24:19.000000000 +0000 > @@ -0,0 +1,2 @@ > +#define READ > +#include "iopat.c" > Index: xfstests-dev/src/preallo_rw_pattern_writer.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ xfstests-dev/src/preallo_rw_pattern_writer.c 2010-01-21 = 11:24:30.000000000 +0000 > @@ -0,0 +1,2 @@ > +#define WRITE > +#include "iopat.c" >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Thu Jan 21 08:01:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LE1HE3075737 for ; Thu, 21 Jan 2010 08:01:17 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 525BE8F8037; Thu, 21 Jan 2010 06:02:19 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfstests: fix format string warnings in aio-dio-extend-stat.c Date: Thu, 21 Jan 2010 08:01:13 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69AB@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100121113421.GC3580@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfstests: fix format string warnings in aio-dio-extend-stat.c Thread-Index: AcqajcbMCK1Ey3n8RYirKWxc+DP7MQAFF44w From: "Alex Elder" To: "Christoph Hellwig" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Alex Elder > Index: xfstests-dev/src/aio-dio-regress/aio-dio-extend-stat.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfstests-dev.orig/src/aio-dio-regress/aio-dio-extend-stat.c = 2010-01-21 11:27:36.000000000 > +0000 +++ xfstests-dev/src/aio-dio-regress/aio-dio-extend-stat.c = 2010-01-21 11:28:15.000000000 > +0000 @@ -149,8 +149,9 @@ void fun_read(void *ptr) > if (filestat.st_size < exSize) > fail("write of %lu bytes @%llu finished, " > "expected filesize at least %llu, but " > - "got %ld\n", event->obj->u.c.nbytes, > - event->obj->u.c.offset, exSize, filestat.st_size); > + "got %lld\n", event->obj->u.c.nbytes, > + event->obj->u.c.offset, exSize, > + (long long)filestat.st_size); > } > } > } >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Thu Jan 21 08:02:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_34 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LE2Itt075778 for ; Thu, 21 Jan 2010 08:02:18 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1F6998F80B9; Thu, 21 Jan 2010 06:03:20 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfstests: fix format string warnings in locktest.c Date: Thu, 21 Jan 2010 08:02:25 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69AC@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100121113402.GB3580@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfstests: fix format string warnings in locktest.c Thread-Index: Acqajcbub+BlbRP+RO6/Q7HSLb8H9wAFI3VA From: "Alex Elder" To: "Christoph Hellwig" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Alex Elder > Index: xfstests-dev/src/locktest.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfstests-dev.orig/src/locktest.c 2010-01-21 11:26:53.000000000 = +0000 > +++ xfstests-dev/src/locktest.c 2010-01-21 11:27:13.000000000 +0000 > @@ -741,7 +741,7 @@ send_ctl(void) > if (nwrite < 0) > perror("send_ctl: write"); > else > - fprintf(stderr, "send_ctl[%d]: write() returns %d, not = %lu as expected\n", > + fprintf(stderr, "send_ctl[%d]: write() returns %d, not = %zu as expected\n", > ctl.test, nwrite, sizeof(ctl)); > exit(1); > /*NOTREACHED*/ > @@ -756,7 +756,7 @@ void recv_ctl(void) > if (nread < 0) > perror("recv_ctl: read"); > else { > - fprintf(stderr, "recv_ctl[%d]: read() returns %d, not %lu = as expected\n", > + fprintf(stderr, "recv_ctl[%d]: read() returns %d, not %zu = as expected\n", > ctl.test, nread, sizeof(ctl)); > fprintf(stderr, "socket might has been closed by other = locktest\n"); > } >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Thu Jan 21 10:33:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_34 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LGXku9081571 for ; Thu, 21 Jan 2010 10:33:46 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id CC9DC8F8037; Thu, 21 Jan 2010 08:34:44 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfstests: fix format string warnings in locktest.c Date: Thu, 21 Jan 2010 10:34:12 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69AE@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69AC@cf--amer001e--3.americas.sgi.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfstests: fix format string warnings in locktest.c Thread-Index: Acqajcbub+BlbRP+RO6/Q7HSLb8H9wAFI3VAAAU4OmA= From: "Alex Elder" To: "Christoph Hellwig" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alex Elder wrote: > Christoph Hellwig wrote: >> Signed-off-by: Christoph Hellwig >=20 > Looks good. >=20 > Reviewed-by: Alex Elder By the way, the content of this patch is already incorporated in Dave's patch "[7/8] xfstests: fix printf warnings in loctest.c". http://patchwork.xfs.org/patch/517/ >> Index: xfstests-dev/src/locktest.c >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- xfstests-dev.orig/src/locktest.c 2010-01-21 11:26:53.000000000 = +0000 >> +++ xfstests-dev/src/locktest.c 2010-01-21 11:27:13.000000000 +0000 >> @@ -741,7 +741,7 @@ send_ctl(void) >> if (nwrite < 0) >> perror("send_ctl: write"); >> else >> - fprintf(stderr, "send_ctl[%d]: write() returns %d, not = %lu as expected\n", >> + fprintf(stderr, "send_ctl[%d]: write() returns %d, not = %zu as expected\n", >> ctl.test, nwrite, sizeof(ctl)); = exit(1); >> /*NOTREACHED*/ >> @@ -756,7 +756,7 @@ void recv_ctl(void) >> if (nread < 0) >> perror("recv_ctl: read"); >> else { >> - fprintf(stderr, "recv_ctl[%d]: read() returns %d, not = %lu as expected\n", >> + fprintf(stderr, "recv_ctl[%d]: read() returns %d, not = %zu as expected\n", >> ctl.test, nread, sizeof(ctl)); >> fprintf(stderr, "socket might has been closed by other = locktest\n"); } >>=20 >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 11:31:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LHVaDq084894 for ; Thu, 21 Jan 2010 11:31:38 -0600 X-ASG-Debug-ID: 1264095158-4e11013d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7897F18052A; Thu, 21 Jan 2010 09:32:38 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gtFv0XjbvKKbisiT; Thu, 21 Jan 2010 09:32:38 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NY0tZ-0006ik-R7; Thu, 21 Jan 2010 17:32:37 +0000 Date: Thu, 21 Jan 2010 12:32:37 -0500 From: Christoph Hellwig To: Alex Elder Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: fix format string warnings in locktest.c Subject: Re: [PATCH] xfstests: fix format string warnings in locktest.c Message-ID: <20100121173237.GA25322@infradead.org> References: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69AC@cf--amer001e--3.americas.sgi.com> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69AE@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69AE@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264095158 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 21, 2010 at 10:34:12AM -0600, Alex Elder wrote: > Alex Elder wrote: > > Christoph Hellwig wrote: > >> Signed-off-by: Christoph Hellwig > > > > Looks good. > > > > Reviewed-by: Alex Elder > > By the way, the content of this patch is already incorporated > in Dave's patch "[7/8] xfstests: fix printf warnings in loctest.c". > http://patchwork.xfs.org/patch/517/ Dave fixed the warnings not quite correctly, he switched from %d which was totally wrong to %lu which is only correct on some 64-bit architectures. %zd is the really correct format. From aelder@sgi.com Thu Jan 21 11:49:39 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LHnckb086084 for ; Thu, 21 Jan 2010 11:49:38 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9B12030407A; Thu, 21 Jan 2010 09:50:37 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH] xfstests: fix format string warnings in locktest.c Date: Thu, 21 Jan 2010 11:50:17 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69B0@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100121173237.GA25322@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH] xfstests: fix format string warnings in locktest.c Thread-Index: Acqav7y3s608mbucTleoAK6Mz+xSyQAAlh0w From: "Alex Elder" To: "Christoph Hellwig" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Thu, Jan 21, 2010 at 10:34:12AM -0600, Alex Elder wrote: >> Alex Elder wrote: >>> Christoph Hellwig wrote: >>>> Signed-off-by: Christoph Hellwig >>>=20 >>> Looks good. >>>=20 >>> Reviewed-by: Alex Elder >>=20 >> By the way, the content of this patch is already incorporated >> in Dave's patch "[7/8] xfstests: fix printf warnings in loctest.c". >> http://patchwork.xfs.org/patch/517/ >=20 > Dave fixed the warnings not quite correctly, he switched from %d which > was totally wrong to %lu which is only correct on some 64-bit > architectures. %zd is the really correct format. Ah, yes, you are correct. So the right fix is a combination of the two patches. All I noticed was that when I tried to apply your patch on top of Dave's it didn't work... Thanks. -Alex From BATV+fee1f7e309884113e613+2342+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 21 11:53:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LHrXSd086434 for ; Thu, 21 Jan 2010 11:53:34 -0600 X-ASG-Debug-ID: 1264096475-74c900210000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 922AA18024C; Thu, 21 Jan 2010 09:54:35 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id rUD0LBm44sKgGxPA; Thu, 21 Jan 2010 09:54:35 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NY1Eo-0001lO-Vq; Thu, 21 Jan 2010 17:54:34 +0000 Date: Thu, 21 Jan 2010 12:54:34 -0500 From: Christoph Hellwig To: Alex Elder Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: fix format string warnings in locktest.c Subject: Re: [PATCH] xfstests: fix format string warnings in locktest.c Message-ID: <20100121175434.GA6681@infradead.org> References: <20100121173237.GA25322@infradead.org> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69B0@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69B0@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264096475 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 21, 2010 at 11:50:17AM -0600, Alex Elder wrote: > Ah, yes, you are correct. So the right fix is a combination > of the two patches. All I noticed was that when I tried to > apply your patch on top of Dave's it didn't work... I just commited mine to the xfstests-dev tree which already contains Dave's patch and everything went fine. From aelder@sgi.com Thu Jan 21 13:05:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_63,J_CHICKENPOX_74 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LJ5UAs089400 for ; Thu, 21 Jan 2010 13:05:31 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id C47A08F80C8; Thu, 21 Jan 2010 11:06:29 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: replace KM_LARGE with explicit vmalloc use Date: Thu, 21 Jan 2010 13:06:21 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69B1@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100120215530.GA27535@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: replace KM_LARGE with explicit vmalloc use Thread-Index: AcqaHJzYJuaIL7N1S6+HZvNRELMzBwAsBgrA From: "Alex Elder" To: "Christoph Hellwig" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > We use the KM_LARGE flag to make kmem_alloc and friends use vmalloc if > nessecary. As we only need this for a few boot/mount time allocations > just switch to explicit vmalloc calls there. I like this. Simplifies kmalloc for everybody... > Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder > Index: xfs/fs/xfs/linux-2.6/kmem.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/linux-2.6/kmem.c 2010-01-17 13:33:52.749254562 = +0100 > +++ xfs/fs/xfs/linux-2.6/kmem.c 2010-01-17 21:07:10.919003863 +0100 > @@ -16,7 +16,6 @@ > * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > */ > #include > -#include > #include > #include > #include > @@ -24,8 +23,25 @@ > #include "time.h" > #include "kmem.h" >=20 > -#define MAX_VMALLOCS 6 > -#define MAX_SLAB_SIZE 0x20000 > +/* > + * Greedy allocation. May fail and may return vmalloced memory. > + * > + * Must be freed using kmem_free_large. > + */ > +void * > +kmem_zalloc_greedy(size_t *size, size_t minsize, size_t maxsize) > +{ > + void *ptr; > + size_t kmsize =3D maxsize; > + > + while (!(ptr =3D kmem_zalloc_large(kmsize))) { > + if ((kmsize >>=3D 1) <=3D minsize) > + kmsize =3D minsize; > + } > + if (ptr) > + *size =3D kmsize; > + return ptr; > +} >=20 > void * > kmem_alloc(size_t size, unsigned int __nocast flags) > @@ -34,19 +50,8 @@ kmem_alloc(size_t size, unsigned int __n > gfp_t lflags =3D kmem_flags_convert(flags); > void *ptr; >=20 > -#ifdef DEBUG > - if (unlikely(!(flags & KM_LARGE) && (size > PAGE_SIZE))) { > - printk(KERN_WARNING "Large %s attempt, size=3D%ld\n", > - __func__, (long)size); > - dump_stack(); > - } > -#endif > - > do { > - if (size < MAX_SLAB_SIZE || retries > MAX_VMALLOCS) > - ptr =3D kmalloc(size, lflags); > - else > - ptr =3D __vmalloc(size, lflags, PAGE_KERNEL); > + ptr =3D kmalloc(size, lflags); > if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP))) > return ptr; > if (!(++retries % 100)) > @@ -68,27 +73,6 @@ kmem_zalloc(size_t size, unsigned int __ > return ptr; > } >=20 > -void * > -kmem_zalloc_greedy(size_t *size, size_t minsize, size_t maxsize, > - unsigned int __nocast flags) > -{ > - void *ptr; > - size_t kmsize =3D maxsize; > - unsigned int kmflags =3D (flags & ~KM_SLEEP) | KM_NOSLEEP; > - > - while (!(ptr =3D kmem_zalloc(kmsize, kmflags))) { > - if ((kmsize <=3D minsize) && (flags & KM_NOSLEEP)) > - break; > - if ((kmsize >>=3D 1) <=3D minsize) { > - kmsize =3D minsize; > - kmflags =3D flags; > - } > - } > - if (ptr) > - *size =3D kmsize; > - return ptr; > -} > - > void > kmem_free(const void *ptr) > { > Index: xfs/fs/xfs/linux-2.6/kmem.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/linux-2.6/kmem.h 2010-01-17 13:33:52.755254557 = +0100 > +++ xfs/fs/xfs/linux-2.6/kmem.h 2010-01-17 21:07:10.919003863 +0100 > @@ -21,6 +21,7 @@ > #include > #include > #include > +#include >=20 > /* > * General memory allocation interfaces > @@ -30,7 +31,6 @@ > #define KM_NOSLEEP 0x0002u > #define KM_NOFS 0x0004u > #define KM_MAYFAIL 0x0008u > -#define KM_LARGE 0x0010u >=20 > /* > * We use a special process flag to avoid recursive callbacks into > @@ -42,7 +42,7 @@ kmem_flags_convert(unsigned int __nocast > { > gfp_t lflags; >=20 > - BUG_ON(flags & ~(KM_SLEEP|KM_NOSLEEP|KM_NOFS|KM_MAYFAIL|KM_LARGE)); > + BUG_ON(flags & ~(KM_SLEEP|KM_NOSLEEP|KM_NOFS|KM_MAYFAIL)); >=20 > if (flags & KM_NOSLEEP) { > lflags =3D GFP_ATOMIC | __GFP_NOWARN; > @@ -56,10 +56,25 @@ kmem_flags_convert(unsigned int __nocast >=20 > extern void *kmem_alloc(size_t, unsigned int __nocast); > extern void *kmem_zalloc(size_t, unsigned int __nocast); > -extern void *kmem_zalloc_greedy(size_t *, size_t, size_t, unsigned = int __nocast); > extern void *kmem_realloc(const void *, size_t, size_t, unsigned int = __nocast); > extern void kmem_free(const void *); >=20 > +static inline void *kmem_zalloc_large(size_t size) > +{ > + void *ptr; > + > + ptr =3D vmalloc(size); > + if (ptr) > + memset(ptr, 0, size); > + return ptr; > +} > +static inline void kmem_free_large(void *ptr) > +{ > + vfree(ptr); > +} > + > +extern void *kmem_zalloc_greedy(size_t *, size_t, size_t); > + > /* > * Zone interfaces > */ > Index: xfs/fs/xfs/quota/xfs_qm.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/quota/xfs_qm.c 2010-01-17 13:33:52.767254546 +0100 > +++ xfs/fs/xfs/quota/xfs_qm.c 2010-01-17 21:07:10.921003908 +0100 > @@ -118,9 +118,14 @@ xfs_Gqm_init(void) > */ > udqhash =3D kmem_zalloc_greedy(&hsize, > XFS_QM_HASHSIZE_LOW * sizeof(xfs_dqhash_t), > - XFS_QM_HASHSIZE_HIGH * sizeof(xfs_dqhash_t), > - KM_SLEEP | KM_MAYFAIL | KM_LARGE); > - gdqhash =3D kmem_zalloc(hsize, KM_SLEEP | KM_LARGE); > + XFS_QM_HASHSIZE_HIGH * sizeof(xfs_dqhash_t)); > + if (!udqhash) > + goto out; > + > + gdqhash =3D kmem_zalloc_large(hsize); > + if (!udqhash) > + goto out_free_udqhash; > + > hsize /=3D sizeof(xfs_dqhash_t); > ndquot =3D hsize << 8; >=20 > @@ -170,6 +175,11 @@ xfs_Gqm_init(void) > mutex_init(&qcheck_lock); > #endif > return xqm; > + > + out_free_udqhash: > + kmem_free_large(udqhash); > + out: > + return NULL; > } >=20 > /* > @@ -189,8 +199,8 @@ xfs_qm_destroy( > xfs_qm_list_destroy(&(xqm->qm_usr_dqhtable[i])); > xfs_qm_list_destroy(&(xqm->qm_grp_dqhtable[i])); > } > - kmem_free(xqm->qm_usr_dqhtable); > - kmem_free(xqm->qm_grp_dqhtable); > + kmem_free_large(xqm->qm_usr_dqhtable); > + kmem_free_large(xqm->qm_grp_dqhtable); > xqm->qm_usr_dqhtable =3D NULL; > xqm->qm_grp_dqhtable =3D NULL; > xqm->qm_dqhashmask =3D 0; > @@ -219,8 +229,12 @@ xfs_qm_hold_quotafs_ref( > */ > mutex_lock(&xfs_Gqm_lock); >=20 > - if (xfs_Gqm =3D=3D NULL) > + if (!xfs_Gqm) { > xfs_Gqm =3D xfs_Gqm_init(); > + if (!xfs_Gqm) > + return ENOMEM; > + } > + > /* > * We can keep a list of all filesystems with quotas mounted for > * debugging and statistical purposes, but ... > Index: xfs/fs/xfs/xfs_itable.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/xfs_itable.c 2010-01-17 13:33:52.778254478 +0100 > +++ xfs/fs/xfs/xfs_itable.c 2010-01-17 21:07:10.922012487 +0100 > @@ -408,8 +408,10 @@ xfs_bulkstat( > (XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog); > nimask =3D ~(nicluster - 1); > nbcluster =3D nicluster >> mp->m_sb.sb_inopblog; > - irbuf =3D kmem_zalloc_greedy(&irbsize, PAGE_SIZE, PAGE_SIZE * 4, > - KM_SLEEP | KM_MAYFAIL | KM_LARGE); > + irbuf =3D kmem_zalloc_greedy(&irbsize, PAGE_SIZE, PAGE_SIZE * 4); > + if (!irbuf) > + return ENOMEM; > + > nirbuf =3D irbsize / sizeof(*irbuf); >=20 > /* > @@ -727,7 +729,7 @@ xfs_bulkstat( > /* > * Done, we're either out of filesystem or space to put the data. > */ > - kmem_free(irbuf); > + kmem_free_large(irbuf); > *ubcountp =3D ubelem; > /* > * Found some inodes, return them now and return the error next = time. > Index: xfs/fs/xfs/linux-2.6/xfs_buf.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2010-01-17 15:06:01.607003933 = +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2010-01-17 21:07:10.924003662 +0100 > @@ -1525,8 +1525,8 @@ xfs_alloc_bufhash( >=20 > btp->bt_hashshift =3D external ? 3 : 8; /* 8 or 256 buckets */ > btp->bt_hashmask =3D (1 << btp->bt_hashshift) - 1; > - btp->bt_hash =3D kmem_zalloc((1 << btp->bt_hashshift) * > - sizeof(xfs_bufhash_t), KM_SLEEP | KM_LARGE); > + btp->bt_hash =3D kmem_zalloc_large((1 << btp->bt_hashshift) * > + sizeof(xfs_bufhash_t)); > for (i =3D 0; i < (1 << btp->bt_hashshift); i++) { > spin_lock_init(&btp->bt_hash[i].bh_lock); > INIT_LIST_HEAD(&btp->bt_hash[i].bh_list); > @@ -1537,7 +1537,7 @@ STATIC void > xfs_free_bufhash( > xfs_buftarg_t *btp) > { > - kmem_free(btp->bt_hash); > + kmem_free_large(btp->bt_hash); > btp->bt_hash =3D NULL; > } >=20 >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@sgi.com Thu Jan 21 15:36:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.2 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_54,J_CHICKENPOX_55,J_CHICKENPOX_62, J_CHICKENPOX_65,J_CHICKENPOX_74 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LLa8K9094174 for ; Thu, 21 Jan 2010 15:36:08 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id 121A68F80EB for ; Thu, 21 Jan 2010 13:37:07 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: [RFC] xfstests: define an INTENSITY level for testing Date: Thu, 21 Jan 2010 15:36:07 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69B2@cf--amer001e--3.americas.sgi.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [RFC] xfstests: define an INTENSITY level for testing Thread-Index: Acqa4cHxIvMxEtKVQ0mbZLkfivAKnA== From: "Alex Elder" To: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean I've often felt it would be nice if testing could be done to a specified level of intensity. That way, for example, I could perform a full suite of tests but have them just do very basic stuff, so that I get coverage but without having to wait as long as is required for a hard-core test. Similarly, before a release I'd like to run tests exhaustively, to make sure things get really exercised. Right now there is a "quick" group defined for xfstests, but what I'm talking about is more of a parameter applied to all tests so that certain functions could be lightly tested that might not otherwise be covered by one of the "quick" ones. We might even be able to get rid of the "quick" group. And an inherently long-running test might make itself not run if the intensity level was not high enough. So I propse we defined a global, set in common.rc, which defines an integer 0 < INTENSITY <=3D 100, which would define how hard each test should push. INTENSITY of 100, would cause all tests would do their most exhaustive and/or demanding exercises. INTENSITY of 1 would do very superficial testing. Default might be 50. Tests can simply ignore the INTENSITY value, and initially that will be the case for most tests. It may not even make sense for a given test to have its activity scaled by this setting. Once we define it though, tests can be adapted to make use of it where possible. Below is a patch that shows how such feature might be used for tests 104 and 109. -Alex --- 104 | 2 +- 109 | 2 +- common | 37 +++++++++++++++++++++++++++++++++++-- 3 files changed, 37 insertions(+), 4 deletions(-) Index: b/104 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- a/104 +++ b/104 @@ -58,7 +58,7 @@ _fill_scratch() _stress_scratch() { procs=3D3 - nops=3D1000 + nops=3D$(expr 20 \* "${INTENSITY}") # Default 1000 # -w ensures that the only ops are ones which cause write I/O $FSSTRESS_PROG -d $SCRATCH_MNT -w -p $procs -n $nops $FSSTRESS_AVOID > = /dev/null & } Index: b/109 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- a/109 +++ b/109 @@ -96,7 +96,7 @@ umount $SCRATCH_DEV 2>/dev/null _scratch_mount =20 # see if faststart is possible (and requested) -files=3D2000 +files=3D$(expr 40 \* "${INTENSITY}") # Default 2000 faststart=3D"" if [ -n "$FASTSTART" -a -f $SCRATCH_MNT/f0 ]; then faststart=3D"-N" # causes us to skip the mkfs step Index: b/common =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- a/common +++ b/common @@ -42,6 +42,8 @@ sortme=3Dfalse expunge=3Dtrue have_test_arg=3Dfalse randomize=3Dfalse +iflag=3Dfalse +export INTENSITY=3D50 rm -f $tmp.list $tmp.tmp $tmp.sed =20 # Autodetect fs type based on what's on $TEST_DEV @@ -54,8 +56,26 @@ fi =20 for r do - - if $group + if $iflag + then + # make sure next arg is a number + if [ $(expr match "$r" '[0-9]\+' =3D length "$r") =3D 1 ] + then + # and it is in range + if [ "$r" -gt 0 -a "$r" -le 100 ] + then + INTENSITY=3D$r + else + echo "Intensity \"$r\" is out of range (must be 1-100)" + exit 1 + fi + else + echo "Intensity \"$r\" is not a (valid) number" + exit 1 + fi + iflag=3Dfalse + continue + elif $group then # arg after -g group_list=3D`sed -n set intensity level (1-100, default 50) =20 testlist options -g group[,group...] include tests from these groups @@ -162,6 +183,12 @@ testlist options xpand=3Dfalse ;; =20 + -i) # -i intensity ... set testing intensity + shift + iflag=3Dtrue + xpand=3Dfalse + ;; + -l) # line mode for diff, was default before diff=3D"diff" xpand=3Dfalse @@ -268,6 +295,12 @@ BEGIN { for (t=3D'$start'; t<=3D'$end'; t++) =20 done =20 +if $iflag +then + echo "No intensity value specified with -i" + exit 1 +fi + if [ -s $tmp.list ] then # found some valid test numbers ... this is good From aelder@sgi.com Thu Jan 21 15:54:37 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LLsbo7095302 for ; Thu, 21 Jan 2010 15:54:37 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id 44A0EAC006; Thu, 21 Jan 2010 13:55:35 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [help] project quota information incorrect over nfs ... Date: Thu, 21 Jan 2010 15:55:26 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69B3@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100121111720.GA20641@infradead.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [help] project quota information incorrect over nfs ... Thread-Index: AcqajcbfhqcG3kDHQ3e3n/dnXJX5swAVWwDw From: "Alex Elder" To: "Christoph Hellwig" , "Guk-Bong, Kwon" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Thu, Jan 21, 2010 at 01:12:06PM +0900, Guk-Bong, Kwon wrote: >> nfs client "nfs_server:/test/111" Size is correct..(100M) >>=20 >> but nfs client "nfs_server:/test/111" Avail is incorrect.. (500M) >>=20 >> "Avail" is big than "Size" ... >>=20 >> this stat is normal?? >=20 > No, it's not. The patch below should fix it, but I'm not sure how > easily backportable it is to 2.6.27: I'm going to take this as a [PATCH] and say it looks good to me. It will probably not be difficult for someone to port it back to 2.6.27. > Signed-off-by: Christoph Hellwig Reviewed-by: Alex Elder > Index: linux-2.6/fs/xfs/quota/xfs_qm_bhv.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- linux-2.6.orig/fs/xfs/quota/xfs_qm_bhv.c 2010-01-21 = 12:13:51.397003969 +0100 > +++ linux-2.6/fs/xfs/quota/xfs_qm_bhv.c 2010-01-21 12:14:14.290009571 = +0100 > @@ -59,7 +59,7 @@ xfs_fill_statvfs_from_dquot( > be64_to_cpu(dp->d_blk_hardlimit); > if (limit && statp->f_blocks > limit) { > statp->f_blocks =3D limit; > - statp->f_bfree =3D > + statp->f_bfree =3D statp->f_bavail =3D > (statp->f_blocks > be64_to_cpu(dp->d_bcount)) ? > (statp->f_blocks - be64_to_cpu(dp->d_bcount)) : 0; > } >=20 > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From aelder@oss.sgi.com Thu Jan 21 16:34:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0LMYUkN096816 for ; Thu, 21 Jan 2010 16:34:30 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0LMYSt5096703; Thu, 21 Jan 2010 16:34:28 -0600 Date: Thu, 21 Jan 2010 16:34:28 -0600 Message-Id: <201001212234.o0LMYSt5096703@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.30-rc4-34899-g9b00f30 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 4e23471a3f3aba885ea70100db47ccacb5f069f6 X-Git-Newrev: 9b00f30762fe9f914eb6e03057a616ed63a4e8ca This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 9b00f30 xfs: quota limit statvfs available blocks bdfb043 xfs: replace KM_LARGE with explicit vmalloc use a14a348 xfs: cleanup up xfs_log_force calling conventions 4139b3b xfs: kill XLOG_VEC_SET_TYPE 0cadda1 xfs: remove duplicate buffer flags a210c1a xfs: implement quota warnings via netlink 4d1f88d xfs: clean up error handling in xfs_trans_dqresv 512dd1a xfs: kill XFS_QMOPT_ASYNC 587aa0f xfs: rearrange xfs_mod_sb() to avoid array subscript warning f0a0eaa xfs: suppress spurious uninitialised var warning in xfs_bmapi() 58c75cf xfs: make compile warn about char sign mismatches again 4a24cb7 xfs: clean up sign warnings in dir2 code a9273ca xfs: convert attr to use unsigned names b9c4864 xfs: xfs_buf_iomove() doesn't care about signedness a3380ae xfs: make xfs_dir_cilookup_result use unsigned char 2bc7542 xfs: convert dirnameops to unsigned char names 046ea75 xfs: convert DM ops to use unsigned char names e2bcd93 xfs: directory names are unsigned from 4e23471a3f3aba885ea70100db47ccacb5f069f6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9b00f30762fe9f914eb6e03057a616ed63a4e8ca Author: Christoph Hellwig Date: Thu Jan 21 11:17:20 2010 +0000 xfs: quota limit statvfs available blocks A "df" run on an NFS client of an exported XFS file system reports the wrong information for "available" blocks. When a block quota is enforced, the amount reported as free is limited by the quota, but the amount reported available is not (and should be). Reported-by: Guk-Bong, Kwon Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit bdfb04301fa5fdd95f219539a9a5b9663b1e5fc2 Author: Christoph Hellwig Date: Wed Jan 20 21:55:30 2010 +0000 xfs: replace KM_LARGE with explicit vmalloc use We use the KM_LARGE flag to make kmem_alloc and friends use vmalloc if necessary. As we only need this for a few boot/mount time allocations just switch to explicit vmalloc calls there. Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit a14a348bff2f99471a28e5928eb6801224c053d8 Author: Christoph Hellwig Date: Tue Jan 19 09:56:46 2010 +0000 xfs: cleanup up xfs_log_force calling conventions Remove the XFS_LOG_FORCE argument which was always set, and the XFS_LOG_URGE define, which was never used. Split xfs_log_force into a two helpers - xfs_log_force which forces the whole log, and xfs_log_force_lsn which forces up to the specified LSN. The underlying implementations already were entirely separate, as were the users. Also re-indent the new _xfs_log_force/_xfs_log_force which previously had a weird coding style. Signed-off-by: Christoph Hellwig Signed-off-by: Alex Elder commit 4139b3b337cffd106744386c842b89dc86e31d4b Author: Christoph Hellwig Date: Tue Jan 19 09:56:45 2010 +0000 xfs: kill XLOG_VEC_SET_TYPE This macro only obsfucates the log item type assignments, so kill it. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder commit 0cadda1c5f194f98a05d252ff4385d86d2ed0862 Author: Christoph Hellwig Date: Tue Jan 19 09:56:44 2010 +0000 xfs: remove duplicate buffer flags Currently we define aliases for the buffer flags in various namespaces, which only adds confusion. Remove all but the XBF_ flags to clean this up a bit. Note that we still abuse XFS_B_ASYNC/XBF_ASYNC for some non-buffer uses, but I'll clean that up later. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder commit a210c1aa7f6c90b729cc3a72d03e789b13cb6c47 Author: Christoph Hellwig Date: Sun Jan 17 22:36:19 2010 +0000 xfs: implement quota warnings via netlink Wire up quota_send_warning to send quota warnings over netlink. This is used by various desktops to show user quota warnings. Tested by running the quota_nld daemon while running the xfstest quota tests and observing the warnings. I'll see how I can get a more formal testcase for it written. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder commit 4d1f88d75b00c4d23f4c51305ab5b779a86ef74e Author: Christoph Hellwig Date: Wed Jan 13 22:05:49 2010 +0000 xfs: clean up error handling in xfs_trans_dqresv Move the error code selection after the goto label and fold the xfs_quota_error helper into it. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder commit 512dd1abd9539a474f2792eeaf6783c59ad7778a Author: Christoph Hellwig Date: Wed Jan 13 22:05:48 2010 +0000 xfs: kill XFS_QMOPT_ASYNC The option is unused and one of the few remaining users of xfs_bawrite, so let's get rid of it. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Alex Elder commit 587aa0feb74ffe3239b5e26ff5d017ba9f5daec9 Author: Dave Chinner Date: Wed Jan 20 12:04:53 2010 +1100 xfs: rearrange xfs_mod_sb() to avoid array subscript warning gcc warns of an array subscript out of bounds in xfs_mod_sb(). The code is written in such a way that if the array subscript is out of bounds, then it will assert fail. Rearrange the code to avoid the bounds check warning. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig commit f0a0eaa8da08ebc6519cacd731df05bbb4ca47ce Author: Dave Chinner Date: Wed Jan 20 10:50:06 2010 +1100 xfs: suppress spurious uninitialised var warning in xfs_bmapi() Initialise the xfs_bmalloca_t structure to zero to avoid uninitialised variable warnings. This is done by zeroing the arg structure rather than using the uninitialised_var() trick so we know for certain that the structure is correctly initialised as xfs_bmapi is a very complex function and it is difficult to prove warnings are spurious. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig commit 58c75cfb51393a52b45262394c1fa81514b4d9bd Author: Dave Chinner Date: Wed Jan 20 10:49:18 2010 +1100 xfs: make compile warn about char sign mismatches again The -fno-unsigned-char directive has no effect anymore as the XFs build is clean. However, the kernel build hides pointer sign differences so turn that back on so that we can clean up all the mismatches prior to a userspace code resync. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig commit 4a24cb71407dc25035d75dd3d118e0e55679e217 Author: Dave Chinner Date: Wed Jan 20 10:48:05 2010 +1100 xfs: clean up sign warnings in dir2 code We are now consistently using unsigned char strings for names so fix up the remaining warnings in the dir2 code to complete the cleanup. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig commit a9273ca5c6814f393e18ed66645f817b2b71e9ad Author: Dave Chinner Date: Wed Jan 20 10:47:48 2010 +1100 xfs: convert attr to use unsigned names To be consistent with the directory code, the attr code should use unsigned names. Convert the names from the vfs at the highest level to unsigned, and ænsure they are consistenly used as unsigned down to disk. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig commit b9c48649577dfc4a8c263c106d518effa24ea54b Author: Dave Chinner Date: Wed Jan 20 10:47:39 2010 +1100 xfs: xfs_buf_iomove() doesn't care about signedness xfs_buf_iomove() uses xfs_caddr_t as it's parameter types, but it doesn't care about the signedness of the variables as it is just copying the data. Change the prototype to use void * so that we don't get sign warnings at call sites. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig commit a3380ae39fa321282c407ba5e1835e14b64853d9 Author: Dave Chinner Date: Wed Jan 20 10:47:25 2010 +1100 xfs: make xfs_dir_cilookup_result use unsigned char For consistency with the result of the code. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig commit 2bc754213d40d67c39ddd58cf240f2b948e1951e Author: Dave Chinner Date: Wed Jan 20 10:47:17 2010 +1100 xfs: convert dirnameops to unsigned char names To be consistent across the codebase, convert the dirnameops to pass the directory names by unsigned char strings. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig commit 046ea753130fc51d885835458bf8c1d84765b9ac Author: Dave Chinner Date: Wed Jan 20 10:47:08 2010 +1100 xfs: convert DM ops to use unsigned char names dmops uses a signed char for it's namespace event. To be consistent with the rest of the code, convert them to unsigned char for the namespace string. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig commit e2bcd936eb95d0019ca5e05f9fdd27e770ddded1 Author: Dave Chinner Date: Wed Jan 20 10:44:58 2010 +1100 xfs: directory names are unsigned Convert the struct xfs_name to use unsigned chars for the name strings to match both what is stored on disk (__uint8_t) and what the VFS expects (unsigned char). Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig ----------------------------------------------------------------------- Summary of changes: fs/xfs/Makefile | 2 +- fs/xfs/linux-2.6/kmem.c | 56 +++----- fs/xfs/linux-2.6/kmem.h | 21 +++- fs/xfs/linux-2.6/xfs_acl.c | 11 +- fs/xfs/linux-2.6/xfs_buf.c | 10 +- fs/xfs/linux-2.6/xfs_buf.h | 24 +--- fs/xfs/linux-2.6/xfs_fs_subr.c | 2 +- fs/xfs/linux-2.6/xfs_ioctl.c | 18 +- fs/xfs/linux-2.6/xfs_ioctl.h | 12 +- fs/xfs/linux-2.6/xfs_ioctl32.c | 4 +- fs/xfs/linux-2.6/xfs_iops.c | 4 +- fs/xfs/linux-2.6/xfs_sync.c | 21 +-- fs/xfs/linux-2.6/xfs_xattr.c | 27 +++- fs/xfs/quota/xfs_dquot.c | 15 +-- fs/xfs/quota/xfs_dquot_item.c | 18 +-- fs/xfs/quota/xfs_qm.c | 26 +++- fs/xfs/quota/xfs_qm_bhv.c | 2 +- fs/xfs/quota/xfs_qm_syscalls.c | 4 +- fs/xfs/quota/xfs_trans_dquot.c | 49 ++++-- fs/xfs/xfs_acl.h | 4 +- fs/xfs/xfs_alloc.c | 4 +- fs/xfs/xfs_attr.c | 50 ++++--- fs/xfs/xfs_attr.h | 2 +- fs/xfs/xfs_attr_leaf.c | 30 ++-- fs/xfs/xfs_attr_sf.h | 2 +- fs/xfs/xfs_bmap.c | 2 +- fs/xfs/xfs_btree.c | 4 +- fs/xfs/xfs_buf_item.c | 8 +- fs/xfs/xfs_da_btree.c | 4 +- fs/xfs/xfs_da_btree.h | 5 +- fs/xfs/xfs_dir2.c | 8 +- fs/xfs/xfs_dir2.h | 4 +- fs/xfs/xfs_dir2_block.c | 9 +- fs/xfs/xfs_dir2_leaf.c | 2 +- fs/xfs/xfs_dir2_sf.c | 2 +- fs/xfs/xfs_extfree_item.c | 4 +- fs/xfs/xfs_ialloc.c | 2 +- fs/xfs/xfs_inode.c | 29 ++-- fs/xfs/xfs_inode_item.c | 27 ++-- fs/xfs/xfs_itable.c | 8 +- fs/xfs/xfs_log.c | 316 ++++++++++++++++++++-------------------- fs/xfs/xfs_log.h | 19 +-- fs/xfs/xfs_log_recover.c | 11 +- fs/xfs/xfs_mount.c | 15 +- fs/xfs/xfs_mount.h | 3 +- fs/xfs/xfs_quota.h | 1 - fs/xfs/xfs_trans.c | 7 +- fs/xfs/xfs_trans_ail.c | 2 +- fs/xfs/xfs_trans_buf.c | 27 ++-- fs/xfs/xfs_types.h | 4 +- fs/xfs/xfs_vnodeops.c | 15 +- fs/xfs/xfs_vnodeops.h | 10 +- 52 files changed, 490 insertions(+), 476 deletions(-) hooks/post-receive -- XFS development tree From rtroxell@cisco.com Thu Jan 21 19:40:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.7 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, HTML_MESSAGE,J_CHICKENPOX_14 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0M1enMR104105 for ; Thu, 21 Jan 2010 19:40:49 -0600 X-ASG-Debug-ID: 1264124510-081403cf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sj-iport-5.cisco.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2048A181CC3 for ; Thu, 21 Jan 2010 17:41:50 -0800 (PST) Received: from sj-iport-5.cisco.com (sj-iport-5.cisco.com [171.68.10.87]) by cuda.sgi.com with ESMTP id EtC9bjxvOqmwXy42 for ; Thu, 21 Jan 2010 17:41:50 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Authentication-Results: sj-iport-5.cisco.com; dkim=neutral (message not signed) header.i=none X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAHORWEurRN+K/2dsb2JhbADDGpYvhDwE X-IronPort-AV: E=Sophos;i="4.49,321,1262563200"; d="scan'208,217";a="137893105" Received: from sj-core-4.cisco.com ([171.68.223.138]) by sj-iport-5.cisco.com with ESMTP; 22 Jan 2010 01:41:49 +0000 Received: from xbh-sjc-231.amer.cisco.com (xbh-sjc-231.cisco.com [128.107.191.100]) by sj-core-4.cisco.com (8.13.8/8.14.3) with ESMTP id o0M1fntU021089 for ; Fri, 22 Jan 2010 01:41:49 GMT Received: from xmb-sjc-219.amer.cisco.com ([171.70.151.188]) by xbh-sjc-231.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.3959); Thu, 21 Jan 2010 17:41:49 -0800 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01CA9B04.105572C5" X-ASG-Orig-Subj: 2.6.23 kdb in xfs_bmbt_get_block with unwritten extents Subject: 2.6.23 kdb in xfs_bmbt_get_block with unwritten extents Date: Thu, 21 Jan 2010 17:41:48 -0800 Message-ID: <212AA327A3557741A058E787E06188731FA4AA@xmb-sjc-219.amer.cisco.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: 2.6.23 kdb in xfs_bmbt_get_block with unwritten extents Thread-Index: AcqbBBBC4SPXo/x3SCaBOjvi45A68g== From: "Richard Troxell (rtroxell)" To: Cc: "Richard Troxell (rtroxell)" X-OriginalArrivalTime: 22 Jan 2010 01:41:49.0762 (UTC) FILETIME=[10CE7220:01CA9B04] X-Barracuda-Connect: sj-iport-5.cisco.com[171.68.10.87] X-Barracuda-Start-Time: 1264124511 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format. ------_=_NextPart_001_01CA9B04.105572C5 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello All, I am getting random kdbs when creating preallocated files that are = excessively 'holey' (ex: 500MB+ file with alternating 4K written 4K = unwritten extents). Creating such files is not my intention, and is = being addressing in the userspace writer. That said, I am still = concerned with running into kdb. I am currently running 2.6.23.9, and have done some digging through the = changelogs, but cant seem to find a match. Also, 2.6.24 seems to have a = massive rewrite in this area, which significantly limits the scope that = I can search. The cause of the crash is a straigtforward NULL derference in = xfs_bmap_btree.c:xfs_bmbt_get_block(), but I suspect the root cause is = going to be some complex condition that corrupts the cursor... if (level < cur->bc_nlevels - 1) { *bpp =3D cur->bc_bufs[level]; <----- cur->bc_bufs[level] = =3D=3D NULL rval =3D XFS_BUF_TO_BMBT_BLOCK(*bpp); <----- BAM! NULL dereferenced } Scanning the source, I see numerous instances of this same unchecked = dereference from bc_bufs, but so far I have only hit this one condition. Here is the call trace... [] xfs_bmbt_increment+0xb0/0x2c0 [] xfs_bmap_add_extent_unwritten_real+0x5eb/0xd50 [] xfs_bmap_add_extent+0x152/0x480 [] kmem_zone_zalloc+0x32/0x50 [] xfs_bmapi+0xbe0/0x11f0 [] _spin_unlock+0x14/0x40 [] _spin_lock+0x1d/0x90 [] xfs_log_reserve+0xa3/0x100 [] _spin_unlock_irq+0x15/0x40 [] __down_write_nested+0x96/0xa0 [] xfs_trans_reserve+0xa9/0x1f0 [] xfs_iomap_write_unwritten+0x14a/0x230 [] xfs_iomap+0x2fe/0x390 [] __lock_text_start+0x16/0x40 [] xfs_end_bio_unwritten+0x0/0x50 [] xfs_end_bio_unwritten+0x31/0x50 [] run_workqueue+0x73/0x130 [] worker_thread+0x9c/0xf0 [] autoremove_wake_function+0x0/0x30 [] autoremove_wake_function+0x0/0x30 [] worker_thread+0x0/0xf0 [] kthread+0x6c/0xa0 [] child_rip+0xa/0x12 [] kthread+0x0/0xa0 [] child_rip+0x0/0x12 Given the trace, I assume that if I avoid all B+tree managed unwritten = extents, I can avoid the crash. However avoiding such files completely = seems a bit unrealistic, as I have the need to store files with a = reasonable amount of holes... Thanks, Richard ------_=_NextPart_001_01CA9B04.105572C5 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable 2.6.23 kdb in xfs_bmbt_get_block with unwritten extents

Hello All,

I am getting random kdbs when creating preallocated files that are = excessively 'holey' (ex: 500MB+ file with alternating 4K written 4K = unwritten extents). Creating such files is not my intention, and is = being addressing in the userspace writer. That said, I am still = concerned with running into kdb.

I am currently running 2.6.23.9, and have done some digging through the = changelogs, but cant seem to find a match. Also, 2.6.24 seems to have a = massive rewrite in this area, which significantly limits the scope that = I can search.

The cause of the crash is a straigtforward NULL derference in = xfs_bmap_btree.c:xfs_bmbt_get_block(), but I suspect the root cause is = going to be some complex condition that corrupts the cursor...

if (level < cur->bc_nlevels - 1) {
        *bpp =3D = cur->bc_bufs[level];        &n= bsp;  <----- cur->bc_bufs[level] =3D=3D NULL
        rval =3D = XFS_BUF_TO_BMBT_BLOCK(*bpp);   <----- BAM! NULL = dereferenced
}

Scanning the source, I see numerous instances of this same unchecked = dereference from bc_bufs, but so far I have only hit this one = condition.

Here is the call trace...

 [<ffffffff8034fec0>] xfs_bmbt_increment+0xb0/0x2c0
 [<ffffffff80346c4b>] = xfs_bmap_add_extent_unwritten_real+0x5eb/0xd50
 [<ffffffff80349c72>] xfs_bmap_add_extent+0x152/0x480
 [<ffffffff8038f8d2>] kmem_zone_zalloc+0x32/0x50
 [<ffffffff8034cd40>] xfs_bmapi+0xbe0/0x11f0
 [<ffffffff806ea404>] _spin_unlock+0x14/0x40
 [<ffffffff806ea4cd>] _spin_lock+0x1d/0x90
 [<ffffffff80375e63>] xfs_log_reserve+0xa3/0x100
 [<ffffffff806ea975>] _spin_unlock_irq+0x15/0x40
 [<ffffffff806e9fa6>] __down_write_nested+0x96/0xa0
 [<ffffffff80381ec9>] xfs_trans_reserve+0xa9/0x1f0
 [<ffffffff8037274a>] = xfs_iomap_write_unwritten+0x14a/0x230
 [<ffffffff8037166e>] xfs_iomap+0x2fe/0x390
 [<ffffffff806ea3c6>] __lock_text_start+0x16/0x40
 [<ffffffff8038fb20>] xfs_end_bio_unwritten+0x0/0x50
 [<ffffffff8038fb51>] xfs_end_bio_unwritten+0x31/0x50
 [<ffffffff802429a3>] run_workqueue+0x73/0x130
 [<ffffffff80242afc>] worker_thread+0x9c/0xf0
 [<ffffffff80246cd0>] autoremove_wake_function+0x0/0x30
 [<ffffffff80246cd0>] autoremove_wake_function+0x0/0x30
 [<ffffffff80242a60>] worker_thread+0x0/0xf0
 [<ffffffff8024660c>] kthread+0x6c/0xa0
 [<ffffffff8020c9a8>] child_rip+0xa/0x12
 [<ffffffff802465a0>] kthread+0x0/0xa0
 [<ffffffff8020c99e>] child_rip+0x0/0x12

Given the trace, I assume that if I avoid all B+tree managed unwritten = extents, I can avoid the crash. However avoiding such files completely = seems a bit unrealistic, as I have the need to store files with a = reasonable amount of holes...

Thanks,
Richard

------_=_NextPart_001_01CA9B04.105572C5-- From openmcl-announce-bounces@clozure.com Fri Jan 22 00:01:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0M61VEf114046 for ; Fri, 22 Jan 2010 00:01:32 -0600 X-ASG-Debug-ID: 1264140151-7b0a000a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from setf.clozure.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CE56EF215EC for ; Thu, 21 Jan 2010 22:02:31 -0800 (PST) Received: from setf.clozure.com (setf.clozure.com [74.50.56.8]) by cuda.sgi.com with ESMTP id gzPqIttKqUMTcR4g for ; Thu, 21 Jan 2010 22:02:31 -0800 (PST) Received: from setf.clozure.com (localhost [127.0.0.1]) by setf.clozure.com (Postfix) with ESMTP id 4885A43BF for ; Fri, 22 Jan 2010 06:02:31 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-ASG-Orig-Subj: Your message to Openmcl-announce awaits moderator approval Subject: Your message to Openmcl-announce awaits moderator approval From: openmcl-announce-bounces@clozure.com To: xfs@oss.sgi.com Message-ID: Date: Fri, 22 Jan 2010 06:02:30 +0000 Precedence: bulk X-BeenThere: openmcl-announce@clozure.com X-Mailman-Version: 2.1.9 List-Id: OpenMCL announcements X-List-Administrivia: yes Sender: openmcl-announce-bounces@clozure.com Errors-To: openmcl-announce-bounces@clozure.com X-Barracuda-Connect: setf.clozure.com[74.50.56.8] X-Barracuda-Start-Time: 1264140152 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1723 1.0000 -0.9771 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.98 X-Barracuda-Spam-Status: No, SCORE=-0.98 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Your mail to 'Openmcl-announce' with the subject Hhmofvclmrwzdqzpb Is being held until the list moderator can review it for approval. The reason it is being held: Post by non-member to a members-only list Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://clozure.com/mailman/confirm/openmcl-announce/4efdb68564bd5de2e25676afef51111bc6a0ce18 From gbkwon@gmail.com Fri Jan 22 01:12:12 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0M7CCcJ116216 for ; Fri, 22 Jan 2010 01:12:12 -0600 X-ASG-Debug-ID: 1264144392-7b26035b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-yw0-f191.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7FB9F124F523 for ; Thu, 21 Jan 2010 23:13:13 -0800 (PST) Received: from mail-yw0-f191.google.com (mail-yw0-f191.google.com [209.85.211.191]) by cuda.sgi.com with ESMTP id ISMQp6iZtEd2vGEn for ; Thu, 21 Jan 2010 23:13:13 -0800 (PST) Received: by ywh29 with SMTP id 29so761921ywh.30 for ; Thu, 21 Jan 2010 23:13:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:from:date:message-id :subject:to:cc:content-type:content-transfer-encoding; bh=xiBOg9Y43U9kRQpK+z4aUwdIibZ0bDn1zPnCIcH28fM=; b=WwrOJNs22BmKTj/T7RK470KPEY5zxaHqYFa4iUCMf+X0ZrtrHO2KMENw1kwFaUz4li 9eR8giSDfPFjVlUeyDV2V+0WjvQXulXk5EFkGKyMAdLAFRCe0Vrp4Le4HQMuA8X7mfFw eej19HKZB//qjD6LN2KEIpRs+R+VnY6Ay9HfY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:cc:content-type :content-transfer-encoding; b=Bkmw3Fbfm/pSOrEd7S42PhPIf9WoH3j2hcD35qpsMsUDrr4N5gPnbgLZuddLq1I0ab 06S0obC8WNOeDHpSOsU8+qQ90hp2b/rEkLn1x2rLbkZlTAhDa++vnD8yX0s9Khjhwjp3 wE3T4Di8XOm0/hee3ltjTDFrw54Fy8628gOOA= MIME-Version: 1.0 Received: by 10.90.201.9 with SMTP id y9mr2454291agf.33.1264144392110; Thu, 21 Jan 2010 23:13:12 -0800 (PST) From: "Guk-Bong, Kwon" Date: Fri, 22 Jan 2010 16:12:52 +0900 Message-ID: <77cc6e171001212312y2bdde8b3u66befae8b99e0256@mail.gmail.com> X-ASG-Orig-Subj: Re: [help] project quota information incorrect over nfs ...[solved] Subject: Re: [help] project quota information incorrect over nfs ...[solved] To: Christoph Hellwig Cc: Alex Elder , xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-yw0-f191.google.com[209.85.211.191] X-Barracuda-Start-Time: 1264144393 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20476 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean first.. thanks for your interest your patches is correct.. 2010/1/22 Alex Elder : > Christoph Hellwig wrote: >> On Thu, Jan 21, 2010 at 01:12:06PM +0900, Guk-Bong, Kwon wrote: >>> nfs client "nfs_server:/test/111" Size is correct..(100M) >>> >>> but nfs client "nfs_server:/test/111" Avail is incorrect.. (500M) >>> >>> "Avail" is big than "Size" ... >>> >>> this stat is normal?? >> >> No, it's not. =A0The patch below should fix it, but I'm not sure how >> easily backportable it is to 2.6.27: > > I'm going to take this as a [PATCH] and say it looks good to me. > It will probably not be difficult for someone to port it back > to 2.6.27. > >> Signed-off-by: Christoph Hellwig > > Reviewed-by: Alex Elder > >> Index: linux-2.6/fs/xfs/quota/xfs_qm_bhv.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- linux-2.6.orig/fs/xfs/quota/xfs_qm_bhv.c =A02010-01-21 12:13:51.3970= 03969 +0100 >> +++ linux-2.6/fs/xfs/quota/xfs_qm_bhv.c =A0 =A0 =A0 2010-01-21 12:14:14.= 290009571 +0100 >> @@ -59,7 +59,7 @@ xfs_fill_statvfs_from_dquot( >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 be64_to_cpu(dp->d_blk_hardlimit); >> =A0 =A0 =A0 if (limit && statp->f_blocks > limit) { >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 statp->f_blocks =3D limit; >> - =A0 =A0 =A0 =A0 =A0 =A0 statp->f_bfree =3D >> + =A0 =A0 =A0 =A0 =A0 =A0 statp->f_bfree =3D statp->f_bavail =3D >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (statp->f_blocks > be64_to_c= pu(dp->d_bcount)) ? >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(statp->f_blocks - be64_t= o_cpu(dp->d_bcount)) : 0; >> =A0 =A0 =A0 } >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs > > --=20 thanks From gbkwon@gmail.com Fri Jan 22 03:53:53 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0M9rrlI120436 for ; Fri, 22 Jan 2010 03:53:53 -0600 X-ASG-Debug-ID: 1264154094-13c400400000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-gx0-f221.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 88C1F1C6E5D1 for ; Fri, 22 Jan 2010 01:54:54 -0800 (PST) Received: from mail-gx0-f221.google.com (mail-gx0-f221.google.com [209.85.217.221]) by cuda.sgi.com with ESMTP id TGOZvpLGhMEbl6UX for ; Fri, 22 Jan 2010 01:54:54 -0800 (PST) Received: by gxk21 with SMTP id 21so848915gxk.19 for ; Fri, 22 Jan 2010 01:54:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :from:date:message-id:subject:to:cc:content-type :content-transfer-encoding; bh=s7EQKlwzgew7/NUSUzhuASTQkIByai+WicJZEwjc1Bw=; b=APAPAbTLq1+IiKNqxcNhCjDisH1vy4oD1SYcvHsCFeztjspKSGGyeXH7+lzyCMfm3N uoENR/qV3ue5BHt+f09lg6UOqEFLvaZm3qd7sVhkxkvWXHI3Yvw+szNGFd+C2sHCBAqE PRPbyIormY928T6j3hpsS6j/evsgPP6i0jWfc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; b=RFpvXpzIPwAAyl1PRjk+rtZc6Q/kC1Rd35H88tG961cWYTCwyKtioIHMD/SbtMlBH3 XKP2M9AK1DNBqLQ3/mBOCM2iORMz/yZthgV5PaLXDvVE6riJlW7DR+lteUg2pgysMNy8 QRCMrPjuOt7/Sy2/3MzjMZIilp6AF2lFRyYEk= MIME-Version: 1.0 Received: by 10.90.62.20 with SMTP id k20mr2516018aga.59.1264154092169; Fri, 22 Jan 2010 01:54:52 -0800 (PST) In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69B3@cf--amer001e--3.americas.sgi.com> References: <20100121111720.GA20641@infradead.org> <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69B3@cf--amer001e--3.americas.sgi.com> From: "Guk-Bong, Kwon" Date: Fri, 22 Jan 2010 18:54:32 +0900 Message-ID: <77cc6e171001220154w7445caf9o7ec3a62c5bdfd5b5@mail.gmail.com> X-ASG-Orig-Subj: Re: [help] project quota information incorrect over nfs ... Subject: Re: [help] project quota information incorrect over nfs ... To: Christoph Hellwig Cc: Alex Elder , xfs@oss.sgi.com Content-Type: text/plain; charset=EUC-KR Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-gx0-f221.google.com[209.85.217.221] X-Barracuda-Start-Time: 1264154094 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20487 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean first.. thanks for your interest your patches is correct.. 2010/1/22 Alex Elder : > Christoph Hellwig wrote: >> On Thu, Jan 21, 2010 at 01:12:06PM +0900, Guk-Bong, Kwon wrote: >>> nfs client "nfs_server:/test/111" Size is correct..(100M) >>> >>> but nfs client "nfs_server:/test/111" Avail is incorrect.. (500M) >>> >>> "Avail" is big than "Size" ... >>> >>> this stat is normal?? >> >> No, it's not. The patch below should fix it, but I'm not sure how >> easily backportable it is to 2.6.27: > > I'm going to take this as a [PATCH] and say it looks good to me. > It will probably not be difficult for someone to port it back > to 2.6.27. > >> Signed-off-by: Christoph Hellwig > > Reviewed-by: Alex Elder > >> Index: linux-2.6/fs/xfs/quota/xfs_qm_bhv.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- linux-2.6.orig/fs/xfs/quota/xfs_qm_bhv.c 2010-01-21 12:13:51.397003= 969 +0100 >> +++ linux-2.6/fs/xfs/quota/xfs_qm_bhv.c 2010-01-21 12:14:14.290009= 571 +0100 >> @@ -59,7 +59,7 @@ xfs_fill_statvfs_from_dquot( >> be64_to_cpu(dp->d_blk_hardlimit); >> if (limit && statp->f_blocks > limit) { >> statp->f_blocks =3D limit; >> - statp->f_bfree =3D >> + statp->f_bfree =3D statp->f_bavail =3D >> (statp->f_blocks > be64_to_cpu(dp->d_bcount)) ? >> (statp->f_blocks - be64_to_cpu(dp->d_bcount)) : 0= ; >> } >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs > > --=20 =B0=A8=BB=E7 =C7=D5=B4=CF=B4=D9. =B1=C7=B1=B9=BA=C0. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Senior Researcher Guk-Bong, Kwon GLUESYS Co., Ltd., Research Center 705 Ho, Anyang K-center Building , 1591-9, Burim-dong, Dongan-gu, Anyang-si, Gyeonggi-do, 431-815, Republic of Korea Tel : +82-31-388-3260(401) Fax : +82-31-388-3261 Mobile : +82-10-2584-1976 E-mail : gbkwon@gluesys.com, gbkwon@gmail.com Homepage : http://www.gluesys.com/ =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D From jordan.chadwick@gmail.com Fri Jan 22 09:47:10 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MFl9U2130287 for ; Fri, 22 Jan 2010 09:47:10 -0600 X-ASG-Debug-ID: 1264175289-369101190000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f213.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 98497F3B237 for ; Fri, 22 Jan 2010 07:48:10 -0800 (PST) Received: from mail-ew0-f213.google.com (mail-ew0-f213.google.com [209.85.219.213]) by cuda.sgi.com with ESMTP id QWdM9o1rHIS8lHad for ; Fri, 22 Jan 2010 07:48:10 -0800 (PST) Received: by ewy5 with SMTP id 5so1408293ewy.12 for ; Fri, 22 Jan 2010 07:48:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:reply-to:received:date :x-google-sender-auth:message-id:subject:from:to:content-type :content-transfer-encoding; bh=sNNdbi76sNKHqvPifd2VcXdRr7QlBYRyxcPKVjg2qeA=; b=EmkucqlYItQVIjCjE1JPM9s/kjieXPA8sSejDxxhPOjG3IM1ABn6Uqfr50P+Cxqi1N DGtALa/IGkt1cdSvX53mODESCXV4JNI2ekhcYjzWk88pBlXJe6g9+EprzaDmNO8b1h9U t74dl4vErZsfMb8VXtbW5JaK2Qakw1XuC9ZxU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:reply-to:date:x-google-sender-auth:message-id :subject:from:to:content-type:content-transfer-encoding; b=Y4ENqQqg6ssoGYYNPwLbEHD7Au13YrdFS+xYn/pIRLK/UIcwxiWrmIyDq3GruNDHRv ZhT0hh3X4A53GAMunzmv3k6fba7zqE6JaY1JHEgsmFKYvCmJ8+amDyUGnkTQSLUxaZGi 7pnBRxmcpAZb6yqIQNhrnu6tfA062fQC6m02o= MIME-Version: 1.0 Sender: jordan.chadwick@gmail.com Reply-To: nerovid@gmail.com Received: by 10.216.186.12 with SMTP id v12mr1160405wem.75.1264175288699; Fri, 22 Jan 2010 07:48:08 -0800 (PST) Date: Fri, 22 Jan 2010 10:48:08 -0500 X-Google-Sender-Auth: 4f16acf45c885cfe Message-ID: X-ASG-Orig-Subj: Assistance needed mounting XFS version 1 filesystem Subject: Assistance needed mounting XFS version 1 filesystem From: Jordan To: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-ew0-f213.google.com[209.85.219.213] X-Barracuda-Start-Time: 1264175291 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20504 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, I have been trying to mount an old Maxoptix optical drive with XFS-formatted media for a week now without success.=A0 From what I can tell, the media were formatted using XFS version 1, support for which was removed from the Linux kernel a few years back. Here is the output of fdisk -l: Disk /dev/sda (SGI disk label): 64 heads, 32 sectors, 1096 cylinders Units =3D cylinders of 2048 * 512 bytes ----- partitions ----- Pt# Device Info Start End Sectors Id System 1: /dev/sda1 boot 2 986 2018340 a SGI xfs 2: /dev/sda2 swap 987 1096 224490 3 SGI raw 9: /dev/sda3 0 1 2100 0 SGI volhdr 11: /dev/sda4 0 1096 2244930 6 SGI volume ----- Bootinfo ----- Bootfile: /unix ----- Directory Entries ----- 0: sgilabel sector 2 size 512 When I try to mount the /dev/sda1 partition, I get the following error: # mount -t xfs /dev/sda1 /optical mount: block device /dev/sda1 is write-protected, mounting read-only mount: /dev/sda1: can't read superblock # dmesg | tail Current sda: sense key Data Protect Additional sense: Write protected end_request: I/O error, dev sda, sector 1017642 xfs_force_shutdown(sda1,0x1) called from line 353 of file fs/xfs/xfs_rw.c. Return address =3D 0x44ff9bfa Filesystem "sda1": I/O Error Detected. Shutting down filesystem: sda1 Please umount the filesystem, and rectify the problem(s) I/O error in filesystem ("sda1") meta-data dev sda1 block 0xf7dfe ("xlog_bwrite") error 5 buf count 131072 XFS: failed to locate log tail XFS: log mount/recovery failed XFS: log mount failed xfs_check comes back with no errors. # xfs_db /dev/sda1 xfs_db> sb 0 xfs_db> p magicnum =3D 0x58465342 blocksize =3D 4096 dblocks =3D 252292 rblocks =3D 0 rextents =3D 0 uuid =3D d4bc0c01-b21d-1001-866b-0800690a794d logstart =3D 131076 rootino =3D 128 rbmino =3D 129 rsumino =3D 130 rextsize =3D 16 agblocks =3D 31537 agcount =3D 8 rbmblocks =3D 0 logblocks =3D 1000 versionnum =3D 0x1 sectsize =3D 512 inodesize =3D 256 inopblock =3D 16 fname =3D "\000\000\000\000\000\000\000\000\000\000\000\000" blocklog =3D 12 sectlog =3D 9 inodelog =3D 8 inopblog =3D 4 agblklog =3D 15 rextslog =3D 0 inprogress =3D 0 imax_pct =3D 25 icount =3D 704 ifree =3D 322 fdblocks =3D 122918 frextents =3D 0 uquotino =3D 0 gquotino =3D 0 qflags =3D 0 flags =3D 0 shared_vn =3D 0 inoalignmt =3D 0 unit =3D 0 width =3D 0 dirblklog =3D 0 logsectlog =3D 0 logsectsize =3D 0 logsunit =3D 0 features2 =3D 0 xfs_db> My running kernel is 2.6.5-1.358 on Fedora Core 2. I went with an old distribution to try to find a kernel that still has XFS version 1 support built in. Any help or advice you could provide would be great. Jordan From eflorac@intellique.com Fri Jan 22 11:47:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.1 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,RCVD_IN_BRBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MHlwEc133250 for ; Fri, 22 Jan 2010 11:47:58 -0600 X-ASG-Debug-ID: 1264182534-641f03990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp2-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 412561C7009F for ; Fri, 22 Jan 2010 09:48:58 -0800 (PST) Received: from smtp2-g21.free.fr (smtp2-g21.free.fr [212.27.42.2]) by cuda.sgi.com with ESMTP id rXsVq7t3aNrAWPNA for ; Fri, 22 Jan 2010 09:48:58 -0800 (PST) Received: from smtp2-g21.free.fr (localhost [127.0.0.1]) by smtp2-g21.free.fr (Postfix) with ESMTP id E8B484B025A for ; Fri, 22 Jan 2010 18:48:52 +0100 (CET) Received: from harpe.intellique.com (labo.djinux.com [82.225.196.72]) by smtp2-g21.free.fr (Postfix) with ESMTP id 0CBB24B0246 for ; Fri, 22 Jan 2010 18:48:49 +0100 (CET) Date: Fri, 22 Jan 2010 18:54:19 +0100 From: Emmanuel Florac To: xfs@oss.sgi.com X-ASG-Orig-Subj: nfs performance delta between filesystems Subject: nfs performance delta between filesystems Message-ID: <20100122185419.63ae6430@harpe.intellique.com> Organization: Intellique X-Mailer: Claws Mail 3.7.3 (GTK+ 2.16.6; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp2-g21.free.fr[212.27.42.2] X-Barracuda-Start-Time: 1264182540 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Here is an interesting mystery to solve : XFS is always much faster locally than all other FSs, but quite slower through NFS. I'm benchmarking a RAID-10 setup with various filesystems, ext3, reiser (3.6), jfs and xfs. I'm strictly and only interested in continuous sequential write (data recording) through NFS (basic 1G Eth), so I'm benchmarking with=20 dd if=3D/dev/zero of=3D/mnt/whatever/file bs=3D1M following the throughput with iostat. Setup : linux 2.6.27.21, software RAID 10 (64K stripe), 1GB RAM, 64 bits kernel, 4 Savvio 500GB disks, Phenom II, Intel Pro1000 network. All the following tests have been run several times each, to even results. Locally, xfs mounted this way=20 /dev/md2 on /mnt/raid type xfs (rw,noatime,nobarrier) is wayyyyy better than all other filesystems : ~# dd if=3D/dev/zero of=3D/mnt/raid/testdd bs=3D1M count=3D4096 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB) copied, 23.0655 s, 186 MB/s ext3, jfs and reiser score the same around 150 MB/s. I'm exporting the mountpoint through NFS : /mnt/raid *(fsid=3D0,rw,async,no_root_squash,no_subtree_check) And mount with no options (or just "tcp") on the client. Then the results are quite different. XFS gives a bit less than 90 MB/s (not bad): ~$ sudo dd if=3D/dev/zero of=3D/mnt/temp/testnfsdd1 bs=3D1M count=3D2048 2048+0 enregistrements lus 2048+0 enregistrements =E9crits 2147483648 octets (2,1 GB) copi=E9s, 24,1755 s, 88,8 MB/s But... reiserfs gives ~ 92 MB/s, and ext3 95 MB/s. Results are consistently better with both through NFS, while they're constantly much worse locally... How come??? --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From bpm@sgi.com Fri Jan 22 12:37:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MIbOX1134466 for ; Fri, 22 Jan 2010 12:37:25 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 05239AC026; Fri, 22 Jan 2010 10:38:23 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 125644266A1; Fri, 22 Jan 2010 12:38:48 -0600 (CST) Date: Fri, 22 Jan 2010 12:38:48 -0600 From: bpm@sgi.com To: Emmanuel Florac Cc: xfs@oss.sgi.com Subject: Re: nfs performance delta between filesystems Message-ID: <20100122183848.GB28561@sgi.com> References: <20100122185419.63ae6430@harpe.intellique.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100122185419.63ae6430@harpe.intellique.com> User-Agent: Mutt/1.5.17+20080114 (2008-01-14) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hey Emmanuel, I did some research on this in April last year on an old, old kernel. One of the codepaths I flagged: nfsd_create write_inode_now __sync_single_inode write_inode xfs_fs_write_inode xfs_inode_flush xfs_iflush There were small gains to be had by reordering the sync of the parent and child syncs where the two inodes were in the same cluster. The larger problem seemed to be that we're not treating the log as stable storage. By calling write_inode_now we've written the changes to the log first and then gone and also written them out to the inode. nfsd_create, nfsd_link, and nfsd_setattr all do this (or do in the old kernel I'm looking at). I have a patchset that changes this to an fsync so we force the log and call it good. I'll be happy to dust it off if someone hasn't already addressed this situation. -Ben From eflorac@intellique.com Fri Jan 22 14:45:43 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MKjhol139929 for ; Fri, 22 Jan 2010 14:45:43 -0600 X-ASG-Debug-ID: 1264193199-43b9012b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp5-g21.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 90ECA1848E6 for ; Fri, 22 Jan 2010 12:46:42 -0800 (PST) Received: from smtp5-g21.free.fr (smtp5-g21.free.fr [212.27.42.5]) by cuda.sgi.com with ESMTP id KzlanlZOQmbIrbY0 for ; Fri, 22 Jan 2010 12:46:42 -0800 (PST) Received: from smtp5-g21.free.fr (localhost [127.0.0.1]) by smtp5-g21.free.fr (Postfix) with ESMTP id E7A90D481A0; Fri, 22 Jan 2010 21:46:36 +0100 (CET) Received: from galadriel.home (pla78-1-82-235-234-79.fbx.proxad.net [82.235.234.79]) by smtp5-g21.free.fr (Postfix) with ESMTP id 019B7D48079; Fri, 22 Jan 2010 21:46:33 +0100 (CET) Date: Fri, 22 Jan 2010 21:46:24 +0100 From: Emmanuel Florac To: bpm@sgi.com Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: nfs performance delta between filesystems Subject: Re: nfs performance delta between filesystems Message-ID: <20100122214624.7095a9c4@galadriel.home> In-Reply-To: <20100122183848.GB28561@sgi.com> References: <20100122185419.63ae6430@harpe.intellique.com> <20100122183848.GB28561@sgi.com> Organization: Intellique X-Mailer: Claws Mail 3.0.2 (GTK+ 2.12.9; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp5-g21.free.fr[212.27.42.5] X-Barracuda-Start-Time: 1264193205 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20523 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Le Fri, 22 Jan 2010 12:38:48 -0600 vous =E9criviez: > There were small gains to be had by reordering the sync of the parent > and child syncs where the two inodes were in the same cluster. The > larger problem seemed to be that we're not treating the log as stable > storage. By calling write_inode_now we've written the changes to the > log first and then gone and also written them out to the inode. =20 I thought that using nobarrier would prevent the log operations to be sync'd to disk too quickly? Could I possibly enhance this behaviour by using an external log on a very fast storage (ramdisk...)? > nfsd_create, nfsd_link, and nfsd_setattr all do this (or do in the old > kernel I'm looking at). I have a patchset that changes > this to an fsync so we force the log and call it good. I'll be happy > to dust it off if someone hasn't already addressed this situation. Well, if you think this patchset can be applied to a current kernel without too much hacking I'm ready to give it a try :) --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From aelder@oss.sgi.com Fri Jan 22 16:21:01 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_21,J_CHICKENPOX_35 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MML1Cb142949 for ; Fri, 22 Jan 2010 16:21:01 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MML1Ql142925; Fri, 22 Jan 2010 16:21:01 -0600 Date: Fri, 22 Jan 2010 16:21:01 -0600 Message-Id: <201001222221.o0MML1Ql142925@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.30, created. v2.6.30 X-Git-Refname: refs/tags/v2.6.30 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: fa9c4d0983f98945b32d6bd0dfc1ba1b02d3773c This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.30 has been created at fa9c4d0983f98945b32d6bd0dfc1ba1b02d3773c (tag) tagging 07a2039b8eb0af4ff464efd3dfd95de5c02648c6 (commit) replaces v2.6.30-rc8 tagged by Linus Torvalds on Tue Jun 9 20:05:37 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.30 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkovIwUACgkQF3YsRnbiHLsL3wCglu4uk4E4/fnfHBd1fsa4peac xn4AnA9/pAzYCPACryp69le49dFtKil3 =yjIU -----END PGP SIGNATURE----- Adam Jackson (1): drm: ignore EDID with really tiny modes. Al Viro (1): ext3/4 with synchronous writes gets wedged by Postfix Alan Cox (3): ivtv: Fix PCI DMA direction [libata] pata_ali: Use IGN_SIMPLEX pata_netcell: Fix typo Alessandro Rubini (1): [ARM] 5543/1: arm: serial amba: add missing declaration in serial.h Anand Gadiyar (1): omap_hsmmc: Trivial fix for a typo in comment Avi Kivity (2): KVM: Explicity initialize cpus_hardware_enabled kvm: fix kvm reboot crash when MAXSMP is used Ben Nizette (1): mmc/omap: Use disable_irq_nosync() from within irq handlers. Ben Skeggs (1): drm: don't associate _DRM_DRIVER maps with a master Chris Mason (1): Btrfs: Fix oops and use after free during space balancing Dave Airlie (2): drm: fix irq naming for kms drivers. drm/radeon: fix ring free alignment calculations Dave Jones (1): [CPUFREQ] powernow-k8: check space_id of _PCT registers to be FFH Dave Liu (1): sdhci-of: Fix the wrong accessor to HOSTVER register Eric Anholt (1): drm/i915: Remove a bad BUG_ON in the fence management code. Eric Dumazet (1): r8169: fix crash when large packets are received Eric Lammerts (1): fix oops when using console=ttymxcN with N > 0 FUJITA Tomonori (1): bsg: setting rq->bio to NULL Hugh Dickins (1): integrity: fix IMA inode leak Ian Kent (1): autofs4: remove hashed check in validate_wait() James Bottomley (1): pata_legacy: wait for async probing Jan Kara (1): jbd: fix race in buffer processing in commit code Jaswinder Singh Rajput (2): drm/i915: intel_lvds.c fix section mismatch MIPS: ioctl.h: Fix headers_check warnings Jonathan Cameron (1): [ARM] pxa/imote2: fix UCAM sensor board ADC model number Keith Packard (3): drm: add newlines to text sysfs files drm: set permissions on edid file to 0444 drm: Hook up DPMS property handling in drm_crtc.c. Add drm_helper_connector_dpms. Kevin Hilman (1): mtd: davinci nand: update clock naming Kumar Gala (1): sdhci-of: Add fsl,esdhc as a valid compatible to bind against Linus Torvalds (20): Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Revert "drm: don't associate _DRM_DRIVER maps with a master" Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'upstream-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'kvm-updates/2.6.30' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus async: Fix lack of boot-time console due to insufficient synchronization Merge branch 'for-linus' of git://neil.brown.name/md Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Linux 2.6.30 Martin Fuzzey (3): [ARM] 5534/1: kmalloc must return a cache line aligned buffer mxcmmc : Reset the SDHC hardware if software timeout occurs. mxcmmc: Fix missing return value checking in DMA setup code. Matthieu Castet (1): SSB: BCM47xx: Export ssb_watchdog_timer_set Mike Frysinger (2): kbuild: fix detection of CONFIG_FRAME_WARN=0 shm: fix unused warnings on nommu Minoru Usui (1): cls_cgroup: Fix oops when user send improperly 'tc filter add' request NeilBrown (3): md/raid5: use conf->raid_disks in preference to mddev->raid_disk md/raid5 - avoid deadlocks in get_active_stripe during reshape md/raid5: fix bug in reshape code when chunk_size decreases. Nicolas Pitre (3): mvsdio: allow automatic loading when modular mvsdio: ignore high speed timing requests from the core mvsdio: fix config failure with some high speed SDHC cards Oleg Nesterov (2): ptrace: tracehook_report_clone: fix false positives ptrace: revert "ptrace_detach: the wrong wakeup breaks the ERESTARTxxx logic" Peter Botha (1): char: mxser, fix ISA board lookup Philipp Zabel (1): [ARM] pxa: fix pxa27x_udc default pullup GPIO Rabin Vincent (1): mx[23]: don't put clock lookups in __initdata Ralf Baechle (2): MIPS: Sibyte: Honor CONFIG_CMDLINE MIPS: Outline udelay and fix a few issues. Russell King (3): [ARM] ARMv7 errata: only apply fixes when running on applicable CPU Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Rusty Russell (1): lguest: fix 'unhandled trap 13' with CONFIG_CC_STACKPROTECTOR Salman Qazi (1): drivers/char/mem.c: avoid OOM lockup during large reads from /dev/zero Sascha Hauer (1): mxcmmc: decrease minimum frequency to make MMC cards work Sergei Shtylyov (3): pata_efar: fix PIO2 underclocking pdc202xx_old: fix 'pdc20246_dma_ops' pdc202xx_old: fix resetproc() method Tejun Heo (1): ahci: add warning messages for hp laptops with broken suspend Theodore Ts'o (1): Fix nobh_truncate_page() to not pass stack garbage to get_block() Ville Syrjala (1): ata_piix: Add HP Compaq nc6000 to the broken poweroff list Yan Zheng (1): Btrfs: set device->total_disk_bytes when adding new device Yinghai Lu (3): x86/pci: fix mmconfig detection with 32bit near 4g cpumask: introduce zalloc_cpumask_var cpumask: alloc zeroed cpumask for static cpumask_var_ts Yoichi Yuasa (2): MIPS: Kconfig: Remove "Support for" from Cavium system type MIPS: Cobalt: PCI bus is always required to obtain the board ID Yu Zhao (1): PCI: use fixed-up device class when configuring device ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:03 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FB_GET_MEDS,FH_DATE_PAST_20XX,J_CHICKENPOX_21,J_CHICKENPOX_31 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MML3Da143022 for ; Fri, 22 Jan 2010 16:21:03 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MML2pF142987; Fri, 22 Jan 2010 16:21:02 -0600 Date: Fri, 22 Jan 2010 16:21:02 -0600 Message-Id: <201001222221.o0MML2pF142987@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.30-rc6, created. v2.6.30-rc6 X-Git-Refname: refs/tags/v2.6.30-rc6 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 6492b02a211a5fd0fc92e68d171fc3644cda71a7 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.30-rc6 has been created at 6492b02a211a5fd0fc92e68d171fc3644cda71a7 (tag) tagging 1406de8e11eb043681297adf86d6892ff8efc27a (commit) replaces v2.6.30-rc5 tagged by Linus Torvalds on Fri May 15 21:13:13 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.30-rc6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkoOPWAACgkQF3YsRnbiHLuhmQCfcHa5nZ4r1eJwf98Bp3cGxB65 r4sAn3dDoClfb18N0tlRsCdUEScgFAQn =1bzd -----END PGP SIGNATURE----- Adrian Batzill (1): Input: atkbd - add force release keys quirk for Amilo Xi 3650 Al Viro (11): Always lookup priv_root on reiserfs mount and keep it New helper: deactivate_locked_super() Convert obvious places to deactivate_locked_super() Fix a leak in failure exit in 9p ->get_sb() Fix deadlock in ipathfs ->get_sb() Reduce path_lookup() abuses Make open_exec() and sys_uselib() use may_open(), instead of duplicating its parts Switch open_exec() and sys_uselib() to do_open_filp() switch ufs directories to ufs_sync_file() Fix races around the access to ->s_options Fix the race between capifs remount and node creation Alan Cox (2): ata_piix: ICH7 does not support correct MWDMA timings ata_piix: The Sony TZ90 needs the cable type hardcoding Alan Stern (3): USB: Gadget: fix UTF conversion in the usbstring library usb-serial: ftdi_sio: fix reference counting of ftdi_private HID: add NOGET quirk for devices from CH Products Alessio Igor Bogani (1): vfs: umount_begin BKL pushdown Alexander Beregalov (1): viocd: needs to depend on BLOCK Alexander Duyck (1): igb: resolve panic on shutdown when SR-IOV is enabled Andre Przywara (1): KVM: SVM: Fix cross vendor migration issue with unusable bit Andreas Schwab (1): iwlwifi: remove EXPORT_SYMBOL for static symbol Andy Adamson (1): nfsd41: slots are freed with session Andy Lutomirski (1): USB: Fix makefile so that CONFIG_WDM and CONFIG_TMC work. Aneesh Kumar K.V (3): ext4: Fix sub-block zeroing for writes into preallocated extents ext4: Use a fake block number for delayed new buffer_head ext4: Clear the unwritten buffer_head flag after the extent is initialized Anton Vorontsov (1): powerpc/fsl_soc: Remove mpc83xx_wdt_init, again Arnd Bergmann (1): syscalls.h add the missing sys_pipe2 declaration Ashish Karkare (1): net: remove stale reference to fastroute from Kconfig help text Atsushi Nemoto (4): MIPS: RBTX4939: Fix typo in system name MIPS: Do not include seccomp.h from compat.h MIPS: Synchronize dma_map_page and dma_map_single MIPS: TXx9: Fix possible overflow in clock calculations Avi Kivity (3): KVM: Fix NX support reporting KVM: Make EFER reads safe when EFER does not exist KVM: SVM: Remove port 80 passthrough Bartlomiej Zolnierkiewicz (1): pata_pdc202xx_old: fix UDMA33 handling Becky Bruce (1): powerpc: Allow mem=x cmdline to work with 4G+ Ben Nizette (1): ipu_idmac: Use disable_irq_nosync() from within irq handlers. Benjamin Herrenschmidt (2): powerpc/pseries: Really fix the oprofile CPU type on pseries powerpc: Fix PCI ROM access Benjamin Krill (1): serial/nwpserial: Fix wrong register read address and add interrupt acknowledge. Bob Copeland (1): ath5k: update channel in sw state after stopping RX and TX Borislav Petkov (1): libata: fix suspend/resume for ATA SEMB devices Carl Worth (1): drm/i915: Add new GET_PIPE_FROM_CRTC_ID ioctl. Chris Mason (3): Btrfs: init inode ordered_data_close flag properly Btrfs: Don't loop forever on metadata IO failures Btrfs: remove some WARN_ONs in the IO failure path Chris Zankel (3): xtensa: Fix architecture specific Kconfig xtensa: Fix checksum header file xtensa: Fix linker script to include .literal sections Christoph Hellwig (1): romfs: cleanup romfs_fs.h Christoph Paasch (1): netfilter: ip6t_ipv6header: fix match on packets ending with NEXTHDR_NONE Clemens Ladisch (2): sound: serial-u16550: fix buffer overflow sound: via82xx: fix DXS volume range Coly Li (1): MIPS: Cavium: Add struct clocksource * argument to octeon_cvmcount_read() Dan Carpenter (1): Remove unreached code in drivers/net/mlx4/en_rx.c Dan Williams (1): dmatest: fix max channels handling Daniel Ribeiro (1): pxa2xx_spi: prevent panic case setup() fails Dave Hayes (1): Staging: rt2870: new device id Dave Liu (1): sata_fsl: Fix the command description of FSL SATA controller David Brownell (3): ASoC: davinci-pcm buildfixes ASoC: DaVinci I2S updates ASoC: DaVinci EVM board support buildfixes David Daney (2): MIPS: Compat: Use generic 32-bit wrapers for sys_timerfd_{g,s}ettime MIPS: Use force_sig when handling address errors. David Milburn (1): [libata] sata_sx4: fixup interrupt handling David S. Miller (5): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 Merge branch 'linux-2.6.30.y' of git://git.kernel.org/pub/scm/linux/kernel/git/inaky/wimax ipv4: Make INET_LRO a bool instead of tristate. Merge branch 'net-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 David Woodhouse (1): intel-iommu: PAE memory corruption fix Davide Libenzi (1): epoll: fix size check in epoll_create() Dmitri Vorobiev (4): MIPS: IP32: Two symbols can become static MIPS: IP32: ip32_be_handler symbol is needlessly defined global MIPS: IP32: Fix needlessly global symbols in arch/mips/sgi-ip32/ip32-irq.c MIPS: gbe: Make needlessly global symbols static in drivers/video/gbefb.c Doug Chapman (1): Squashfs: fix breakage when page size > metadata block size Eric Anholt (1): drm/i915: Don't allow binding objects into the last page of the aperture. Florian Westphal (1): bonding: fix panic if initialization fails Frank Rowand (1): kgdb: gdb documentation fix Gerhard Stenzel (1): powerpc/cell: Make ptcal more reliable Grant Likely (2): powerpc/boot: add simpleImage.* to clean-files list powerpc/virtex: Add uImage to the default images list Greg Kroah-Hartman (2): Revert driver core: move platform_data into platform_device Staging: comedi: David doesn't want to get comedi patches Guennadi Liakhovetski (1): dma: fix ipu_idmac.c to not discard the last queued buffer H Hartley Sweeten (1): NULL noise in fs/super.c:kill_bdev_super() Hans Verkuil (5): V4L/DVB (11668): ivtv: fix compiler warning. V4L/DVB (11669): uvc: fix compile warning V4L/DVB (11674): ivtv: fix incorrect bit tests V4L/DVB (11675): ivtv/radio: fix V4L2_TUNER_MODE/V4L2_TUNER_SUB confusion V4L/DVB (11679): cafe_ccic: fix sensor detection Harald Welte (1): viafb: make it work on x86_64 Henrik Austad (1): Doc/sysfs-rules: Swap the order of the words so the sentence makes more sense Inaky Perez-Gonzalez (2): wimax: fix oops if netlink fails to add attribute wimax: oops: wimax_dev_add() is the only one that can initialize the state J. Bruce Fields (3): nfsd4: check for negative dentry before use in nfsv4 readdir lockd: fix list corruption on lockd restart nfsd: silence lockdep warning Jack Morgenstein (1): IB/mlx4: Don't overwrite fast registration page list when posting work request Jarod Wilson (1): drm/i915: ignore LVDS on intel graphics systems that lie about having it Jaroslav Kysela (1): ALSA: Release v1.0.20 Jason Baron (1): Remove old PRINTK_DEBUG config item Jason Wessel (2): sysrq, intel_fb: fix sysrq g collision kgdb,i386: use address that SP register points to in the exception frame Jay Sternberg (1): iwlwifi: fix device id registration for 6000 series 2x2 devices Jean Delvare (1): fbdev: remove outdated advice about I2C configuration Jeff Garzik (1): [libata] sata_sx4: convert to new exception handling methods Jeff Layton (1): cifs: fix error handling in parse_DFS_referrals Jeff Mahoney (5): reiserfs: Expand i_mutex to enclose lookup_one_len reiserfs: fixup xattr_root caching reiserfs: dont associate security.* with xattr files reiserfs: remove privroot hiding in lookup dup2: Fix return value with oldfd == newfd and invalid fd Jens Axboe (1): Revert "mm: add /proc controls for pdflush threads" Jesper Nilsson (4): CRIS: Merge machine dependent boot/compressed and boot/rescue CRISv32: Remove obsolete vcs_hook.o from Makefile CRIS: Wire up syscalls signalfd4 to writev. CRISv32: Fix typo compile error in ARTPEC-3 gpio driver. Jesse Barnes (2): drm/i915: automatically select FRAMEBUFFER_CONSOLE if !EMBEDDED drm/i915: sanity check IER at wait_request time Jinyoung Park (1): ASoC: Fix errors in WM8990 Jiri Slaby (2): mac80211: minstrel, fix memory corruption mac80211: pid, fix memory corruption Joel Becker (1): ocfs2: Use nd_set_link(). Johannes Berg (2): mac80211: correct fragmentation threshold check cfg80211: fix truncated IEs Johannes Weiner (2): xtensa: always use correct stack pointer for stack traces xtensa: register gpio chip before use John Linn (1): powerpc/virtex: Fix duplicate level irq events. John W. Linville (3): airo: airo_get_encode{,ext} potential buffer overflow mac80211: avoid NULL ptr deref when finding max_rates in PID and minstrel rtl8187: use DMA-aware buffers with usb_control_msg Jussi Kivilinna (1): Input: ff-memless - fix signed to unsigned bit overflow Kazuhisa Ichikawa (1): block: fix the bio_vec array index out-of-bounds test Keith Packard (2): drm/i915: x86 always has writeq. Add I915_READ64 for symmetry. drm/i915: save/restore fence registers across suspend/resume Kevin D. Kissell (2): MIPS: SMTC: Bring set/clear/change_c0_## return value semantics uptodate. MIPS: SMTC: Fix xxx_clockevent_init() naming conflict for SMTC Kim Kyuwon (1): rtc: rtc-twl4030 don't mask alarm interrupts on suspend Krzysztof HaĹ‚asa (2): IXP4xx: use "ENODEV" instead of "ENOSYS" in module initialization. IXP4xx: complete Ethernet netdev setup before calling register_netdev(). Kumar Gala (7): powerpc/83xx: Update defconfigs powerpc/85xx: Update defconfigs powerpc/86xx: Update defconfigs powerpc/embedded6xx: Update defconfigs powerpc/8xx: Update defconfigs powerpc/mpic: Fix incorrect allocation of interrupt rev-map sata_fsl: Fix compile warnings Larry Finger (1): Staging: rtl8187se: Fix compilation warnings and procfs directory leak Lennert Buytenhek (1): net: update skb_recycle_check() for hardware timestamping changes Li Hong (1): Btrfs: remove outdated comment in btrfs_ioctl_resize() Linus Torvalds (37): Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://repo.or.cz/cris-mirror Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'i2c-for-2630-rc5' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'for-2.6.30' of git://linux-nfs.org/~bfields/linux Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Revert "Ignore madvise(MADV_WILLNEED) for hugetlbfs-backed regions" Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'kvm-updates/2.6.30' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/czankel/xtensa-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Linux 2.6.30-rc6 Luis R. Rodriguez (3): cfg80211: fix race condition with wiphy_apply_custom_regulatory() cfg80211: fix bug while trying to process beacon hints on init cfg80211: fix comment on regulatory hint processing Ma Ling (3): drm/i915: Use the GM45 VGA hotplug workaround on G45 as well. drm/i915: Include 965GME pci ID in IS_I965GM(dev) to match UMS. drm/i915: Set HDMI hot plug interrupt enable for only the output in question. Maciej Sosnowski (1): ioatdma: fix "ioatdma frees DMA memory with wrong function" Manish Katiyar (1): Make checkpatch.pl shut up on fs/inode.c Manuel Lauss (4): MIPS: Alchemy: Fix AU1100 interrupt numbers off-by-one MIPS: Alchemy: Add missing Au1200 GPIO203 interrupt MIPS: au1xxx-ide: Fix build with CONFIG_PM MIPS: Alchemy: Timer build fix Marcel Holtmann (4): Bluetooth: Move dev_set_name() to a context that can sleep Bluetooth: Fix wrong module refcount when connection setup fails Bluetooth: Don't use hci_acl_connect_cancel() for incoming connections Bluetooth: Don't trigger disconnect timeout for security mode 3 pairing Mark Brown (1): i2c: Enable i2c-s3c2410 for S3C64XX too Mark Ware (1): i2c-cpm: Pass dev ptr to dma_*_coherent rather than NULL Martin K. Petersen (2): libata: Report disk alignment and physical block size libata: Media rotation rate and form factor heuristics Martin Michlmayr (1): sata_mv: use new sata phy register settings for new devices Matthew Wilcox (1): PCI MSI: Fix MSI-X with NIU cards Mauro Carvalho Chehab (1): V4L/DVB (11680): cafe_ccic: use = instead of == for setting a value at a var Maynard Johnson (1): powerpc: Fix oprofile sampling of marked events on POWER7 Mel Gorman (1): Remove implementation of readpage from the hugetlbfs_aops Michael Chan (1): bnx2: Fix panic in bnx2_poll_work(). Mike Rapoport (2): ASoC: soc-core: fix crash when removing not instantiated card pxa2xx-ac97: fix reset gpio mode setting Miklos Szeredi (1): fuse: destroy bdi on error Ming Lei (2): Revert driver core: fix passing platform_data V4L/DVB (11575): uvcvideo: fix uvc resume failed Nicolas Pitre (1): USB: ftdi_sio: add vendor/product id for the Marvell SheevaPlug Oskar Schirmer (3): xtensa: fix wrong extern declaration renamed in code using it xtensa: implement ccount calibration for s6000 xtensa: update s6105_defconfig for ccount calibration Pablo Neira Ayuso (2): netfilter: xt_cluster: fix use of cluster match with 32 nodes netfilter: ctnetlink: fix wrong message type in user updates Patrick McHardy (2): netfilter: add missing linux/types.h include to xt_LED.h net-sched: fix bfifo default limit Pekka Enberg (1): Staging: w35und: unregister device from the ieee80211 stack upon ->disconnect() Phil Dibowitz (1): USB: unusual_devs: extend nokia 6288 bcd range Phillip Lougher (2): Squashfs: check page size is not larger than the filesystem block size Squashfs: cody tidying, remove commented out line in Makefile Ralf Baechle (14): MIPS: Print the actual detected I-cache associativity on bootup. MIPS: Fix build error if CONFIG_CEVT_R4K is undefined. MIPS: Enable CLO / CLZ instructions via separate CPU property MIPS: Cavium: Add support for 8k and 32k page sizes. MIPS: Kconfig: Delete duplicate definition of RWSEM_GENERIC_SPINLOCK. MIPS: Make access_ok() sideeffect proof. MIPS: Make uaccess.h slightly more sparse friendly. MIPS: uaccess: Switch lock annotations to might_fault(). MIPS: IP27: Get rid of #ident. Gcc 4.4.0 doesn't like it. MIPS: Set compiler options only after the compiler prefix has ben set. MIPS: Use -mno-check-zero-division MIPS: Fix sign-extension bug in 32-bit kernel on 32-bit hardware. MIPS: Fix highmem. MIPS: Rewrite to work with gcc 4.4.0. Randy Dunlap (2): Driver core: platform: fix kernel-doc warnings ALSA: pcsp: fix printk format warning Reinette Chatre (1): iwlwifi: update key flags at time key is set Roel Kluin (3): i2c-pxa.c: timeouts off by 1 ROMFS: romfs_dev_read() error ignored ALSA: riptide: postfix increment and off by one Roland Dreier (1): Merge branches 'cxgb3' and 'mlx4' into for-linus Ryusuke Konishi (6): nilfs2: fix possible recovery failure due to block creation without writer nilfs2: fix circular locking dependency of writer mutex nilfs2: ensure to clear dirty state when deleting metadata file block nilfs2: fix possible circular locking for get information ioctls nilfs2: fix lock order reversal in nilfs_clean_segments ioctl nilfs2: check size of array structured data exchanged via ioctls Sage Weil (1): Btrfs: make show_options result match actual option names Sankar P (1): Btrfs: Spelling fix in btrfs_lookup_first_block_group comments Shane McDonald (3): MIPS: MSP71xx: Resolve multiple definition of plat_timer_setup MIPS: MSP71xx: Resolve use of non-existent GPIO routines in msp71xx reset MIPS: MSP71xx: Remove the RAMROOT functions Shaohua Li (1): drm/i915: workaround IGD i2c bus issue in kernel side (v2) Simon Arlott (1): USB: cxacru: Fix negative dB output Simon Horman (1): ipvs: Fix IPv4 FWMARK virtual services Stephen Rothwell x (1): powerpc/iseries: Fix pci breakage due to bad dma_data initialization Steve Wise (3): svcrdma: Fix dma map direction for rdma read targets RDMA/cxgb3: Don't complete flushed send work requests twice svcrdma: clean up error paths. Steven Toth (1): V4L/DVB (11664): cx23885: Frontend wasn't locking on HVR-1500 Steven Whitehouse (1): GFS2: Fix glock ref counting bug Sukadev Bhattiprolu (1): devpts: correctly set default options Takashi Iwai (7): ALSA: hda - Fix line-in on Mac Mini Core2 Duo Merge branch 'fix/misc' into for-linus Merge branch 'topic/misc' into for-linus Merge branch 'fix/hda' into for-linus Merge branch 'fix/asoc' into for-linus Merge branch 'fix/misc' into for-linus Merge branch 'fix/asoc' into for-linus Tejun Heo (3): libata: fix attach error handling libata: clear ering on resume alpha: unbreak percpu again Theodore Ts'o (1): ext4: Fix race in ext4_inode_info.i_cached_extent Thierry Reding (1): Input: tsc2007 - fix locking in hrtimer handler Thomas Bogendoerfer (2): MIPS: IP27: Fix clash with NMI_OFFSET from hardirq.h MIPS: Sibyte: Fix locking in set_irq_affinity Tim Cole (1): Input: joydev - blacklist digitizers Timur Tabi (1): powerpc: Fix mktree build error on Mac OS X host Trent Piepho (3): V4L/DVB (11660): zoran: fix bug when enumerating format -1 V4L/DVB (11661): v4l2-ioctl: Check buffer types using g_fmt instead of try_fmt V4L/DVB (11662): v4l2-ioctl: Clear buffer type specific trailing fields/padding Vitaly Mayatskikh (1): Avoid world-writable sysfs files in libata driver. Wolfgang Grandegger (1): i2c-mpc: bug fix for MPC52xx clock setting and printout Zhang Le (2): MIPS: Add Loongson cpu-feature-overrides.h MIPS: Loongson 2 needs no hazard barriers. Zhang, Yanmin (1): PCI: Fix pci-e port driver slot_reset bad default return value Zoltan Karcagi (1): HID: fix dropped device-specific quirks npiggin@suse.de (1): fs: dcache fix LRU ordering ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:02 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_21,J_CHICKENPOX_31,J_CHICKENPOX_37, J_CHICKENPOX_41,J_CHICKENPOX_75 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MML24Q142982 for ; Fri, 22 Jan 2010 16:21:02 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MML1h4142955; Fri, 22 Jan 2010 16:21:01 -0600 Date: Fri, 22 Jan 2010 16:21:01 -0600 Message-Id: <201001222221.o0MML1h4142955@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.30-rc5, created. v2.6.30-rc5 X-Git-Refname: refs/tags/v2.6.30-rc5 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 4266b00c9dc3e1e071bde0ebfeadc40bbc1e8316 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.30-rc5 has been created at 4266b00c9dc3e1e071bde0ebfeadc40bbc1e8316 (tag) tagging 091bf7624d1c90cec9e578a18529f615213ff847 (commit) replaces v2.6.30-rc4 tagged by Linus Torvalds on Fri May 8 17:14:31 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.30-rc5 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkoEyusACgkQF3YsRnbiHLu3aQCeNJiumKBbB+tGyvr7p0kiW2Zx liIAn0JZJIZURk81PX4Y7gQc35zOUPWg =wkdx -----END PGP SIGNATURE----- Abhijeet Joglekar (6): [SCSI] libfc: Hold disc mutex while processing gpn ft resp [SCSI] libfc: Do not retry if the new state is not the same as old state [SCSI] libfc: Track rogue remote ports [SCSI] libfc: During fabric logoff, flush the rport Q after logging off dns port [SCSI] libfc: Change state to NONE in fc_lport_destroy [SCSI] libfc: whenever queueing delete ev for rport, set state to NONE Alan Cox (1): vt: Add a note on the historical abuse of CLOCK_TICK_RATE Alan Jenkins (1): mac80211: fix modprobe deadlock by not calling wep_init under rtnl_lock Alex Williamson (2): virtio_net: Cleanup command queue scatterlist usage virtio_net: Fix function name typo Anders Kaseorg (2): kbuild, modpost: Check the section flags, to catch missing "ax"/"aw" kbuild, modpost: fix unexpected non-allocatable section when cross compiling Andi Kleen (3): x86, mce: make polling timer interval per CPU x86, mce: fix boot logging logic Eliminate thousands of warnings with gcc 3.2 build Andrea Righi (1): mm: prevent divide error for small values of vm_dirty_bytes Andreas Herrmann (1): x86: show number of core_siblings instead of thread_siblings in /proc/cpuinfo Andrew Morton (2): vmscan: avoid multiplication overflow in shrink_zone() drivers/base/iommu.c: add missing includes Arjan Opmeer (2): Input: elantech - provide a workaround for jumpy cursor on firmware 2.34 Input: elantech - make sure touchpad is really in absolute mode Artem Bityutskiy (1): mtd: expose subpage size via sysfs Arun KS (1): OMAP1: clock: Typo fix for clock in omap1 Ashutosh Naik (1): ibft: fix the display of a few fields in the NIC attribute structure in sysfs Ben Dooks (3): [ARM] S3C64XX: Add S3C64XX_PA_IIS{0,1} to [ARM] S3C: Add UDIVSLOT support for newer UARTS [ARM] S3C2412: Add missing cache flush in suspend code Ben Nizette (4): Input: omap-keypad - use disable_irq_nosync() in irq handler Input: sa1111ps2 - use disable_irq_nosync() in irq handlers Input: tsc2007 - use disable_irq_nosync() in irq handler Input: ucb1400 - use disable_irq_nosync() in irq handler Ben Skeggs (2): drm: clean the map list before destroying the hash table drm: cleanup properly in drm_get_dev() failure paths Benjamin Herrenschmidt (1): powerpc: Fix setting of oprofile cpu type Boaz Harrosh (3): [SCSI] libosd: OSD2r05: Prepare for rev5 attribute list changes [SCSI] libosd: OSD2r05: OSD_CRYPTO_KEYID_SIZE will grow 20 => 32 bytes [SCSI] libosd: OSD2r05: on-the-wire changes for latest OSD2 revision 5. Bob Copeland (2): Input: appletouch - fix DMA to/from stack buffer ath5k: fix buffer overrun in rate debug code Borislav Petkov (1): ide-cd: fix REQ_QUIET tests in cdrom_decode_status Breno Leitao (1): jsm: removing unused spinlock Brian King (1): [SCSI] ipr: Fix sleeping function called with interrupts disabled Bruno PrĂ©mont (1): netconsole: take care of NETDEV_UNREGISTER event Catalin Marinas (4): [ARM] 5488/1: ARM errata: Invalidation of the Instruction Cache operation can fail [ARM] 5487/1: ARM errata: Stale prediction on replaced interworking branch [ARM] 5490/1: ARM errata: Processor deadlock when a false hazard is created [ARM] 5489/1: ARM errata: Data written to the L2 cache can be overwritten with stale data Cedric Hombourger (1): kbuild: fix Module.markers permission error under cygwin Chris Leech (2): [SCSI] fcoe: don't export functions that are internal to fcoe [SCSI] fcoe: fix spelling typos and bad comments Christof Schmitt (5): [SCSI] zfcp: Dont call zfcp_fsf_req_free on NULL pointer [SCSI] zfcp: Let actcli handle control file errors [SCSI] zfcp: Fix abort handler for completions in progress [SCSI] zfcp: Reference counting for cfdc requests [SCSI] zfcp: Fix oops when port disappears Christoph Hellwig (3): xfs: a couple getbmap cleanups xfs: fix getbmap vs mmap deadlock MAINTAINERS: add ptrace entry Christophe Borivant (1): HID: Add support for the G25 force feedback wheel in native mode Daisuke Nishimura (2): memcg: fix try_get_mem_cgroup_from_swapcache() memcg: fix mem_cgroup_shrink_usage() Dan Carpenter (4): HID: hidraw -- fix missing unlocks in unlocked_ioctl [SCSI] fcoe: kfree() -> kfree_skb() [SCSI] libosd: fix potential ERR_PTR dereference in osd_initiator.c sdhci-pci: bad error handling in probe function Daniel Mack (1): isl29003: fix resume functionality Dave Airlie (3): drm/kms: don't try to shortcut drm mode set function i2c-algo-bit: Fix timeout test drm/r128: fix r128 ioremaps to use ioremap_wc. Dave Hansen (1): [SCSI] fix sign extension with 1.5TB usb-storage LBD=y David Brownell (2): davinci: gpio bugfixes davinci: DM644x: NAND: update partitioning David Gibson (1): Move dtc and libfdt sources from arch/powerpc/boot to scripts/dtc David Howells (4): mm: use roundown_pow_of_two() in zone_batchsize() nommu: clamp zone_batchsize() to 0 under NOMMU conditions nommu: make the initial mmap allocation excess behaviour Kconfig configurable NOMMU: Don't check vm_region::vm_start is page aligned in add_nommu_region() David Rientjes (2): x86, srat: do not register nodes beyond e820 map oom: prevent livelock when oom_kill_allocating_task is set David S. Miller (2): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6 Denis V. Lunev (1): mtd: mtd in mtd_release is unused without CONFIG_MTD_CHAR Dmitry Torokhov (2): Input: ALPS - add signature for Toshiba Satellite Pro M10 Input: lifebook - add DMI entry for Fujitsu B-2130 Enrik Berkhan (1): i2c-algo-pca: Let PCA9564 recover from unacked data byte (state 0x30) Eric Dumazet (4): sched: account system time properly net: Fix skb_tx_hash() for forwarding workloads. netfilter: use likely() in xt_info_rdlock_bh() bonding: bond_slave_info_query() fix Eric Miao (5): [ARM] pxa: fix issue of muxed GPIO irq_chip functions touching non-muxed GPIOs [ARM] pxa: make ads7846 on corgi and spitz to sync on HSYNC [ARM] pxa/zylonite: fix the issue of unused SDATA_IN_1 pin get AC97 not working [ARM] pxa/zylonite: configure GPIO18/19 correctly, used by 2 GPIO expanders [ARM] pxa/littleton: add missing da9034 touchscreen support Eric Moore (10): [SCSI] mpt2sas : unique ioctl magic number [SCSI] mpt2sas : the sanity check in base_interrupt needs to be on dword boundary [SCSI] mpt2sas : fix oops when firmware sends large sense buffer size [SCSI] mpt2sas : running out of message frames [SCSI] mpt2sas : driver name needs to be in the MPT2IOCINFO ioctl [SCSI] mpt2sas : Identify Dell series-7 adapters at driver load time [SCSI] mpt2sas : Broadcast Primative AEN bug fix [SCSI] mpt2sas : release diagnotic buffers prior host reset [SCSI] mpt2sas: fix hotplug event processing [SCSI] mpt2sas : bump driver version to 01.100.02.00 Eric Piel (1): initramfs: clean up messages related to initramfs unpacking FUJITA Tomonori (1): [SCSI] sg: return EFAULT for an invalid user address Florian Fainelli (1): MAINTAINERS: Florian has moved FrĂ©dĂ©ric Brière (1): kbuild: clean Module.markers and modules.order for out-of-tree modules Giuliano Pochini (1): ALSA: indigo-express: add missing 64KHz flags Grant Likely (3): powerpc: Update MPC5xxx and Xilinx Virtex maintainer entries virtio: add missing include to virtio_net.h of: make of_(un)register_platform_driver common code Guennadi Liakhovetski (2): [ARM] pxa: remove duplicate select statements from Kconfig ARM: ARCH_MXC should select HAVE_CLK H Hartley Sweeten (1): kernel/posix-cpu-timers.c: fix sparse warning Hannes Hering (1): ehea: fix invalid pointer access Heiko Carstens (1): atomic: fix atomic_long_cmpxchg/xchg for 64 bit architectures Henrik Rydberg (8): Input: bcm5974 - prepare for a new trackpad header type Input: bcm5974 - add quad-finger tapping Input: bcm5974 - Add support for the Macbook 5 (Unibody) Input: bcm5974 - augment debug information Input: bcm5974 - add documentation for the driver Input: allow certain EV_ABS events to bypass all filtering Input: add detailed multi-touch finger data report protocol Input: document the multi-touch (MT) protocol Hidetoshi Seto (1): x86: MCE: make cmci_discover_lock irq-safe Hirokazu Takata (2): m32r: build fix for __stringify macro m32r: use __stringify() macro in assembler.h Huang Weiyi (1): ARM: OMAP3: remove duplicated #include Huang Ying (1): x86, kexec: fix crashdump panic with CONFIG_KEXEC_JUMP Hugh Dickins (1): doc: hashdist defaults on for 64bit Ian Kent (1): autofs4: fix incorrect return in autofs4_mount_busy() Igor Mammedov (2): Enable dfs submounts to handle remote referrals. Added loop check when mounting DFS tree. Ivan Kokshaysky (4): alpha: titan and marvel build fixes alpha: exception table sorting alpha: futex implementation alpha: binfmt_aout fix Jake Edge (1): proc: avoid information leaks to non-privileged processes James Smart (3): [SCSI] lpfc 8.3.1 : Fix up kernel-doc function comments [SCSI] lpfc 8.3.1: misc fixes/changes [SCSI] lpfc 8.3.1 : Update version to 8.3.1 Jan Beulich (3): [IA64] xen_domu_defconfig: fix build issues/warnings x86: fix boot hang in early_reserve_e820() x86-64: finish cleanup_highmaps()'s job wrt. _brk_end Jan Engelhardt (1): md: constify VFTs Jarek Poplawski (1): net: Fix oops when splicing skbs from a frag_list. Jarkko Nikula (1): ARM: OMAP2: Remove defines and resource init for OMAP24XX EAC Jay Vosburgh (1): bonding: fix alb mode locking regression Jean Delvare (1): hwmon: (w83781d) Fix W83782D support (NULL pointer dereference) Jeff Layton (11): nls: add a nls_nullsize inline cifs: move #defines for mapchars into cifs_unicode.h cifs: add replacement for cifs_strtoUCS_le called cifs_from_ucs2 cifs: add new function to get unicode string length in bytes cifs: rename cifs_strlcpy_to_host and make it use new functions cifs: convert CIFSTCon to use new unicode helper functions cifs: fix session setup unicode string saving to use new unicode helpers cifs: change CIFSSMBUnixQuerySymLink to use new helpers cifs: change cifs_get_name_from_search_buf to use new unicode helper cifs: fix length handling in cifs_get_name_from_search_buf [CIFS] remove cifs_strfromUCS_le Jeremy Fitzhardinge (1): x86: xen, i386: reserve Xen pagetables Jesper Nilsson (1): CRISv10: fix serial driver proc-usage Jesse Brandeburg (1): e1000: fix virtualization bug Jiri Kosina (1): HID: fix oops in hid_check_keys_pressed() Jiri Pirko (1): bonding: correct the cleanup in bond_create() Joe Eykholt (1): [SCSI] fcoe: fip: add multicast filter to receive FIP advertisements. Joel Becker (3): ocfs2: Fix some printk() warnings. ocfs2: Fix a missing credit when deleting from indexed directories. ocfs2: Change repository in MAINTAINERS. Joerg Roedel (2): dma-debug: remove broken dma memory leak detection for 2.6.30 amd-iommu: fix iommu flag masks Johannes Berg (2): iwlwifi: notify on scan completion even when shutting down mac80211: default to automatic power control Johannes Weiner (1): mm: fix pageref leak in do_swap_page() John Wright (1): x86: gettimeofday() vDSO: fix segfault when tv == NULL Jon Smirl (1): ASoC: Set the MPC5200 i2s driver to BROKEN status. Jonas Bonn (2): drm: add control node checks missing from kms merge drm: remove unreachable code in drm_sysfs.c Joonyoung Shim (1): ASoC: TWL4030: Fix gain control for earpiece amplifier Josef Bacik (1): fiemap: fix problem with setting FIEMAP_EXTENT_LAST JosĂ© M. Fernández (1): mmc: increase power up delay Jussi Kivilinna (1): rndis_wlan: fix initialization order for workqueue&workers KOSAKI Motohiro (1): mm: fix Committed_AS underflow on large NR_CPUS environment Kevin Hilman (13): davinci: add default Kconfig, add HAVE_IDE davinci: add runtime CPU detection support davinci: major rework of clock, PLL, PSC infrastructure davinci: add arch_ioremap() which uses existing static mappings ARM: OMAP2/3: GPIO: do not attempt to wake-enable OMAP: dmtimer: enable all timers to be wakeup events davinci: timers: use clk_get_rate() davinci: add EDMA driver davinci: serial: generalize for more SoCs davinci: update pin-multiplexing support davinci: DM644x: rename board file davinci: update DM644x support in preparation for more SoCs [ARM] 5506/1: davinci: DMA_32BIT_MASK --> DMA_BIT_MASK(32) Krzysztof Helt (1): fbdev: remove makefile reference to removed driver Lachlan McIlroy (1): xfs_file_last_byte() needs to acquire ilock Ladislav Michl (3): ARM: OMAP: MMC: Remove unused power_pin ARM: OMAP1: Simplify board-h2 MMC setup ARM: OMAP1: Fix mmc_set_power GPIO usage Laszlo Attila Toth (1): xt_socket: checks for the state of nf_conntrack Latchesar Ionkov (3): net/9p: set correct stat size when sending Twstat messages net/9p: return error when p9_client_stat fails net/9p: handle correctly interrupted 9P requests Lennert Buytenhek (2): mv643xx_eth: OOM handling fixes mv643xx_eth: 64bit mib counter read fix Linus Torvalds (36): Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/configfs Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm random: make get_random_int() more random Merge branch 'for-linus' of git://neil.brown.name/md Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'fixes-for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.infradead.org/mtd-2.6 Linux 2.6.30-rc5 Lubomir Rintel (1): ne2k-pci: Do not register device until initialized. Luca Tettamanti (1): hwmon: (asus_atk0110) Fix compiler warning Maciej Cencora (1): drm/radeon: bump minor version for occlusion queries support Magnus Lilja (1): i.MX31: Disable CPU_32v6K in mx3_defconfig. Marcel Holtmann (1): Bluetooth: Fix issue with sysfs handling for connections Mark A. Greer (1): davinci: PSC: Clear bits in MDCTL reg before setting new bits Mark Brown (1): ASoC: Fix logic in WM8350 master clocking check Martin Fuzzey (2): mxc : Clean up properly when imx_dma_free() used without imx_dma_disable() mxc : BUG in imx_dma_request Martin Petermann (4): [SCSI] zfcp: Avoid referencing freed memory in req send [SCSI] zfcp: remove unit will fail if add unit is not finished [SCSI] zfcp: revert previous patch for sbal counting [SCSI] zfcp: Fix port reference counting Masami Hiramatsu (1): kprobes: fix to use text_mutex around arm/disarm kprobe Matt Kraai (1): kbuild: remove a tag file before it is regenerated Mel Gorman (1): Ignore madvise(MADV_WILLNEED) for hugetlbfs-backed regions Michael Wolf (1): powerpc adjust oprofile_cpu_type version 3 Michal Januszewski (1): fbdev: fix fillrect for 24bpp modes Michal Simek (1): microblaze: Fix return value for sys_ipc Mike Christie (5): [SCSI] fix q->lock not held warning when target is busy [SCSI] iscsi_tcp: don't fire conn error if pdu init fails [SCSI] cxgb3i, iser, iscsi_tcp: set target can queue [SCSI] cxgb3i: fix can_queue and cmd_per_lun initialization [SCSI] cxgb3i: fix cpu use abuse during writes Ming Lei (1): locking: Documentation: lockdep-design.txt, fix note of state bits NeilBrown (6): md: fix loading of out-of-date bitmap. md/raid10: don't clear bitmap during recovery if array will still be degraded. md: fix some (more) errors with bitmaps on devices larger than 2TB. md: tidy up status_resync to handle large arrays. md: remove ability to explicit set an inactive array to 'clean'. md: remove rd%d links immediately after stopping an array. Nick Piggin (1): mm: close page_mkwrite races Nico Schottelius (1): kbuild: fix scripts/setlocalversion with git Nicolas Pitre (3): [ARM] Kirkwood: update defconfig [ARM] orion5x: update defconfig [ARM] mv78xx0: update defconfig Nikanth Karthikesan (1): x86: Fix a typo in a printk message Olaf Weber (1): xfs: add more checks to superblock validation Oleg Nesterov (1): ptrace: s/parent/real_parent/ in binfmt_elf_fdpic.c Oliver Neukum (1): HID: fix possible deadlock in usbhid_close() Omar Laazimani (1): usbnet: CDC EEM support (v5) Paul Gortmaker (1): [ARM] 5507/1: support R_ARM_MOVW_ABS_NC and MOVT_ABS relocation types Paul Walmsley (4): OMAP2xxx clock: pre-initialize struct clks early OMAP2xxx clock: fix broken cpu_mask code OMAP3 GPTIMER: fix GPTIMER12 IRQ OMAP2/3 GPTIMER: allow system tick GPTIMER to be changed in board-*.c files Peter Horton (1): mtd: fix timeout in M25P80 driver Peter Jones (1): [SCSI] sr: report more accurate drive status after closing the tray. Philipp Zabel (1): [ARM] pxa: remove unused CPU_FREQ_PXA Kconfig symbol Pierre Ossman (2): mmc_block: be prepared for oversized requests sdhci: catch ADMA errors Ping Cheng (1): Input: wacom - fix TabletPC touch bug Rabin Vincent (3): Subject: [PATCH] br2684: restore net_dev initialization mmci: fix crash with debug enabled mvsdio: fix CONFIG_PM=y build Ralph Wuerthner (1): alloc_vmap_area: fix memory leak Randy Dunlap (3): docs: also clean index.html kernel-doc: restrict syntax for private: and public: doc: small kernel-parameters updates Robert Love (2): [SCSI] libfc: Fix compilation warnings with allmodconfig net: Only store high 16 bits of kernel generated filter priorities Robert Moore (1): acpica: validate package element more carefully in acpi_rs_get_pci_routing_table_length Robert P. J. Day (2): kbuild: "make prepare" should be "make modules_prepare" [ARM] Kconfig typo fix: "PXA930" -> "CPU_PXA930". Roel Kluin (2): ARM: OMAP2: possible division by 0 i2c: Timeouts off by 1 Roger Quadros (2): ARM: OMAP3: Fixed spurious IRQ issue for GPIO interrupts ARM: OMAP3: Clean up spurious interrupt check logic Russell King (7): Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 [ARM] lart: fix build error Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'v2630-rc3-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'for-rmk' of git://git.marvell.com/orion Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 Sam Ravnborg (4): avr32: drop unused CLEAN_FILES kbuild: fix comment in modpost.c kbuild, modpost: fix "unexpected non-allocatable" warning with SUSE gcc kbuild, modpost: fix unexpected non-allocatable warning with mips Santosh Shilimkar (1): ARM: OMAP: Fix for possible race condition in omap_free_dma() Sascha Hauer (2): MXC: remove BUG_ON in interrupt handler mx3fb: Fix compilation with CONFIG_PM Satoru SATOH (1): tcp: Fix tcp_prequeue() to get correct rto_min value Sergey Senozhatsky (1): cxgb3: fixing gcc 4.4 compiler warning: suggest parentheses around operand of â€!’ Sergio Aguirre (1): OMAP3: clock: Camera module doesn't have IDLEST bit Stefan Bader (1): vgacon: return the upper half of 512 character fonts Stephen Rothwell (1): wireless: remove unneeded EXPORT_SYMBOL the tickles a powerpc compiler bug Stephen Smalley (1): selinux: Fix send_sigiotask hook Steve French (19): [CIFS] Make cifs_unlink consistent in checks for null inode Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6 [CIFS] Remove older session setup implementation [CIFS] rename cifs_strndup to cifs_strndup_from_ucs [CIFS] Remove unneeded QuerySymlink call and fix mapping for unmapped status [CIFS] Fix build warning [CIFS] Add remaining ntlmssp flags and standardize field names [CIFS] Remove sparse endian warnings [CIFS] Remove trailing whitespace [CIFS] Fix endian conversion of vcnum field [CIFS] NTLMSSP support moving into new file, old dead code removed [CIFS] Fix final user of old string conversion code [CIFS] remove checkpatch warning [CIFS] Remove sparse warning [CIFS] NTLMSSP reenabled after move from connect.c to sess.c [CIFS] Fix SMB uid in NTLMSSP authenticate request [CIFS] Allow raw ntlmssp code to be enabled with sec=ntlmssp [CIFS] Fix double list addition in cifs posix open code Steve Glendinning (2): smsc95xx: configure LED outputs smsc95xx: add support for LAN9512 and LAN9514 Steven A. Falco (1): mtd: Bug in m25p80.c during whole-chip erase Steven Rostedt (1): tracing: fix ref count in splice pages Stuart Bennett (1): tracing: x86, mmiotrace: fix range test Subrata Modak (1): configfs: Fix Trivial Warning in fs/configfs/symlink.c Sudhakar Rajashekhara (1): davinci: DM646x: add interrupt number and priorities Sunil Mushran (1): ocfs2: Add missing iput() during error handling in ocfs2_dentry_attach_lock() Suresh Jayaraman (2): cifs: Rename cifs_strncpy_to_host and fix buffer size cifs: Increase size of tmp_buf in cifs_readdir to avoid potential overflows Swen Schillig (6): [SCSI] zfcp: Enable auto-port discovery for NPIV. [SCSI] zfcp: Dont block zfcp_wq with scan [SCSI] zfcp: Set WKA-port to offline on adapter deactivation [SCSI] zfcp: avoid false ERP complete due to sema race [SCSI] zfcp: no port recovery after storage side error inject [SCSI] zfcp: no port recovery after ADISC request timeout Takashi Iwai (7): ALSA: Add missing SNDRV_PCM_INFO_BATCH flag to some drivers ALSA: pcm core - Avoid jiffies check for devices with BATCH flag Merge branch 'fix/pcm-jiffies-check' into fix/asoc ASoC: Remove BROKEN from mpc5200 kconfig Merge branch 'fix/pcm-jiffies-check' into for-linus Merge branch 'fix/asoc' into for-linus Merge branch 'fix/misc' into for-linus Tao Ma (3): ocfs2: Reserve 1 more cluster in expanding_inline_dir for indexed dir. ocfs2: Fix 2 warning during ocfs2 make. ocfs2/trivial: Remove unused variable in ocfs2_rename. Thomas Gleixner (2): Revert "genirq: assert that irq handlers are indeed running in hardirq context" x86: initialize io_bitmap_base on 32bit Tobias Klauser (1): microblaze: Storage class should be before const qualifier Tony Lindgren (2): ARM: OMAP: Remove old dead gpio expander code Merge branch 'omap-clock-fixes' into omap-fixes Trond Myklebust (2): SUNRPC: Fix the problem of EADDRNOTAVAIL syslog floods on reconnect NFS: Close page_mkwrite() races Ulrich Dangel (1): HID: Fix the support for apple mini aluminium keyboard Uwe Kleine-König (1): mx27ads: move PBC mapping out of vmalloc space Valentin Longchamp (1): mx31: remove mx31moboard_defconfig Vitaly Mayatskikh (1): pagemap: require aligned-length, non-null reads of /proc/pid/pagemap Wu Fengguang (1): inotify: use GFP_NOFS in kernel_event() to work around a lockdep false-positive john stultz (1): clockevents: prevent endless loop in tick_handle_periodic() kxie@chelsio.com (1): [SCSI] cxgb3i: fix ddp map overrun s-paulraj@ti.com (1): davinci: DM355 IRQ Definitions ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_32 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MML6Yr143071 for ; Fri, 22 Jan 2010 16:21:06 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MML3Yr143028; Fri, 22 Jan 2010 16:21:03 -0600 Date: Fri, 22 Jan 2010 16:21:03 -0600 Message-Id: <201001222221.o0MML3Yr143028@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.30-rc7, created. v2.6.30-rc7 X-Git-Refname: refs/tags/v2.6.30-rc7 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: efa3e68c670b745894255af9827b3902bbc9376e This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.30-rc7 has been created at efa3e68c670b745894255af9827b3902bbc9376e (tag) tagging 59a3759d0fe8d969888c741bb33f4946e4d3750d (commit) replaces v2.6.30-rc6 tagged by Linus Torvalds on Sat May 23 14:47:18 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.30-rc7 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkoYbuoACgkQF3YsRnbiHLs0xQCgnYqobF37iHW8trKGEm4d4v+i ok4AnAmbSiWw/J1WtqUJ4JSZ3PzIecrP =xyLu -----END PGP SIGNATURE----- Abhijeet Joglekar (1): [SCSI] fnic: Add new Cisco PCI-Express FCoE HBA Adam Williamson (1): ALSA: hda - fix audio on HP TX25xx series notebooks Ajit Khaparde (1): be2net: add two new pci device ids to pci device table Alan Cox (1): piix: The Sony TZ90 needs the cable type hardcoding Alan Jenkins (2): eeepc-laptop: fix wlan rfkill state change during init eeepc-laptop: Work around rfkill firmware bug Alessandro Rubini (1): [ARM] 5519/1: amba probe: pass "struct amba_id *" instead of void * Andreas Mohr (1): ALSA: Kill truncate warning by shortening Sigmatel-specific AC97 control name Andrew Randrianasulu (1): MIPS: IP32: Fix hang on shutdown in power button interrupt handler. Andrew Vasquez (1): [SCSI] fc-transport: Close state transition-window during rport deletion. Bartlomiej Zolnierkiewicz (5): ide: fix 40-wire cable detection for TSST SH-S202* ATAPI devices (v2) ide: fix OOPS during ide-cd error recovery ide: fix printk() levels in ide_dump_ata[pi]_error() ide: improve failed opcode reporting ide: report timeouts in ide_busy_sleep() Ben Dooks (5): [ARM] nwfpe: Add decleration for ExtendedCPDO [ARM] nwfpe: fix 'floatx80_is_nan' sparse warning [ARM] S3C24XX: Fix unused code warning in arch/arm/plat-s3c24xx/dma.c [ARM] S3C2410: mach-bast.c registering i2c data too early [ARM] S3C: Do not set clk->owner field if unset Benjamin Herrenschmidt (2): powerpc: Explicit alignment for .data.cacheline_aligned drm: Round size of SHM maps to PAGE_SIZE Bjorn Helgaas (1): PM: check sysdev_suspend(PMSG_FREEZE) return value Breno Leitao (1): icom: fix rmmod crash Chris Friesen (1): ipconfig: handle case of delayed DHCP server Christian Hohnstaedt (1): crypto: ixp4xx - check firmware for crypto support Corentin Chary (2): asus-laptop: fix input keycode eeepc-laptop: unregister_rfkill_notifier on failure Corey Minyard (1): ipmi: fix ipmi_si modprobe hang Darren Salt (1): eeepc-laptop: report brightness control events via the input layer David Rientjes (2): slub: enforce MAX_ORDER slub: add Documentation/ABI/testing/sysfs-kernel-slab David S. Miller (3): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'linux-2.6.30.y' of git://git.kernel.org/pub/scm/linux/kernel/git/inaky/wimax David Woodhouse (1): Fix oops on close of hot-unplugged FTDI serial converter Edward Goggin (1): [SCSI] initialize max_target_blocked in scsi_alloc_target Eric Dumazet (2): sch_teql: should not dereference skb after ndo_start_xmit() pkt_sched: gen_estimator: use 64 bit intermediate counters for bps Eric Moore (1): [SCSI] mpt2sas: fix driver version inconsistency Eric Paris (1): TPM: get_event_name stack corruption Frank Filz (1): nfs: Fix NFS v4 client handling of MAY_EXEC in nfs_permission. Frans Pop (1): ipv4: make default for INET_LRO consistent with help text Gabriel Paubert (1): mv643xx_eth: fix PPC DMA breakage Geoff Levand (1): powerpc/ps3: Update ps3_defconfig GeunSik Lim (1): tracing: Append prompt in /debug/tracing/README file Greg Ungerer (1): MIPS: 64-bit: Fix system lockup. Grigori Goronzy (1): eeepc-laptop: support for super hybrid engine (SHE) Harald Welte (1): via82cxxx: Add VIA VX855 PCI Device ID Hartley Sweeten (1): [ARM] 5509/1: ep93xx: clkdev enable UARTS Herbert Xu (2): crypto: api - Fix algorithm module auto-loading crypto: padlock - Revert aes-all alias to aes Hugh Dickins (1): hugh: update email address Ian Campbell (2): xen/blkfront: allow xenbus state transition to Closing->Closed when not Connected xen/blkfront: fix warning when deleting gendisk on unplug/shutdown Ilpo Järvinen (1): tcp: fix MSG_PEEK race check Inaky Perez-Gonzalez (1): wimax/i2400m: fix device crash: fix optimization in _roq_queue_update_ws Ingo Molnar (1): lockdep: increase MAX_LOCKDEP_ENTRIES and MAX_LOCKDEP_CHAINS Jan Beulich (1): x86: fix percpu_{to,from}_op() Jarkko Nikula (2): ARM: OMAP2: Fix tusb6010 init error and compilation warning ARM: OMAP2: Fix SPI driver failure on 2420 when running multi-omap config Jeff Layton (1): cifs: fix pointer initialization and checks in cifs_follow_symlink (try #4) Jeff Mahoney (3): reiserfs: clean up ifdefs reiserfs: deal with NULL xattr root w/ xattrs disabled reiserfs: fixup perms when xattrs are disabled Jeremy Fitzhardinge (1): x86: Fix performance regression caused by paravirt_ops on native kernels Kalle Jokiniemi (1): ARM: OMAP3: Fix HW SAVEANDRESTORE shift define Len Brown (9): ACPICA: use acpi.* modparam namespace ACPI: video: DMI workaround another broken Acer BIOS enabling display brightness ACPI: power: update error message ACPI: suspend: don't let device _PS3 failure prevent suspend ACPI: suspend: restore BM_RLD on resume ACPI, i915: build fix ACPI: idle: fix init-time TSC check regression ACPI: Idle C-states disabled by max_cstate should not disable the TSC Merge branches 'release', 'bugzilla-13032', 'bugzilla-13041+', 'bugzilla-13121', 'bugzilla-13165', 'bugzilla-13243', 'bugzilla-13259', 'resume-sci-en-regression', 'thermal-regression', 'tsc-regression' and 'asus-2.6.30' into release Lin Ming (1): ACPI: resume: re-enable SCI-enable workaround Linus Torvalds (33): Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Fix caller information for warn_slowpath_null Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branches 'sched-fixes-for-linus-2' and 'core-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Avoid ICE in get_random_int() with gcc-3.4.5 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge branch 'fixes-for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'core/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'sh/for-2.6.30' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Linux 2.6.30-rc7 Magnus Damm (2): sh: ap325 camera without i2c driver fix video: stop sh_mobile_lcdcfb only if started Marek Szyprowski (2): [ARM] S3C64XX: GPIO include cleanup [ARM] S3C64XX: fix GPIO debug Mark Brown (1): mfd: Keep a cache of WM8350 volatile values Masami Hiramatsu (1): x86, 32-bit: fix kernel_trap_sp() Mel Gorman (2): powerpc: Do not assert pte_locked for hugepage PTE entries [ARM] Double check memmap is actually valid with a memmap has unexpected holes V2 Michael Ellerman (2): powerpc/ftrace: Use pr_devel() in ftrace.c powerpc/maple: Add a quirk to disable MSI for IPR on Bimini Michal Simek (2): microblaze: Update Microblaze defconfig microblaze: Fix kind-of-intr checking against number of interrupts Michel Dänzer (1): drm: Copy back ioctl data to userspace regardless of return code. Mike Frysinger (1): regulator: da903x: add missing __devexit_p() Nelson Castillo (1): mfd: pcf50633: fix unsafe disable_irq() Nick Piggin (2): mm: SLUB fix reclaim_state mm: SLOB fix reclaim_state Nico Schottelius (1): Fix scripts/setlocalversion with tagged git commit Paul Walmsley (1): ARM: OMAP: GPIO de-bounce clocks don't affect module idle state Pavel Emelyanov (1): netpoll: don't dereference NULL dev from np Pavel Roskin (1): [ARM] mach-l7200: fix spelling of SYS_CLOCK_OFF Pekka Enberg (1): Merge branches 'topic/documentation', 'topic/slub/fixes' and 'topic/urgent' into for-linus Peter Korsgaard (1): mtd_dataflash: unbreak erase support Rabin Vincent (2): [ARM] 5518/1: versatile: don't put clock lookups in __initdata [ARM] 5517/1: integrator: don't put clock lookups in __initdata Rafael J. Wysocki (1): PCI PM: Fix initialization and kexec breakage for some devices Ralf Baechle (4): NET: Meth: Fix unsafe mix of irq and non-irq spinlocks. MIPS: IP22: Fix hang in power button interrupt handler MIPS: IP32: Fix build error due to uninitialized variable. MIPS: IP32: Remove unnecessary if not even harmful volatile keywords. Randy Dunlap (1): xen: use header for EXPORT_SYMBOL_GPL Ricardo Martins (1): [ARM] 5513/1: Eurotech VIPER SBC: fix compilation error Roel Kluin (2): asm-generic: fix local_add_unless macro cdrom: beyond ARRAY_SIZE of viocd_diskinfo Ron (1): sched: Fix fallback sched_clock()'s offset when using jiffies Russell King (6): Merge branch 'fixes-rc5' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 [ARM] smp: fix cpumask usage in ARM SMP code [ARM] realview: remove useless smp_cross_call_done() [ARM] realview: fix broadcast tick support Merge branch 'smp-fix' Ryusuke Konishi (1): nilfs2: fix memory leak in nilfs_ioctl_clean_segments Sam Ravnborg (1): x86: Fix false positive section mismatch warnings in the apic code Sergei Shtylyov (1): icside: register second channel of version 6 PCB Steffen Klassert (1): crypto: eseqiv - Fix IV generation for sync algorithms Stephen Hemminger (3): bridge: relay bridge multicast pkgs if !STP bridge: fix initial packet flood if !STP bonding: fix link down handling in 802.3ad mode Steve French (2): [CIFS] fix posix open regression [CIFS] Avoid open on possible directories since Samba now rejects them Steven Rostedt (2): x86/function-graph: fix constraint for recording old return value powerpc/ftrace: Fix constraint to be early clobber Takashi Iwai (3): ALSA: pcsp - fix printk format warning again Merge branch 'fix/hda' into for-linus Merge branch 'fix/misc' into for-linus Tejun Heo (1): ide-tape: remove back-to-back REQUEST_SENSE detection Thomas Chenault (1): net: fix skb_seq_read returning wrong offset/length for page frag data Thomas Gleixner (1): futex: setup writeable mapping for futex ops which modify user space data Tomi Valkeinen (1): ARM: OMAP: Fix printing of reserved memory for frambuffer Tony Lindgren (2): ARM: OMAP2/3: Add name for musb clocks ARM: OMAP2/3: Change omapfb to use clkdev for dispc and rfbi, v2 Toshiyuki Okajima (1): page-writeback: fix the calculation of the oldest_jif in wb_kupdate() Vikram Pandita (1): ARM: OMAP3: Fix number of GPIO lines for 34xx Vladimir Zajac (1): thermal: fix off-by-1 error in trip point trigger condition Wang Tinggong (1): Doc: fixed descriptions on /proc/sys/net/core/* and /proc/sys/net/unix/* Wu Zhangjin (1): MIPS: Fix sparse warning in incompatiable argument type of clear_user. Yevgeny Petrilin (1): mlx4_en: Fix not deleted napi structures Yinghai Lu (2): x86: mtrr: Fix high_width computation when phys-addr is >= 44bit [SCSI] ses: fix problems caused by empty SES provided name Zhang Rui (3): ACPI video: dmi check for broken _BQC on Acer Aspire 5720 ACPI processor: introduce module parameter processor.ignore_tpc ACPI processor: reset the throttling state once it's invalid adam radford (2): [SCSI] 3w-9xxx: scsi_dma_unmap fix [SCSI] 3w-xxxx: scsi_dma_unmap fix peter fuerst (1): MIPS: IP28: Change to build with -mr10k-cache-barrier=store roel kluin (1): Neterion: *FIFO1_DMA_ERR set twice, should 2nd be *FIFO2_DMA_ERR? ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:07 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_41,J_CHICKENPOX_73 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MML7HU143105 for ; Fri, 22 Jan 2010 16:21:07 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MML7HN143076; Fri, 22 Jan 2010 16:21:07 -0600 Date: Fri, 22 Jan 2010 16:21:07 -0600 Message-Id: <201001222221.o0MML7HN143076@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.30-rc8, created. v2.6.30-rc8 X-Git-Refname: refs/tags/v2.6.30-rc8 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: e6c72abc9d239d788b0cdb20cb3d20ba04c33707 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.30-rc8 has been created at e6c72abc9d239d788b0cdb20cb3d20ba04c33707 (tag) tagging 9fa7eb283c5cdc2b0f4a8cfe6387ed82e5e9a3d3 (commit) replaces v2.6.30-rc7 tagged by Linus Torvalds on Tue Jun 2 20:07:34 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.30-rc8 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkol6QEACgkQF3YsRnbiHLsk/ACgkP94xhuASs3W3TAf1tNYiHNg +4MAoID36jU1Z+zTC67IyGWX9DKWSF9a =dRHq -----END PGP SIGNATURE----- Alan Cox (3): 8250: Fix oops from setserial pata_netcell: LBA48 force identify bits correct parport: quickfix the proc registration bug Alan Stern (1): usb-serial: fix crash when sub-driver updates firmware Alex Chiang (2): atlx: move modinfo data from atlx.h to atl1.c PCI Hotplug: acpiphp: don't store a pci_dev in acpiphp_func Alex Riesen (1): Use a format for linux_banner Alexander Beregalov (2): parport_gsc: fix printk format error serial: 8250_gsc: fix printk format error Alexey Dobriyan (1): cred: #include init.h in cred.h Andreas Herrmann (1): [CPUFREQ] powernow-k8: determine exact CPU frequency for HW Pstates Andrew Morton (1): sysfs: file.c: use create_singlethread_workqueue() Avi Kivity (2): KVM: Make paravirt tlb flush also reload the PAE PDPTRs KVM: Fix PDPTR reloading on CR4 writes Bartlomiej Zolnierkiewicz (1): ide_pci_generic: add quirk for Netcell ATA RAID Benjamin Herrenschmidt (5): Revert "powerpc: Rework dma-noncoherent to use generic vmalloc layer" powerpc: Move dma-noncoherent.c from arch/powerpc/lib to arch/powerpc/mm powerpc: Minor cleanups of kernel virt address space definitions powerpc: Fix up dma_alloc_coherent() on platforms without cache coherency. powerpc/pmac: Update PowerMac 32-bit defconfig Christian Engelmayer (1): hwmon: Update documentation on fan_max Clemens Ladisch (1): sound: usb-audio: make the MotU Fastlane work again Coly Li (1): [ARM] pxa: add parameter to clksrc_read() for pxa168/910 Daisuke Nishimura (1): memcg: fix deadlock between lock_page_cgroup and mapping tree_lock Dan Carpenter (1): RxRPC: Error handling for rxrpc_alloc_connection() Daniel Ribeiro (3): [ARM] pxa: save/restore PGSR on suspend/resume. [ARM] pxa: allow gpio_reset drive high during normal work [ARM] pxa/ezx: fix pin configuration for low power mode Dave Jones (1): [CPUFREQ] powernow-k7 build fix when ACPI=n Dave Young (1): Bluetooth: Remove useless flush_work() causing lockdep warnings David Dillow (1): r8169: avoid losing MSI interrupts David Howells (2): FS-Cache: Fixup renamed filenames in comments in internal.h CacheFiles: Fixup renamed filenames in comments in internal.h David Rientjes (1): oom: fix possible oom_dump_tasks NULL pointer David S. Miller (7): sparc64: Fix SET_PERSONALITY to not clip bits outside of PER_MASK. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'linux-2.6.30.y' of git://git.kernel.org/pub/scm/linux/kernel/git/inaky/wimax Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 sparc64: Fix section attribute warnings. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6 Divy Le Ray (2): cxgb3: fix dma mapping regression cxgb3: link fault fixes Dmitry Eremin-Solenikov (1): [ARM] pxa/spitz: provide spitz_ohci_exit() that unregisters USB_HOST GPIO Dmitry Torokhov (1): Input: libps2 - better handle bad scheduler decisions Doug Leith (1): tcp: tcp_vegas ssthresh bugfix Ed Swierk (1): forcedeth: add phy_power_down parameter, leave phy powered up by default (v2) Eric Anholt (2): drm/i915: Fix tiling pitch handling on 8xx. drm/i915: Apply a big hammer to 865 GEM object CPU cache flushing. Eric Dumazet (2): net: fix length computation in rt_check_expire() net: fix rtable leak in net/ipv4/route.c Eric Sandeen (1): xfs: fix overflow in xfs_growfs_data_private Fabio Rossi (1): ath5k: fix interpolation with equal power levels Felix Blyakher (2): xfs: fix double unlock in xfs_swap_extents() xfs: prevent deadlock in xfs_qm_shake() Finn Thain (2): mac8390: fix regression caused during net_device_ops conversion mac8390: fix build with NET_POLL_CONTROLLER Florian Fainelli (1): MAINTAINERS: take maintainership of the cpmac Ethernet driver Florian Westphal (1): pktgen: do not access flows[] beyond its length Forrest Zhang (1): ath5k: fix exp off-by-one when computing OFDM delta slope Frans Pop (1): ACPI processor: remove spurious newline from warning message Greg Kroah-Hartman (1): ath1e: add new device id for asus hardware H. Peter Anvin (1): x86, setup: revert ACPI 3 E820 extended attributes support Haavard Skinnemoen (1): USB: atmel_usb_udc: Use kzalloc() to allocate ep structures Harry Ciao (2): edac: AMD8111 & AMD8131 use dev_name() edac: AMD8111 & AMD8131 Kconfig fixup Henrik Rydberg (2): Input: multitouch - add tracking ID to the protocol Input: multitouch - augment event semantics documentation Herbert Xu (1): crypto: hash - Fix handling of sg entry that crosses page boundary Herton Ronaldo Krzesinski (1): tomoyo: add missing call to cap_bprm_set_creds Hideo Saito (1): powerpc/mm: Fix broken MMU PID stealing on !SMP Inaky Perez-Gonzalez (1): wimax/i2400m: usb: fix device reset on autosuspend while not yet idle Ira Snyder (4): fsldma: fix "DMA halt timeout!" errors fsldma: fix infinite loop on multi-descriptor DMA chain completion fsldma: snooping is not enabled for last entry in descriptor chain fsldma: fix memory leak on error path in fsl_dma_prep_memcpy() J. Bruce Fields (1): nfsd: Revert "svcrpc: take advantage of tcp autotuning" James Bottomley (1): async: make sure independent async domains can't accidentally entangle Jarod Wilson (1): [CPUFREQ] add atom family to p4-clockmod Jaswinder Singh Rajput (3): drm/i915: acpi/video.c fix section mismatch warning headers_check fix: linux/auto_fs.h headers_check fix: linux/net_dropmon.h Jay Sternberg (1): iwlwifi: update 5000 ucode support to version 2 of API Jean-Mickael Guerin (1): IPv6: set RTPROT_KERNEL to initial route Jesper Dangaard Brouer (1): netfilter: xt_hashlimit does a wrong SEQ_SKIP Jesse Barnes (2): drm/i915: allocate large pointer arrays with vmalloc i915: support 8xx desktop cursors Joakim Tjernlund (1): jffs2: Fix corruption when flash erase/write failure Joe Perches (2): MAINTAINERS: pair EDAC-E752X P: and M: entries acpi-cpufreq: fix printk typo and indentation Johannes Berg (1): wext: verify buffer size for SIOCSIWENCODEEXT John W. Linville (3): airo: fix airo_get_encode{,ext} buffer overflow like I mean it... at76c50x-usb: avoid mutex deadlock in at76_dwork_hw_scan rtl8187: add USB ID for Linksys WUSB54GC-EU v2 USB wifi dongle Jonas Bonn (1): drm/i915: Determine type before initialising connector Jozsef Kadlecsik (1): netfilter: nf_ct_tcp: fix accepting invalid RST segments KOSAKI Motohiro (1): procfs: make errno values consistent when open pident vs exit(2) race occurs Kay Sievers (1): Driver Core: do not oops when driver_unregister() is called for unregistered drivers Kenji Kaneshige (1): PCI/ACPI: fix wrong ref count handling in acpi_pci_bind() Kristian Høgsberg (1): i915: Set object to gtt domain when faulting it back in Kumar Gala (1): fsldma: Fix compile warnings Len Brown (4): i7300_idle: allow testing on i5000-series hardware w/o re-compile ACPI: sanity check _PSS frequency to prevent cpufreq crash ACPI, i915: build fix (v2) Merge branches 'bugzilla-13121+', 'bugzilla-13233', 'redhat-bugzilla-500311', 'pci-bind-oops', 'misc-2.6.30' and 'i7300_idle' into release Lennert Buytenhek (1): gianfar: fix BUG under load after introduction of skb recycling Li Yang (1): fsldma: update mailling list address in MAINTAINERS Linus Torvalds (38): Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'kvm-updates/2.6.30' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-2.6.30' of git://linux-nfs.org/~bfields/linux Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.infradead.org/~dwmw2/mtd-2.6.30 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/headers-check-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Linux 2.6.30-rc8 Luis R. Rodriguez (1): cfg80211: fix race between core hint and driver's custom apply Ma Ling (4): drm/i915: Fetch SDVO LVDS mode lines from VBT, then reserve them drm/i915: Return SDVO LVDS VBT mode if no EDID modes are detected. drm/i915: Use an I2C algo to do the flip to SDVO DDC bus. drm/i915: Add support for VGA load detection (pre-945). Maciej W. Rozycki (1): 3c509: Add missing EISA IDs Manuel Traut (1): Input: usb1400_ts - fix access to "device data" in resume function Marek Szyprowski (1): S3C-fb: PM fix Marek Vasut (1): [ARM] pxa/palm: fix PalmLD/T5/TX AC97 MFP Martin Fuzzey (1): USB: atmel-usba-udc : fix control out requests. Martin Michlmayr (1): [ARM] Orion: Remove explicit name for platform device resources Mathieu Desnoyers (4): [CPUFREQ] remove rwsem lock from CPUFREQ_GOV_STOP call [CPUFREQ] fix timer teardown in conservative governor [CPUFREQ] fix timer teardown in ondemand governor [ARM] Add cmpxchg support for ARMv6+ systems (v5) Matt Kraai (1): net/firmare: Ignore .cis files Mel Gorman (2): x86: ignore VM_LOCKED when determining if hugetlb-backed page tables can be shared or not mm: account for MAP_SHARED mappings using VM_MAYSHARE and not VM_SHARED in hugetlbfs Mike Frysinger (9): bfin_mac: fix build error due to net_device_ops convert Blackfin: hook up preadv/pwritev syscalls MAINTAINERS: update Blackfin items MAINTAINERS: drop (subscribers-only) markings on Blackfin lists Blackfin: ignore generated vmlinux.lds Blackfin: drop unneeded asm/.gitignore Blackfin: fix strncmp.o build error Revert "USB: Correct Makefile to make isp1760 buildable" hwmon: (lm78) Add missing __devexit_p() Mingwei Wang (1): [ARM] pxa: fix the incorrectly defined drive strength macros for pxa{168,910} Minoru Usui (1): net_cls: fix unconfigured struct tcf_proto keeps chaining and avoid kernel panic when we use cls_cgroup Neil Horman (1): e1000: add missing length check to e1000 receive routine NeilBrown (8): md: always update level / chunk_size / layout when writing v1.x metadata. md: improve errno return when setting array_size md: bitmap: improve bitmap maintenance code. md: export 'frozen' resync state through sysfs md: raid5: avoid sector values going negative when testing reshape progress. md: don't update curr_resync_completed without also updating reshape_position. md: don't use locked_ioctl. md: raid5: change incorrect usage of 'min' macro to 'min_t' Nicolas Ferre (1): atmel_lcdfb: correct fifo size for some products Nicolas Pitre (1): [ARM] add coherent DMA mask for mv643xx_eth Nikanth Karthikesan (1): memcg: fix build warning and avoid checking for mem != null again and again Oskar Schirmer (1): flat: fix data sections alignment Ozan ÇaÄźlayan (1): ALSA: hda - Add forced codec-slots for ASUS W5Fm Pablo Neira Ayuso (2): netfilter: nf_ct_dccp: add missing DCCP protocol changes in event cache netfilter: nfnetlink_log: fix wrong skbuff size calculation Pallipadi, Venkatesh (1): x86: avoid back to back on_each_cpu in cpa_flush_array Paul Menage (1): cls_cgroup: read classid atomically in classifier Paulius Zaleckas (2): MAINTAINER: Add F: entries for Gemini and FA526 Gemini: Fix SRAM/ROM location after memory swap Pavel Roskin (1): ath5k: fix scanning in AR2424 Rafael J. Wysocki (1): PM: Do not hold dpm_list_mtx while disabling/enabling nonboot CPUs Reinette Chatre (1): iwlwifi: do not cancel delayed work inside spin_lock_irqsave Robert Olsson (1): ipv4: Fix oops with FIB_TRIE Robert Richter (1): oprofile: fix cpu buffer size Roel Kluin (4): wireless: beyond ARRAY_SIZE of intf->crypto_stats gigaset: beyond ARRAY_SIZE of iwb->data fsldma: fix check on potential fdev->chan[] overflow drivers/serial/mpc52xx_uart.c: fix array overindexing check Russell King (6): Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 [ARM] disable NX support for OABI-supporting kernels Merge branch 'for-rmk' of git://git.marvell.com/orion [ARM] barriers: improve xchg, bitops and atomic SMP barriers [ARM] update mach-types Merge branch 'for-rmk' of git://gitorious.org/linux-gemini/mainline Rusty Russell (1): lguest: fix on Intel when KVM loaded (unhandled trap 13) Ryusuke Konishi (1): nilfs2: fix bh leak in nilfs_cpfile_delete_checkpoints function Sam Ravnborg (1): nfs: fix build error in nfsroot with initconst Shaohua Li (2): cpuidle: makes AMD C1E work in acpi_idle cpuidle: fix AMD C1E suspend hang Steve Wise (1): svcrdma: dma unmap the correct length for the RPCRDMA header page. Suresh Siddha (1): x86: introduce noxsave boot parameter Takashi Iwai (7): ALSA: hda - Add 5stack-no-fp model for STAC927x ALSA: hda - Add missing check of pin vref 50 and others in Realtek codecs ALSA: Fix invalid jiffies check after pause ALSA: Enable PCM hw_ptr_jiffies check only in xrun_debug mode Merge branch 'fix/misc' into for-linus Merge branch 'fix/pcm-jiffies-check' into for-linus Merge branch 'fix/hda' into for-linus Tejun Heo (2): x86: Remove remap percpu allocator for the time being x86, relocs: ignore R_386_NONE in kernel relocation entries Tetsuo Handa (1): kmod: Release sub_info on cred allocation failure. Thomas Dahlmann (1): MAINTAINERS: change email address for Thomas Dahlmann Thomas Reitmayr (1): [ARM] Kirkwood: Correct MPP for SATA activity/presence LEDs of QNAP TS-119/TS-219. Thomas Renninger (1): [CPUFREQ] powernow-k8 cleanup msg if BIOS does not export ACPI _PSS cpufreq data Timothy Clacy (1): [ARM] pxa: enable GPIO receivers after configuring pins Tony Vroon (1): ALSA: hda - Compaq Presario CQ60 patching for Conexant Trond Myklebust (1): NFSv4: Fix the case where NFSv4 renewal fails Vladimir Barinov (1): mtd: MXC NAND driver fixes (v5) Vu Pham (1): XPRTRDMA: fix client rpcrdma FRMR registration on mlx4 devices Warren Free (1): USB: isp1760: urb_dequeue doesn't always find the urbs Wei Yongjun (1): nfsd: fix hung up of nfs client while sync write data to nfs server Xiao Kaijian (1): USB: Yet another Conexant Clone to add to cdc-acm.c Xiaotian Feng (1): gianfar: fix babbling rx error event bug Yevgeny Petrilin (1): mlx4_en: Fix a kernel panic when waking tx queue Zhang Rui (3): x86: DMI match for the Sony VGN-Z540N as it needs BIOS reboot ACPI: video: DMI workaround broken eMachines E510 BIOS enabling display brightness ACPI: video: DMI workaround broken Acer 5315 BIOS enabling display brightness venkatesh.pallipadi@intel.com (2): x86: bugfix wbinvd() model check instead of family check x86: cpa_flush_array wbinvd should be done on all CPUs ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:11 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLAMf143154 for ; Fri, 22 Jan 2010 16:21:11 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MML9PQ143111; Fri, 22 Jan 2010 16:21:09 -0600 Date: Fri, 22 Jan 2010 16:21:09 -0600 Message-Id: <201001222221.o0MML9PQ143111@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.31, created. v2.6.31 X-Git-Refname: refs/tags/v2.6.31 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: a271b16ba5478acead8773ebe01ee9b6365154d8 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.31 has been created at a271b16ba5478acead8773ebe01ee9b6365154d8 (tag) tagging 74fca6a42863ffacaf7ba6f1936a9f228950f657 (commit) replaces v2.6.31-rc9 tagged by Linus Torvalds on Wed Sep 9 15:14:07 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.31 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkqoKLMACgkQF3YsRnbiHLt7ngCgtDzrRqdkYVkmf0hZ6Z6m1uHC wmsAnjDZScoBrx2UYekMj/u6R1lZfxt7 =5sSF -----END PGP SIGNATURE----- Chris Wilson (1): drm/i915: Unref old_obj on get_fence_reg() error path Dave Airlie (1): drm/radeon/kms: add LTE/GTE discard + rv515 two sided stencil register. David S. Miller (1): gianfar: Fix build. Ed Cashin (1): aoe: allocate unused request_queue for sysfs Jesse Barnes (1): drm/i915: increase default latency constant (v2 w/comment) Linus Torvalds (7): Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 i915: disable interrupts before tearing down GEM state Linux 2.6.31 Mimi Zohar (1): IMA: update ima_counts_put Wolfram Sang (1): pcmcia: add CNF-CDROM-ID for ide Zhenyu Wang (2): agp/intel: support for new chip variant of IGDNG mobile drm/i915: fix mask bits setting ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:14 2010 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLD8Q143196 for ; Fri, 22 Jan 2010 16:21:14 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLBqM143159; Fri, 22 Jan 2010 16:21:11 -0600 Date: Fri, 22 Jan 2010 16:21:11 -0600 Message-Id: <201001222221.o0MMLBqM143159@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.31-rc1, created. v2.6.31-rc1 X-Git-Refname: refs/tags/v2.6.31-rc1 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: eeadf87f8411b42b9803312d2870aa424602a99c This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.31-rc1 has been created at eeadf87f8411b42b9803312d2870aa424602a99c (tag) tagging 28d0325ce6e0a52f53d8af687e6427fee59004d3 (commit) replaces v2.6.30 tagged by Linus Torvalds on Wed Jun 24 16:26:14 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.31-rc1 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkpCthwACgkQF3YsRnbiHLuELgCfdvRmI9hG0WN+s5gLGYWi2Qkw hN8An2x0VjLr01wqFeomiY8P8G0lpdw2 =DjQh -----END PGP SIGNATURE----- Aaro Koskinen (4): [SCSI] sym53c8xx_2: lun to_clear flag not re-initialized (2.6.27.5) [SCSI] sym53c8xx_2: slave_alloc/destroy safety (2.6.27.5) i2c: OMAP2/3: Fix scll/sclh calculations i2c: OMAP3: Better noise suppression for fast/standard modes Abhijeet Joglekar (1): [SCSI] libfc,fcoe,fnic: Separate rport and lport max retry counts Abhijeet Kolekar (28): iwl3945: use iwl_mac_conf_tx iwl3945: use iwl_bss_info_changed iwl3945: use iwl_mac_beacon_update iwlwifi: add commit_rxon lib iwl3945: delay mode setting iwlwifi: add station management ops iwl3945: replace station function with station ops iwlwifi: use station management ops iwl3945/iwlwifi: unify add_station function iwl3945: use iwl_get_sta_id from iwlwifi iwlwifi: add set_rxon_chain op iwl3945: use iwl_set_mode in 3945 iwl3945: use iwl_mac_add_interface from iwlwifi iwl3945: use iwl_mac_remove_interface from iwlwifi iwl3945: use iwl_mac_config from iwlwifi iwlwifi: add config_ap lib op iwl3945: use iwl_mac_config_interface from iwlwifi iwl3945: use iwl_mac_get_tx_stats from iwlwifi iwl3945: use iwl_mac_reset_tsf from iwlwifi iwl3945: add debugfs to 3945 iwl3945: calculate debugfs isr statistics iwlwifi: remove radio disable parameter. iwl3945: fix lock dependency iwl3945: read rev id in nic config iwl3945: improve 3945 leds iwl3945: port allow skb allocation in tasklet patch iwl3945/iwlwifi: fix led bug when SW rfkill iwlwifi/iwl3945: fix suspend resume association bug Abhijith Das (2): GFS2: Fix timestamps on write GFS2: smbd proccess hangs with flock() call. Abylay Ospan (3): V4L/DVB (11930): TS continuity check: show error message when discontinuity detected or TEI flag detected in header V4L/DVB (12096): Bug fix: stv0900 register read must using i2c in one transaction V4L/DVB (12097): Implement reading uncorrected blocks for stv0900 Adam Lackorzynski (1): documentation: make version fix Adrian Bunk (1): mfd/pcf50633-gpio.c: add MODULE_LICENSE Adrian Hunter (3): UBIFS: reset no_space flag after inode deletion ARM: OMAP3: RX51: Connect VAUX3 to MMC2 mtd: OneNAND: add support for OneNAND manufactured by Numonyx Adriano dos Santos Fernandes (1): drivers/char/mem.c: memory_open() cleanup: lookup minor device number from devlist Ajay Kumar Gupta (1): musb: add high bandwidth ISO support Ajit Khaparde (1): be2net: changes for checksum and segmentation offload Akinobu Mita (1): loop: use BIO list management functions Akira Fujita (1): ext4: online defrag -- Add EXT4_IOC_MOVE_EXT ioctl Al Viro (64): Fix btrfs when ACLs are configured out Get rid of path_lookup in autofs4 Preparations to caching root in path_walk() Cache root in nameidata Make vfs_path_lookup() use starting point as root Don't bother with check_mnt() in do_add_mount() on shrinkable ones nfsd struct path use: exp_get_by_name() switch exp_parent() to struct path switch rqst_exp_get_by_name() switch rqst_exp_parent() switch follow_up() to struct path Switch collect_mounts() to struct path switch follow_down() switch follow_mount() switch lookup_mnt() Move junk from proc_fs.h to fs/proc/internal.h Make sure that all callers of remount hold s_umount exclusive Trim a bit of crap from fs.h No need to do lock_super() for exclusion in generic_shutdown_super() Push lock_super() into the ->remount_fs() of filesystems that care about it Push BKL into do_mount() Push BKL down beyond VFS-only parts of do_mount() Push BKL down into do_remount_sb() New helper - simple_fsync() Sanitize qnx4 fsync handling fs/qnx4: sanitize includes Sanitize ->fsync() for FAT switch ext2 to simple_fsync() switch minix to simple_fsync() repair sysv_write_inode(), switch sysv to simple_fsync() switch ufs to simple_fsync() switch udf to simple_fsync() switch omfs to simple_fsync() repair adfs ->write_inode(), switch to simple_fsync() Fix adfs GET_FRAG_ID() on big-endian repair bfs_write_inode(), switch bfs to simple_fsync() sanitize ->fsync() for affs No instance of ->bmap() needs BKL fuse doesn't need BKL in ->umount_begin() 9P doesn't need BKL in ->umount_begin() Cleanup of adfs headers befs ->pust_super() doesn't need BKL get rid of BKL in fs/efs get rid of BKL in fs/minix get rid of BKL in fs/sysv Fix rule eviction order for AUDIT_DIR Make allocation of anon devices cheaper ... and the same for vfsmount id/mount group id add caching of ACLs in struct inode switch ext2 to inode->i_acl switch ext3 to inode->i_acl switch ext4 to inode->i_acl switch jfs to inode->i_acl switch jffs2 to inode->i_acl switch btrfs to inode->i_acl switch nilfs2 to inode->i_acl reiserfs: minimal fix for ACL caching switch reiserfs to usual conventions for caching ACLs switch reiserfs to inode->i_acl switch shmem to inode->i_acl helpers for acl caching + switch to those switch xfs to generic acl caching helpers Get "no acls for this inode" right, fix shmem breakage another race fix in jfs_check_acl() Alan Carvalho de Assis (1): i.MX31: Add hw-random for RNGA Alan Cox (42): [SCSI] gdth: fix overlapping snprintf users ata_piix: Turn on hotplugging support for older chips ata_piix: Remove stale comment tty: Add carrier processing on close to the tty_port core tty: Implement a drain delay in the tty port tty: Bring the usb tty port structure into more use tty: Update cdc_acm tty: cdc_acm add krefs tty: Clean up the ACM driver to CodingStyle tty: throttling race fix serial: update maintainers file pty: Fix a comment tty: Fix oops when scanning the polling list for kgdb tty: Extract various bits of ldisc code tty: rewrite the ldisc locking tty: Move ldisc_flush tty: bring ldisc into CodingStyle tty: remove buffer special casing tty: simplify buffer allocator cleanups parport_pc: Coding style parport_pc: clean up the modified while loops using for ft232: support the ASYNC_LOW_LATENCY flag tty: fix bluetooth scribbling on low latency flags ftdi_sio: don't override modem bits tty: Untangle termios and mm mutex dependencies devpts: unregister the file system on error tty: Add URL for ttydev queue timbuart: Fix the termios logic tty: resolve some sierra breakage pty: Narrow the race on ldisc locking tty: Fix leaks introduced by the shift to separate ldisc objects tty: Fix leaks introduced by the shift to separate ldisc objects ldisc: Make sure the ldisc isn't active when we close it ldisc: debug aids pty: Narrow the race on ldisc locking tty: fix sanity check V4L/DVB (11959): se401: Fix unsafe use of sprintf with identical source/destination V4L/DVB (11998): se401: Fix coding style uml: UML net driver does not allow for vlans ppp: Fix throttling bugs tty: fix some bogns in the serqt_usb2 driver msm: fixups to match current code Alan D. Brunelle (2): blktrace: correct remap names blktrace: from-sector redundant in trace_block_remap Alan Jenkins (7): rfkill: remove set_global_sw_state sony-laptop: no need to unblock rfkill on load rfkill: don't impose global states on resume (just restore the previous states) rfkill: rfkill_set_block() when suspended nitpick rfkill: don't restore software blocked state on persistent devices eeepc-laptop: read rfkill soft-blocked state on resume rfkill: export persistent attribute in sysfs Alan Nisota (1): V4L/DVB (11833): dvb-usb: Remove support for Genpix-CW3K (damages hardware) Alan Stern (13): [SCSI] Increase default timeout for INQUIRY PM core: rename suspend and resume functions USB: consolidate usb_unbind_interface and usb_driver_release_interface NLS: update handling of Unicode USB: g_file_storage: use the "unaligned" accessors PCI: add power-state name strings USB: move PCI host controllers to new PM framework USB: new flag for resume-from-hibernation USB: usb-storage: fix return values from init functions USB: EHCI: stagger frames for interrupt transfers USB: EHCI: update toggle state for linked QHs USB: usb-serial: call port_probe and port_remove at the right times USB: usb-serial: replace shutdown with disconnect, release Alasdair G Kergon (1): dm: initialise tio in alloc_tio Alban Browaeys (1): rt2x00: Style fix for interval defines Alberto Bertogli (1): jbd2: Fix minor typos in comments in fs/jbd2/journal.c Alberto Panizzo (3): ARM MXC: Make-sure-ipg_per_clk-is-generated-by-ipg_clk-and-not-usb_pll Atmark Armadillo 500 board support. ARM MXC: Atmark Armadillo 500 board support. Alek Du (1): Input: gpio-keys - change timer to workqueue Alessandro Rubini (2): [ARM] 5505/1: serial amba-pl011: move to arch_initcall for earlier console [ARM] 5541/1: serial/amba-pl011.c: add support for the modified port found in Nomadik Alessio Igor Bogani (6): Push BKL down into ->remount_fs() trivial: input/misc: Fix typo in Kconfig V4L/DVB (11842): radio-mr800.c: missing mutex include Staging: comedi: replace __FUNCTION__ usages Staging: sxg: replace __FUNCTION__ usages Staging: rt3070: replace __FUNCTION__ usages Alex Chiang (21): ACPICA: Eliminate extra call to NsGetParentNode PCI Hotplug: cpqphp: stray whitespace cleanups PCI Hotplug: cpqphp: fix comment style PCI Hotplug: cpqphp: obey 80 column convention in cpqphp.h PCI Hotplug: cpqphp: remove useless prototypes in cpqphp_core.c PCI Hotplug: cpqphp: eliminate stray braces PCI Hotplug: cpqphp: refactor cpqhp_probe PCI Hotplug: cpqphp: clean up cpqphp_ctrl.c PCI Hotplug: cpqphp: refactor cpqphp_save_slot_config PCI Hotplug: cpqphp: style cleanups PCI Hotplug: cpqphp: refactor cpqhp_save_config PCI Hotplug: cpqphp: clean up accesses to pcibios_get_irq_routing_table() PCI Hotplug: cpqphp: eliminate dead code - PCI_ScanBusNonBridge PCI Hotplug: cpqphp: constify slot_name() PCI Hotplug: cpqphp: don't use pci_find_slot() PCI: remove deprecated pci_find_slot() interface PCI: eliminate redundant pci_stop_dev() call from pci_destroy_dev() trivial: fix grammo in bus_for_each_dev() kerneldoc ACPI: acpi_device_register() should call device_register() ACPI: clean up whitespace in drivers/acpi/scan.c PCI: drivers/pci/slot.c should depend on CONFIG_SYSFS Alex Deucher (3): drm/radeon: add rv740 drm support. drm/radeon: add support for RV790. radeon legacy chips: tv dac bg/dac adj updates Alex Nixon (1): Xen: Add virt_to_pfn helper function Alex Riesen (1): crypto: api - Use formatting of module name Alexander Beregalov (62): ASoC: n810: replace BUG() with BUG_ON() drivers/net: replace BUG() with BUG_ON() if possible ipw2x00: remove old compat_net_dev_ops code usbnet: remove old compat_net_dev_ops code 8390(p): remove old compat_net_dev_ops code bmac: convert to net_device_ops cpmac: convert to net_device_ops dm9000: convert to net_device_ops hplance: convert to net_device_ops ibmveth: convert to net_device_ops irda/au1k_ir: convert to net_device_ops irda/pxaficp_ir: convert to net_device_ops irda/sa1100_ir: convert to net_device_ops iseries_veth: convert to net_device_ops ixp2000/ixpdev: convert to net_device_ops jazzsonic: convert to net_device_ops korina: convert to net_device_ops lib82596: convert to net_device_ops mace: convert to net_device_ops macmace: convert to net_device_ops meth: convert to net_device_ops mipsnet: convert to net_device_ops mvme147: convert to net_device_ops netx-eth: convert to net_device_ops pasemi_mac: convert to net_device_ops pci-skeleton: convert to net_device_ops rionet: convert to net_device_ops sb1250-mac: convert to net_device_ops sgiseeq: convert to net_device_ops smc911x: convert to net_device_ops sun3lance: convert to net_device_ops irda: include etherdevice.h for eth_*() functions wan/pc300_drv: convert to net_device_ops iseries_veth: fix build breakage sa1100_ir: fix build breakage 8390p: fix build breakage vxge: fix possible NULL dereference in vxge-traffic.c vxge: use max() instead of VXGE_HW_SET_LEVEL lasi_82596: fix printk format warning ar9170: fix build when !CONFIG_PM ALSA: parisc/harmony: fix printk format warning de620: fix forgotten semicolon de600: convert PRINTK() to pr_debug() de620: convert PRINTK() to pr_debug() and cleanup mac89x0: remove PRINTK() skfddi: convert PRINTK() to pr_debug() Staging: agnx: switch config_interface to bss_info_changed net: remove COMPAT_NET_DEV_OPS 3c50x: convert printk() to pr_() 3c5xx: convert printk() to pr_() 8139*: convert printk() to pr_() ALSA: hda_intel: fix build error when !PM cfg80211: errno.h: define ERFKILL sata_sx4: speed up ECC initialization SLUB: fix build when !SLUB_DEBUG Staging: comedi: comedi_test.c should include timer.h Staging: comedi: data.c should include delay.h Staging: agnx: replace print_mac with %pM Staging: rtl8187se: convert to net_device_ops Staging: stlc45xx: replace print_mac with %pM Staging: cpc-usb: depends on PROC_FS Staging: cpc-usb: fix printk format warnings Alexander Chiang (12): ACPI: make acpi_pci_bind() static ACPI: Introduce acpi_is_root_bridge() ACPI: Introduce acpi_get_pci_dev() ACPI: rearrange acpi_pci_bind/acpi_pci_unbind in pci_bind.c ACPI: eviscerate pci_bind.c ACPI: simplify acpi_pci_irq_add_prt() API ACPI: simplify acpi_pci_irq_del_prt() API ACPI: acpi_pci_unbind should clean up properly after acpi_pci_bind PCI Hotplug: acpiphp: convert to acpi_get_pci_dev ACPI: kill acpi_get_pci_id ACPI: video: convert to acpi_get_pci_dev ACPI: kill acpi_get_physical_pci_device() Alexander Clouter (3): hwrng: timeriomem - Fix potential oops (request_mem_region/__devinit) [ARM] orion: add hwrng timeriomem hook to TS-78xx mtd: extend plat_nand for (read|write)_buf Alexander Duyck (20): igb: always use adapter->itr as EITR value igb: reconfigure mailbox timeout logic igb: make rxcsum configuration seperate from multiqueue igb/ixgbe: remove unecessary checks for CHECKSUM_UNNECESSARY ixgbe: enable HW RSC for 82599 igbvf: cleanup flags and allow for rx checksum to be disabled igb/igbvf: set rx csum always enabled in hw, disable via sw pci: update 82576 sr-iov quirk with latest device IDs ixgbe: make q_vectors dynamic to reduce netdev size ixgbe: skb_record_rx_queue should record rx queue instead of vector ixgbe: remove ixgbe_napi_add/del_all references ixgbe: always set header length in SRRCTL ixgbe: set queue0 for srrctl configuration correctly for DCB ixgbe: set max desc to prevent total RSC packet size of 64K igb: do not re-register DCA requester on device reset ixgbe: only register DCA requester once igb/e1000e: update PSSR_MDIX value to reflect correct bit ixgbe: use rx_buffer_info->dma instead of nr_frags to determine skb unmap ixgbe: move v_idx into q_vector and use as index only ixgbe: move tx processing into NAPI context Alexander Schmidt (1): IB/ehca: Bump version number Alexander Y. Fomichev (1): jsm: correctly support multiple 4/8-port boards Alexander van Heukelum (4): x86: fix function definitions after: x86: apic - introduce imcr_ helpers i386: fix return to 16-bit stack from NMI handler i386: fix/simplify espfix stack switching, move it into assembly x86: de-assembler-ize asm/desc.h Alexandre Becholey (1): rt73usb: fix for master mode Alexandros Batsakis (1): nfsd41: move channel attributes from nfsd4_session to a nfsd4_channel_attr struct Alexey Dobriyan (15): netns 1/2: don't get/put old netns on CLONE_NEWNET netns 2/2: extract net_create() x86, 32-bit: ifdef out struct thread_struct::fs x86, 64-bit: ifdef out struct thread_struct::ip dcache: extrace and use d_unlinked() mm: consolidate init_mm definition groups: move code to kernel/groups.c pidns: make create_pid_namespace() accept parent pidns pidns: rewrite copy_pid_ns() utsns: extract creeate_uts_ns() ipcns: remove useless get/put while CLONE_NEWIPC ipcns: extract create_ipc_ns() nsproxy: extract create_nsproxy() ipcns: make free_ipc_ns() static ipcns: move free_ipcs() proto Alexey Klimov (7): V4L/DVB (11447): gspca - mr97310a: Return good error code in mod_init. V4L/DVB (11569): av7110_hw: fix compile warning V4L/DVB (11954): dsbr100: remove radio->users counter V4L/DVB (11955): dsbr100: remove usb_dsbr100_open/close calls V4L/DVB (11956): dsbr100: no need to pass curfreq value to dsbr100_setfreq() V4L/DVB (11957): dsbr100: change radio->muted to radio->status, update suspend/resume V4L/DVB (11997): gspca - stv06xx: remove needless if check and goto Alexey Zaytsev (1): [SCSI] compat: don't perform unneeded copy in sg_io code Ali Gholami Rudi (1): trivial: ext2: fix a typo in comment in ext2.h Amerigo Wang (11): x86: merge process.c a bit x86: process.c, remove useless headers kbuild: clean up scripts/headers.sh kbuild/headers_check: refine extern check x86 module: merge the same functions in module_32.c and module_64.c x86 module: merge the rest functions with macros uml module: fix uml build process due to this merge module: merge module_alloc() finally kbuild: fix a compile warning uml: fix a section warning kbuild: fix build error during make htmldocs Amit Kumar Salecha (1): netxen: enable GRO support Amit Shah (1): KVM: x86: Ignore reads to EVNTSEL MSRs Amul Saha (1): mtd: OneNAND: Allow setting of boundary information when built as module Anand Gadiyar (1): musb: use dma mode 1 for TX if transfer size equals maxpacket (v2) Anant Gole (1): net: Add TI DaVinci EMAC driver Anders Kaseorg (2): Staging: rt2860: Don't call sprintf() with overlapping input and output. Staging: rt2870: Don't call sprintf() with overlapping input and output. Andi Kleen (48): oprofile: re-add force_arch_perfmon option oprofile: remove undocumented oprofile.p4force option oprofile: add support for Core i7 and Atom x86, mce: initial steps to make 64bit mce code 32bit clean x86, mce: implement the PPro bank 0 quirk in the 64bit machine check code x86, mce: port K7 bank 0 quirk to 64bit mce code x86, mce: use a call vector to call the 64bit mce handler x86, mce: rename 64bit mce_dont_init to mce_disabled x86, mce: move mce_disabled option into common 32bit/64bit code x86, mce: remove machine check handler idle notify on 64bit x86, mce: remove oops_begin() use in 64bit machine check x86, mce: use 64bit machine check code on 32bit x86, mce: deprecate old 32bit machine check code x86, mce: enable MCE_INTEL for 32bit new MCE x86, mce: enable MCE_AMD for 32bit NEW_MCE x86, mce: document new 32bit mcelog requirement in Documentation/Changes Export add_timer_on for modules x86, mce: add MSR read wrappers for easier error injection x86, mce: add basic error injection infrastructure x86, mce: synchronize core after machine check handling x86, mce: use extended sysattrs for the check_interval attribute. x86, mce: remove unused mce_events variable x86, mce: rename and align out2 label x86, mce: drop BKL in mce_open x86, mce: improve documentation x86: trivial clean up for irq_vectors.h x86, mce: add machine check exception count in /proc/interrupts x86, mce: add MCE poll count to /proc/interrupts x86, mce: store record length into memory struct mce anchor x86, mce: support more than 256 CPUs in struct mce x86, mce: extend struct mce user interface with more information. x86, mce: log corrected errors when panicing x86, mce: remove TSC print heuristic x86, mce: add table driven machine check grading x86, mce: check early in exception handler if panic is needed x86, mce: implement bootstrapping for machine check wakeups x86, mce: implement panic synchronization x86, mce: switch x86 machine check handler to Monarch election. x86, mce: make non Monarch panic message "Fatal machine check" too x86, mce: default to panic timeout for machine checks x86, mce: print header/footer only once for multiple MCEs x86, mce: implement new status bits x86: fix panic with interrupts off (needed for MCE) x86, mce: rename mce_notify_user to mce_notify_irq x86, mce: define MCE_VECTOR x86, mce: support action-optional machine checks KVM: Add VT-x machine check support x86: mce: Handle banks == 0 case in K7 quirk Andre Detsch (1): e100: Fix napi_enable BUG_ON when recovering from EEH error Andre Lopes (1): staging: b3dfg: clean up MODULE_PARM_DESC newline Andre Noll (13): md: raid0: Replace hash table lookup by looping over all strip_zones. md: raid0: Remove hash table. md: raid0: Remove hash spacing and sector shift. md: raid0: Make raid0_run() return a proper error code. md: raid0: Allocate all buffers for the raid0 configuration in one function. md: raid0: Fix a memory leak when stopping a raid0 array. md: Make mddev->chunk_size sector-based. md: Convert mddev->new_chunk to sectors. md: convert conf->chunk_size and conf->prev_chunk to sectors. md/raid5: Use is_power_of_2() in raid5_reconfig()/raid6_reconfig(). md: fix some comments. md: Push down reconstruction log message to personality code. md: Move check for bitmap presence to personality code. Andre Prendel (2): hwmon: (tmp401) Add support for TI's TMP411 sensors chip hwmon: (tmp401) Add documentation Andre Przywara (2): KVM: SVM: Fix cross vendor migration issue in segment segment descriptor 8250_pci: add the OXCB950 chip to the 8250 PCI driver. Andrea Borgia (3): ALSA: usb-audio - quirk for USB Aureon cards ALSA: usb-audio - errata corrige for quirk ALSA: usb-audio - rework quirk for TerraTec Aureon USB 5.1 MkII Andreas Dilger (2): ext4: super.c whitespace cleanup ext4: teach the inode allocator to use a goal inode number Andreas Eversberg (12): mISDN: Add watchdog functionality to hfcmulti driver mISDN: DSP now uses ring buffer for echo canceler mISDN: Echo canceler now gets delay information from hardware mISDN: Fixed missing spin lock on pipeline process mISDN: Added layer-1-hold feature mISDN: Fix DTMF locking bug issue mISDN: Hardware acceleration is now possible in conjunction with audio recording mISDN: Fix TEI and SAPI handling mISDN: Add "sapi" information to debug messages mISDN: Add PCI ID for Junghanns 8S card mISDN: Fix DTMF detection enable/disable mISDN: Added PCI ID for new Junghanns.net Single E1 cards. Andreas Herrmann (9): x86: cacheinfo: use L3 cache index disable feature only for CPUs that support it x86: cacheinfo: correct return value when cache_disable feature is not active x86: cacheinfo: use cached K8 NB_MISC devices instead of scanning for it x86: cacheinfo: complete L2/L3 Cache and TLB associativity field definitions x86: fixup numa_node information for AMD CPU northbridge functions x86: display extended apic registers with print_local_APIC and cpu_debug code x86: memtest: remove 64-bit division x86: Detect use of extended APIC ID for AMD CPUs x86/PCI: add description for check_enable_amd_mmconf boot parameter Andreas Mohr (2): e100: add non-MII PHY support mISDN: Free hfcpci IRQ if init was not successful Andreas Regel (14): V4L/DVB (11580): budget-ci: Fix incorrect default CLOCK setup V4L/DVB (11583): isl6423: Various fixes to use external modulation V4L/DVB (11584): stv090x: add tone burst control V4L/DVB (11585): stv090x: fix incorrectly used mode V4L/DVB (11592): stv6110x: Fix read bug V4L/DVB (11593): stv090x: Fix Rolloff V4L/DVB (11594): stv090x: Fix incorrect TSMODE usage V4L/DVB (11595): stv090x: fixes a few bugs V4L/DVB (11596): stv090x: fixes some register definitions V4L/DVB (11597): stv090x: fixes read_status to return 0 in case of no error V4L/DVB (11598): stv090x: fix missing wakeup in init V4L/DVB (11599): S2-1600: Use budget driver instead of budged-ci V4L/DVB (11600): budget: Use Continuous clock V4L/DVB (11601): stv090x: update demodulator capabilities Andrew Gallatin (1): myri10ge: fix compile error Andrew Morton (14): mutex: add atomic_dec_and_mutex_lock(), fix net/rfkill/rfkill.c: fix build with CONFIG_RFKILL_LEDS=n splice: fix error return code drivers/net/82596.c: suppress warnings microblaze: remove unused flat_stack_align() definition cciss: use schedule_timeout_interruptible() [CPUFREQ] reduce scope of ACPI_PSS_BIOS_BUG_MSG[] + drivers-usb-serial-sierrac-fix-printk-warning.patch added to -mm tree page-allocator: warn if __GFP_NOFAIL is used for a large allocation headers: move module_bug_finalize()/module_bug_cleanup() definitions into module.h Documentation/vm/Makefile: don't try to build slqbinfo MAINTAINERS: fbdev is orphaned convert some DMA_nnBIT_MASK() callers jsm: clean up "serial: jsm: correctly support 4 8 port boards" Andrew Patterson (2): cciss: add cciss driver sysfs entries PCI: Add support for turning PCIe ECRC on or off Andrew Vasquez (28): [SCSI] qla2xxx: Export additional FCoE attributes for application support. [SCSI] qla2xxx: Correct compilation failures when DEBUG'n' options are enabled. [SCSI] qla2xxx: Correct typo in read_nvram() callback. [SCSI] qla2xxx: Restrict model-name/description device-table usage. [SCSI] qla2xxx: Don't try to 'stop' firmware if already in ROM code. [SCSI] qla2xxx: Add an override option to specify ISP firmware load semantics. [SCSI] qla2xxx: Update version number to 8.03.01-k2. [SCSI] qla2xxx: Export negotiated fabric-parameters for application support. [SCSI] qla2xxx: Export XGMAC statistics on supported ISPs. [SCSI] qla2xxx: Export TLV data on supported ISPs. [SCSI] qla2xxx: Correct logic-bug in set-model-info(). [SCSI] qla2xxx: Fallback to 'golden-firmware' operation on supported ISPs. [SCSI] qla2xxx: Use 'proper' DID_* status code for dropped-frame scenarios. [SCSI] qla2xxx: Check status of qla2x00_get_fw_version() call. [SCSI] qla2xxx: Mark a port's state as needing-rediscovery during link disruptions. [SCSI] qla2xxx: Add 10Gb iiDMA support. [SCSI] qla2xxx: Add notification message when an NPIV fails to acquire a port-id. [SCSI] qla2xxx: Fallback enode-mac should not be a multicast address. [SCSI] qla2xxx: Avoid redundant RISC reset during (re)-initialization. [SCSI] qla2xxx: Query supported RISC registers bits in determining a paused-state. [SCSI] qla2xxx: Avoid explicit LOGO during driver host tear-down. [SCSI] qla2xxx: Reduce lock-contention during do-work processing. [SCSI] qla2xxx: Export additional firmware-states for application support. [SCSI] qla2xxx: Synchronize MPI settings after a PE Reset. [SCSI] qla2xxx: Update version number to 8.03.01-k3. qla2xxx: Limit querying to supported mailbox-registers while reading FW state. qla2xxx: Correct (again) overflow during dump-processing on large-memory ISP23xx parts. qla2xxx: Update version number to 8.03.01-k4. Andrew de Quincey (1): ARM: OMAP1: Make 770 LCD work Andrey Yurovsky (3): libertas: fix IEEE PS mode in GSPI driver cfg80211: allow adding/deleting stations on mesh cfg80211: allow setting station parameters in mesh AndrĂ© Goddard Rosa (1): usbnet: ratelimit warning messages invoked from callback handler Andy Adamson (46): nfsd41: sanity check client drc maxreqs nfs41: sessions client infrastructure nfs41: introduce nfs4_call_sync nfs41: set up seq_res.sr_slotid nfs41: xdr {encode,decode}_sequence nfs41: nfs4_setup_sequence nfs41: setup_sequence method nfs41: free slot nfs41: nfs41_sequence_free_slot nfs41: nfs41_sequence_done nfs41: nfs41_call_sync_done nfs41: close sequence setup/done support nfs41: open sequence setup/done support nfs41: lock sequence setup/done support nfs41: locku sequence setup/done support nfs41: unlink sequence setup/done support nfs41: read sequence setup/done support nfs41 write sequence setup done support nfs41 commit sequence setup done support nfs41 delegreturn sequence setup done support nfs41: get_lease_time nfs41: create_session operation nfs41: verify session channel attribues nfs41: use session attributes for rsize and wsize nfs41: destroy_session operation nfs41: enable nfs_client only nfs4_async_handle_error nfs41: sequence operation nfs41: reset the session slot table nfs41: add session setup to the state manager nfs41: add session reset to state manager nfs41: sunrpc: Export the call prepare state for session reset nfs41: use rpc prepare call state for session reset nfs41: kick start nfs41 session recovery when handling errors nfs41: schedule async session reset nfs41: introduce get_state_renewal_cred nfs41: establish sessions-based clientid nfs41: add a get_clid_cred function to nfs4_state_recovery_ops nfs41: get_clid_cred for EXCHANGE_ID nfs41: only retry EXCHANGE_ID on recoverable errors nfs41: sunrpc: add a struct svc_xprt pointer to struct svc_serv for backchannel use nfs41: Allow NFSv4 and NFSv4.1 callback services to coexist nfs41: Setup the backchannel nfs41: Client indicates presence of NFSv4.1 callback channel. nfs41: Release backchannel resources associated with session nfsd41: Backchannel: cleanup nfs4.0 callback encode routines nfsd41: Backchannel: minorversion support for the back channel Andy Gospodarek (1): e1000e: stop unnecessary polling when using msi-x Andy Green (4): [MTD] [NAND] S3C2410: NAND ECC by chip rather than global [MTD] [NAND] S3C2410: Fix CFG debug order [MTD] [NAND] S3C2410: Allow commandline partition processing [ARM] GTA02/FreeRunner: Add machine definition Andy Grover (4): RDS: Correct some iw references in rdma_transport.c RDS: Fix ordering in a conditional RDS: Establish connection before parsing CMSGs RDS: use get_user_pages_fast() Andy Shevchenko (1): V4L/DVB (11442): saa7134: BZ#7524: Add AVerTV Studio 507UA support Andy Walls (21): V4L/DVB (11615): cx18: Rename the work queue to "in_work_queue" V4L/DVB (11616): cx18: Add a work queue for deferring empty buffer handoffs to the firmware V4L/DVB (11617): cx18: Set up to wait for a one-shot response before sending a firmware cmd V4L/DVB (11618): cx18: Convert per stream mutex locks to per queue spin locks V4L/DVB (11619): cx18: Simplify the work handler for outgoing mailbox commands V4L/DVB (11620): cx18: Increment version due to significant buffer handling changes V4L/DVB (11622): cx18: Allow IVTV format VBI insertion in MPEG-2 SVCD and DVD streams V4L/DVB (11623): cx18: Verify cx18-av-core digitizer firmware loads correctly V4L/DVB (11624): cx18: Toggle the AI1 mux when changing the CX18_AUDIO_ENABLE register V4L/DVB (11703): cx18: Have audio decoder drive SIF gain control, and rework AFE config V4L/DVB (11752): cx18: Add missing newline to tuner detection error message V4L/DVB (11753): tveeprom: Point the TCL MNM05-4 tuner entry to an actual tuner definition V4L/DVB (11863): cx18: Initial attempt to get sliced VBI working for 625 line systems V4L/DVB (11864): cx18: Complete support for Sliced and Raw VBI for 625 line systems V4L/DVB (11865): cx18: Tweak color burst gate delay and initial color sub-carrier freq V4L/DVB (11898): cx18: Perform 64 bit divide so it works for 32 bit systems V4L/DVB (11931): lnbp21: Add missing newline V4L/DVB (11932): ivtv: Add missing newline V4L/DVB (11933): tuner-simple, tveeprom: Add Philips FQ1216LME MK3 analog tuner V4L/DVB (11950): cx18: Split LeadTek PVR2100 and DVR3100 H into 2 separate card entries V4L/DVB (11951): cx18: Add DVB-T support for the Leadtek WinFast DVR3100 H Andy Yan (7): [SCSI] mvsas: add support for 94xx; layout change; bug fixes [SCSI] mvsas: bug fix with setting task management frame type [SCSI] mvsas: bug fix of dead lock [SCSI] mvsas: bug fix, null pointer may be used [SCSI] mvsas: correct bit map usage [SCSI] mvsas: performance improvement using domain_device->lldd_dev [SCSI] mvsas: remove all the casts from void * or to void * Aneesh Kumar K.V (9): ext4: Properly initialize the buffer_head state vfs: Add BUG_ON for delayed and unwritten flags in submit_bh() ext4: Mark the unwritten buffer_head as mapped during write_begin ext4: hook fiemap operation for directories vfs: Enable FS_IOC_FIEMAP and FIGETBSZ for all filetypes ext4: Convert ext4_lock_group to use sb_bgl_lock ext4: Avoid leaking blocks after a block allocation failure ext4: truncate the file properly if we fail to copy data from userspace ext4: Avoid corrupting the uninitialized bit in the extent during truncate Anirban Chakraborty (8): [SCSI] qla2xxx: Add QoS support. [SCSI] qla2xxx: Add CPU affinity support. [SCSI] qla2xxx: Remove reference to request queue from scsi request block. [SCSI] qla2xxx: Use port number to compute nvram/vpd parameter offsets. [SCSI] qla2xxx: Correct queue-creation bug when driver loaded in QoS mode. [SCSI] qla2xxx: Correct NULL pointer bug in cpu affinity mode. [SCSI] qla2xxx: Resolve a performance issue in interrupt qla2xxx: Fixed a bug in number of response queue creation logic. Ankit Jain (1): fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Anna Neal (1): libertas: increase spi driver thread priority Anton Blanchard (4): IB/ehca: Replace vmalloc() with kmalloc() for queue allocation powerpc: Improve decrementer accuracy powerpc: Convert RTAS event scan from kernel thread to workqueue sunrpc: align cache_clean work's timer Anton Vorontsov (20): alim15x3: Remove historical hacks, re-enable init_hwif for PowerPC powerpc/85xx: Add PCI IDs for MPC8569 family processors powerpc/85xx: Fix mpc8569emds crypto node to include SNOW unit powerpc/85xx: Fix reg & interrupts for mpc8569emds localbus added NAND powerpc/85xx: Add eSDHC support for MPC8569E-MDS boards powerpc/85xx: Enable Serial RapidIO for MPC85xx MDS boards powerpc/85xx: Add STMicro M25P40 serial flash support for MPC8569E-MDS powerpc/83xx: Update sdhci nodes per new bindings powerpc/5200: convert mpc52xx_psc_spi to use cs_control callback mpc52xx_psc_spi: convert to cs_control callback spi_mpc83xx: handle other Freescale processors spi_mpc83xx: quieten down the "Requested speed is too low" message spi_mpc83xx: add small delay after asserting chip-select line powerpc/86xx: add MMC SPI support for MPC8610HPCD boards spi_mpc83xx: fix checkpatch issues spi_mpc83xx: split mpc83xx_spi_work() into two routines spi_mpc83xx: remove dead code spi_mpc83xx: rename spi_83xx.c to spi_8xxx.c spi_mpc8xxx: s/83xx/8xxx/g sdhci: Add support for hosts that are only capable of 1-bit transfers Antonio Ospite (1): [ARM] pxa/ezx: setup gpio-keys for EzX phones Antti Palosaari (3): V4L/DVB (11490): af9015: add new dvb_usb_device_properties entry for upcoming USB IDs V4L/DVB (11491): af9015: support for AverMedia AVerTV Volar GPS 805 (A805) V4L/DVB (11915): af9015: support for Genius TVGo DVB-T03 Anuj Aggarwal (1): ASoC: Added OMAP3 EVM support in ASoC. Aoi Shinkai (1): sh: Fix sh4a llsc-based cmpxchg() Aristeu Sergio Rozanski Filho (1): Input: uinput - flush all pending ff effects before destroying device Arjan van de Ven (4): perf_counter tools: Warning fixes on 32-bit perf_counter tools: Initialize a stack variable before use [libata] ata_piix: Enable parallel scan pci: use pci_ioremap_bar() in drivers/serial Armin Kuster (1): Sysfs: fix possible memleak in sysfs_follow_link Armin Schenker (1): V4L/DVB (11571): Add Elgato EyeTV DTT deluxe to dibcom driver Arnaldo Carvalho de Melo (29): inet_diag: Remove dup assignments net: Make inet_twsk_put similar to sock_put perf record: Allow specifying a pid to record mISDN: Use kernel_{send,recv}msg instead of open coding perf_counter: First part of 'perf report' conversion to C + elfutils perf_counter: Implement dso__load using libelf perf_counter: Use rb_trees in perf report perf_counter: Add our private copy of list.h perf_counter: Use rb_tree for symhists and threads in report perf report: Fix kernel symbol resolution perf: Don't assume /proc/kallsyms is ordered perf report: Sort output by symbol usage perf report: Use hex2long instead of sscanf perf report: Only load text symbols from kallsyms perf report: Show the IP only in --verbose mode perf_counter tools: Move symbol resolution classes from report to libperf perf_counter tools: struct symbol priv area perf_counter tools: Consolidate dso methods to load kernel symbols perf_counter tools: Optionally pass a symbol filter to the dso load routines perf_counter tools: Convert builtin-top to use libperf symbol routines perf_counter tools: Shorten the DSO names using cwd perf_counter tools: Add locking to perf top perf_counter tools: Add string.[ch] perf_counter tools: Use hex2u64 in more places perf_counter tools: Add missing rb_erase in dso__delete_symbols perf_counter tools: Cover PLT symbols too perf_counter tools: Fix off-by-one bug in symbol__new perf report: Fix rbtree bug perf report: Add -vvv to print the list of threads and its mmaps Arnd Bergmann (36): microblaze: export some symbols microblaze: fix __user annotations microblaze: kill incorrect __bad_xchg definition microblaze: remove cacheable_memcpy microblaze: add security initcalls microblaze: add a dummy pgprot_noncached microblaze: do not include types.h in ptrace.h microblaze: remove bad_user_access_length microblaze: clean up checksum.c microblaze: use generic dma-mapping-broken.h x86: fix ktermios-termio conversion asm-generic: rename termios.h, signal.h and mman.h asm-generic: introduce asm/bitsperlong.h asm-generic: add generic sysv ipc headers asm-generic: add generic ABI headers asm-generic: add a generic unistd.h asm-generic: rename atomic.h to atomic-long.h asm-generic: rename page.h and uaccess.h asm-generic: make get_rtc_time overridable asm-generic: make pci.h usable directly asm-generic: make bitops.h usable asm-generic: add generic versions of common headers asm-generic: add legacy I/O header files asm-generic: add generic atomic.h and io.h asm-generic: add generic NOMMU versions of some headers asm-generic: add a generic uaccess.h add generic lib/checksum.c asm-generic: merge branch 'master' of torvalds/linux-2.6 time: move PIT_TICK_RATE to linux/timex.h mb862xxfb: use CONFIG_OF instead of CONFIG_PPC_OF ipc: use __ARCH_WANT_IPC_PARSE_VERSION in ipc/util.h asm-generic: drop HARDIRQ_BITS definition from hardirq.h asm-generic: list Arnd as asm-generic maintainer asm-generic: hook up new system calls lib/checksum.c: fix endianess bug microblaze: remove init_mm Arne Janbu (1): .gitignore: ignore *.lzma files Artem Bityutskiy (25): OMAP3 clock: lessen amount of noisy messages UBI: remove redundant mutex UBI: re-name volumes_mutex to device_mutex UBI: improve debugging messages UBI: small debugging code optimization UBI: fix races in I/O debugging checks UBI: add dump_stack in checking code UBI: do not panic if volume check fails UBI: minor serialization fix UBIFS: use anonymous device UBI: fix race condition UBIFS: remove dead code UBIFS: allow sync option in rootflags UBI: introduce new constants UBI: fix and clean-up error paths in WL worker UBI: do not switch to R/O mode on read errors Kill jffs2-user.h UBIFS: do not forget to register BDI device hrtimer: export ktime_add_safe UBIFS: start using hrtimers UBI: improve messages in the WL worker UBI: print amount of reserved PEBs UBI: fix kmem_cache_free on error patch UBI: fix multiple spelling typos UBI: handle more error codes Arun R Bharadwaj (4): timers: Framework for identifying pinned timers timers: Identifying the existing pinned timers timers: /proc/sys sysctl hook to enable timer migration timers: Logic to move non pinned timers Arve HjønnevĂĄg (2): Staging: android: lowmemorykiller: Only iterate over process list when needed. Staging: android: lowmemorykiller: Don't count free space unless it meets the specified limit by itself Atsushi Nemoto (15): ASoC: Add TXx9 AC link controller driver (v3) mtd: nand: Fix memory leak on txx9ndfmc probe failure. MIPS: Fix __ndelay build error and add 'ull' suffix for 32-bit kernel MIPS: TXx9: micro optimization for clocksource and clock_event DMA: TXx9 Soc DMA Controller driver MIPS: TXx9: Add DMAC support MIPS: TXx9: Add ACLC support MIPS: TXx9: Add SRAMC support MIPS: hwrng: Add TX4939 RNG driver MIPS: TXx9: Add TX4939 RNG support rtc-tx4939: drop IRQF_SHARED rtc-ds1553: drop IRQF_SHARED rtc: make rtc_update_irq callable with irqs enabled kgdb: kgdboc console poll hooks for serial_txx9 uart DMA: txx9dmac: use dma_unmap_single if DMA_COMPL_{SRC,DEST}_UNMAP_SINGLE set Avadh Patel (1): tracing: add saved_cmdlines file to show cached task comms Avi Kivity (18): KVM: VMX: Don't use highmem pages for the msr and pio bitmaps KVM: VMX: Don't intercept MSR_KERNEL_GS_BASE KVM: VMX: Make module parameters readable KVM: VMX: Rename kvm_handle_exit() to vmx_handle_exit() KVM: VMX: Simplify module parameter names KVM: VMX: Annotate module parameters as __read_mostly KVM: VMX: Zero the vpid module parameter if vpid is not supported KVM: VMX: Zero ept module parameter if ept is not present KVM: VMX: Fold vm_need_ept() into callers KVM: VMX: Make flexpriority module parameter reflect hardware capability KVM: MMU: Use different shadows when EFER.NXE changes KVM: Replace kvmclock open-coded get_cpu_var() with the real thing KVM: Fix cpuid feature misreporting KVM: Add AMD cpuid bit: cr8_legacy, abm, misaligned sse, sse4, 3dnow prefetch x86: Add cpu features MOVBE and POPCNT KVM: Update cpuid 1.ecx reporting KVM: Disable large pages on misaligned memory slots KVM: Prevent overflow in largepages calculation Ayaz Abdulla (4): forcedeth: add clock gating feature forcedeth: remove device id macros forcedeth: addition of new mcp89 device id removal of forcedeth device ids Balbir Singh (1): memcg: add file-based RSS accounting Barry Kitson (1): V4L/DVB (11996): saa7134: add support for AVerMedia M103 (f736) Barry Song (1): ASoC: Blackfin: update the bf5xx_i2s_resume parameters Bartlomiej Zolnierkiewicz (140): Merge branch 'for-linus' into for-next Merge branch 'for-linus' into for-next mg_disk: fix CONFIG_LBD=y warning block: enable by default support for large devices and files on 32-bit archs mg_disk: fix dependency on libata mg_disk: use defines from Merge branch 'for-linus' into for-next Merge branch 'for-linus' into for-next ide: BUG() on unknown flags in ide_disk_special() ide: merge ide_disk_special() into do_special() (v2) ide: replace special_t typedef by IDE_SFLAG_* flags ide: remove chipset field from hw_regs_t ide: pass number of ports to ide_host_{alloc,add}() (v2) ide: remove hw_regs_t typedef Merge branch 'for-linus' into for-next partitions: warn about the partition exceeding device capacity partitions: add ->set_capacity block device method ide-gd: implement block device ->set_capacity method (v2) ide: preserve Host Protected Area by default (v2) Merge branch 'for-linus' into for-next icside: remove superfluous ->maskproc method ide: remove superfluous SELECT_MASK() call from ide_driveid_update() ide: remove superfluous SELECT_MASK() call from do_rw_taskfile() hpt366: sync quirk_drives[] list with pdc202xx_{new,old}.c hpt366: enable all quirks for devices on quirk_drives[] list ide: respect quirk_drives[] list on all controllers ide: add IDE_DFLAG_NIEN_QUIRK device flag [SCSI] fix documentation for two functions ide: skip probe if there are no devices on the port (v2) ide: unexport ide_find_dma_mode() ide: re-implement ide_pci_init_one() on top of ide_pci_init_two() Merge branch 'bp-remove-pc-buf' into for-next ata: add ata_id_pio_need_iordy() helper (v2) ide: IORDY handling fixes ide: don't enable IORDY at a probe time ide: filter out invalid DMA xfer mode changes in HDIO_DRIVE_CMD ioctl handler ide: BUG() on unknown requests block: rename CONFIG_LBD to CONFIG_LBDAF Staging: rt2870: remove unused files Staging: rt2870: remove kernel version compatibility wrappers Staging: rt3070: remove kernel version compatibility wrappers Staging: rt2860: remove IWE_STREAM_ADD_*() macros Staging: rt2870: remove IWE_STREAM_ADD_*() macros Staging: rt2860: remove dead WIN_NDIS code Staging: rt2860: remove dead UNDER_CE code Staging: rt2870: remove dead UNDER_CE code Staging: rt3070: remove dead UNDER_CE code Staging: rt2860: remove dead WSC_AP_SUPPORT code Staging: rt2870: remove dead WSC_AP_SUPPORT code Staging: rt3070: remove dead *WSC_INCLUDED code Staging: rt2860: remove dead WDS_SUPPORT code Staging: rt2870: remove dead WDS_SUPPORT code Staging: rt3070: remove dead WDS_SUPPORT code Staging: rt3070: remove dead MLME_EX code Staging: rt2860: remove dead APCLI_SUPPORT code Staging: rt2870: remove dead APCLI_SUPPORT code Staging: rt2860: remove dead CONFIG_APSTA_MIXED_SUPPORT code Staging: rt2870: remove dead CONFIG_APSTA_MIXED_SUPPORT code Staging: rt3070: remove dead CONFIG_APSTA_MIXED_SUPPORT code Staging: rt2860: remove dead UCOS code Staging: rt2870: remove dead UCOS code Staging: rt3070: remove dead UCOS code Staging: rt2860: remove dead NINTENDO_AP code Staging: rt2870: remove dead NINTENDO_AP code Staging: rt3070: remove dead NINTENDO_AP code Staging: rt2860: remove dead BIN_IN_FILE code Staging: rt2870: remove dead BIN_IN_FILE code Staging: rt3070: remove dead BIN_IN_FILE code Staging: rt2860: remove dead RALINK_ATE code Staging: rt2870: remove dead RALINK_ATE code Staging: rt3070: remove dead RALINK_ATE code Staging: rt2860: remove dead BLOCK_NET_IF code Staging: rt2870: remove dead BLOCK_NET_IF code Staging: rt3070: remove dead BLOCK_NET_IF code Staging: rt2860: remove dead DFS_SUPPORT code Staging: rt2870: remove dead DFS_SUPPORT code Staging: rt3070: remove dead DFS_SUPPORT code Staging: rt2860: remove dead CARRIER_DETECTION_SUPPORT code Staging: rt2870: remove dead CARRIER_DETECTION_SUPPORT code Staging: rt3070: remove dead CARRIER_DETECTION_SUPPORT code Staging: rt2860: remove dead MULTIPLE_CARD_SUPPORT code Staging: rt2870: remove dead MULTIPLE_CARD_SUPPORT code Staging: rt3070: remove dead MULTIPLE_CARD_SUPPORT code Staging: rt2860: remove dead QOS_DLS_SUPPORT code Staging: rt2870: remove dead QOS_DLS_SUPPORT code Staging: rt3070: remove dead QOS_DLS_SUPPORT code Staging: rt2860: remove dead EXT_BUILD_CHANNEL_LIST code Staging: rt2870: remove dead EXT_BUILD_CHANNEL_LIST code Staging: rt3070: remove dead EXT_BUILD_CHANNEL_LIST code Staging: rt2860: remove dead SNMP_SUPPORT code Staging: rt2870: remove dead SNMP_SUPPORT code Staging: rt3070: remove dead SNMP_SUPPORT code Staging: rt2860: remove dead SINGLE_SKU code Staging: rt2870: remove dead SINGLE_SKU code Staging: rt3070: remove dead SINGLE_SKU code Staging: rt2860: remove dead LEAP_SUPPORT code Staging: rt2870: remove dead LEAP_SUPPORT code Staging: rt3070: remove dead LEAP_SUPPORT code Staging: rt2860: remove dead DOT11N_DRAFT3 code Staging: rt2870: remove dead DOT11N_DRAFT3 code Staging: rt3070: remove dead DOT11N_DRAFT3 code Staging: rt2860: remove dead INF_AMAZON_SE code Staging: rt2870: remove dead INF_AMAZON_SE code Staging: rt3070: remove dead INF_AMAZON_SE code Staging: rt2860: remove dead RT_BIG_ENDIAN code Staging: rt2870: remove dead RT_BIG_ENDIAN code Staging: rt3070: remove dead RT_BIG_ENDIAN code Staging: rt2860: remove CONFIG_STA_SUPPORT ifdefs Staging: rt2870: remove CONFIG_STA_SUPPORT ifdefs Staging: rt3070: remove CONFIG_STA_SUPPORT ifdefs Staging: rt2860: remove NATIVE_WPA_SUPPLICANT_SUPPORT ifdefs Staging: rt2870: remove NATIVE_WPA_SUPPLICANT_SUPPORT ifdefs Staging: rt3070: remove NATIVE_WPA_SUPPLICANT_SUPPORT ifdefs Staging: rt2860: remove WPA_SUPPLICANT_SUPPORT ifdefs Staging: rt2870: remove WPA_SUPPLICANT_SUPPORT ifdefs Staging: rt3070: remove WPA_SUPPLICANT_SUPPORT ifdefs Staging: rt2860: remove DOT11_N_SUPPORT ifdefs Staging: rt2870: remove DOT11_N_SUPPORT ifdefs Staging: rt3070: remove DOT11_N_SUPPORT ifdefs Staging: rt2860: remove dead CONFIG_AP_SUPPORT code Staging: rt2870: remove dead CONFIG_AP_SUPPORT code Staging: rt3070: remove dead CONFIG_AP_SUPPORT code Staging: rt2860: use empty ASSERT() macro Staging: rt2870: use empty ASSERT() macro Staging: rt3070: use empty ASSERT() macro Staging: rt2860: remove dead code Staging: rt2870: remove dead code Staging: rt3070: remove dead code Staging: rt2870: prepare for rt{28,30}70/*.[ch] merge Staging: rt{28,30}70: merge rt{28,30}70/*.[ch] Staging: rt2870: prepare for rt{28,30}70/common/*.[ch] merge Staging: rt{28,30}70: merge rt{28,30}70/common/*.[ch] Staging: rt2870: prepare for rt{28,30}70/sta/*.[ch] merge Staging: rt{28,30}70: merge rt{28,30}70/sta/*.[ch] Staging: rt2860: prepare for rt28[67]0/*.[ch] merge Staging: rt28[67]0: merge rt28[67]0/*.[ch] Staging: rt2860: prepare for rt28[67]0/common/*.[ch] merge Staging: rt28[67]0: merge rt28[67]0/common/*.[ch] Staging: rt2860: prepare for rt28[67]0/sta/*.[ch] merge Staging: rt28[67]0: merge rt28[67]0/sta/*.[ch] Baruch Siach (2): gpio: driver for PrimeCell PL061 GPIO controller i2c: driver for the Synopsys DesignWare I2C controller Bastien Nocera (1): HID: Wacom Graphire Bluetooth driver Becky Bruce (12): swiotlb: comment corrections swiotlb: fix compile warning swiotlb: map_page fix for highmem systems swiotlb: allow arch override of address_needs_mapping swiotlb: rename unmap_single to do_unmap_single swiotlb: use swiotlb_sync_single instead of duplicating code swiotlb: change swiotlb_bus_to[phys,virt] prototypes powerpc/86xx: Add 36-bit device tree for mpc8641hpcn powerpc: make dma_window_* in pci_controller struct avail on 32b powerpc: Use sg->dma_length in sg_dma_len() macro on 32-bit powerpc: Add support for swiotlb on 32-bit powerpc: Add 86xx support for SWIOTLB Ben Dooks (64): [ARM] SMDK6410: Ensure LCD settings are setup [ARM] S3C24XX: Move plat/dma.h [ARM] S3C24XX: Remove hardware specific registers from DMA [ARM] S3C24XX: DMA: Split hardware regs out of [ARM] S3C24XX: Fix indentation in [ARM] S3C: Make common header [ARM] S3C24XX: dma.h should not include [ARM] S3C: Move DMA channel management code to plat-s3c [ARM] S3C: Add common USB OHCI device definition [ARM] SMDK6410: Add USB OHCI host [ARM] S3C: Rename S3C24XX_PA_USBHOST to S3C_PA_USBHOST [ARM] S3C64XX: Add USB OHCI support [ARM] S3C: Add debug to UART save and a per-arch callback pre-restore [ARM] S3C: PM save UART UDIVSLOT if doing PM [ARM] S3C64XX: Initial support for PM (suspend to RAM) [ARM] S3C64XX: Add s3c6410_sysclass export [ARM] S3C64XX: Add generic s3c64xx sys device. [ARM] S3C64XX: Add IRQ PM code [ARM] S3C: GPIO PM core GPIOlib integration [ARM] VIC: Add power management device [ARM] SMDK6400: Initial machine support for SMDK6400 [ARM] S3C6400: Core support for S3C6400 SoC [ARM] S3C64XX: Add S3C6400 CPU detection. [ARM] S3C64XX: Add S3C6400 SDHCI setup support [ARM] SMDK6400: Fix WM8753 i2c board definition [ARM] Merge next-s3c-s3c6410 into for-rmk-devel [ARM] S3C64XX: Add ARM clock [ARM] S3C: Add USB high-speed/OtG device definitions [ARM] SMDK6410: Add USB high-speed/OtG gadget device [ARM] S3C24XX: GPIO: Remove s3c2410_gpio_irq2pin() call [ARM] S3C24XX: GPIO: Remove pin specific input and output defines [ARM] S3C: Move watchdog system reset to own file. [ARM] S3C64XX: Use common watchdog reset for system reset. [ARM] S3C24XX: GPIO: Move gpio functions out of [ARM] S3C24XX: Fix missing [ARM] S3C24XX: GPIO: Clean out unused definitions in [ARM] S3C24XX: GPIO: Start removal of S3C24XX_GPIO_BASE [ARM] S3C24XX: GPIO: Add S3C64XX style GPIO numbering [ARM] S3C24XX: GPIO: Change to macros for GPIO numbering [ARM] S3C64XX: DMA support [ARM] S3C: Merge next-s3c64xx-dma2 into for-rmk-devel [ARM] S3C24XX: GPIO: Fix error returns from gpio functions [ARM] S3C24XX: GPIO: Move gpiolib initialisation earlier [ARM] S3C24XX: GPIO: Fix missing GPIOs in gpiolib [ARM] S3C24XX: GPIO: Change usb-simtec.c to use gpiolib. [ARM] S3C24XX: Merge devel-gpio [MTD] [NAND] S3C2410: Move to using platform device table [MTD] [NAND] S3C2410: Basic kerneldoc comment updates [MTD] [NAND] S3C2410: Deal with unaligned lengths in S3C2440 buffer read/write [MTD] [NAND] S3C2410: Use DIV_ROUND_UP i2c-s3c2410: move to using platform idtable to match devices sdhci: Print ADMA status and pointer on debug mmc_block: do not DMA to stack [ARM] MINI2440: Cleanup duplicated header includes s3cmci: fix dma configuration call USB: Gadget driver for Samsung HS/OtG block i2c-s3c2410: use resource_size() [ARM] VIC: Fix resume sources usage [ARM] S3C2440: Merge branch next-mini2440 into next-s3c s3c-fb: CPUFREQ frequency scaling support sdhci-s3c: Samsung S3C based SDHCI controller glue sdhci: Add better ADMA error reporting sdhci: Add SDHCI_QUIRK_NO_MULTIBLOCK quirk s3cmci: fix dma configuration call Ben Gamari (2): drm/i915: Warn when inteldrmfb fails to restore its framebuffer config drm/i915: A few debugfs formatting fixes Ben Hutchings (24): ethtool: Add port type PORT_OTHER mdio: Add register definitions for MDIO (clause 45) mdio: Add generic MDIO (clause 45) support functions sfc: Use generic MDIO functions and definitions chelsio: Use generic MDIO definitions and mdio_mii_ioctl() cxgb3: Use generic MDIO definitions and mdio_mii_ioctl() ixgbe: Use generic MDIO definitions and functions ixgb: Use generic MDIO definitions s2io: Use generic MDIO definitions mii: Simplify mii_resolve_flowctrl_fdx() mii: Add mii_advertise_flowctrl() mdio: Add mdio45_ethtool_spauseparam_an() sfc: Use generic MDIO flow control auto-negotiation functions ethtool/mdio: Report MDIO mode support and link partner advertising ethtool/mdio: Support backplane mode negotiation mii: Rewrite mii_ethtool_gset() to report mdio_support and lp_advertising mdio: Add 10GBASE-T SNR register definition mdio: Add XENPAK LASI register definitions sfc: Use generic XENPAK register definitions sfc: Remove lro module parameter chelsio: Use generic XENPAK LASI register definitions cxgb3: Use generic XENPAK LASI register definitions mdio: Expose 10GBASE-T MDI-X status via ethtool sfc: Expose 100/1000BASE-T MDI-X status via ethtool Ben Nizette (2): avr32: Fix clash in ATMEL_USART_ flags atmel-lcdc: fix pixclock upper bound detection Ben Skeggs (1): drm: don't associate _DRM_DRIVER maps with a master Benjamin Herrenschmidt (22): Merge branch 'merge' into next powerpc/mm: Fix some SMP issues with MMU context handling powerpc/mm: Fix a AB->BA deadlock scenario with nohash MMU context lock powerpc: Set init_bootmem_done on NUMA platforms as well powerpc: Move VMX and VSX asm code to vector.S powerpc: Introduce CONFIG_PPC_BOOK3S powerpc: Split exception handling out of head_64.S powerpc: Separate PACA fields for server CPUs powerpc: Shield code specific to 64-bit server processors spinlock: Add missing __raw_spin_lock_flags() stub for UP Merge commit 'jwb/next' into next powerpc: Fix bug in move of altivec code to vector.S Merge commit 'origin/master' into next Merge commit 'origin/master' into next powerpc: Don't do generic calibrate_delay() powerpc: Fix invalid construct in our CPU selection Kconfig powerpc: Add memory clobber to mtspr() Merge commit 'origin/master' into next mm: Move pgtable_cache_init() earlier Merge commit 'origin/master' into next Merge commit 'gcl/merge' into next mm: Extend gfp masking to the page allocator Benny Halevy (39): update Documentation/filesystems/00-INDEX with new nfsd related docs. nfs41: nfs_client.cl_minorversion nfs41: Use mount minorversion option nfs41: translate NFS4ERR_MINOR_VERS_MISMATCH to EPROTONOSUPPORT nfs41: client xdr definitions nfs41: use nfs4_server_caps_arg nfs41: use nfs4_readlink_res nfs41: use nfs4_statfs_res nfs41: use nfs4_fsinfo_res nfs41: use nfs4_pathconf_res nfs41: use nfs4_getaclres NFS: get rid of unused xdr decode_setattr(, res) argument nfs41: use nfs4_setaclres nfs41: use nfs4_fs_locations_res nfs41: nfs41: pass *session in seq_args and seq_res NFS: use decode_change_info_maxsz for xdr maxsz calculations NFS: define and initialize compound_hdr.replen NFS: update hdr->replen for every encode op NFS: use dynamically computed compound_hdr.replen for xdr_inline_pages offset nfs41: encode minorversion in compound header nfs41: find slot nfs41: exchange_id operation nfs41: lease renewal nfs41: support minorversion 1 for nfs4_check_lease nfs41: recover lease in _nfs4_lookup_root nfs41: increment_{open,lock}_seqid nfs41: Refactor nfs4_{init,destroy}_callback for nfs4.0 nfs41: minorversion support for nfs4_{init,destroy}_callback nfs41: sunrpc: provide functions to create and destroy a svc_xprt for backchannel use nfs41: create a svc_xprt for nfs41 callback thread and use for incoming callbacks nfs41: store minorversion in cb_compound_hdr_arg nfs41: decode minorversion 1 cb_compound header nfs41: callback numbers definitions nfs41: consider minorversion in callback_xdr:process_op nfs41: cb_sequence protocol level data structures nfs41: cb_sequence proc implementation nfs41: cb_sequence xdr implementation nfs41: verify CB_SEQUENCE position in callback compound nfs41: Move initialization of nfs4_opendata seq_res to nfs4_init_opendata_res Bernd Porr (2): Staging: comedi: convert usbdux* to use firmware_request Staging: comedi: usbdux: buffer overflow error handling Bian Naimeng (1): nfsd4: distinguish expired from stale stateids Bill Pemberton (79): Staging: comedi: Remove ni_board typedef Staging: comedi: Remove ni_private typedef Staging: comedi: Remove local_info_t typedef in ni_labpc_cs Staging: comedi: Remove dio24_board_struct typedef Staging: comedi: Remove local_info_t typedef in ni_daq_dio24 Staging: comedi: Remove BYTE and *PBYTE typedefs in addi-data Staging: comedi: Remove SHORT and *PSHORT typedefs in addi-data Staging: comedi: Remove USHORT and *PUSHORT typedefs in addi-data Staging: comedi: Remove WORD and *PWORD typedefs in addi-data Staging: comedi: Remove INT and *PINT typedefs in addi-data Staging: comedi: Remove UINT and *PUINT typedefs in addi-data Staging: comedi: Remove LONG and *PLONG typedefs in addi-data Staging: comedi: Remove ULONG and *PULONG typedefs in addi-data Staging: comedi: Remove DWORD and *PDWORD typedefs in addi-data Staging: comedi: Remove ULONG_PTR typedef in addi-data Staging: comedi: Remove PCRANGE typedef in addi-data Staging: comedi: Remove boardtype typedef in addi-data Staging: comedi: Remove str_ModuleInfo typedef in addi-data Staging: comedi: Remove addi_private typedef in addi-data Staging: comedi: Remove str_MainHeader typedef in addi-data/addi_eeprom.c Staging: comedi: Remove str_DigitalInputHeader typedef in addi-data/addi_eeprom.c Staging: comedi: Remove str_DigitalOutputHeader typedef in addi-data/addi_eeprom.c Staging: comedi: Remove str_TimerDetails typedef in addi-data/addi_eeprom.c Staging: comedi: Remove str_TimerMainHeader typedef in addi-data/addi_eeprom.c Staging: comedi: Remove str_AnalogReadInformation typedef in addi-data/hwdrv_apci3120.h Staging: comedi: Remove str_Module typedef in addi-data/hwdrv_apci3200.h Staging: comedi: Remove str_BoardInfos typedef in addi-data/hwdrv_apci3200 Staging: comedi: Remove str_ADDIDATA_RTDStruct typedef in addi-data/hwdrv_apci3200 Staging: comedi: Remove labpc_board_struct typedef Staging: comedi: Remove labpc_private typedef Staging: comedi: Remove str_AnalogInputHeader typedef in addi-data/addi_eeprom.c Staging: comedi: remove C99 comments in 8253.h Staging: comedi: remove C99 comments in acl7225b.c Staging: comedi: remove C99 comments in APCI1710_82x54.c Staging: comedi: remove C99 comments in das1800.c Staging: comedi: remove C99 comments in pcl818.c Staging: comedi: remove C99 comments in hwdrv_apci1500.c Staging: comedi: remove C99 comments in APCI1710_Pwm.c Staging: comedi: remove C99 comments in hwdrv_apci1564.c Staging: comedi: remove C99 comments in hwdrv_apci3200.c Staging: comedi: remove C99 comments in hwdrv_apci3120.c Staging: comedi: remove C99 comments in adl_pci6208.c Staging: comedi: remove C99 comments in adl_pci9118.c Staging: comedi: remove C99 comments in adv_pci1723.c Staging: comedi: remove C99 comments in c6xdigio.c Staging: comedi: remove C99 comments in cb_pcidas64.c Staging: comedi: remove C99 comments in cb_pcidas.c Staging: comedi: remove C99 comments in cb_pcimdas.c Staging: comedi: remove C99 comments in gsc_hpdi.c Staging: comedi: remove C99 comments in mpc624.c Staging: comedi: remove C99 comments in ni_at_a2150.c Staging: comedi: remove C99 comments in ni_labpc.c Staging: comedi: remove C99 comments in pcl724.c Staging: comedi: remove C99 comments in pcl816.c Staging: comedi: remove C99 comments in s526.c Staging: comedi: Remove C99 comments Staging: comedi: fix "foo * bar" should be "foo *bar" Staging: comedi: Add spaces after commas Staging Comedi: fix spacing around parens Staging: Comedi: change space indentation to tabs Staging: comedi: remove assignment in conditionals Staging: comedi: Remove parens around return values Staging: comedi: fix the way structs are initialized. Staging: comedi: more remove C99 comments Staging: comedi: remove space after ampersand Staging: comedi: more fix "foo * bar" should be "foo *bar" Staging: comedi: more fix the way structs are initialized. Staging: comedi: make use of ARRAY_SIZE macro Staging: comedi: comment out useless if Staging: comedi: move while to same line as } in do loops Staging: comedi: replace for loop with msleep() Staging: comedi: simply read and write functions in adl_pci8164 staging: comedi: Remove MIN macro staging: comedi: Move pcm do_cmdtest function into a single source file Staging: pohmelfs: move open brace to same line on structs Staging: pohmelfs: Remove C99 comments Staging: pohmelfs: Remove braces around single statements Staging: Add serqt_usb2, a rewrite of serqt_usb for the usb-serial layer Staging: serqt_usb2 add the driver to the build Bing Zhao (7): libertas: support mesh for various firmware versions libertas: add support for Marvell SD8688 chip libertas: define macros for SDIO model numbers libertas: get SD8688 rx length with one CMD52 libertas: implement function init/shutdown commands for SD8688 libertas: read SD8688 firmware status from new register libertas: improve function init/shutdown handling for SD8688 Bjorn Helgaas (21): ACPI: use LNXCPU, not ACPI_CPU, for Linux-specific processor _HID ACPI: processor: check for synthetic _HID, default to "Device" declaration ACPI: processor: move device _HID into driver PNPACPI: parse Extended Address Space Descriptors ACPI: don't check power state after _ON/_OFF pnp: add PNP resource range checking function ACPI: allow drivers to request both device and system notify events ACPI: ac: use .notify method instead of installing handler directly ACPI: battery: use .notify method instead of installing handler directly ACPI: asus-laptop: use .notify method instead of installing handler directly ACPI: asus-acpi: use .notify method instead of installing handler directly ACPI: eeepc-laptop: use .notify method instead of installing handler directly ACPI: simplify notification debug messages ACPI: remove unused "status_changed" return value from Check Device handling ACPI: remove unused return values from Bus Check & Device Check handling ACPI: use handle, not device, in system notification path ACPI: pci_root: check _CRS, then _BBN for downstream bus number ACPI: pci_root: simplify acpi_pci_root_add() control flow ACPI: pci_root: use driver data rather than list lookup ACPI: pci_root: simplify list traversals ACPI: pci_root: remove unused dev/fn information Boaz Harrosh (15): libosd: Use new blk_rq_map_kern block: Add blk_make_request(), takes bio, returns a request libosd: Use of new blk_make_request block: Un-export blk_rq_append_bio scsi_lib: remove unused variable [SCSI] libosd: OSD2r05: Additional command enums [SCSI] libosd: OSD2r05: Attribute definitions [SCSI] libosd: Better printout of OSD target system information [SCSI] libosd: osd_req_{read,write}_kern new API [SCSI] libosd: Let _osd_req_finalize_data_integrity receive number of out_bytes [SCSI] libosd: osd_req_{read,write} takes a length parameter [SCSI] libosd: Define an osd_dev wrapper to retrieve the request_queue [SCSI] osduld: use filp_open() when looking up an osd-device [SCSI] libosd: Use REQ_QUIET requests. [SCSI] osd: Remove out-of-tree left overs Bob Copeland (22): ath5k: reduce exported channel list ath9k: separate ath9k specific code from ath9k_regd_get_ctl() ath9k: pass regd structure directly to regulatory functions atheros: introduce ath module containing common ath5k/ath9k/ar9170 code ath: move more setup code into ath_regd_init ath5k: use regulatory infrastructure ath5k: add support for Fukato Datacask Jupiter LEDs ath5k: fix initvals errors ath5k: use tasklet_hi_schedule for beacon queue ath5k: use bool for modparams ath5k: use rx hw descriptor pointer for self-linked check ath5k: manipulate rxlink and descriptor address under rxbuf lock ath5k: correct interrupt storm warning ath5k: use ctl settings based on current regdomain wl12xx: correct printk format warnings ath5k: update beacons in AP mode ath5k: avoid and warn on potential infinite loop ath5k: remove conf->beacon_int usage nl80211: use GFP_ATOMIC for michael mic failure message ath5k: disable beacon interrupt when interface is down mac80211: fix minstrel single-rate memory corruption ath5k: minor rfkill cleanup Bob Moore (22): ACPICA: Update error/warning interfaces ACPICA: Fix a few warnings for gcc 3.4.4 ACPICA: Change behavior of object copy for mutex/event objects ACPICA: Remove unused global variables ACPICA: Fix possible warnings for ACPI_THREAD_ID on 64-bit build ACPICA: Cleanup byte/word/dword extraction macros, fix possible warnings ACPICA: Fix printf format warnings for 64-bit build ACPICA: Fix possible dereference of null pointer ACPICA: Miscellaneous lint changes ACPICA: Fix miscellaneous warnings under gcc 4+ ACPICA: Fix implementation of AML BreakPoint operator (break to debugger) ACPICA: Linux OSL: cleanup/update/merge ACPICA: Update version to 20090422. ACPICA: Mutex support: Fix release ordering issue and current sync level ACPICA: Fix allowable release order for ASL mutex objects ACPICA: Fix DebugObject output for DdbHandle objects ACPICA: Additional validation of _PRT packages (resource mgr) ACPICA: Simplify and optimize NsGetNextNode function ACPICA: Update Load() to use operation region interfaces ACPICA: Simplify internal operation region interface ACPICA: Disable preservation of SCI enable bit (SCI_EN) ACPICA: Update version to 20090521. Borislav Petkov (31): ide: add helpers for preparing sense requests ide-cd: convert to using generic sense request ide-atapi: convert ide-{floppy,tape} to using preallocated sense buffer ide: add helpers for preparing sense requests ide-cd: convert to using generic sense request ide-atapi: convert ide-{floppy,tape} to using preallocated sense buffer ide-tape: fix potential fs requests bug ide-atapi: switch to blk_rq_bytes() on do_request() path ide-atapi: switch to rq->resid_len ide-atapi: add a len-parameter to ide_queue_pc_tail ide-atapi: add a buffer-arg to ide_queue_pc_tail ide-floppy/ide_floppy_get_flexible_disk_page: use local buffer ide-floppy/ide_floppy_get_sfrp_bit: use local buffer ide-floppy/ide_floppy_format_unit: use local buffer ide-atapi: use local sense buffer ide-floppy/ide_floppy_get_format_progress: use local sense buffer ide-tape/ide_tape_get_bsize_from_bdesc: use local buffer ide-tape: fix READ POSITION cmd handling ide-atapi: remove pc->buf ide-cd: use whole request_sense buffer in EH ide: unify interrupt reason checking ide-tape: change IDE_AFLAG_IGNORE_DSC non-atomically ide-tape: fix IDE_AFLAG_* atomic accesses ide-tape: fix proc warning x86: MSR: add a struct representation of an MSR x86: MSR: add methods for writing of an MSR on several CPUs edac: fold __func__ into edac_debug_printk amd64_edac: do not enable module by default EDAC: do not enable modules by default amd64_edac: add MAINTAINERS entry ide-tape: fix build issue Breno Leitao (4): ixgbe: Return PCI_ERS_RESULT_DISCONNECT when bus is disabled bnx2: no need to check before vfreeing icom: fixing a if clause spaghetti icom: fix compile errors when defining ICOM_TRACE Brian Haley (3): IPv6: Add 'autoconf' and 'disable_ipv6' module parameters IPv6: Print error value when skb allocation fails ipv6: Use correct data types for ICMPv6 type and code Brian King (15): [SCSI] ibmvfc: Fix invalid error response handling [SCSI] ibmvfc: Fixup GFP flags for target allocations [SCSI] ibmvfc: Use DEVICE_ATTR macro [SCSI] ibmvfc: Reduce error logging noise [SCSI] ibmvfc: Fix deadlock in EH [SCSI] ibmvfc: Add support for NPIV Logout [SCSI] ibmvfc: Add flush on halt support [SCSI] ibmvfc: Improve device rediscovery [SCSI] ibmvfc: Improve LOGO/PRLO ELS handling [SCSI] ibmvfc: Driver version 1.0.6 [SCSI] ibmvscsi: Add 16 byte CDB support [SCSI] ibmvscsi: Send adapter info before login [SCSI] ibmvscsi: Add support for capabilities MAD ibmvfc: Process async events before command responses ibmvfc: Fix endless PRLI loop in discovery Brice Goglin (10): myri10ge: force stats update in ethtool gstats myri10ge: allow per-board firmware overriding myri10ge: add MODULE_DEVICE_TABLE myri10ge: fix tx ring size in ethtool -g myri10ge: allow LRO to be enabled via ethtool myri10ge: update version to 1.5.0-1.415 myri10ge: fix the invokation of lro_flush_all myri10ge: drop myri10ge_lro module parameter myri10ge: Add support for vlan_features migration: only migrate_prep() once per move_pages() Bruce Allan (7): e1000e: enable CRC stripping by default e1000e: do not attempt to disable smart powerdown if not supported e1000e: correct flow control thresholds e1000e: specify max supported frame size in adapter struct e1000e: add support for 82577/82578 GbE LOM parts e1000e: workaround a Tx hang on 82577/82578 e1000e: bump the version number Bryan Stephenson (1): Staging: rt2860: fix for driver RT2860 to be able to connect to WPA2 networks Bryan Wu (3): usb: misc: SiS usbvga dangle: accept MUSB_HDRC as a fast enough host controller USB: audio: add USB audio class definitions USB: gadget: add USB Audio Gadget driver Carsten Otte (4): KVM: s390: Fix memory slot versus run - v3 KVM: s390: Unlink vcpu on destroy - v2 KVM: s390: Sanity check on validity intercept KVM: s390: Verify memory in kvm run Catalin Marinas (37): [ARM] 5516/1: Flush the D-cache after initialising the SCU mtd: Add armflash support for multiple blocks of flash RealView: Allow SMP when the Cortex-A9 tile is enabled for EB RealView: Allow access to the secure flash memory block on PB1176 RealView: Toggle one LED per CPU Check whether the TLB operations need broadcasting on SMP systems Clear the IT state when invoking a Thumb-2 signal handler ARMv7: Enable the SWP instruction ARMv7: Document the PRRR and NMRR registers setting arm: Provide _sdata and __bss_stop in the vmlinux.lds.S file RealView: Move the IRQ_* definitions out of the board-*.h files Add core support for ARMv6/v7 big-endian Fix the VFP handling on the Feroceon CPU kmemleak: Add the base support kmemleak: Add documentation on the memory leak detector kmemleak: Add the slab memory allocation/freeing hooks kmemleak: Add the slob memory allocation/freeing hooks kmemleak: Add the slub memory allocation/freeing hooks kmemleak: Add the vmalloc memory allocation/freeing hooks kmemleak: Add kmemleak_alloc callback from alloc_large_system_hash kmemleak: Add modules support kmemleak: Remove some of the kmemleak false positives kmemleak: Enable the building of the memory leak detector kmemleak: Simple testing module for kmemleak kmemleak: Add the corresponding MAINTAINERS entry x86: Provide _sdata in the vmlinux.lds.S file kmemleak: Remove the kmemleak.h include in drivers/char/vt.c kmemleak: Add more info to the MAINTAINERS entry kmemleak: Only use GFP_KERNEL|GFP_ATOMIC for the internal allocations kmemleak: Rename kmemleak_panic to kmemleak_stop kmemleak: Fix some typos in comments [ARM] 5555/1: RealView: Include asm/smp_twd.h in realview-pbx.c [ARM] 5556/1: Fix the irq_desc.cpu references [ARM] 5557/1: Discard some ARM.ex*.*exit.text sections when !HOTPLUG or !HOTPLUG_CPU [ARM] 5558/1: Add extra checks to ARM unwinder to avoid tracing corrupt stacks [ARM] 5559/1: Limit the stack unwinding caused by a kthread exit kmemleak: Do not force the slab debugging Kconfig options Chaitanya Lala (1): e1000e: Expose MDI-X status via ethtool change Chaithrika U S (5): davinci: use 32-bit accesses for low-level debug macros ASoC: Add dummy S/PDIF codec support TI DaVinci EMAC: Remove print_mac, DECLARE_MAC_BUF V4L/DVB (11742): TI THS7303 video amplifier driver code V4L/DVB (11743): Analog Devices ADV7343 video encoder driver Chandra Seetharaman (1): dm mpath: call activate fn for each path in pg_init Chauhan, Vijay (1): [SCSI] scsi_dh_rdac: Retry for NOT_READY(02/04/01) in rdac device handler Cheng Renquan (1): kbuild: remove extra ifdef/endif of top Makefile Chris Friesen (1): ipv4: teach ipconfig about the MTU option in DHCP Chris Leech (1): [SCSI] fcoe: use ETH_P_FIP for skb->protocol of FIP frames Chris Mason (14): Btrfs: stop avoiding balancing at the end of the transaction. Btrfs: balance btree more often Btrfs: reduce mount -o ssd CPU usage Btrfs: fix metadata dirty throttling limits Btrfs: don't allow WRITE_SYNC bios to starve out regular writes Btrfs: avoid IO stalls behind congested devices in a multi-device FS Btrfs: Add mount -o nossd Btrfs: avoid allocation clusters that are too spread out Btrfs: add mount -o ssd_spread to spread allocations out Btrfs: autodetect SSD devices Btrfs: avoid races between super writeout and device list updates Btrfs: fix -o nodatasum printk spelling Btrfs: fix oops when btrfs_inherit_iflags called with a NULL dir Btrfs: fix extent_buffer leak during tree log replay Chris Peterson (1): slow-work: use round_jiffies() for thread pool's cull and OOM timers Chris PockelĂ© (1): ALSA: hda - Add support of Samsung NC10 mini notebook Chris Sanford (1): trivial: unnecessary (void*) cast removal in sound/oss/msnd.c Chris Wilson (10): drm/i915: Sanity check execbuffer arguments before touching state. drm/i915: OR in the COMMAND read domain for the batch buffer. drm/i915: Call drm_vblank_post_modeset() on error paths. drm/i915: no need to hold mutex for object lookup drm/i915: use I915_GEM_GPU_DOMAINS drm/i915: NOMEM->NOSPC drm: Memory fragmentation from lost alignment blocks drm/i915: detach/attach get/put pages symmetry drm/i915: Install fence register for tiled scanout on i915 drm/i915: Clear fence register on tiling stride change. Chris Wright (8): x86: use native register access for native tlb flushing cfg80211: remove superfluous !last_request check in reg_device_remove() intel-iommu: dmar_set_interrupt return error value amd iommu: properly detach from protection domain on ->remove KVM: Trivial format fix in setup_routing_entry() amd-iommu: flush domain tlb when attaching a new device amd-iommu: disable cmd buffer and evt logging before reprogramming iommu amd-iommu: resume cleanup Christian Borntraeger (6): KVM: declare ioapic functions only on affected hardware KVM: s390: use hrtimer for clock wakeup from idle - v2 KVM: s390: optimize float int lock: spin_lock_bh --> spin_lock virtio: fix id_matching for virtio drivers virtio: enhance id_matching for virtio drivers [S390] pm: vmwatchdog power management callbacks. Christian Engelmayer (4): jffs2: leaking jffs2_summary in function jffs2_scan_medium hwmon: (max6650) Add support for alarms sunrpc: potential memory leak in function rdma_read_xdr sched: Fix out of scope variable access in sched_slice() Christian Lamparter (30): ar9170: fix hang on stop p54: clean up p54.h's struct p54_common p54: more SoftLED updates p54: add beacon filtering support Make ar9170 use common ath reg code p54: utilize all available key slots for decryption offload p54: remove obsolet signal quality calculation ath: add module information p54: remove module_ stubs p54: deactivate broken powersave function (part 2) p54: fix ps-poll delivery in ap mode mac80211: set CLEAR_PS for pspolled frames ar9170: rework rxstream code ar9170: handle otus' A-MPDU density definitions ar9170: uncomment powermgt case handle p54usb: remove some dead code p54usb: rework driver for resume ar9170usb: reset device on resume ar9170: fix beacon plcp settings ar9170: update hardware definitions ar9170: 40mhz fixes ar9170: introduce functions for MAC programming ar9170: use bitop macros for tx filter flags ar9170: kill duplicated HT feature flag ar9170: fix LED power state handling ar9170: fix lockdep warning on hibernate ar9170usb: more minor fixes ar9170: cancel led worker properly on exit ar9170: remove deprecated code ar9170: xmit code revamp Christine Caulfield (1): dlm: connect to nodes earlier Christof Schmitt (7): [SCSI] zfcp: Use correct req_id for traces [SCSI] zfcp: Update message and add description [SCSI] zfcp: Make queue_depth adjustable [SCSI] zfcp: Remove unnecessary default case and assignments [SCSI] zfcp: Add comments to switch/case fallthroughs [SCSI] zfcp: Keep ccw device and model id in zfcp_ccw.c [SCSI] zfcp: Update FC pass-through support Christoph Hellwig (51): xfs: a couple getbmap cleanups xfs: fix getbmap vs mmap deadlock tracing: small trave_events sample Makefile cleanup virtio_blk: don't blindly derefence req->rq_disk cifs: reorganize get_cifs_acl cifs: clean up set_cifs_acl interfaces fat: split fat_generic_ioctl xfs: update max log size xfs: validate quota log items during log recovery xfs: kill xfs_qmops xfs: split inode flushing from xfs_sync_inodes_ag xfs: use generic inode iterator in xfs_qm_dqrele_all_inodes xfs: split xfs_sync_inodes xfs: remove SYNC_IOWAIT xfs: remove SYNC_BDFLUSH xfs: use generic Posix ACL code Btrfs: implement FS_IOC_GETFLAGS/SETFLAGS/GETVERSION remove s_async_list quota: cleanup dquota sync functions (version 4) btrfs: remove ->write_super and stop maintaining ->s_dirt ext3: remove ->write_super and stop maintaining ->s_dirt gfs2: remove ->write_super and stop maintaining ->s_dirt ocfs2: remove ->write_super and stop maintaining ->s_dirt qnx4: remove ->write_super remove ->write_super call in generic_shutdown_super cleanup sync_supers enforce ->sync_fs is only called for rw superblock push BKL down into ->put_super jffs2: move jffs2_write_super to super.c ->write_super lock_super pushdown xfs: remove ->write_super and stop maintaining ->s_dirt affs: add ->sync_fs bfs: add ->sync_fs exofs: add ->sync_fs ext2: add ->sync_fs fat: add ->sync_fs hfs: add ->sync_fs hfsplus: add ->sync_fs sysv: add ->sync_fs ufs: add ->sync_fs jffs2: call jffs2_write_super from jffs2_sync_fs nilfs2: call nilfs2_write_super from nilfs2_sync_fs remove the call to ->write_super in __sync_filesystem xfs: fix warnings with CONFIG_XFS_QUOTA disabled xfs: fix small mismerge in xfs_vn_mknod sh: remove stray markers. hd: stop defining MAJOR_NR pids: clean up find_task_by_pid variants reiserfs: remove stray unlock_super in reiserfs_resize update Documentation/filesystems/Locking cleanup __writeback_single_inode Christoph Lameter (4): percpu: remove rbtree and use page->index instead security: use mmap_min_addr indepedently of security models page allocator: use a pre-calculated value instead of num_online_nodes() in fast paths page-allocator: use integer fields lookup for gfp_zone and check for errors in flags passed to the page allocator Chuck Ebbert (4): x86: Clear TS in irq_ts_save() when in an atomic section crypto: padlock-aes - work around Nano CPU errata in ECB mode crypto: padlock-aes - work around Nano CPU errata in CBC mode Remove low_latency flag setting from nozomi and mxser drivers Chuck Lever (32): SUNRPC: Fix error return value of svc_addr_len() NFSD: Refactor transport removal out of __write_ports() NFSD: Refactor transport addition out of __write_ports() NFSD: Refactor portlist socket closing into a helper NFSD: Refactor socket creation out of __write_ports() NFSD: Note an additional requirement when passing TCP sockets to portlist NFSD: Finish refactoring __write_ports() NFSD: move lockd_up() before svc_addsock() NFSD: Prevent a buffer overflow in svc_xprt_names() SUNRPC: pass buffer size to svc_addsock() SUNRPC: pass buffer size to svc_sock_names() SUNRPC: Switch one_sock_name() to use snprintf() SUNRPC: Support PF_INET6 in one_sock_name() SUNRPC: Clean up one_sock_name() NFSD: Stricter buffer size checking in write_recoverydir() NFSD: Stricter buffer size checking in write_versions() NFSD: Stricter buffer size checking in fs/nfsd/nfsctl.c NFS: Do not display the setting of the "intr" mount option NFS: Return error code from nfs_callback_up() to user space NFS: Fix false error return from nfs_callback_up() if ipv6.ko is not available lockd: Update NSM state from SM_MON replies lockd: Don't bother with RPC ping for NSM upcalls NFS: Clean up MNT program definitions NFS: Use xdr_stream-based XDR encoder for MNT's dirpath argument NFS: remove unused function in fs/nfs/mount_clnt.c NFS: Add separate mountd status code decoders for each mountd version NFS: add new file handle decoders to in-kernel mountd client NFS: add XDR decoder for mountd version 3 auth-flavor lists NFS: Update MNT and MNT3 reply decoding functions NFS: Remove unused XDR decoder functions NFS: Invalid mount option values should always fail, even with "sloppy" NFS: More "sloppy" parsing problems Chumbalkar Nagananda (1): [CPUFREQ] minor correction to cpu-freq documentation Cindy H Kao (2): wimax/i2400m: when bootstrap fails, reinitialize the bootrom wimax/i2400m: use -EL3RST to indicate device reset instead of -ERESTARTSYS Clemens Ladisch (8): sound: oxygen: reset DMA when stream is closed sound: virtuoso: add another DX PCI ID sound: virtuoso: enable HDAV S/PDIF input sound: virtuoso: add Xonar Essence ST support nls: utf8_wcstombs: use correct buffer size in error case nls: utf8_wcstombs: fix buffer overflow usb: return device strings in UTF-8 sound: seq_midi_event: fix decoding of (N)RPN events Cliff Cai (6): ASoC: SSM2602: remove unsupported sample rates ASoC: Blackfin: set the transfer size according the ac97_frame size ASoC: SSM2602: assign last substream to the master when shutting down wireless: libertas: fix unaligned accesses mtd: blackfin NFC: fix hang when using NAND on BF527-EZKITs ASoC: Blackfin: keep better track of SPORT configuration state Cliff Wickman (2): x86: Fix UV BAU activation descriptor init x86: correct the conversion of EFI memory types Clifford Wolf (1): i2c: Retry automatically on arbitration loss Cohen David.A (1): V4L/DVB (11840): change kmalloc to vmalloc for sglist allocation in videobuf_dma_map/unmap Colin Tuckley (2): RealView: Add support for the RealView/PBX platform RealView: Allow CONFIG_LEDS on this platform Coly Li (1): ocfs2: update comments in masklog.h Corentin Chary (8): UBIFS: return proper error code if the compr is not present asus-laptop: platform dev as parent for led and backlight acpi4asus: update MAINTAINER and KConfig links asus_acpi: Deprecate in favor of asus-laptop eeepc-laptop: sync eeepc-laptop with asus_acpi eeepc-laptop: cpufv updates asus-laptop: use pr_fmt and pr_ asus-laptop: remove EXPERIMENTAL dependency Cornelia Huck (3): PM/Hibernate: Move NVS routines into a seperate file (v2). [S390] pm: io subchannel driver power management callbacks [S390] pm: chsc subchannel driver power management callbacks Craig Shelley (3): USB: CP210X Add device IDs USB: CP210X Use official request code definitions USB: CP210X Replace CP2101 with CP210x Curt Wohlgemuth (1): ext4: Make the length of the mb_history file tunable Cyrill Gorcunov (18): x86: irq.c - tiny cleanup x86: apic - introduce imcr_ helpers x86: apic - introduce dummy apic operations x86: smp.c - align smp_ops assignments x86: smpboot - wakeup_secondary should be done via __cpuinit section x86: es7000, uv - use __cpuinit for kicking secondary cpus x86, apic: use pr_ macro x86: uv io-apic - use BUILD_BUG_ON instead of BUG_ON x86: uv - prevent NULL dereference in uv_system_init() x86: apic: Fixmap apic address even if apic disabled x86/pci: add 4 more return parameters to IO_APIC_get_PCI_irq_vector(), fix x86, apic: Fix dummy apic read operation together with broken MP handling x86, nmi: Use predefined numbers instead of hardcoded one mm: setup_per_zone_inactive_ratio - do not call for int_sqrt if not needed mm: setup_per_zone_inactive_ratio - fix comment and make it __init x86: mce: Don't touch THERMAL_APIC_VECTOR if no active APIC present x86, ioapic: Don't call disconnect_bsp_APIC if no APIC present proc: vmcore - use kzalloc in get_new_element() Daisuke Nishimura (3): vmscan: handle may_swap more strictly memcg: remove mem_cgroup_cache_charge_swapin() memcg: add interface to reset limits Dan Allongo (1): ALSA: usb - Add boot quirk for C-Media 6206 USB Audio Dan Carpenter (3): missing unlock in jfs_quota_write() ERR_PTR() dereference in net/rds/iw.c ERR_PTR() dereference in net/rds/ib.c Dan Smith (1): utsname.h: make new_utsname fields use the proper length constant Dan Williams (6): libertas: simplify and clean up association/start/join setup libertas: restyle Marvell & IEEE TLV structure names libertas: convert CMD_802_11_AUTHENTICATE to a direct command libertas: convert CMD_802_11_ASSOCIATE to a direct command libertas: fix WPA adhoc network creation md/raid5: add missing call to schedule() after prepare_to_wait() Daniel C Halperin (2): iwlwifi: do not set dual_stream_ant_msk for 3 streams iwlwifi: check triple_stream_basic_rates in iwl_full_rxon_required Daniel Glockner (3): xtensa: enable s6gmac in s6105_defconfig xtensa: add m41t62 rtc to s6105 platform xtensa: enable m41t80 driver in s6105_defconfig Daniel Glöckner (9): ASoC: Add driver for s6000 I2S interface ASoC: s6105 IP camera machine specific ASoC code ASoC: correct s6000 I2S clock polarity imx: serial: fix one bit field type imx: serial: handle initialisation failure correctly USB: gadget: g_serial: append zlp when tx buffer becomes empty USB: gadget: imx_udc: don't queue more data when zlp is to be sent xtensa: allow variant to initialize own irq chips xtensa: support s6000 gpio irqs and alternate function selection Daniel Laird (1): [WATCHDOG] Add pnx833x_wdt Daniel Mack (30): ASoC: add SOC_DOUBLE_EXT macro ASoC: cs4270: fix Master Capture Switch polarity ASoC: cs4270: add Master Playback Switch ASoC: cs4270: introduce CS4270_I2C_INCR net: smsc911x: add power management functions ASoC: cs4270: add power management support Input: add driver for EETI touchpanels ARM: MX3: basic support for lilly-1131 board ARM: MX3: add skeleton for lilly-1131 development board ARM: MX3: add lilly-1131 ethernet support ARM: MX3: add MMC suuport for lilly1131-db ARM: MX3: add framebuffer support for lilly1131-db ARM: MX3: add NOR flash support for lilly-1131 ARM: MX3: add I2C support for lilly-1131 ALSA: snd_usb_caiaq: clean whitespaces ALSA: snd_usb_caiaq: use strlcpy ALSA: snd_usb_caiaq: give better longname ALSA: snd_usb_caiaq: give better shortname ALSA: snd_usb_caiaq: bump version number Support for lilly-1131 modules and baseboards [v2] ASoC: fix NULL pointer dereference in soc_suspend() ds2760_battery: cleanups in ds2760_battery_probe() w1: ds2760: add support for EEPROM read and write w1: ds2760_battery: add support for sleep mode feature ALSA: snd_usb_caiaq: set mixername USB: imx_udc: fix leak in imx_ep_alloc_request() console: make blank timeout value a boot option lis3: add click function ALSA: snd_usb_caiaq: fix legacy input streaming w1-gpio: add external pull-up enable callback Daniel Ribeiro (6): ASoC: pxa-ssp.c fix clock/frame invert mtd: CFI: quirk for PF38F4476. mtd: CFI 1.0 and CFI 1.1 pxamci: add regulator support. mfd: add PCAP driver pxa2xx_spi: fix for SPI_CS_HIGH Daniel Schaeffer (1): mxc: Add i.MX27LITE board support Daniel Silverstone (1): pca953x: support GPIOLIB GPIO naming Daniel Suchy (1): USB: FTDI-SIO new device ids Daniel Wagner (1): mac80211_hwsim: Group radios Darren Hart (13): futex: separate futex_wait_queue_me() logic from futex_wait() futex: add helper to find the top prio waiter of a futex futex: split out atomic logic from futex_lock_pi() futex: split out fixup owner logic from futex_lock_pi() rt_mutex: add proxy lock routines futex: add FUTEX_HAS_TIMEOUT flag to restart.futex.flags futex: distangle futex_requeue() futex: split out futex value validation code futex: add requeue_pi functionality futex: fixup unlocked requeue pi case futex: fix futex_wait_setup key handling futex: remove FUTEX_REQUEUE_PI (non CMP) futex: add requeue-pi documentation Darrick J. Wong (1): hwmon: (ibmaem) Automatically load on HC10 blade Dave Airlie (11): radeon: remove _DRM_DRIVER from the preadded sarea map drm/i915: duplicate desired mode for use by fbcon. drm/radeon: fix mobility flags on new PCI IDs. drm/radeon: switch to using late_initcall fbdev: add support for handoff from firmware to hw framebuffers drm/radeon/kms: remove the _DRM_DRIVER from the KMS paths. drm/radeon: this VRAM vs aperture test is wrong, just remove it. agp: switch AGP to use page array instead of unsigned long array drm/radeon: fix unused variables warning drm/i915: enable GEM on PAE. agp: add user mapping support to ATI AGP bridge. Dave Chinner (4): xfs: split inode data writeback from xfs_sync_inodes_ag xfs: factor out inode validation for sync xfs: remove unused parameter from xfs_reclaim_inodes xfs: introduce a per-ag inode iterator Dave Graham (1): e1000e: Fixes possible phy corrupton on 82571 designs. Dave Jones (2): [CPUFREQ] Clean up convoluted code in arch/x86/kernel/tsc.c:time_cpufreq_notifier() via-velocity: Fix velocity driver unmapping incorrect size. Dave Kleikamp (2): jfs: Add missing mutex_unlock call to error path jfs: fix regression preventing coalescing of extents Dave Liu (2): serial: Make ucc_uart work in HW UART mode sata_fsl: Add power mgmt support Dave Mitchell (1): of_serial: Add UPF_FIXED_TYPE flag Dave Young (2): kobject: make kset_create check kobject_set_name return value driver-core: make sysdev_class_register check kobject_set_name return value David Brownell (21): Input: add dm355evm_keys driver davinci: gpio irq enable tweaks ARM: OMAP3: mmc-twl4030 uses regulator framework ARM: OMAP3: Initialize regulators for Beagle and Overo davinci: remove remnants of IRAM allocator davinci: soc-specific SRAM setup davinci: add SRAM allocator mtd: nand: don't walk past end of oobfree[] mtd: nand: minor davinci_nand cleanup mtd: nand: davinci_nand, 4-bit ECC for smallpage mtd: davinci_nand: cmdlinepart uses MTD IDs USB: twl4030-usb: fix minor reporting goofage USB: nop-usb-xceiv: behave when linked as a module musb: proper hookup to transceiver drivers musb: otg timer cleanup musb: make initial HNP roleswitch work (v2) musb: support disconnect after HNP roleswitch USB: pxa27x_udc: introduce pxa27x_clear_otgph() spi: move common spi_setup() functionality into core spi: move more spi_setup() functionality into core usbnet cdc_subset: fix issues talking to PXA gadgets David Daney (23): MIPS: Add register definitions for PCI. MIPS: Add Cavium OCTEON PCI support. MIPS: Replace some magic numbers with symbolic values in tlbex.c MIPS: Fold the TLB refill at the vmalloc path if possible. MIPS: Allow R2 CPUs to turn off generation of 'ehb' instructions. MIPS: Remove execution hazard barriers for Octeon. MIPS: Remove dead case label. MIPS: Add named alloc functions to OCTEON boot monitor memory allocator. MIPS: Export cvmx_sysinfo_get needed by octeon-ethernet driver. MIPS: Cavium-Octeon: Add more board type constants. MIPS: Cavium-Octeon: Add more chip specific feature tests. MIPS: Export erratum function needed by octeon-ethernet driver. Staging: Add octeon-ethernet driver files. MIPS: Remove unused parameters from iPTE_LW. MIPS: Add support files for hugetlbfs. MIPS: Add hugetlbfs page defines. MIPS: TLB support for hugetlbfs. Hugetlbfs: Enable hugetlbfs for more systems in Kconfig. MIPS: Kconfig Add SYS_SUPPORTS_HUGETLBFS and enable it for some systems. MIPS: Allow CPU specific overriding of CP0 hwrena impl bits. MIPS: Move Cavium CP0 hwrena impl bits to cpu-feature-overrides.h Staging: octeon-ethernet: Convert to use net_device_ops. Staging: octeon-ethernet: Fix race freeing transmit buffers. David Heidelberger (1): ALSA: hda - Add 7.1 support for MSI GX620 David Howells (15): sched: Document memory barriers implied by sleep/wake-up primitives SELinux: Don't flush inherited SIGKILL during execve() CRED: Rename cred_exec_mutex to reflect that it's a guard against ptrace CRED: Guard the setprocattr security hook against ptrace FRV: Remove in-kernel strace code FRV: Implement TIF_NOTIFY_RESUME FRV: Don't turn on TIF_SYSCALL_TRACE unconditionally in syscall prologue FRV: Implement new-style ptrace MN10300: Don't set the dirty bit in the DTLB entries in the TLB-miss handler MN10300: Add utrace/tracehooks support FRV: Fix interaction with new generic header stuff RxRPC: Don't attempt to reuse aborted connections AFS: Correctly translate auth error aborts and don't failover in such cases LDSCRIPT: Name INIT_RAM_FS consistently MN10300: Fix the vmlinux ldscript David Kilroy (2): cfg80211: mark ops as pointer to const cfg80211: mark wiphy->privid as pointer to const David Rientjes (7): sched: emit thread info flags with stack trace oom: move oom_adj value from task_struct to mm_struct oom: avoid unnecessary mm locking and scanning for OOM_DISABLE oom: invoke oom killer for __GFP_NOFAIL oom: only oom kill exiting tasks with attached memory Staging: android: lowmemorykiller: cleanup android low memory killer Staging: android: lowmemorykiller: fix possible android low memory killer NULL pointer David Rowe (1): Staging: oslec bug fix David S. Miller (85): Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Revert "vxge: use max() instead of VXGE_HW_SET_LEVEL" Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 net: Avoid modulus in skb_tx_hash() for forwarding case. net: Add missing rculist.h include to netdevice.h Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 net: Fix arg to trace_napi_poll() in netpoll. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 net: Remove bogus reference to BUS_ID_SIZE in sysfs code. ixp4xx_eth: Remove references to BUS_ID_SIZE. cpmac: Remove references to BUS_ID_SIZE, use MII_BUS_ID_SIZE. sh_eth: Remove references to BUS_ID_SIZE, use MII_BUS_ID_SIZE instead. nl80211: Eliminate reference to BUS_ID_SIZE. phy: Eliminate references to BUS_ID_SIZE. appletalk: Add proper locking around IPDDP routing table. aoe: Remove superfluous clearing of skb fields in new_skb(). wavelan: Remove bogus debugging on skb->next being non-NULL. p54: Use SKB list handling helpers instead of by-hand code. rtl8187: Remove pointless check in rtl8187_rx_cb(). atm: Use SKB queue and list helpers instead of doing it by-hand. decnet: Use SKB queue and list helpers instead of doing it by-hand. econet: Use SKB queue and list helpers instead of doing it by-hand. tcp: Use SKB queue and list helpers instead of doing it by-hand. irda: Use SKB queue and list helpers instead of doing it by-hand. llc: Kill outdated and incorrect comment. Merge branch 'linux-2.6.31.y' of git://git.kernel.org/pub/scm/linux/kernel/git/inaky/wimax Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'net-next' of git://git.kernel.org/pub/scm/linux/kernel/git/vxy/lksctp-dev Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 bluetooth: Kill skb_frags_no(), unused. skbuff: Add frag list abstraction interfaces. netdevice.h: Use frag list abstraction interfaces. appletalk: Use frag list abstraction interfaces. datagram: Use frag list abstraction interfaces. net/core/dev.c: Use frag list abstraction interfaces. net/core/skbuff.c: Use frag list abstraction interfaces. net/core/user_dma.c: Use frag list abstraction interfaces. ipv4: Use frag list abstraction interfaces. ipv6: Use frag list abstraction interfaces. netfilter: Use frag list abstraction interfaces. phonet: Use frag list abstraction interfaces. sctp: Use frag list abstraction interfaces. xfrm: Use frag list abstraction interfaces. be2net: Remove unnecessary frag list traversing. netfilter: Fix extra semi-colon in skb_walk_frags() changes. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 ieee802154: Use '%Zu' printf format for size_t. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 Merge branch 'linux-2.6.31.y' of git://git.kernel.org/pub/scm/linux/kernel/git/inaky/wimax Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/irda-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 sparc64: Reclaim trap_block[]->hdesc sparc64: Move trap_block[] definitions into a new header file. sparc64: Store per-cpu offset in trap_block[] sparc64: Use BUILD_BUG_ON() in trap_init(). sparc64: Refactor OBP cpu scanning code using an iterator. sparc64: Refactor MDESC cpu scanning code using an iterator. sparc: Call OF and MD cpu scanning explicitly from paging_init() sparc64: Make mdesc_fill_in_cpu_data take a cpumask_t pointer. sparc64: Defer cpu_data() setup until end of per-cpu data initialization. sparc64: Get rid of real_setup_per_cpu_areas(). sparc64: Only allocate per-cpu areas for possible cpus. sparc64: Use new dynamic per-cpu allocator. sparc64: Add proper dynamic ftrace support. openprom: Squelch useless GCC warning. sparc: Wire up sys_rt_tgsigqueueinfo(). sparc64: Update defconfig. x25: Fix sleep from timer on socket destroy. sonic: Fix build after ndo_start_xmit() changes. sparc64: Fix UP bootup regression. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 ide: Take over as maintainer. ide cmd64x: Remove serialize setting. David T.L. Wong (1): V4L/DVB (11803): xc5000: add support for DVB-T tuning David Teigland (2): dlm: fix use count with multiple joins dlm: use more NOFS allocation David VomLehn (1): kbuild/Documentation: Incorrect makefile syntax in example David Wong (3): V4L/DVB (11880): cx23885: support for card Mygica X8506 DMB-TH V4L/DVB (12000): lgs8gxx: lgs8913 fake signal strength option default on V4L/DVB (12001): lgs8gxx: update signal strength scale David Woodhouse (17): tun: add IFF_TUN_EXCL flag to avoid opening a persistent device. tun: add tun_flags, owner, group attributes in sysfs intel-iommu: Clean up handling of "caching mode" vs. context flushing. intel-iommu: Clean up handling of "caching mode" vs. IOTLB flushing. intel-iommu: Fix tiny theoretical race in write-buffer flush. intel-iommu: Tidy up iommu->gcmd handling firmware: speed up request_firmware(), v3 [MTD] set blkdev parent to the mtd device, not its parent [MTD] Restore suspend/resume support for mtd devices [MTD] Remove mtd->{suspend,resume} calls from board drivers [MTD] Only set partition suspend/resume method if parent not registered [MTD] Remove option for add_mtd_partitions() to not register partitions. mtd: DIL/NetPC broken for now mtd: Fix handling of mtdname in txx9ndfmc.c mtd: Fix pointer handling in compat ioctls to use compat_ptr() Merge branch 'next-mtd' of git://aeryn.fluff.org.uk/bjdooks/linux Btrfs: remove crc32c.h and use libcrc32c directly. Davide Libenzi (1): epoll: fix nested calls support Dean Anderson (3): V4L/DVB (11605): patch: s2255drv: code cleanup V4L/DVB (11851): patch: s2255drv: adding V4L2_MODE_HIGHQUALITY V4L/DVB (11738): patch: s2255drv: urb completion routine fixes Denis Karpov (1): FAT: add 'errors' mount option Denis V. Lunev (1): [WATCHDOG] iTCO_wdt: fix memory corruption when RCBA is disabled by hardware Devin Heitmueller (36): V4L/DVB (11786): xc5000: handle tuner reset failures properly V4L/DVB (11787): xc5000: cleanup i2c read routines V4L/DVB (11788): xc5000: cleanup i2c write routines V4L/DVB (11789): xc5000: check xc5000_readreg return value for XC_RESULT_SUCCESS V4L/DVB (11790): xc5000: restore sleep routine V4L/DVB (11791): xc5000: do not sleep after digital tuning V4L/DVB (11792): xc5000: switch to new version of Xceive firmware V4L/DVB (11793): xc5000: Properly support power down for newer firmware V4L/DVB (11794): au0828: reduce reset time for xc5000 to 10ms V4L/DVB (11795): xc5000: add build version to debug info V4L/DVB (11796): xc5000: start using the newer "finerfreq" tuning command V4L/DVB (11797): xc5000: cleanup firmware loading messages V4L/DVB (11798): xc5000: add "no_poweroff" module option V4L/DVB (11799): xc5000: don't load firmware until a tuning request is made V4L/DVB (11800): tuner-xc2028: show the proper module description for no_poweroff option V4L/DVB (11801): dib0700: reduce xc5000 sleep time for Pinnacle 801e to 10ms V4L/DVB (11802): xc5000: switch to new xc5000 firmware 1.6.114 with redistribution rights V4L/DVB (11804): xc5000: poll at 5ms interval for register write command completion V4L/DVB (11805): au0828: send command to power down tuner when done with analog V4L/DVB (11806): xc5000: add copyright line V4L/DVB (11807): cx88: remove xc5000 reset for Pinnacle 800i V4L/DVB (11808): au0828: get rid of debug printk that was causing compile failures V4L/DVB (11810): em28xx: properly set packet size based on the device's eeprom configuration. V4L/DVB (11923): em28xx: Don't let device work unless connected to a high speed USB port V4L/DVB (11924): au0828: Don't let device work unless connected to a high speed USB port V4L/DVB (11925): em28xx: Add support for the K-World 2800d V4L/DVB (11926): tuner-core: fix warning introduced when cleaning up xc5000 init routine V4L/DVB (11927): em28xx: provide module option to disable USB speed check V4L/DVB (11928): au0828: provide module option to disable USB speed check V4L/DVB (11979): em28xx: don't create audio device if not supported V4L/DVB (11784): cx88: Fix race condition between cx8800 startup and hald V4L/DVB (11785): dvb_frontend: fix race condition resulting in dropped tuning commands V4L/DVB (11875): dvb_frontend: fix case where fepriv->exit not reset V4L/DVB (12100): em28xx: make sure the analog GPIOs are set if we used a card hint V4L/DVB (12101): em28xx: add support for EVGA inDtube V4L/DVB (12102): em28xx: add Remote control support for EVGA inDtube Dhananjay Phadke (25): netxen: code cleanup netxen: refactor netxen_adapter netxen: refactor transmit code netxen: defer firmware handshake netxen: async link event handling netxen: allocate status rings dynamically netxen: annotate register access functions netxen: sanitize function names netxen: enable rss for NX2031 netxen: cache align register map table netxen: fix link event handling netxen: refactor netxen_recv_context struct netxen: fix firmware download netxen: fix race in tx ring acccess netxen: fix mac list management netxen: fix bonding support netxen: cache msi register offset netxen: fix irq tear down and msix leak. netxen: disable msi-x for NC512m adapter netxen: trivial register access cleanup netxen: fix msi irq setup netxen: fix detection of cut-thru firmware mode netxen: fix tx ring accounting netxen: fix build with without CONFIG_PM netxen: fix firmware init handshake Diego Liziero (1): Staging winbond: boolean negation and bitwise operation in wrong order Dimitri Sivanich (1): mm: fix handling of pagesets for downed cpus Dirk Brandewie (4): wimax/i2400m: Change d_printf() level for secure boot messages wimax/i2400m/sdio: Implement I2400M_RT_BUS reset type wimax/i2400m: move boot time poke table out of common driver wimax/i2400m/sdio: Add device specific poke table. Dirk Eibach (2): moxa: prevent opening unavailable ports char: moxa, prevent opening unavailable ports Divy Le Ray (8): cxgb3: set phy's mdio dev before the phy init sequence cxgb: set phy's mdio dev before the phy init sequence cxgb3: move away from LLTX cxgb3: Add Aeluros 2020 phy support cxgb3: add support for the Aquantia 10G-BT phy cxgb3: Update FW to 7.4.0 cxgb3: minor aq100x phy fixes cxgb3: remove __GFP_NOFAIL usage Dmitri Belimov (6): V4L/DVB (11604): saa7134: split Behold`s card entries to properly identify the model V4L/DVB (11733): increase MPEG encoder timout V4L/DVB (11734): remove hw reset of MPEG encoder when lost/found seq. V4L/DVB (11775): tuner: add support Philips MK5 tuner V4L/DVB (11934): Change order for FM tune V4L/DVB (11938): big rework of TS for saa7134 Dmitri Vorobiev (1): clockevents: tick_broadcast_device can become static Dmitry Adamushko (1): x86: microcode: use smp_call_function_single instead of set_cpus_allowed, cleanup of synchronization logic Dmitry Baryshkov (3): [ARM] 5524/1: at91sam9g20ek: add i2c eeprom info ieee802154: use standard routine for printing dumps MAINTAINERS: fix address of IEEE 802.15.4 git tree Dmitry Eremin-Solenikov (8): [ARM] pxa/csb726: switch to use smsc911x driver [ARM] pxa/csb726: register ac97 controller [ARM] pxa/spitz: drop unused header files from spitz.c [ARM] sa1100: remove unused collie_pm.c [ARM] pxa/sharpsl_pm: merge the two sharpsl_pm.c since it's now pxa specific [ARM] pxa/sharpsl_pm: merge pxa-specific code into generic one [ARM] pxa/sharpsl_pm: drop set_irq_type calls [ARM] pxa/sharpsl_pm: cleanup of gpio-related code. Dmitry Pervushin (3): UBI: add notification API UBI: remove built-in gluebi UBI: make gluebi a separate module Dmitry Torokhov (12): Input: gtco - add MODULE_DESCRIPTION() Input: fp801-gp - add MODULE_DESCRIPTION() Input: gameport - rearrange EXPORT_SYMBOL() markings Input: serio - rearrange EXPORT_SYMBOL() markings Input: gpio-keys - remove depreciated IRQF_SAMPLE_RANDOM flag Input: keyboard - remove warning about raw mode not supported Merge commit 'v2.6.30-rc5' into next Input: ALPS - Dell Latitude D630/D800 have DualPoint Input: lifebook - don't send incomplete events Input: serio - do not use deprecated dev.power.power_state Merge commit 'v2.6.30' into next Driver core: fix comment for device_attach() Don Skidmore (6): ixgbe: fix IXGBE_MTQC values ixgbe: add support for addition VT_CTL defines ixgbe: add define to support 82599 64 IVAR registers ixgbe: Use pci_wake_from_d3() instead of multiple pci_enable_wake() ixgbe: fix failing to log fan failures ixgbe: fix 82598 SFP initialization after driver load. Dong, Eddie (2): KVM: MMU: Emulate #PF error code of reserved bits violation KVM: Use rsvd_bits_mask in load_pdptrs() Dongxiao Xu (8): Staging: heci: fix userspace pointer mess Staging: heci: fix wrong order of device_lock and file_lock Staging: heci: fix spinlock order mess of device_lock and read_io_lock Staging: heci: fix softirq safe to unsafe spinlock issue Staging: heci: fix typos and add wait after disconnect Staging: heci: fix setting h_is bit in h_csr register Staging: heci: do not print error when heci_bh_handler is already on workqueue Staging: heci: fix the problem that file_ext->state should be protected by device_lock Doug Thompson (20): amd64_edac: add driver header amd64_edac: add debugging/testing code amd64_edac: add DRAM error injection logic using sysfs amd64_edac: add MCA error types amd64_edac: add memory scrubber interface amd64_edac: add sys addr to memory controller mapping helpers amd64_edac: add functionality to compute the DRAM hole amd64_edac: add DRAM address type conversion facilities amd64_edac: add helper to dump relevant registers amd64_edac: assign DRAM chip select base and mask in a family-specific way amd64_edac: add k8-specific methods amd64_edac: add F10h-and-later methods-p1 amd64_edac: add F10h-and-later methods-p2 amd64_edac: add F10h-and-later methods-p3 amd64_edac: add per-family descriptors amd64_edac: add ECC chipkill syndrome mapping table amd64_edac: add error decoding logic amd64_edac: add EDAC core-related initializers amd64_edac: add ECC reporting initializers amd64_edac: add module registration routines Douglas Schilling Landgraf (1): V4L/DVB (11486): em28xx: Add EmpireTV board support Dragoslav Zaric (1): Staging: otus: 80211core/ccmd.c: Fix Coding Style Eddie Dong (1): KVM: MMU: Fix comment in page_fault() Edgar E. Iglesias (1): microblaze: Add audit and seccomp thread flags. Eero Nurkkala (2): ARM: OMAP: McBSP: Fix legacy interrupts to clear their status NOHZ: Properly feed cpufreq ondemand governor Eli Cohen (2): IB/mthca: Add module parameter for number of MTTs per segment mlx4_core: Add module parameter for number of MTTs per segment Elina Pasheva (9): sierra: driver urb handling improvements sierra: driver interface blacklisting USB: serial: sierra driver performance improvements USB: serial: sierra driver debug info visibility improvement USB: serial: sierra driver write path improvements USB: serial: sierra driver read path bug fix USB: serial: sierra driver zero length packet fix USB: serial: sierra driver interrupt urb resubmit fix USB: serial: sierra driver sierra_calc_num_ports() fix Emil Medve (1): mv643xx_eth: Remove a stale PPC_MULTIPLATFORM Erdem Aktas (1): perf_counter tools: fix buffer overwrite problem for perf top command Erez Zilber (1): libiscsi: add conn and scsi eh log debug flags Eric Anholt (3): drm/i915: Save/restore cursor state on suspend/resume. drm/i915: Change GEM throttling to be 20ms like the comment says. drm: Remove memory debugging infrastructure. Eric Dumazet (42): net: remove superfluous call to synchronize_net() loopback: packet drops accounting net: netif_tx_queue_stopped too expensive tcp: tcp_prequeue() cleanup tcp: tcp_prequeue() can use keyed wakeups bnx2: bnx2_tx_int() optimizations net: tx scalability works : trans_start net: add tx_packets/tx_bytes/tx_dropped counters in struct netdev_queue vlan: use struct netdev_queue counters instead of dev->stats net: release dst entry in dev_hard_start_xmit() ppp: unset IFF_XMIT_DST_RELEASE in ppp_setup() sch_teql: Use net_device internal stats net: txq_trans_update() helper atl1: use netdev->stats net: ALIGN/PTR_ALIGN cleanup in alloc_netdev_mq()/netdev_priv() net: use netdev stats in b44, sundance, via-rhine and via-velocity net: net/core/sock.c cleanup net: dont update dev->trans_start in 10GB drivers net: dont update dev->trans_start net: unset IFF_XMIT_DST_RELEASE in ipip_tunnel_setup() atm: unset IFF_XMIT_DST_RELEASE in clip_setup() net: unset IFF_XMIT_DST_RELEASE in ipgre_tunnel_setup() veth: dont release skb->dst in veth_xmit() net: unset IFF_XMIT_DST_RELEASE for qeth and ipoib net: ipv4/ip_sockglue.c cleanups net: add _skb_dst opaque field net: skb->rtable accessor net: skb->dst accessors net: skb cleanup net: num_dma_maps is not used net: skb_shared_info optimization net: dev_addr_init() fix r8169: use dev_kfree_skb() instead of dev_kfree_skb_irq() net: No more expensive sock_hold()/sock_put() on each tx net: ntohs() misuse net: use a deferred timer in rt_check_expire poll: avoid extra wakeups in select/poll net: sk_wmem_alloc has initial value of one, not zero net: correct off-by-one write allocations reports atm: sk_wmem_alloc initial value is one forcedeth: fix dma api mismatches netfilter: nf_conntrack: death_by_timeout() fix Eric Lammerts (1): fix oops when using console=ttymxcN with N > 0 Eric Miao (14): ASoC: simplify the SSP DMA parameters settings by run-time generation ASoC: change stereo/mono to 32-bit/16-bit for pxa-ssp [ARM] pxa: add platform device ID table to pxa i2c driver [ARM] pxa: move mach/i2c.h to plat/i2c.h [ARM] pxa: add I2C (TWSI) devices to pxa168/pxa910 [ARM] pxa: simplify secondary PWM handling and use platform_device_id table [ARM] pxa: allow PWM ID base number to be specified in pwm_id_table [ARM] pxa: build pwm.c according to HAVE_PWM instead of PXA_PWM [ARM] pxa: move pwm.c to common plat-pxa directory [ARM] pxa: add missing IRQ_PXA910_NONE to irqs.h [ARM] pxa: add PWM devices support for pxa168/910 [ARM] pxa/littleton: add support for the Micro-SD slot (MMC1) [ARM] pxa: fix the conflicting non-static declarations of global_gpios[] MAINTAINERS: update Eric Miao's email address and status Eric Moore (5): [SCSI] mpt2sas: T10 DIF Support [SCSI] mpt2sas: LUN Reset Support [SCSI] mpt2sas: add query task support for MPT2COMMAND ioctl [SCSI] mpt2sas: using the same naming convention for all static function [SCSI] mpt2sas: bump driver version to 01.100.03.00 Eric Paris (41): mutex: add atomic_dec_and_mutex_lock() mutex: add atomic_dec_and_mutex_lock() SELinux: drop secondary_ops->sysctl IMA: use current_cred() instead of current->cred IMA: Handle dentry_open failures IMA: open all files O_LARGEFILE securityfs: securityfs_remove should handle IS_ERR pointers TPM: get_event_name stack corruption IMA: remove read permissions on the ima policy file IMA: do not measure everything opened by root by default SELinux: move SELINUX_MAGIC into magic.h IMA: Minimal IMA policy and boot param for TCB IMA policy IMA: Add __init notation to ima functions SELinux: define audit permissions for audit tree netlink messages fsnotify: unified filesystem notification backend fsnotify: add marks to inodes so groups can interpret how to handle those inodes fsnotify: parent event notification dnotify: reimplement dnotify using fsnotify fsnotify: generic notification queue and waitq fsnotify: include pathnames with entries when possible fsnotify: add correlations between events fsnotify: allow groups to add private data to events fsnotify: fsnotify marks on inodes pin them in core fsnotify: handle filesystem unmounts with fsnotify marks inotify: reimplement inotify using fsnotify fsnotify: move events should indicate the event was on a child dnotify: do not use ?true:false when assigning to a bool dnotify: do not bother to lock entry->lock when reading mask inotify/dnotify: should_send_event shouldn't match on FS_EVENT_ON_CHILD fsnotify: allow groups to set freeing_mark to null inotify: inotify_destroy_mark_entry could get called twice Audit: fix audit watch use after free Audit: better estimation of execve record length Audit: dereferencing krule as if it were an audit_watch Audit: unify the printk of an skb when auditd not around Audit: cleanup netlink mesg handling Audit: clean up audit_receive_skb audit: seperate audit inode watches into a subfile Audit: move audit_get_nd completely into audit_watch Audit: clean up all op= output to include string quoting audit: inode watches depend on CONFIG_AUDIT not CONFIG_AUDIT_SYSCALL Eric Piel (5): [SCSI] Update wording of CONFIG_SCSI_MULTI_LUN help lis3: fix misc device unregistering and printk lis3: remove automatic shutdown of the device lis3: use input_polled_device lis3: add three new laptop models Eric Sandeen (3): ext4: fix for fiemap last-block test xfs: fix overflow in xfs_growfs_data_private ext4: Change all super.c messages to print the device Eric W. Biederman (10): syscall: Implement a convinience function restart_syscall net-sysfs: Use rtnl_trylock in sysfs methods. net: FIX ipv6_forward sysctl restart net: Fix devinet_sysctl_forward net: Fix bridgeing sysfs handling of rtnl_lock net: Fix ipoib rtnl_lock sysfs deadlock. net: FIX bonding sysfs rtnl_lock deadlock syscall: Sort out syscall_restart name clash. af_packet: Teach to listen for multiple unicast addresses. tun: Fix unregister race Erik Andr?n (62): V4L/DVB (11450): gspca - m5602-mt9m111: Convert the mt9m111 to use a v4l2 ctrl cache V4L/DVB (11452): gspca - m5602-po1030: Convert to have a v4l2 ctrl cache V4L/DVB (11453): gspca - m5602-s5k4aa: Convert to use the v4l2 ctrl cache V4L/DVB (11454): gspca - m5602-mt9m111: Remove the unused power_down struct member V4L/DVB (11455): gspca - m5602-ov9650: Improve the vflip quirk handling. V4L/DVB (11456): gspca - m5602-po1030: Rename register defines, add missing ones. V4L/DVB (11457): gspca - m5602-po1030: Simplify register defines V4L/DVB (11458): gspca - m5602-po1030: Set all v4l2 controls at sensor init V4L/DVB (11459): gspca - m5602-po1030: Add auto white balancing control V4L/DVB (11460): gspca - m5602-po1030: Remove unnecessary error check V4L/DVB (11461): gspca - m5602-po1030: Probe read only register at probe time V4L/DVB (11462): gspca - m5602-po1030: Split up the init into init and start V4L/DVB (11463): gspca - m5602-po1030: Remove unneeded init sequences V4L/DVB (11464): gspca - m5602-mt9m111: Set the cached v4l2 ctrl values V4L/DVB (11465): gspca - m5602-s5k4aa: Set all v4l2 ctrls on sensor init. V4L/DVB (11466): gspca - m5602: Let all ctrls on all sensors be static V4L/DVB (11467): gspca - m5602: Move all dump_sensor to the init function V4L/DVB (11468): gspca - m5602-mt9m111: Remove redundant init sequences V4L/DVB (11469): gspca - m5602-mt9m111: More redundant init cleanup V4L/DVB (11470): gspca - m5602-mt9m111: Implement an auto white balancing control V4L/DVB (11471): gspca - m5602-mt9m111: Remove more redundant init V4L/DVB (11472): gspca - m5602-mt9m111: Remove lots of redundant init code V4L/DVB (11473): gspca - m5602-po1030: Release reset when init is done. V4L/DVB (11474): gspca - m5602-po1030: Fix sensor probing. V4L/DVB (11475): gspca - m5602-po1030: Lower the default blue and gain balance V4L/DVB (11476): gspca - m5602: Add some more register defines V4L/DVB (11477): gspca - m5602-po1030: Set the blue balance in the init not red balance twice V4L/DVB (11478): gspca - m5602-mt9m111: Replace various magic constants with defines V4L/DVB (11479): gspca - m5602-mt9m111: More magic constants replacement V4L/DVB (11480): gspca - m5602-mt9m111: Remove lots of redundant sensor reads V4L/DVB (11481): gspca - m5602-mt9m111: More constant replacement V4L/DVB (11482): gspca - m5602-mt9m111: Remove lots of redundant init code V4L/DVB (11520): gspca - m5602-po1030: Remove redundant init sequences V4L/DVB (11521): gspca - m5602-ov9650: Add auto exposure ctrl V4L/DVB (11522): gspca - m5602-po1030: Add auto exposure control V4L/DVB (11523): gspca - m5602-po1030: Add private green balance control V4L/DVB (11524): gspca - m5602-mt9m111: Add green balance ctrl V4L/DVB (11525): gspca - m5602-mt9m111: Add blue balance ctrl V4L/DVB (11526): gspca - m5602-mt9m111: Add red balance ctrl V4L/DVB (11527): gspca - m5602-s5k4aa: Try to use proper read-modify-write of the vflip/hflip V4L/DVB (11528): gspca - m5602-s5k4aa: Consolidate the gain settings, adjust row start V4L/DVB (11529): gspca - m5602-s5k4aa: Add noise suppression ctrl V4L/DVB (11530): gspca - m5602-s5k4aa: Add brightness v4l2 ctrl V4L/DVB (11531): gspca - m5602-po1030: Clean up some comments V4L/DVB (11532): gspca - m5602-po1030: Move some code from the start vector to the init vector V4L/DVB (11533): gspca - m5602-po1030: Setup window per resolution V4L/DVB (11534): gspca - m5602-po1030: Synthesize the hsync/vsync setup V4L/DVB (11535): gspca - m5602-po1030: Add experimental QVGA support V4L/DVB (11536): gspca - m5602-po1030: Impove the bridge vsync/hsync configuration V4L/DVB (11537): gspca - m5602-po1030: Clear subsampling flag when setting VGA mode V4L/DVB (11538): gscpa - m5602-ov9650: Add defines for some magic constants V4L/DVB (11539): gspca - m5602-ov9650: Be more strict during the hsync/vsync synthesis V4L/DVB (11540): gspca - m5602-mt9m111: Replace magic constants with defines V4L/DVB (11541): gspca - m5602-mt9m111: Add a start function V4L/DVB (11542): gspca - m5602-mt9m111: Synthesize the hsync/vsync setup V4L/DVB (11543): gspca - m5602-mt9m111: Setup VGA resolution V4L/DVB (11544): gspca - m5602-mt9m111: Add experimental QVGA support V4L/DVB (11545): gspca - m5602-mt9m111: Activate vflip/hflip by default V4L/DVB (11546): gspca - m5602-mt9m111: Endianness fixes. V4L/DVB (11547): gspca - m5602-s5k83a: Align the v4l2 ctrl definitions V4L/DVB (11548): gspca - m5602-s5k83a: No need to initialize some registers in init V4L/DVB (11549): gspca - m5602-s5k83a: Remove lots of useless init Erik AndrĂ©n (34): V4L/DVB (11628): gspca - m5602-s5k83a: Remove more init V4L/DVB (11629): gspca - m5602-s5k83a: Move some init code around V4L/DVB (11630): gspca - s5k83a: Add resolution annotations V4L/DVB (11631): gspca - m5602: Remove useless error check V4L/DVB (11632): gspca - m5602-s5k83a: Reset the v4l2 ctrl cache upon sensor init V4L/DVB (11633): gspca - m5602-s5k83a: Move hsync/vsync setup to start function V4L/DVB (11635): gspca - m5602-ov7660: Initial checkin of sensor skeleton code V4L/DVB (11636): gspca - m5602-ov7660: Design probe function V4L/DVB (11637): gspca - m5602-ov7660: Design init function. V4L/DVB (11638): gspca - m5602-ov7660: Make an educated guess on the proper hsync/vsync V4L/DVB (11639): gspca - m5602-mt9m111: Correct the hflip/vflip semantics V4L/DVB (11640): gspca - m5602-s5k4aa: Flip hflip and vflip together V4L/DVB (11641): gspca - m5602-ov7660: Remove useless init data V4L/DVB (11642): gspca - m5602-ov7660: Add a gain ctrl V4L/DVB (11643): gspca - m5602: Add the ov7660 to the module parameter description. V4L/DVB (11644): gspca - m5602-s5k4aa: Remove some unneeded init code. V4L/DVB (11646): gspca - m5602-mt9m111: Disable QVGA until it has been verified to work V4L/DVB (11647): gspca - m5602-po1030: Disable QVGA for now V4L/DVB (11648): gspca - m5602: Remove some needless error checking and add comments V4L/DVB (11649): gspca - m5602: Probe the ov7660 sensor V4L/DVB (11650): gspca - m5602: Sort out macro conflict by adding a prefix V4L/DVB (11684): gspca - m5602-s5k4aa: Add experimental SXGA support V4L/DVB (11685): gspca - gspca-m5602: Constify parameters of two functions V4L/DVB (11686): gspca - m5602-s5k4aa: Disable SXGA resolution for now V4L/DVB (11687): gspca - m5602-ov9650: Add missing v4l2 ctrl ids V4L/DVB (11690): gspca - m5602-s5k4aa: Add vflip quirk for the MSI L735 V4L/DVB (11691): gspca - m5602-ov9650: Add ASUS A6K vflip quirk V4L/DVB (11692): gspca - m5602: Checkpatch.pl fixes V4L/DVB (11693): gspca - stv06xx-vv6410: Add exposure ctrl V4L/DVB (11694): gspca - stv06xx-vv6410: No need to double set gain and exposure V4L/DVB (11695): gspca - stv06xx-vv6410: Set analog gain at init V4L/DVB (11940): gspca - m5602-s5k4aa: Add vflip quirk for the Lenovo Y300 V4L/DVB (11941): gspca - m5602-ov9650: Add vflip quirk for the ASUS A6VA V4L/DVB (11942): gspca - m5602-ov9650: Reorder quirk list and add A7V quirk Erik Benada (1): [ARM] orion: convert gpio to use gpiolib Etienne Basset (2): smack: implement logging V3 smack: implement logging V3 Evgeni Golov (1): [libata] beautify module parameters Evgeniy Polyakov (2): netfilter: x_tables: added hook number into match extension parameter structure. netfilter: passive OS fingerprint xtables match FUJITA Tomonori (27): x86: calgary: remove IOMMU_DEBUG dma-debug: add dma_debug_resize_entries() to adjust the number of dma_debug_entries x86 gart: reimplement IOMMU_LEAK feature by using DMA_API_DEBUG block: let blk_end_request_all handle bidi requests scsi: simplify the bidi completion block: move completion related functions back to blk-core.c [SCSI] scsi_debug: fix virtual disk larger than 1TB net: replace dma_sync_single with dma_sync_single_for_cpu dma-debug: use sg_dma_address accessor instead of using dma_address directly dma-debug: use sg_dma_len accessor dma-debug: fix debug_dma_sync_sg_for_cpu and debug_dma_sync_sg_for_device block: needs to set the residual length of a bidi request USB: replace dma_sync_single and dma_sync_sg with dma_sync_single_for_cpu and dma_sync_sg_for_cpu sparc: move the duplication in dma-mapping_{32|64}.h to dma-mapping.h sparc: add sync_single_for_device and sync_sg_for_device to struct dma_ops sparc: use dma_map_page instead of dma_map_single sparc: remove dma-mapping_{32|64}.h V4L/DVB (11937): vino: replace dma_sync_single with dma_sync_single_for_cpu dma-mapping: add asm-generic/dma-mapping-common.h dma-mapping: x86: use asm-generic/dma-mapping-common.h dma-mapping: ia64: use asm-generic/dma-mapping-common.h dma-mapping: ia64: add CONFIG_DMA_API_DEBUG support dma-mapping: mark dma_sync_single and dma_sync_sg as deprecated scsi_transport_sas: needs to call blk_end_request_all for SMP requests block: revert "bsg: setting rq->bio to NULL" parport_pc: set properly the dma_mask for parport_pc device Blackfin: fix dma-mapping build errors Fabian Godehardt (3): imx: serial: notify higher layers in case xmit IRQ was not called imx: serial: be sure to stop xmit upon shutdown imx: serial: add IrDA support to serial driver Fabio Estevam (4): MX27: Add basic support to MX27PDK MX3: Add missing entry in devices.h fec: Add FEC support for MX35 processor MX35: Add basic support for MX35PDK board Fabio Rossi (1): ath5k: fix interpolation with equal power levels Faisal Latif (2): RDMA/nes: Fix max_qp_init_rd_atom returned from query device RDMA/nes: Fix FIN state handling under error conditions Felipe Balbi (2): Input: add twl4030-pwrbutton driver Input: introduce lm8323 keypad driver Felix Beck (1): [S390] ap/zcrypt: Suspend/Resume ap bus and zcrypt Felix Blyakher (7): lockd: call locks_release_private to cleanup per-filesystem state xfs: fix double unlock in xfs_swap_extents() xfs: prevent deadlock in xfs_qm_shake() Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/fs/xfs/xfs xfs: fix freeing memory in xfs_getbmap() Merge branch 'master' of git://oss.sgi.com/xfs/xfs into for-linus Fenghua Yu (3): Intel IOMMU Pass Through Support Fix !CONFIG_DMAR build failure introduced by Intel IOMMU Pass Through Support IOMMU Identity Mapping Support (drivers/pci/intel_iommu.c) Figo.zhang (14): ALSA: sgio2audio.c: clean up checking x86, microcode: Simplify vfree() use net pkgen.c:fix no need for check vxge: No need for check vfree() pointer. tehuti: No need check vfree() pointer. netxen: No need to check vfree() pointer. drm/via: vfree() no need checking before calling it V4L/DVB (11953): videobuf-dma-sg: return -ENOMEM if vmalloc fails V4L/DVB (11958): usbvision-core.c: vfree does its own NULL check V4L/DVB (11991): buf-core.c: add pointer check V4L/DVB (11995): zr364xx.c: vfree does its own NULL check V4L/DVB (12004): poll method lose race condition Documentation/atomic_ops.txt: fix sample code x86, io_apic.c: Work around compiler warning Filipe Rosset (3): V4L/DVB (11487): em28xx: fix typo em28xx_errdev message V4L/DVB (11838): uvcvideo: Add Lenovo Thinkpad SL400 to device list comments V4L/DVB (11895): bt8xx: remove always false if Finn Thain (1): mac8390: use printk MAC address format Florian Fainelli (10): r6040: check for absent PHY r6040: bump version to 0.23 and date to 05May2009 r6040: check and update media status korina: periodically poll the media cpmac: remove unused variable. serial: add support for the TI AR7 internal UART drivers: add support for the TI VLYNQ bus MIPS: RB532: Cleanup cpu-features-overrides MIPS: RB532: Check irq number when handling GPIO interrupts lib: add lib/gcd.c Florian Westphal (5): syncookies: remove last_synq_overflow from struct tcp_sock netfilter: xt_NFQUEUE: use NFPROTO_UNSPEC netfilter: xt_NFQUEUE: queue balancing support netfilter: ipt_MASQUERADE: remove redundant rwlock r8169: remove unused variable Forest Bond (8): Staging: Add pristine upstream vt6655 driver sources Staging: vt6655 Add includes to drivers/staging/vt6655. Staging: vt6655: Drop obsolete fsuid/fsgid accesses. Staging: vt6655: Build vt6655.ko, not viawget.ko. Staging: vt6655: Replace net_device->priv accesses with netdev_priv calls. Staging: vt6655: Remove LINUX_VERSION_CODE preprocessor conditionals. Staging: vt6655: use net_device_ops for management functions Staging: vt6655: Integrate drivers/staging/vt6655 into build system. Frank Blaschka (3): [S390] pm: qeth driver power management callbacks [S390] pm: ctcm driver power management callbacks [S390] pm: claw driver power management callbacks Frank Dischner (1): V4L/DVB (11987): au8522: add support for QAM-64 modulation type Frank Leipold (1): uwb: allow WLP to be used with IPv6. Frank Mori Hess (5): Staging: comedi: Finish removing ni_private typedef Staging: comedi: Fixed Kconfig option for COMEDI_PCMCIA_DRIVERS Staging: Comedi: ni_600x: Added support for comedi_poll. Staging: comedi: Added sysfs attribute files for setting and querying subdevice buffer sizes. Staging: comedi: jr3_pci: Use struct device from pci_dev for firmware loading. Frank Munzert (2): [S390] pm: vmur driver power management callbacks [S390] pm: tape power management callbacks Frank Seidel (3): mISDN: Reduce stack size in dsp_cmx_send() mISDN: Add allocation of recvbuf[1500] at run time to reduce stack size crypto: tcrypt - Reduce stack size Frank Shew (1): i2c: Blackfin TWI: fix transfer errors with repeat start Franklin Meng (2): V4L/DVB (11976): em28xx: set up tda9887_conf in em28xx_card_setup() V4L/DVB (11977): em28xx: Add Kworld 315 entry Frans Pop (11): kbuild, deb-pkg: minor general improvements in builddeb script kbuild, deb-pkg: refactor code to reduce duplication kbuild, deb-pkg: fix 'file not found' error when building .deb package for arm kbuild, deb-pkg: pass Debian maintainer script parameters to packaging hook scripts kbuild, deb-pkg: allow to specify a custom revision for .deb packages kbuild, deb-pkg: allow alternative hook scripts directory in .deb packages kbuild, deb-pkg: improve changelog entry and package descriptions kbuild, deb-pkg: generate debian/copyright file kbuild, deb-pkg: improve Source field USB: Avoid PM error messages during resume if a device was disconnected PCI PM: consistently use type bool for wake enable variable Frederic Weisbecker (23): tracing/ftrace: factorize the tracing files creation tracing/lockdep: report the time waited for a lock tracing/core: Add current context on tracing recursion warning tracing/ring-buffer: Add unlock recursion protection on discard tracing/events: provide string with undefined size support tracing/lock: provide lock_acquired event support for dynamic size string tracing/events: protect __get_str() vsprintf: introduce %pf format specifier tracing/filters: support for filters of dynamic sized arrays tracing/filters: support for operator reserved characters in strings tracing/stat: replace trace_stat_session by stat_session tracing/stat: replace linked list by an rbtree for sorting tracing/stat: remove unappropriate safe walk on list perf_counter: Sleep before refresh using poll in perf top perf_counter tools: Fix warn_unused_result warnings perf top: Fix zero or negative refresh delay perf top: Wait for a minimal set of events before reading first snapshot perf annotate: Print the filename:line for annotated colored lines perf annotate: Print a sorted summary of annotated overhead lines perf annotate: Fixes for filename:line displays tracing/urgent: fix unbalanced ftrace_start_up tracing/urgent: warn in case of ftrace_start_up inbalance perfcounter: Handle some IO return values Gabor Juhos (7): ath9k: uninline ath9k_io{read,write}32 routines ath9k: remove redundant AR9285 checks ath9k: restore power mode on error path ath9k: prevent sleeping while we are waiting for CAB ath9k: process rx packet if we are waiting for CAB ath9k: wait for beacon frame along with CAB ath9k: restore PS mode, before we put the chip into FULL SLEEP state. Gabriel Paubert (1): net: Remove obsolete MV64360 config option Gary Hade (2): x86: consolidate SMP code in io_apic.c x86/ACPI: Correct maximum allowed _CRS returned resources and warn if exceeded Gautham R Shenoy (3): sched: Nominate idle load balancer from a semi-idle package. sched: Nominate a power-efficient ilb in select_nohz_balancer() sched: Replace first_cpu() with cpumask_first() in ILB nomination code Geert Uytterhoeven (37): dlm: Make name input parameter of {,dlm_}new_lockspace() const wireless: WL12XX should depend on GENERIC_HARDIRQS powerpc: Keep track of emulated instructions crypto: testmgr - Kill test_comp() sparse warnings crypto: pcomp - pcompress.c should include crypto/internal/compress.h crypto: compress - Return produced bytes in crypto_{,de}compress_{update,final} ALSA: sound/ps3: Fix checkpatch issues ALSA: sound/ps3: Restructure driver source ALSA: sound/ps3: Correct existing and add missing annotations ps3vram: Fix error path (return -EIO) for short read/write ps3vram: Use proc_create_data() instead of proc_create() ps3fb: Remove useless debug checks in ps3fb_shutdown() ps3fb: Inline functions in ps3fb_probe(), to ease cleanup in the error path ps3fb: Correct handling of device opening in ps3fb_probe() powerpc/cell: Extract duplicated IOPTE_* to ps3fb: GPU memory mapping cleanup ps3vram: GPU memory mapping cleanup ps3fb/vram: Extract common GPU stuff into ps3fb: Tear down FB setup during cleanup block: Add bio_list_peek() ps3vram: Replace mutex by spinlock + bio_list ps3vram: Remove no longer used ps3vram_priv.ddr_base ps3vram: Make ps3vram_priv.reports a void * ps3: Use dev_[gs]et_drvdata() instead of direct access for system bus devices ps3: shorten ps3_system_bus_[gs]et_driver_data to ps3_system_bus_[gs]et_drvdata ps3flash: Use ps3_system_bus_[gs]et_drvdata() instead of direct access ps3fb: Use ps3_system_bus_[gs]et_drvdata() instead of direct access drivers/ps3: Add missing annotations ps3: Correct debug message in dma_ioc0_map_pages() ps3: Switch ps3_os_area_[gs]et_rtc_diff to EXPORT_SYMBOL_GPL() ps3: Replace direct file operations by callback ps3flash: Cache the last accessed FLASH chunk ps3flash: Always read chunks of 256 KiB, and cache them net/ps3: gelic - Add missing annotations ps3rom: Use ps3_system_bus_[gs]et_drvdata() instead of direct access usb/ps3: Add missing annotations fbdev: move logo externs to header file Geoff Levand (1): powerpc/ps3: Use smp_request_message_ipi George G. Davis (1): [ARM] 5540/1: 32-bit Thumb-2 {ld,st}{m,rd} alignment fault fixup support Gerald Schaefer (6): [S390] dcssblk: revert devt conversion [S390] pm: appldata power management callbacks [S390] pm: memory hotplug power management callbacks [S390] pm: monwriter power management callbacks. [S390] pm: monreader power management callbacks. [S390] pm: dcssblk power management callbacks. Gerard Lledo (1): Staging: comedi: cb_pcidas.c: Fix build warning (type mismatch) Gerhard Pircher (1): powerpc: Enable additional BAT registers in setup_745x_specifics() GeunSik Lim (5): ftrace: fix typo about map of kernel priority in ftrace.txt file. sched: fix typo in sched-rt-group.txt file trivial: ftrace:fix description of trace directory debugfs: Fix terminology inconsistency of dir name to mount debugfs filesystem. edac: Kconfig: fix the meaning of EDAC abbreviation Giridhar Malavali (2): fc_transport: The softirq_done function registration for BSG request fc_transport: Selective return value from BSG timeout function Glauber Costa (3): KVM: fix apic_debug instances KVM: Replace ->drop_interrupt_shadow() by ->set_interrupt_shadow() KVM: Deal with interrupt shadow state for emulated instructions Gleb Natapov (51): KVM: APIC: kvm_apic_set_irq deliver all kinds of interrupts KVM: ioapic/msi interrupt delivery consolidation KVM: consolidate ioapic/ipi interrupt delivery logic KVM: change the way how lowest priority vcpu is calculated KVM: APIC: get rid of deliver_bitmask KVM: MMU: do not free active mmu pages in free_mmu_pages() KVM: SVM: Remove duplicate code in svm_do_inject_vector() KVM: reuse (pop|push)_irq from svm.c in vmx.c KVM: Timer event should not unconditionally unhalt vcpu. KVM: Fix interrupt unhalting a vcpu when it shouldn't KVM: VMX: Fix handling of a fault during NMI unblocked due to IRET KVM: VMX: Rewrite vmx_complete_interrupt()'s twisted maze of if() statements KVM: VMX: Do not zero idt_vectoring_info in vmx_complete_interrupts(). KVM: Fix task switch back link handling. KVM: Fix unneeded instruction skipping during task switching. KVM: x86 emulator: fix call near emulation KVM: x86 emulator: Add decoding of 16bit second immediate argument KVM: x86 emulator: Add lcall decoding KVM: x86 emulator: Complete ljmp decoding at decode stage KVM: x86 emulator: Complete short/near jcc decoding in decode stage KVM: x86 emulator: Complete decoding of call near in decode stage KVM: x86 emulator: Add unsigned byte immediate decode KVM: x86 emulator: Completely decode in/out at decoding stage KVM: x86 emulator: Decode soft interrupt instructions KVM: x86 emulator: Add new mode of instruction emulation: skip KVM: SVM: Skip instruction on a task switch only when appropriate KVM: Make kvm_cpu_(has|get)_interrupt() work for userspace irqchip too KVM: VMX: Consolidate userspace and kernel interrupt injection for VMX KVM: VMX: Cleanup vmx_intr_assist() KVM: Use kvm_arch_interrupt_allowed() instead of checking interrupt_window_open directly KVM: SVM: Coalesce userspace/kernel irqchip interrupt injection logic KVM: Remove exception_injected() callback. KVM: Remove inject_pending_vectors() callback KVM: Remove kvm_push_irq() KVM: sync_lapic_to_cr8() should always sync cr8 to V_TPR KVM: Do not report TPR write to userspace if new value bigger or equal to a previous one. KVM: Get rid of arch.interrupt_window_open & arch.nmi_window_open KVM: SVM: Add NMI injection support KVM: Fix userspace IRQ chip migration KVM: Get rid of get_irq() callback KVM: SVM: Don't reinject event that caused a task switch KVM: Unprotect a page if #PF happens during NMI injection. KVM: Do not allow interrupt injection from userspace if there is a pending event. KVM: Remove irq_pending bitmap KVM: skip_emulated_instruction() decode instruction if size is not known KVM: Do not re-execute INTn instruction. KVM: Always request IRQ/NMI window if an interrupt is pending KVM: inject NMI after IRET from a previous NMI, not before. KVM: Do not migrate pending software interrupts. KVM: Disable CR8 intercept if tpr patching is active KVM: Move "exit due to NMI" handling into vmx_complete_interrupts() Graf Yang (19): netdev: bfin_mac: add Blackfin MII bus to platform bus to allow DSA access Blackfin Serial Driver: fix missing new lines when under load Blackfin: fix link failure due to CONFIG_EXCEPTION_L1_SCRATCH Blackfin: fix bug found by traps test case 21 Blackfin: add MDMA defines to make cross-variant coding easier Blackfin: work around anomaly 05000287 Blackfin: BF518F-EZBRD: handle required portmuxing of async pins Blackfin: annotate anomaly 05000120 Blackfin: add support for gptimer0 as a tick source Blackfin: add workaround for anomaly 05000287 Blackfin: work around anomaly 05000220 Blackfin: drop unused reserve_pda() function Blackfin: merge sram init functions Blackfin: fix handling of initial L1 reservation Blackfin: convert SMP to only use generic time framework Blackfin: bf518f-ezbrd: fix SPI CS for SPI flash Blackfin: bf526-ezbrd: set SPI flash resources to SST device Blackfin: fix typo in TRAS define in mem_init.h header Blackfin: bf526-ezbrd: handle different SDRAM chips Graff Yang (1): irda: new Blackfin on-chip SIR IrDA driver Grant Likely (19): of: add of_parse_phandle() helper for parsing phandle properties phylib: rework to prepare for OF registration of PHYs phylib: add *_direct() variants of phy_connect and phy_attach functions openfirmware: Add OF phylib support code net: Rework mpc5200 fec driver to use of_mdio infrastructure. net: rework fsl_pq_mdio driver to use of_mdio infrastructure net: Rework gianfar driver to use of_mdio infrastructure. net: Rework pasemi_mac driver to use of_mdio infrastructure net: Rework ucc_geth driver to use of_mdio infrastructure powerpc/82xx: Rework Embedded Planet ep8248e platform to use of_mdio net: Rework fs_enet driver to use of_mdio infrastructure net: add Xilinx ll_temac device driver net: fix fsl_pq_mdio driver to use module_init() net: Fix ucc_geth.c handling of fixed-link w/o phy-connection-type property. powerpc/virtex: refactor intc driver and add support for i8259 cascading powerpc/install: Bail with error code on error in install script Driver Core: Warn driver authors about adding device attributes fbdev/xilinxfb: Fix improper casting and tighen up probe path Revert "net/ucc_geth: Add SGMII support for UEC GETH driver" Grazvydas Ignotas (2): ARM: OMAP3: pandora: setup regulator framework for MMC ARM: OMAP3: pandora: add support for mode devices Greg Banks (3): knfsd: reply cache cleanups knfsd: fix reply cache memory corruption knfsd: remove unreported filehandle stats counters Greg Kroah-Hartman (91): Input: wm97xx - do not access dev->driver_data directly net: remove driver_data direct access of struct device net: remove driver_data direct access of struct device from more drivers Wireless: remove driver_data direct access of struct device sound: remove driver_data direct access of struct device PCIE: remove driver_data direct access of struct device regulator: remove driver_data direct access of struct device firmware: remove broken example files driver core: fix gcc 4.3.3 warnings about string literals eisa: remove driver_data direct access of struct device firewire: remove driver_data direct access of struct device ide: remove driver_data direct access of struct device ieee1394: remove driver_data direct access of struct device infiniband: remove driver_data direct access of struct device input: remove driver_data direct access of struct device media: remove driver_data direct access of struct device mfd: remove driver_data direct access of struct device PCIE: remove driver_data direct access of struct device pcmcia: remove driver_data direct access of struct device scsi: remove driver_data direct access of struct device thermal: remove driver_data direct access of struct device xen block: remove driver_data direct access of struct device hvcs: remove driver_data direct access of struct device ibmvscsi: gadget: at91_udc: remove driver_data direct access of struct device infiniband: ehca: remove driver_data direct access of struct device ipmi: remove driver_data direct access of struct device mips: remove driver_data direct access of struct device of_serial: remove driver_data direct access of struct device parisc: remove driver_data direct access of struct device parport: remove driver_data direct access of struct device s390: remove driver_data direct access of struct device uml: remove driver_data direct access of struct device usb: gadget: at91_udc: remove driver_data direct access of struct device xen: remove driver_data direct access of struct device from more drivers USB: add usb debugfs directory USB: EHCI: use the new usb debugfs directory USB: FHCI: use the new usb debugfs directory USB: OHCI: use the new usb debugfs directory USB: UHCI: use the new usb debugfs directory USB: usbmon: use the new usb debugfs directory USB: add the usbfs devices file to debugfs USB: OHCI: use the ohci structure directly in debugfs files. USB: EHCI: create sysfs companion files directly in the controller device USB: remove unused usb_host class USB: usbtmc: fix switch statment USB: xhci: fix lots of compiler warnings. USB: xhci: fix some compiler warnings in xhci.h V4L/DVB (11739): remove driver_data direct access of struct device Staging: add mailing list address for staging tree Staging: comedi: fix build errors in pcmcia comedi drivers Staging: comedi: set PCI and PCMCIA defines Staging: comedi: vmk80xx.c: get the driver to build properly Staging: comedi: remove comedi-specific wrappers Staging: comedi: remove RT code Staging: comedi: remove some RT code that lingered staging: comedi: fix pcmcia build breakage Staging: agnx: fix build warnings Staging: meilhaus: fix build warnings Staging: remove driver_data direct access of struct device Staging: rt2870: fix build warnings Staging: android: lowmemorykiller: fix up remaining checkpatch warnings Staging: android: logger: fix up remaining checkpatch warnings Staging: android: ram_console: fix up remaining checkpatch warnings Staging: android: binder: fix up some checkpatch warnings Staging: android: fix Kconfig issues Staging: cpc-usb: fix some build problems in the driver Staging: cpc-usb: add driver to the build Staging: cpc-usb: fix up checkpatch errors in cpc-usb_drv.c Staging: cpc-usb: fix checkpatch warnings in sja2m16c.h Staging: cpc-usb: add TODO file Staging: cpc-usb: fix build warnings Staging: rtl8192su: fix build warnings Staging: altpciechdma: fix build warnings Staging: slicoss: fix build warnings Staging: asus_oled: fix build warnings Staging: remove obsolete serqt_usb driver Staging: pata_rdc: add driver to the build system Staging: pata_rdc: convert code to work in 2.6.29 Staging: pata_rdc: coding style fixes Staging: pata_rdc: remove function prototypes Staging: pata_rdc: use PCI_DEVICE Staging: pata_rdc: fix build warnings Staging: pata_rdc: remove broken flag Staging: pata_rdc: remove dbgprintf macro Staging: pata_rdc: remove DRIVER macros Staging: pata_rdc: remove pointless comments Staging: udlfb: add udlfb driver to build Staging: udlfb: clean up checkpatch warnings in udlfb.h Staging: udlfb: clean up checkpatch warnings in udlfb.c Staging: udlfb: fix some sparse warnings. Staging: comedi: fix build errors Greg Ungerer (16): m68knommu: fix system reset for ColdFire 527x family m68knommu: merge system reset for code ColdFire 523x family m68knommu: add CPU reset code for the 5307 ColdFire m68knommu: add CPU reset code for the 5407 ColdFire m68knommu: add CPU reset code for the 5206 ColdFire m68knommu: add CPU reset code for the 5206e ColdFire m68knommu: add CPU reset code for the 5249 ColdFire m68knommu: add CPU reset code for the 532x ColdFire m68knommu: move CPU reset code for the 520x ColdFire into its platform code m68knommu: move CPU reset code for the 523x ColdFire into its platform code m68knommu: move CPU reset code for the 527x ColdFire into its platform code m68knommu: move CPU reset code for the 528x ColdFire into its platform code m68knommu: move CPU reset code for the 5272 ColdFire into its platform code m68knommu: remove obsolete reset code m68knommu: enumerate INIT_THREAD fields properly m68knommu: remove unecessary include of thread_info.h in entry.S GrĂ©gory Lardière (2): V4L/DVB (11688): gspca - m5602-s5k4aa: Fixup SXGA resolution. V4L/DVB (11689): gspca - m5602-s5k4aa: Fixup the vflip/hflip Guennadi Liakhovetski (14): mxc: emulate GPIO interrupt on both-edges ARM: framebuffer support for pcm037 ARM: add USB device support to pcm037 FB: fix unsafe use of disable_irq() in mx3fb.c USB: gadget: Add i.MX3x support to the fsl_usb2_udc driver V4L/DVB (11607): soc-camera: add a free_bus method to struct soc_camera_link V4L/DVB (11608): soc-camera: host-driver cleanup V4L/DVB (11609): soc-camera: remove an extra device generation from struct soc_camera_host V4L/DVB (11610): soc-camera: simplify register access routines in multiple sensor drivers V4L/DVB (11611): soc-camera: link host drivers after clients V4L/DVB (11705): soc-camera: prepare for the platform driver conversion soc-camera: unify i2c camera device platform data SH: convert ap325rxa to soc-camera as platform-device SH: convert migor to soc-camera as platform-device Gui Jianfeng (1): cfq: cleanup for last_end_request in cfq_data Guido GĂĽnther (1): ALSA: support Sony Vaio TT Gustavo F. Padovan (3): Bluetooth: Use macros for L2CAP channel identifiers Bluetooth: Use macro for L2CAP hint mask on receiving config request Bluetooth: Fix errors and warnings in L2CAP reported by checkpatch.pl Gábor Stefanik (7): rtl8187: Remove the "8187B chip detected" message when probing RTL8187B cards mac80211: Fix handling of retry count of NO_ACK frames in minstrel mac80211: Fix handling of retry count of NO_ACK frames in PID iwlwifi: Fix handling of retry count of NO_ACK frames in iwl-{3945|agn}-rs ath9k: Fix handling of retry count of NO_ACK frames mac80211: Warn if the rate controller requests retries for a NO_ACK frame zd1211rw: Replace ZD_CS_MULTICAST with ZD_CS_NO_ACK H Hartley Sweeten (9): Input: rotary_encoder - add support for REL_* axes Input: add matrix keypad driver for Cirrus EP93xx net/sunrpc/svc_xprt.c: fix sparse warnings mtd: plat_nand: add platform probe/remove callbacks mtd: plat_nand: allow platform to set partitions USB: core/sysfs: fix sparse warnings USB: host/ohci-hcd.c: fix sparse warnings USB: hub.c: fix sparse warnings mm/page-writeback.c: dirty limit type should be unsigned long H. Peter Anvin (44): mutex: drop "inline" from mutex_lock() inside kernel/mutex.c x86, setup: "glove box" BIOS calls -- infrastructure x86, setup: "glove box" BIOS interrupts in the core boot code x86, setup: "glove box" BIOS interrupts in the APM code x86, setup: "glove box" BIOS interrupts in the EDD code x86, setup: "glove box" BIOS interrupts in the MCA code x86, setup: "glove box" BIOS interrupts in the video code x86, setup: fix comment in the "glove box" code x86: fix typo in address space documentation x86, boot: align the .bss section in the decompressor kbuild: allow compressors (gzip, bzip2, lzma) to take multiple inputs x86: add a Kconfig symbol for when relocations are needed x86, boot: simplify arch/x86/boot/compressed/Makefile x86, boot: follow standard Kbuild style for compression suffix x86, boot: use BP_scratch in arch/x86/boot/compressed/head_*.S x86, boot: stylistic cleanups for boot/compressed/head_32.S x86, boot: stylistic cleanups for boot/compressed/head_64.S x86, boot: straighten out ranges to copy/zero in compressed/head*.S x86, boot: set up the decompression stack as early as possible x86, boot: zero EFLAGS on 32 bits x86, boot: use appropriate rep string for move and clear x86, boot: determine compressed code offset at compile time x86, boot: make symbols from the main vmlinux available x86, boot: use LOAD_PHYSICAL_ADDR on 64 bits x86, boot: remove dead code from boot/compressed/head_*.S x86, boot: make kernel_alignment adjustable; new bzImage fields x86: document new bzImage fields x86: default CONFIG_PHYSICAL_START and CONFIG_PHYSICAL_ALIGN to 16 MB x86: make CONFIG_RELOCATABLE the default x86, defconfig: update to current, no material changes x86, defconfig: update kernel position parameters x86: add extension fields for bootloader type and version x86, boot: correct sanity checks in boot/compressed/misc.c x86-64: align __PHYSICAL_START, remove __KERNEL_ALIGN x86, boot: correct the calculation of ZO_INIT_SIZE Merge branch 'x86/urgent' into x86/setup x86, mce: add comment about mce_chrdev_ops being writable x86, mce: fix comment style in mce-inject.c x86, mce: drop "extern" from function prototypes in asm/mce.h Merge branch 'irq/numa' into x86/mce3 x86: cap iomem_resource to addressable physical memory x86, boot: use .code16gcc instead of .code16 x86, mce: mce_intel.c needs devpts: remove module-related code Haavard Skinnemoen (3): Merge branch 'avr32-arch' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 avr32: Fix oops on unaligned user access atmel_serial: fix hang in set_termios when crtscts is enabled Haiying Wang (12): powerpc/85xx: clean up for mpc8568_mds name powerpc/qe: update risc allocation for QE net/ucc_geth: update riscTx and riscRx in ucc_geth powerpc/qe: update QE Serial Number net/ucc_geth: Assign six threads to Rx for UEC powerpc/85xx: Add MPC8569MDS board support powerpc/qe: add new qe properties for QE based chips net/phy/marvell: update m88e1111 support for SGMII mode fsl_pq_mido: Set the first UCC as the mii management interface master net/ucc_geth: Add SGMII support for UEC GETH driver powerpc/85xx: Add UCC6 and UCC8 nodes in SGMII mode for MPC8569MDS net/ucc_geth: Add SGMII support for UCC GETH driver Hannes Eder (2): NULL noise: arch/x86/xen/smp.c KVM: make 'lapic_timer_ops' and 'kpit_ops' static Hannes Hering (1): IB/ehca: Tolerate dynamic memory operations before driver load Hannes Reinecke (3): virtio_blk: SG_IO passthru support sd, sr: fix Driver 'sd' needs updating message dm mpath: change attached scsi_dh Hans Verkuil (16): V4L/DVB (11670): tuner: remove tuner_i2c_address_check V4L/DVB (11671): v4l2: add v4l2_device_set_name() V4L/DVB (11672): ivtv: use v4l2_device_set_name. V4L/DVB (11673): v4l2-device: unregister i2c_clients when unregistering the v4l2_device. V4L/DVB (11676): radio-fm16: cleanups V4L/DVB (11677): radio-fm16: fix g_tuner. V4L/DVB (11967): v4l: i2c modules must be linked before the v4l2 drivers i2c: New macro to initialize i2c address lists on the fly V4L/DVB (12104): ivtv/cx18: fix regression: class controls are no longer seen V4L/DVB (12107): smscoreapi: fix compile warning V4L/DVB (12108): v4l2-i2c-drv.h: add comment describing when not to use this header. V4L/DVB (12109): radio-tea5764: fix incorrect rxsubchans value V4L/DVB (12111): tcm825x: remove incorrect __exit_p wrapper V4L/DVB (12112): cx231xx: fix uninitialized variable. V4L/DVB (12125): v4l2: add new s_config subdev ops and v4l2_i2c_new_subdev_cfg/board calls V4L/DVB (12128): v4l2: update framework documentation. Hans de Goede (34): hwmon: (tmp401) Add support for TI's TMP401 sensor chip hwmon: (f71882fg) Cleanup f8000 pwm handling hwmon: (f71882fg) Sanity check f8000 pwm settings hwmon: (f71882fg) Add temp#_fault sysfs attr for f8000 hwmon: (f71882fg) Add support for the F71858F V4L/DVB (11448): gspca - main: Use usb interface as parent. V4L/DVB (11871): gspca - spca561: Change the Rev12a controls. V4L/DVB (11872): gspca - spca561: Rename the 'White Balance' control to 'Hue'. V4L/DVB (11970): gspca - ov519: Add support for the ov518 bridge. V4L/DVB (11972): gspca - main: Skip disabled controls. V4L/DVB (11870): gspca - main: VIDIOC_ENUM_FRAMESIZES ioctl added. V4L/DVB (12071): gspca: fix NULL pointer deref in query_ctrl V4L/DVB (12072): gspca-ov519: add extra controls V4L/DVB (12073): gspca_ov519: limit ov6630 qvif uv swap fix to ov66308AF V4L/DVB (12074): gspca_ov519: Add 320x240 and 160x120 support for cif sensor cams V4L/DVB (12075): gspca_ov519: check ov518 packet numbers V4L/DVB (12076): gspca_ov519: Fix led inversion with some cams V4L/DVB (12077): gspca_ov519: Fix 320x240 with ov7660 sensor V4L/DVB (12078): gspca_ov519: Better default contrast for ov6630 V4L/DVB (12079): gspca_ov519: add support for the ov511 bridge V4L/DVB (12080): gspca_ov519: Fix ov518+ with OV7620AE (Trust spacecam 320) V4L/DVB (12081): gspca_ov519: Cleanup some sensor special cases V4L/DVB (12082): gspca_stv06xx: Add support for st6422 bridge and sensor V4L/DVB (12083): ov511: remove ov518 usb id's from the driver V4L/DVB (12084): ov511: mark as deprecated V4L/DVB (12085): gspca_ov519: constify ov518 inititial register value tables V4L/DVB (12086): gspca_sonixj: Fix control index numbering V4L/DVB (12087): gspca_sonixj: enable support for 0c45:613e camera V4L/DVB (12088): Mark the v4l1 uvcvideo quickcam messenger driver as deprecated V4L/DVB (12089): gspca_sonixj: increase 640x480 frame-buffersize V4L/DVB (12090): gspca_sonixj: enable autogain control for the ov7620 V4L/DVB (12091): gspca_sonixj: Add light frequency control V4L/DVB (12092): gspca_sonixj + ov7630: invert vflip control instead of changing default V4L/DVB (12093): gspca_sonixj: Name saturation control saturation, not color Hans-Christian Egtvedt (1): Input: add wm97xx accelerated driver for Atmel microprocessors Hans-Joachim Picht (2): [S390] pm: add kernel_page_present [S390] s390: hibernation support for s390 Hao Wu (1): USB: Add Intel Langwell USB OTG Transceiver Drive Harald Welte (8): hwrng: via_rng - The VIA Hardware RNG driver is for the CPU, not Chipset hwrng: via_rng - Support VIA Nano hardware RNG hwrng: via_rng - Support VIA Nano hardware RNG on X86_64 builds CPUFREQ: Enable acpi-cpufreq driver for VIA/Centaur CPUs CPUFREQ: Mark e_powersaver driver as EXPERIMENTAL and DANGEROUS i2c-viapro: Add new PCI device ID for VX855 mmc: Add new via-sdmmc host controller driver sdhci: Specific quirk vor VIA SDHCI controller in VX855ES Harish Zunjarrao (2): [SCSI] qla2xxx: Correct hard-coded address of a second-port's NVRAM. qla2xxx: Correct iiDMA-update calling conventions. Harry Ciao (3): edac: add CPC925 Memory Controller driver edac: add edac_device_alloc_index() edac: cpc925 MC platform device setup Hartley Sweeten (5): [ARM] 5452/1: ep93x: rtc: use ioremap'ed addresses [ARM] 5504/1: ep93xx: Merge all edb93xx platforms [ARM] 5526/1: ep93xx: usb driver cleanup [ARM] 5527/1: ep93xx: core.c: trivial spelling error [ARM] 5528/1: ep93xx: add defines for dma clock magic numbers Hauke Mehrtens (1): p54usb: Fixes compile error with CONFIG_PM=n Hector Martin (2): ALSA: hda - Acer Aspire 8930G support ALSA: hda - More Aspire 8930G fixes Heiko Carstens (27): tracing: fix build failure on s390 trace: disable preemption before taking raw spinlocks [S390] implement interrupt-enabling rwlocks [S390] add mini sclp driver [S390] implement is_compat_task [S390] secure computing arch backend [S390] uaccess: use might_fault() instead of might_sleep() [S390] vmalloc: add vmalloc kernel parameter support [S390] maccess: add weak attribute to probe_kernel_write [S390] maccess: arch specific probe_kernel_write() implementation [S390] kprobes: use probe_kernel_write [S390] ftrace: add dynamic ftrace support [S390] ftrace: add function trace mcount test support [S390] ftrace: add function graph tracer support [S390] ftrace: add system call tracer support [S390] wire up sys_rt_tgsigqueueinfo [S390] wire up sys_perf_counter_open PM: Add empty suspend/resume device irq functions [S390] time: convert from bootmem to slab [S390] 3215 console: convert from bootmem to slab [S390] 3270 console: convert from bootmem to slab [S390] sclp console: convert from bootmem to slab [S390] vt220 console: convert from bootmem to slab [S390] pm: fix build error for !SMP [S390] kprobes: defer setting of ctlblk state can: let SJA1000 driver depend on HAS_IOMEM net: let KS8842 driver depend on HAS_IOMEM Heiko Schocher (1): 83xx: add support for the kmeter1 board. Hendrik Brueckner (10): af_iucv: sync sk shutdown flag if iucv path is quiesced af_iucv: add sockopt() to enable/disable use of IPRM_DATA msgs af_iucv: Support data in IUCV msg parameter lists (IPRMDATA) af_iucv: Modify iucv msg target class using control msghdr af_iucv: Provide new socket type SOCK_SEQPACKET af_iucv: cleanup and refactor recvmsg() EFAULT handling af_iucv: New socket option for setting IUCV MSGLIMITs [S390] pm: hvc_iucv power management callbacks af_iucv: Change if condition in sendmsg() for more readability af_iucv: Return -EAGAIN if iucv msg limit is exceeded Henrique de Moraes Holschuh (7): thinkpad-acpi: store fw version with strict checking thinkpad-acpi: add quirklist engine thinkpad-acpi: fix BEEP ACPI handler warnings thinkpad-acpi: enhance led support thinkpad-acpi: silence bogus warning when ACPI video is disabled thinkpad-acpi: forbid the use of HBRV on Lenovo ThinkPads thinkpad-acpi: support the second fan on the X61 Herbert Xu (32): gro: New frags interface to avoid copying shinfo gro: Fix handling of headers that extend over the tail gro: Fix COMPLETE checksum handling tcp: Unexport TCPv6 GRO functions skbuff: Move new code into __copy_skb_header skbuff: Copy csum instead of csum_start/csum_offset gro: Open-code frags copy in skb_gro_receive gro: Inline skb_gro_header and cache frag0 virtual address gro: Localise offset/headlen in skb_gro_offset gro: Only use skb_gro_header for completely non-linear packets tcp: Optimise GRO port comparisons tcp: Remove unnecessary window comparisons for GRO tcp: Optimise len/mss comparison gro: Optimise length comparison in skb_gro_header gro: Avoid unnecessary comparison after skb_gro_header ipv4: Use 32-bit loads for ID and length in GRO gro: Open-code final pskb_may_pull gro: Nasty optimisations for page frags in skb_gro_receive gro: Store shinfo in local variable in skb_gro_receive tcp: Do not check flush when comparing options for GRO crypto: padlock - Restore dependency on x86 crypto: testmgr - Dynamically allocate xbuf and axbuf crypto: testmgr - Check all test vector lengths crypto: testmgr - Allow hash test vectors longer than a page gso: Stop fraglists from escaping tun: Only wake up writers virtio_net: Set correct gso->hdr_len tun: Optimise handling of bogus gso->hdr_len net: Ensure partial checksum offset is inside the skb head [SCSI] cxgb3i: Include net/dst.h for struct dst_cache virtio_net: Fix IP alignment on non-mergeable RX path net: Move rx skb_orphan call to where needed Hermann Kneissel (1): USB: garmin_gps: removes usb_reset_device from garmin_close Hidetoshi Seto (32): x86: smarten /proc/interrupts output for new counters x86, mce: Cleanup param parser x86, mce: use strict_strtoull x86, mce: trivial clean up for therm_throt.c x86, mce: trivial clean up for mce.c x86, mce: trivial clean up for mce_amd_64.c x86, mce: trivial clean up for mce_intel_64.c x86, mce: trivial clean up for mce-inject.c x86: trivial clean up for arch/x86/Kconfig x86, mce: fix for mce counters x86, mce: Fix mce printing x86, mce: Add boot options for corrected errors PCI MSI: Remove unused/obsolete macros and definitions PCI MSI: Define PCI_MSI_MASK_32/64 x86, mce: don't init timer if !mce_available x86, mce: cleanup mce_start() x86, mce: add __read_mostly x86, mce: rename static variables around trigger x86, mce: sysfs entries for new mce options x86, mce: unify mce.h x86, mce: make mce_disabled boolean x86, mce: unify smp_thermal_interrupt, prepare p4 x86, mce: unify smp_thermal_interrupt, prepare mce_intel_64 x86, mce: unify smp_thermal_interrupt, prepare x86, mce: unify smp_thermal_interrupt x86, mce: squash mce_intel.c into therm_throt.c x86, mce: remove intel_set_thermal_handler() x86, mce: remove therm_throt.h x86, mce: mce.h cleanup x86, mce: rename _64.c files which are no longer 64-bit-specific x86, mce: fix error path in mce_create_device() PCI: make msi_free_irqs() to use msix_mask_irq() instead of open coded write Hin-Tak Leung (1): zd1211rw: adding 083a:e503 as a ZD1211B device Hiroshi DOYU (7): omap iommu: tlb and pagetable primitives omap iommu: omap2 architecture specific functions omap iommu: omap3 iommu device registration omap iommu: simple virtual address space management omap iommu: entries for Kconfig and Makefile omap2 iommu: entries for Kconfig and Makefile omap iommu: add MPU_BRIDGE_IOMMU for tidspbridge migration Hisashi Hifumi (6): ocfs2: fdatasync should skip unimportant metadata writeout NILFS2: Pagecache usage optimization on NILFS2 Btrfs: fdatasync should skip metadata writeout Btrfs: pin buffers during write_dev_supers jbd2: clean up jbd2_journal_try_to_free_buffers() jbd: clean up journal_try_to_free_buffers() Hitoshi Mitake (2): sched: Hide runqueues from direct refer at source code level Making fs/minix/minix.h double including safe Holger Schurig (2): imx: exit functions can/should be void imx: re-work of PWM, add i.MX21 support Hong H. Pham (1): sparc64: fix and optimize irq distribution Huang Shijie (1): lib: do code optimization for radix_tree_lookup() and radix_tree_lookup_slot() Huang Weiyi (11): RDS: remove unused #include cfg80211: remove duplicated #include nl80211: remove duplicated #include x86: mce: remove duplicated #include sh: pci: remove duplicated #include's V4L/DVB: cx231xx: remove unused #include 's [ARM] S3C24XX: remove duplicated #include x86: Remove duplicated #include's Staging: comedi: remove dupilcated #include Staging: rt3070: remove dupilcated #include Staging: remove unused #include 's Huang Ying (13): crypto: cryptd - Use nivcipher in cryptd_alloc_ablkcipher crypto: fpu - Add template for blkcipher touching FPU crypto: aes-ni - Add support for more modes x86, mce: improve mce_get_rip x86, mce: export MCE severities coverage via debugfs PCI: Add pci_bus_set_ops PCI: PCIE AER: export aer_irq PCI: PCIE AER: Document for PCIE AER software error injection PCI AER: software error injection x86, mce: fix a race condition about mce_callin and no_way_out crypto: aes-ni - Fix cbc mode IV saving crypto: aes-ni - Do not sleep when using the FPU crypto: aes-ni - Remove CRYPTO_TFM_REQ_MAY_SLEEP from fpu template Hugh Dickins (5): ide: fix PowerMac bootup oops mm: alloc_large_system_hash check order hugetlb: fault flags instead of write_access mm: don't rely on flags coincidence mm: pass mm to grab_swap_token Hugo Villeneuve (1): davinci: DM644x: add support for SFFSDR board Hunter Adrian (1): UBIFS: return error if link and unlink race Ian Abbott (6): Staging: comedi: 'pcmcia_parse_tuple()' now has two arguments, not three. Staging: comedi: pcl818: Fix option handling for FIFO mode (hopefully!). Staging: comedi: pcl818: Tidy up AI command after channel dropout or similar error. Staging: comedi: Work around malformed RTAI_VERSION_CODE. Staging: comedi: Undo stupid commit made 3 months ago Staging: comedi: amplc_pc236: Corrected documentation. Ian Campbell (8): xen: resume interrupts before system devices. xen: add irq_from_evtchn xen: add /dev/xen/evtchn driver xen: export ioctl headers to userspace xen: remove suspend_cancel hook xen: use device model for suspending xenbus devices xen: drop kexec bits from /sys/hypervisor since kexec isn't implemented yet xen: honour VCPU availability on boot Ian Molton (1): tmio_mmc: fix clock setup Igor M. Liplianin (6): V4L/DVB (11981): Remote control debugging for dw2102 driver based USB cards V4L/DVB (11982): Add keymaps for TeVii and TBS USB DVB-S/S2 cards V4L/DVB (11983): Add support for DVBWorld DVB-C USB Cable card. V4L/DVB (11984): Add support for yet another SDMC DM1105 based DVB-S card. V4L/DVB (12095): Change lnbh24 configure bits for NetUP card. V4L/DVB (12098): Create table for customize stv0900 ts registers. Ilpo Järvinen (2): tcp: extend ECN sysctl to allow server-side only ECN tcp: fix loop in ofo handling code and reduce its complexity Imre Deak (2): ARM: OMAP2: 2430SDP: Add FB support to board file ARM: OMAP3: ZOOM MDK: Add FB support to board file Imre Kaloz (3): [ARM] orion5x: WNR854T switch support MIPS: Sibyte: Remove simulator option MIPS: Sibyte: Remove standalone kernel support InKi Dae (1): Samsung SoC Framebuffer driver: add Alpha Channel support Inaky Perez-Gonzalez (24): wimax/i2400m: generate fake source MAC address with random_ether_addr() wimax/i2400m: trace commands sent from user space on the "echo" pipe wimax/i2400m: allow kernel commands to device to be logged too wimax/i2400m: factor out 'state report's TLV handling to a function wimax/i2400m: remove redundant readiness checks from i2400m_report_tlv_*() wimax: document why wimax_msg_*() operations can be used in any state wimax/i2400m: sdio: set the block size before enabling the function wimax/i2400m: usb: fix device reset on autosuspend while not yet idle wimax: a new API call was added, increment minor protocol version number wimax/i2400m: introduce module parameter to disable entering power save wimax/i2400m: don't call netif_start_queue() in _tx_msg_sent() wimax/i2400m: i2400m's work queue should be initialized before RX support wimax/i2400m: i2400m_schedule_work() doesn't need i2400m->work_queue wimax/i2400m: rename misleading I2400M_PL_PAD to I2400M_PL_ALIGN wimax/i2400m: fix panic/warnings caused by missed check on empty TX message wimax/i2400m: fix panic due to missed corner cases on tail_room calculation wimax/i2400m: don't reset device on i2400m_dev_shutdown() wimax/i2400m: fix oops when the TX FIFO fills up due to a missing check wimax/i2400m: if a device reboot happens during probe, handle it wimax/i2400m: Allow bus-specific driver to specify retry count wimax/i2400m: don't reset device when bootrom init retries are exceeded wimax/i2400m/sdio: Move all the RX code to a unified, IRQ based receive routine wimax: fix warning caused by not checking retval of rfkill_set_hw_state() wimax: fix gcc warnings in sh4 when calling BUG() Ingo Molnar (306): Merge branches 'x86/signal' and 'x86/irq' into perfcounters/core performance counters: documentation performance counters: x86 support x86, perfcounters: read out MSR_CORE_PERF_GLOBAL_STATUS with counters disabled perfcounters: select ANON_INODES perfcounters, x86: simplify disable/enable of counters perfcounters, x86: clean up debug code perfcounters: consolidate global-disable codepaths perf counters: restructure the API perf counters: add support for group counters perf counters: group counter, fixes perf counters: hw driver API perf counters: implement PERF_COUNT_CPU_CLOCK perf counters: consolidate hw_perf save/restore APIs perf counters: implement PERF_COUNT_TASK_CLOCK perf counters: add prctl interface to disable/enable counters perf counters: clean up state transitions perf counters: update docs Merge branch 'x86/irq' into perfcounters/core x86: implement atomic64_t on 32-bit perfcounters: restructure x86 counter math perfcounters: implement "counter inheritance" perfcounters: fix task clock counter perfcounters: add context switch counter perfcounters: add task migrations counter perfcounters: add nr-of-faults counter perfcounters: fix non-intel-perfmon CPUs perfcounters, x86: fix sw counters on non-PMC CPUs perfcounters: fix lapic initialization Merge branch 'linus' into perfcounters/core perfcounters: release CPU context when exiting task counters perfcounters: flush on setuid exec perfcounters: use hw_event.disable flag perfcounters: remove warnings perfcounters: tweak group scheduling x86, perfcounters: rename intel_arch_perfmon.h => perf_counter.h x86, perfcounters: prepare for fixed-mode PMCs perfcounters: add fixed-mode PMC enumeration x86, perfcounters: refactor code for fixed-function PMCs perfcounters: hw ops rename perfcounters: fix task clock counter perfcounters: pull inherited counters perfcounters: fix init context lock perfcounters: enable lowlevel pmc code to schedule counters x86, perfcounters: print out the ->used bitmask perfcounters: remove ->nr_inherited perfcounters: generalize the counter scheduler perfcounters: add PERF_COUNT_BUS_CYCLES x86, perfcounters: add support for fixed-function pmcs perfcounters: include asm/perf_counter.h only if CONFIG_PERF_COUNTERS=y Merge branch 'linus' into perfcounters/core Merge commit 'v2.6.29-rc1' into perfcounters/core Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/perfcounters into perfcounters/core Merge branch 'core/percpu' into perfcounters/core Merge commit 'v2.6.29-rc2' into perfcounters/core Merge branch 'core/percpu' into perfcounters/core Merge branch 'core/percpu' into perfcounters/core perfcounters: fix "perf counters kills oprofile" bug, v2 Merge commit 'v2.6.29-rc4' into perfcounters/core Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/perfcounters into perfcounters/core Merge branch 'linus' into perfcounters/core Merge branch 'x86/core' into perfcounters/core perfcounters: remove duplicate definition of LOCAL_PERF_VECTOR perfcounters: fix acpi_idle_do_entry() workaround Merge branch 'x86/apic' into perfcounters/core Merge branch 'x86/apic' into perfcounters/core Merge branch 'x86/core' into perfcounters/core Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/perfcounters into perfcounters/core Merge commit 'v2.6.29-rc7' into perfcounters/core Merge branch 'rfc' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/perfcounters into perfcounters/core perfcounters: fix reserved bits sizing x86, bts: cleanups x86, bts: detect size of DS fields, fix x86/mm: further cleanups of fault.c's include file section Merge branch 'linus' into perfcounters/core-v2 perf_counter: fix crash on perfmon v1 systems perf_counter: create Documentation/perf_counter/ and move perfcounters.txt there perf_counter: add sample user-space to Documentation/perf_counter/ perf_counter tools: tidy up in-kernel dependencies perf_counter tools: fix build warning in kerneltop.c perf_counter tools: increase cpu-cycles again x86, perfcounters: add atomic64_xchg() Merge branch 'linus' into perfcounters/core Merge branch 'linus' into tracing/hw-branch-tracing Merge branch 'linus' into tracing/core Merge branch 'tracing/urgent' into tracing/ftrace Merge commit 'v2.6.30-rc1' into perfcounters/core mm, x86, ptrace, bts: defer branch trace stopping, cleanup mm, x86, ptrace, bts: defer branch trace stopping, remove dead code x86 early quirks: eliminate unused function perf_counter: fix off task->comm by one perf_counter tools: include PID in perf-report output, tweak user/kernel printut Merge branch 'tracing/urgent' into tracing/core x86, irqinit: preempt merge conflicts Merge branch 'linus' into tracing/core Merge branch 'core/urgent' into core/rcu tracing: make the trace clocks available generally Merge branch 'linus' into x86/apic perf_counter: copy in Git's top Makefile perf_counter tools: add in basic glue from Git perf_counter tools: clean up after introduction of the Git command framework perf_counter tools: separate kerneltop into 'perf top' and 'perf stat' perf_counter tools: add help texts perf_counter tools: add 'perf record' command perf_counter tools: fix --version perf_counter tools: add 'perf help' perf_counter tools: fix 'make install' perfcounters, sched: remove __task_delta_exec() Merge branch 'linus' into x86/mm Merge commit 'v2.6.30-rc3' into tracing/hw-branch-tracing perf_counter tools: move helper library to util/* x86, vmlinux.lds: add copyright x86, vmlinux.lds: fix relocatable symbols Merge branch 'linus' into perfcounters/core perf_counter: add/update copyrights perf_counter tools: add perf-report to the Makefile perf_counter tools: perf stat: make -l default-on perf_counter tools: fix infinite loop in perf-report on zeroed event records perf_counter tools: fix x86 syscall numbers Merge branch 'x86/apic' into irq/numa x86, mm: fault.c, use printk_once() in is_errata93() perf_counter: round-robin per-CPU counters too perf_counter: initialize the per-cpu context earlier perf_counter: convert perf_resource_mutex to a spinlock perf_counter: fix fixed-purpose counter support on v2 Intel-PERFMON irq: change ->set_affinity() to return status, fix Merge branch 'core/locking' into perfcounters/core x86: clean up arch/x86/kernel/tsc_sync.c a bit Merge branch 'linus' into tracing/core Merge branch 'tracing/hw-branch-tracing' into tracing/core Merge branch 'x86/urgent' into x86/xen perf_counter tools: remove debug code from builtin-stat.c Merge commit 'v2.6.30-rc5' into x86/mm Merge commit 'v2.6.30-rc5' into x86/apic Merge commit 'v2.6.30-rc5' into sched/core Merge commit 'v2.6.30-rc5' into core/iommu Merge branch 'x86/apic' into irq/numa perf_counter: x86: Fix throttling perf_counter: x86: Disallow interval of 1 perf_counter: x86: Protect against infinite loops in intel_pmu_handle_irq() perf_counter: Remove ACPI quirk perf stat: handle Ctrl-C perf_counter: fix threaded task exit perf_counter, x86: fix zero irq_period counters Merge commit 'v2.6.30-rc6' into perfcounters/core Merge commit 'v2.6.30-rc6' into x86/mm perf_counter, x86: speed up the scheduling fast-path Merge commit 'v2.6.30-rc6' into tracing/core sched: properly define the sched_group::cpumask and sched_domain::span fields perf_counter: fix counter freeing logic perf_counter: fix counter inheritance race perf_counter: Fix context removal deadlock perf_counter: fix !PERF_COUNTERS build failure perf_counter tools: increase limits perf_counter: Increase mmap limit perf_counter tools: increase limits, fix perf_counter: Move child perfcounter init to after scheduler init perf stat: flip around ':k' and ':u' flags Revert "perf_counter, x86: speed up the scheduling fast-path" perf_counter: fix warning & lockup perf_counter, x86: Fix APIC NMI programming perf_counter, x86: Make NMI lockups more robust perf_counter: Initialize ->oncpu properly perf record: Straighten out argv types perf stat: Remove unused variable perf record: Convert to Git option parsing perf_counter tools: Librarize event string parsing perf stat: Convert to Git option parsing perf top: Convert to Git option parsing perf_counter tools: remove the standalone perf-report utility perf record: Convert to Git option parsing perf report: Add help/manpage perf report: add --dump-raw-trace option perf report: add counter for unknown events perf report: add more debugging perf report: Only load text symbols from kallsyms, fix perf_counter tools: Introduce stricter C code checking perf_counter tools: Rename output.perf to perf.data perf_counter tools: Add built-in pager support perf report: Remove include pref_counter: tools: report: Add header printout & prettify pref_counter: tools: report: Robustify in case of weird events perf_counter: Fix perf_counter_init_task() on !CONFIG_PERF_COUNTERS perf_counter tools: report: Add help text for --sort x86, mce: clean up mce_64.c x86, mce: clean up mce_32.c x86, mce: clean up p4.c x86, mce: clean up p5.c x86, mce: clean up p6.c x86, mce: clean up k7.c x86, mce: clean up winchip.c x86, mce: clean up non-fatal.c x86, mce: clean up therm_throt.c x86, mce: clean up mce_amd_64.c x86, mce: unify, prepare 64bit in mce.h x86, mce: unify, prepare codes x86, mce: unify, prepare for 32-bit v2 x86, mce: unify x86, mce: Rename sysfs variables x86, mce: print number of MCE banks perf_counter tools: Clean up builtin-stat.c's do_perfstat() perf_counter tools: Split display into reading and printing perf_counter tools: Also display time-normalized stat results perf_counter: Fix cpuctx->task_ctx races perf_counter: Robustify counter-free logic perf_counter tools: Print 'CPU utilization factor' in builtin-stat perf_counter tools: Fix 'make install' perf_counter tools: Generate per command manpages (and pdf/html, etc.) perf_counter tools: Fix unknown command help text Merge branch 'linus' into perfcounters/core perf_counter: Tidy up style details Merge branch 'linus' into irq/numa Merge branch 'x86/cpufeature' into irq/numa perf report: Clean up the default output perf report: Fix column width/alignment of dsos perf record: Add --append option perf record: Increase mmap buffering default perf report: Print more info instead of entries perf_counter tools: Make source code headers more coherent perf record: Print out the number of events captured perf report: Print -D to stdout perf report: Improve sort key recognition perf report: Handle vDSO symbols properly perf_counter tools: Clean up old kerneltop references perf record: Refine capture printout perf report: Display 100% correctly perf stat: Print out all arguments perf report: Add front-entry cache for lookups perf help: Fix bug when there's no perf-* command around perf_counter tools: Optimize harder perf_counter tools: Work around warnings in older GCCs perf_counter: Fix throttling lock-up perf report: Clean up event processing perf report: Split out event processing helpers perf report: Handle all known event types perf top: Reduce default filter threshold perf record/report: Fix PID/COMM handling Merge branch 'tracing/ftrace' into tracing/core perf_counter tools: Build with native optimization perf_counter tools: Print out symbol parsing errors only if --verbose perf report: Print out the total number of events perf_counter tools: Add color terminal output support perf_counter tools: Dont output in color on !tty perf report: Bail out if there are unrecognized options/arguments perf stat: Update help text perf record: Split out counter creation into a helper function perf record, top: Implement --freq perf report: Display user/kernel differentiator perf_counter tools: Clarify events/samples naming Merge branch 'tip/tracing/ftrace-4' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace perf_counter tools: Remove -march=native perf_counter tools: Sample and display frequency adjustment changes perf record: Set frequency correctly perf_counter: Separate out attr->type from attr->config perf_counter: Implement generalized cache event types perf_counter tools: Fix cache-event printout perf_counter tools: Uniform help printouts perf_counter tools: Tidy up manpage details perf_counter tools: Prepare for 'perf annotate' perf_counter tools: Add 'perf annotate' feature Merge branch 'linus' into perfcounters/core perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ perf_counter tools: Fix error condition in parse_aliases() perf annotate: Automatically pick up vmlinux in the local directory perf annotate: Fix command line help text Merge branch 'linus' into core/iommu Merge branch 'dma-debug/2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu Merge branch 'linus' into x86/cpu perf stat: Continue even on counter creation error perf top: Fall back to cpu-clock-tick hrtimer sampling if no cycle counter available perf record: Fall back to cpu-clock-ticks if no PMU perf_counter tools: Handle kernels with !CONFIG_PERF_COUNTER perf report: Print more expressive message in case of file open error perf stat: Print out instructins/cycle metric perf_counter: Clean up x86 boot messages perf_counter tools: Standardize color printing Merge branch 'amd-iommu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu Revert "x86, bts: reenable ptrace branch trace support" perf_counter tools: Clean up u64 usage perf_counter: Better align code perf_counter: Turn off by default Merge branch 'linus' into perfcounters/core Merge branch 'linus' into x86/mce3 perf stat: Reorganize output perf stat: Add feature to run and measure a command multiple times perf stat: Enable raw data to be printed [SCSI] cnic: fix error: implicit declaration of function â€__symbol_get’ perf report: Print out raw events in hexa perf record/report: Add call graph / call chain profiling perf_counter, x86: Fix call-chain walking perf_counter, x86: Fix kernel-space call-chains perf record: Fix fast task-exit race perf report: Add per system call overhead histogram perf report: Fix 32-bit printf format x86: mm: Read cr2 before prefetching the mmap_lock Merge branch 'amd-iommu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent Merge branch 'linus' into x86/urgent Merge branch 'linus' into perfcounters/core Merge branch 'x86/urgent' into x86/mce3 perf report: Tidy up the "--parent " and "--sort parent" call-chain features perf report: Add validation of call-chain entries perf report: Filter to parent set by default perf_counter, x86: Improve interactions with fast-gup Merge branch 'x86/mce3' into x86/urgent Merge branch 'tip/tracing/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent Merge branch 'tip/tracing/urgent-1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent Ivo Clarysse (2): MXC: mx21ads base support MXC: mx2_defconfig file Ivo van Doorn (15): rt2x00: Move Move pci_dev specific access to rt2x00pci rt2x00: Fix Sparse warning rt2x00: Move iv_len into tx descriptor data rt2x00: Add support for L2 padding during TX/RX rt2x00: Implement support for 802.11n rt2x00: Implement support for rt2800usb rt2x00: Add new USB ID for rt2800usb rt2x00: Synchronize initialization with rt2870 driver rt2x00: Simplify rt2x00_check_rev rt2x00: Fix chipset detection for rt73usb rt2x00: Add USB ID for rt2800usb rt2x00: Add new rt2800usb USB ID's for Sweex rt2x00: Remove usage of IEEE80211_CONF_CHANGE_BEACON_INTERVAL rt2x00: Add new rt2800usb USB ID's rt2x00: Remove last usage of beacon_int from ieee80211_config J. Bruce Fields (19): nfsd: eliminate ENCODE_HEAD macro nfsd4: delete obsolete xdr comments nfsd: support ext4 i_version nfsd: quiet compile warning nfsd4: setclientid_confirm callback-change fixes nfsd4: set shorter timeout nfsd4: set cb_client inside setup_callback_client nfsd4: create rpc callback client from server thread nfsd4: lookup up callback cred only once nfsd4: replace callback thread by asynchronous rpc nfsd4: rename callback struct to cb_conn nfsd4: eliminate struct nfs4_cb_recall nfsd4: remove unused dl_trunc nfsd4: track recall retries in nfs4_delegation nfsd4: make recall callback an asynchronous rpc Merge commit 'v2.6.30' into for-2.6.31 nfsd: track last inode only in use_wgather case nfsd: Pull write-gathering code out of nfsd_vfs_write nfsd: minor nfsd_vfs_write cleanup J. R. Okajima (2): remove unlock_kernel() left accidentally vfs: fix nd->root leak in do_filp_open() J.R. Mauro (1): Staging: rspiusb: make driver compile Jack Morgenstein (1): IB/mlx4: Add strong ordering to local inval and fast reg work requests Jack Steiner (26): x86, UV: Fix macros for multiple coherency domains gru: bug fixes for GRU exception handling gru: dump chiplet state gru: dynamic allocation of kernel contexts gru: change context load and unload gru: support cch_allocate for kernel threads gru: change resource assignment for kernel threads gru: support contexts with zero dsrs or cbrs gru: fix handling of mesq failures gru: check context state on reload gru: support instruction completion interrupts gru: support for asynchronous gru instructions gru: update gru kernel self tests gru: update to rev 0.9 of gru spec gru: fix cache coherency issues with instruction retry gru: add user request to explicitly unload a gru context gru: fix automatic retry of gru instruction failures gru: collect per-context user statistics gru: delete user request for fetching chiplet status gru: cleanup gru inline functions gru: generic infrastructure for context options gru: add user request to specify gru slice gru: fix potential use-after-free when purging GRU tlbs gru: fixes to grudump utility gru: remove references to the obsolete global status handle gru: copyright fixes Jack Stone (2): infiniband: Remove void casts i2c: Remove void casts James Bottomley (15): block: allow blk_rq_map_kern to append to requests Merge branch 'scsi-fixes' into merge-base block: fix oops with block tag queueing block: fix an oops on BLKPREP_KILL [SCSI] fix up scsi_eh_lock_door() [SCSI] sd: fix bug in SCSI async probing [SCSI] mpt fusion: fix up doc book comments [SCSI] Merge branch 'linus' [SCSI] don't attach ULD to Dell Universal Xport [SCSI] aic79xx: make driver respect nvram for IU and QAS settings enhance device info matching for multiple tables scsi_transport_spi: use spi target settings instead of inquiry data for DV scsi_transport_spi: Blacklist Ultrium-3 tape for IU transfers Revert "[SCSI] cnic: fix error: implicit declaration of function â€__symbol_get’" [SCSI] scsi_transport_fc: replace BUS_ID_SIZE by fixed count James Gardiner (1): ALSA: hda - Addition for HP dv4-1222nr laptop support James Morris (5): Merge branch 'master' into next Merge branch 'master' into next Merge branch 'master' into next Merge branch 'next' into for-linus nfs: remove unnecessary NFS_INO_INVALID_ACL checks James Smart (15): [SCSI] lpfc 8.3.2 : Reorganization for SLI4 [SCSI] lpfc 8.3.2 : Addition of SLI4 Interface - Base Support [SCSI] lpfc 8.3.2 : Addition of SLI4 Interface - Queues [SCSI] lpfc 8.3.2 : Addition of SLI4 Interface - Mailbox handling [SCSI] lpfc 8.3.2 : Addition of SLI4 Interface - FCOE Discovery support [SCSI] lpfc 8.3.2 : Update of copyrights [SCSI] lpfc 8.3.2 : Miscellaneous Changes [SCSI] lpfc 8.3.2 : Persistent Vport Support [SCSI] lpfc 8.3.2 : Update the lpfc driver version to 8.3.2 [SCSI] FC Pass Thru support [SCSI] lpfc 8.3.3 : Fix various SLI-3 vs SLI-4 differences [SCSI] lpfc 8.3.3 : FC/FCOE discovery fixes [SCSI] lpfc 8.3.3 : Fix a couple of spin_lock and memory issues and a crash [SCSI] lpfc 8.3.3 : Add support for Target Reset handler entrypoint [SCSI] lpfc 8.3.3 : Update driver version to 8.3.3 Jan Beulich (1): initconst adjustments Jan Blunck (3): powerpc/spufs: Remove double check for non-negative dentry KVM: Wake up waitqueue before calling get_cpu() atomic: only take lock when the counter drops to zero on UP as well Jan Ceuleers (1): V4L/DVB (11962): dvb: Fix broken link in get_dvb_firmware for nxt2004 (A180) Jan Engelhardt (12): netfilter: xtables: use NFPROTO_ for xt_proto_init callsites netfilter: queue: use NFPROTO_ for queue callsites netfilter: xtables: use NFPROTO_ in standard targets netfilter: xtables: remove redundant casts netfilter: xtables: fix const inconsistency netfilter: xtables: consolidate open-coded logic netfilter: xtables: reduce indent level by one netfilter: xtables: remove some goto netfilter: xtables: remove another level of indent netfilter: xtables: consolidate comefrom debug cast access netfilter: xtables: print hook name instead of mask netfilter: xt_quota: fix incomplete initialization Jan Glauber (8): [S390] qdio: simplify error handling in irq handler [S390] qdio: inline qdio_perf_stat_inc [S390] qdio: move adapter interrupt tasklet code [S390] qdio: fix check for running under z/VM [S390] qdio: extract all primed SBALs at once [S390] qdio: merge AI tasklet into interrupt handler [S390] qdio: leave inbound SBALs primed [S390] qdio: Sanitize do_QDIO sanity checks Jan Kara (22): ocfs2: Fix possible deadlock in ocfs2_global_read_dquot() ocfs2: Fix lock inversion in ocfs2_local_read_info() ocfs2: Fix possible deadlock with quotas in ocfs2_setattr() ocfs2: Fix possible deadlock in quota recovery ocfs2: Correct ordering of ip_alloc_sem and localloc locks for directories ext4: Get rid of EXTEND_DISKSIZE flag of ext4_get_blocks_handle() vfs: Fix sys_sync() and fsync_super() reliability (version 4) vfs: Call ->sync_fs() even if s_dirt is 0 (version 4) vfs: Make __fsync_super() a static function (version 4) vfs: Make sys_sync() use fsync_super() (version 4) vfs: Move syncing code from super.c to sync.c (version 4) vfs: Rename fsync_super() to sync_filesystem() (version 4) quota: Introduce writeout_quota_sb() (version 4) udf: Use device size when drive reported bogus number of written blocks ext2: Do not update mtime of a moved directory ext3: fix chain verification in ext3_get_blocks() ext3: make sure inode is deleted from orphan list after truncate isofs: let mode and dmode mount options override rock ridge mode setting isofs: fix setting of uid and gid to 0 isofs: cleanup mount option processing vfs: Set special lockdep map for dirs only if not set by fs ocfs2: Add lockdep annotations Jan Kasprzak (1): netfilter: nf_ct_icmp: keep the ICMP ct entries longer Jan Kiszka (2): KVM: MMU: Fix auditing code KVM: Drop request_nmi from stats Jan Nikitenko (1): V4L/DVB (11999): af9015: fix stack corruption bug Jani Monoses (1): V4L/DVB (11720): gspca - sonixj: Webcam 06f8:3008 added Jani Nikula (1): gitignore: Add GNU GLOBAL files to top .gitignore Jarek Poplawski (7): pkt_sched: gen_estimator: Fix signed integers right-shifts. pkt_sched: Use PSCHED_SHIFT in PSCHED time conversion pkt_sched: Change PSCHED_SHIFT from 10 to 6 ipv4: Fix fib_trie rebalancing pkt_sched: Rename PSCHED_US2NS and PSCHED_NS2US pkt_sched: Update drops stats in act_police ipv4: Fix fib_trie rebalancing, part 2 Jarkko Nikula (1): ARM: OMAP: Update contact address of I2C registration helper Jarod Wilson (11): crypto: testmgr - Handle AEAD test vectors expected to fail verification crypto: testmgr - Add self-tests for rfc4309(ccm(aes)) crypto: testmgr - Add infrastructure for ansi_cprng self-tests crypto: testmgr - Add ansi_cprng test vectors crypto: testmgr - Catch base cipher self-test failures in fips mode crypto: testmgr - Print self-test pass notices in fips mode crypto: testmgr - Add ctr(aes) test vectors crypto: testmgr - Mark algs allowed in fips mode crypto: testmgr - Skip algs not flagged fips_allowed in fips mode crypto: tcrypt - Do not exit on success in fips mode drm/i915: add ignore lvds quirk info for AOpen Mini PC Jaroslav Kysela (10): ALSA: au88x0: fix .pointer callback ALSA: au88x0: fix wrong period_elapsed() call ALSA: PCM midlevel: improve fifo_size handling ALSA: PCM midlevel: introduce mask for xrun_debug() macro ALSA: PCM midlevel: Do not update hw_ptr_jiffies when hw_ptr is not changed ALSA: PCM midlevel: lower jiffies check margin using runtime->delay value ALSA: hda-intel: improve initialization for ALC262_HP_BPC model ALSA: Core - add snd_card_set_id() function ALSA: Core - clean up snd_card_set_id* calls and remove possible id collision ALSA: pcm - Fix a typo in hw_ptr update check Jason Baron (3): kerneldoc, tracing: make kernel-doc understand TRACE_EVENT() macro (take #2) tracing: add new tracepoints docbook tracing: add irq tracepoint documentation Jason Wessel (6): USB: usb_debug, usb_generic_serial: implement multi urb write USB: serial: ftd_sio usb: move status check USB: serial: usb_debug,usb_generic_serial: implement sysrq and serial break USB: serial: ftd_sio: implement sysrq handling on break USB: pl2303 usb_serial: implement sysrq handling on break USB: usb_serial: only allow sysrq on a console port Jaswinder Singh (1): x86: perf_counter.c intel_perfmon_event_map and max_intel_perfmon_events should be static Jaswinder Singh Rajput (37): x86: perf_counter remove unwanted hw_perf_enable_all x86: irqinit_32.c fix compilation warning x86: prepare perf_counter to add more cpus x86: AMD Support for perf_counter x86: decent declarations in perf_counter.c x86: use pr_info in perf_counter.c x86: perf_counter cleanup x86: apic/x2apic_cluster.c x86_cpu_to_logical_apicid should be static x86: clean up declarations and variables x86: vdso/vma.c declare vdso_enabled and arch_setup_additional_pages before they get used x86: page_types.h unification of declarations x86: avoid multiple declaration of kstack_depth_to_print x86: k8 convert node_to_k8_nb_misc() from a macro to an inline function x86: cpufeature.h fix name for X86_FEATURE_MCE tracing: trace_output.c, fix false positive compiler warning x86: msr-index.h remove duplicate MSR C001_0015 declaration x86, mtrr: replace MTRRcap_MSR with msr-index's MSR_MTRRcap x86, mtrr: replace MTRRfix64K_00000_MSR with msr-index's MSR_MTRRfix64K_00000 x86, mtrr: replace MTRRfix16K_80000_MSR with msr-index's MSR_MTRRfix16K_80000 x86, mtrr: remove mtrr MSRs double declaration x86, mtrr: replace MTRRfix4K_C0000_MSR with msr-index's MSR_MTRRfix4K_C0000 x86, mtrr: replace MTRRdefType_MSR with msr-index's MSR_MTRRdefType x86: asm/processor.h: remove double declaration x86: cpu_debug: Remove model information to reduce encoding-decoding headers_check fix: m68k, swab.h powerpc, perf_counter: Fix performance counter event types PM/ACPI/x86: Fix sparse warning in arch/x86/kernel/acpi/sleep.c perf_counter, x86: Check old-AMD performance monitoring support perf_counter, x86: Update AMD hw caching related event table headers_check fix: mn10300, ptrace.h headers_check fix: mn10300, setup.h [IA64] msi_ia64.c dmar_msi_type should be static Documentation/accounting/getdelays.c intialize the variable before using it x86: apic/io_apic.c: dmar_msi_type should be static x86: msr.h linux/types.h is only required for __KERNEL__ Documentation/connector/cn_test.c comment unused cn_test_want_notify() scsi_transport_iscsi: return -EOVERFLOW for Too many iscsi targets Jay Fenlason (1): firewire: add IPv4 support Jean Delvare (41): sfc: Don't specify unexistent IRQ ALSA: keywest: Get rid of useless i2c_device_name() macro r8169: Use a different default for each family ALSA: Add missing __devexit_p() markers x86: Add quirk for reboot stalls on a Dell Optiplex 360 trivial: fix ETIMEOUT -> ETIMEDOUT typos i2c: Do not probe for TV chips on Voodoo3 adapters i2c: Do not give adapters a default parent therm_pm72: Convert to a new-style i2c driver windfarm: Convert to new-style i2c drivers therm_adt746x: Convert to a new-style i2c driver therm_windtunnel: Convert to a new-style i2c driver hwmon: Fix more __devexit_p glitches hwmon: (w83627ehf) Add W83627DHG-P support hwmon: PCI quirk for hwmon access on MSI MS-7031 board V4L/DVB (11564): tda7432: Delete old driver history V4L/DVB (11723): Link firmware to physical device V4L/DVB (11737): Drop stray references to i2c_probe V4L/DVB (11748): pvrusb2: Don't use the internal i2c client list V4L/DVB (11843): ir-kbd-i2c: Don't use i2c_client.name for our own needs V4L/DVB (11844): ir-kbd-i2c: Switch to the new-style device binding model V4L/DVB (11845): ir-kbd-i2c: Use initialization data V4L/DVB (11846): ir-kbd-i2c: Don't assume all IR receivers are supported V4L/DVB (11847): saa7134: Simplify handling of IR on MSI TV@nywhere Plus V4L/DVB (11848): saa7134: Simplify handling of IR on AVerMedia Cardbus E506R V4L/DVB (11849): ivtv: Probe more I2C addresses for IR devices V4L/DVB (11850): pvrusb2: Instantiate ir_video I2C device by default V4L/DVB (11992): Add missing __devexit_p() i2c: Kill client_register and client_unregister methods i2c: Get rid of the legacy binding model i2c: Drop i2c_probe function i2c: Merge i2c_attach_client into i2c_new_device i2c: Kill is_newstyle_driver i2c: Kill the redundant client list i2c: Limit core locking to the necessary sections i2c: Add a sysfs interface to instantiate devices i2c: Don't advertise i2c functions when not available Staging: sxg: Add missing __devexit_p() Staging: rtl8187se: Use to_delayed_work Staging: altpciechdma: Add missing __devexit_p() Staging: slicoss: Add missing __devexit_p() Jean-Christophe PLAGNIOL-VILLARD (1): sh: mach-r2d: add physmap-flash support for R2D+ boards. Jean-Francois Moine (20): V4L/DVB (11446): gspca - t613: Do sensor reset only for sensor om6802. V4L/DVB (11449): gspca - zc3xx: Bad probe of many webcams since adcm2700 addition. V4L/DVB (11708): gspca - main: Version change. V4L/DVB (11709): gspca - zc3xx: Bad debug level in i2c_read V4L/DVB (11710): gspca - main: Webcams cannot do both isoc and bulk image transfers. V4L/DVB (11711): gspca - main: Fix a crash when no bandwidth available V4L/DVB (11712): gspca - main: Set the current alternate setting only when needed V4L/DVB (11713): gspca - ov534: Don't discard the images when no UVC EOF V4L/DVB (11714): gspca - spca500 and sunplus: Change the 0x00 insertion mechanism. V4L/DVB (11715): gspca - main: Set the number of packets per ISOC message. V4L/DVB (11716): gspca - sonixj: Adjust some exchanges according to traces V4L/DVB (11717): gspca - sonixj: Webcams with bridge sn9c128 added V4L/DVB (11718): gspca - vc032x: Bad pixelformat for mi1320_soc V4L/DVB (11719): gspca - vc032x: mi1320_soc images are upside-down V4L/DVB (11867): gspca - spca508: Cleanup source and update copyright. V4L/DVB (11868): gspca - spca508: Optimize code. V4L/DVB (11869): gspca - ov534: JPEG 320x240 and 640x480 formats for ov965x. V4L/DVB (11969): gspca - spca505: Reinitialize the webcam at resume time. V4L/DVB (11971): gspca - doc: Add the 05a9:a518 webcam to the Documentation. V4L/DVB (11973): gspca - ov534: Do the ov772x work again. Jean-Mickael Guerin (1): sctp: fix sack_timeout sysctl min and max types Jeff Garzik (3): [SCSI] mvsas: move into new directory drivers/scsi/mvsas/ [SCSI] mvsas: split driver into multiple files [libata] ahci: use less error-prone array initializers Jeff Hansen (3): ath9k: Reset SC_OP_TSF_RESET flag after stuck beacon ath9k: Combine legacy and 11n rc statistics ath9k: Add "debug" file to debugfs Jeff Kirsher (1): igb: add RQDPC (Receive Queue Drop Packet Count) register macro Jeff Layton (10): cifs: fix artificial limit on reading symlinks cifs: tighten up default file_mode/dir_mode cifs: have cifs_NTtimeToUnix take a little-endian arg cifs: make cnvrtDosUnixTm take a little-endian args and an offset cifs: rename cifs_iget to cifs_root_iget cifs: make serverino the default when mounting cifs: fix IPv6 address length check cifs: make overriding of ownership conditional on new mount options cifs: add addr= mount option alias for ip= cifs: remove never-used in6_addr option Jeff Mahoney (2): reiserfs: allow exposing privroot w/ xattrs enabled reiserfs: fix warnings with gcc 4.4 Jeff Moyer (2): block: implement blkdev_readpages cfq: remove extraneous '\n' in blktrace output Jens Axboe (16): block: make blk_do_io_stat() do the full "is this rq accountable" checks block: include discard requests in IO accounting splice: fix misleading comment splice: fix repeated kmap()'s in default_file_splice_read() virtio_blk: get rid of unused variable block: add warning to blk_make_request() block: change the tag sync vs async restriction logic Merge branch 'master' into for-2.6.31 Merge branch 'master' into for-2.6.31 Revert "block: implement blkdev_readpages" Revert "block: Fix bounce limit setting in DM" [libata] get rid of ATA_MAX_QUEUE loop in ata_qc_complete_multiple() v2 ntfs: remove old debug check for dirty data in ntfs_put_super() block: don't overwrite bdi->state after bdi_init() has been run btrfs: properly register fs backing device ubifs: register backing_dev_info Jens Rottmann (1): parport_pc: after superio probing restore original register values Jeremy Fitzhardinge (38): mm: disable preemption in apply_to_pte_range x86/paravirt: remove lazy mode in interrupts x86/pvops: replace arch_enter_lazy_cpu_mode with arch_start_context_switch x86/paravirt: flush pending mmu updates on context switch x86/paravirt: finish change from lazy cpu to context switch start/end x86/paravirt: allow preemption with lazy mmu mode mm: allow preemption in apply_to_pte_range x86/paravirt: use percpu_ rather than __get_cpu_var xen: disable preempt for leave_lazy_mmu xen: separate p2m allocation from setting xen: split construction of p2m mfn tables from registration xen: clean up xen_load_gdt xen: make xen_load_gdt simpler xen: remove xen_load_gdt debug xen: mask XSAVE from cpuid x86-64: remove PGE from must-have feature list x86-64: non-paravirt systems always has PSE and PGE xen/mmu: some early pagetable cleanups xen/mmu: weaken flush_tlb_other test xen: set _PAGE_NX in __supported_pte_mask before pagetable construction xen: clean up gate trap/interrupt constants xen/dev-evtchn: clean up locking in evtchn xen/xenbus: export xenbus_dev_changed xen: add /sys/hypervisor support xen/sys/hypervisor: change writable_pt to features xen: add "capabilities" file Merge branches 'for-linus/xen/dev-evtchn', 'for-linus/xen/xenbus', 'for-linus/xen/xenfs' and 'for-linus/xen/sys-hypervisor' into for-linus/xen/master Merge branch 'for-linus/xen/core' into for-linus/xen/master Merge commit 'origin/master' into for-linus/xen/master lguest: update lazy mmu changes to match lguest's use of kvm hypercalls xen: add FIX_TEXT_POKE to fixmap tracing: avoid warnings from zero-arg tracepoints xen: reserve Xen start_info rather than e820 reserving xen/x86-64: fix breakpoints and hardware watchpoints xen/x86-64: clean up warnings about IST-using traps xen: cache cr0 value to avoid trap'n'emulate for read_cr0 x86: make _PAGE_HIDDEN conditional x86: unify pte_hidden Jeremy Huddleston (1): Input: appletouch - improve finger detection Jerome Glisse (5): drm: Split out the mm declarations in a separate header. Add atomic operations. drm: Export hash table functionality. drm: include kernel list header file in hashtab header drm/radeon: introduce kernel modesetting for radeon hardware drm/radeon: command stream checker for r3xx-r5xx hardware Jerry Chuang (1): Staging: add rtl8192SU wireless usb driver Jes Sorensen (10): KVM: ia64: Map in SN2 RTC registers to the VMM module KVM: ia64: Create inline function kvm_get_itc() to centralize ITC reading. KVM: ia64: SN2 adjust emulated ITC frequency to match RTC frequency KVM: ia64: Drop in SN2 replacement of fast path ITC emulation fault handler KVM: ia64: Don't hold slots_lock in guest mode KVM: ia64: remove empty function vti_vcpu_load() KVM: ia64: restore irq state before calling kvm_vcpu_init KVM: ia64: preserve int status through call to kvm_insert_vmm_mapping KVM: ia64: ia64 vcpu_reset() do not call kmalloc() with irqs disabled [IA64] Fix build error in paravirt_patchlist.c Jesper Dangaard Brouer (7): igb: Implement reading of reg RQDPC (Receive Queue Drop Packet Count) igb: Record host memory receive overflow in net_stats 8021q: Vlan driver should use rcu_barrier() on unload instead of syncronize_net() nfnetlink_queue: Use rcu_barrier() on module unload. can: af_can.c use rcu_barrier() on module unload. sctp: protocol.c call rcu_barrier() on unload. sunrpc/auth_gss: Call rcu_barrier() on module unload. Jesper Nilsson (4): CRISv32: Add arch optimized strcmp. CRISv32: Fix potential null reference in cryptocop driver. CRISv32: irq.c - Move end brace outside #endif MAINTAINERS: Change mailing list info for CRIS Jesse Barnes (4): drm/i915: apply G45 vblank count code to all G4x chips and fix max_frame_count drm/i915: avoid non-atomic sysrq execution drm/i915: enable MCHBAR if needed PCI: use ACPI _CRS data by default Jesse Brandeburg (12): ixgbe: fix link down initial state ixgb: fix link down initial state igb: fix link down inital state e1000e: indicate link down at load e1000: init link state correctly e1000/e1000e/igb/ixgb: do not use netif_wake_queue un-necessarily sctp: add feature bit for SCTP offload in hardware igb: Enable SCTP checksum offloading ixgbe: enable hardware offload for sctp e1000/e1000e/igb/ixgb: don't txhang after link down ixgbe: Cleanup feature setup code to make the code more readable ixgbe: Re-adjust ring layouts to have better cacheline efficiency Jianjun Kong (1): rtl8139: unify the struct's name Jie Yang (1): atl1c: disable L1/L0s when link detected Jie Zhang (2): Blackfin: rename bfin_addr_dcachable to bfin_addr_dcacheable Blackfin: decouple unrelated cache settings to get exact behavior Jim Paris (1): ps3vram: Correct exchanged gotos in ps3vram_probe() error path Jiri Kosina (5): HID: fix hid-ff drivers so that devices work even without ff support HID: hidraw -- fix comment about accepted devices HID: no more reinitializtion is needed in post_reset HID: fix inverted wheel for bluetooth version of apple mighty mouse Merge branches 'upstream' and 'ntrig-multitouch' into for-linus Jiri Pirko (17): rculist.h: introduce list_entry_rcu() and list_first_entry_rcu() rculist: use list_entry_rcu in places where it's appropriate bonding: use ethtool for link checking first bonding: ignore updelay param when there is no active slave ne2k-pci: use dev->addr_len instead of "6" net: introduce a list of device addresses dev_addr_list (v6) bonding: get rid of CONFIG_PROC_FS ifdefs net: check retval of dev_addr_init() net: remove needless (now buggy) & from dev->dev_addr net: remove needless (now buggy) & from dev->dev_addr (part2) bridge: avoid an extra space in br_fdb_update() net: correct a comment for the final #endif bonding: allow bond in mode balance-alb to work properly in bridge -try4.3 bonding: use bond_is_lb() when it's appropriate net: convert unicast addr list net: group address list and its count spi: fix spi_write_then_read() comment Jiri Slaby (39): x86_32: introduce restore_fpu_checking() x86: unify restore_fpu_checking x86_64: fix incorrect comments ath5k: 5211, don't crypt every protected frame ath5k: Enable AP mode x86, apic: Restore irqs on fail paths amd_iommu: fix lock imbalance kbuild: allow docproc invocation from external tty:cyclades, load firmware even on Ze tty: cyclades, don't kill FW tty: cyclades, remove spurious check in ISR tty: cyclades, plx9060 casts cleanup tty: cyclades, cache HW version tty: cyclades, convert macros to inlines tty: cyclades, remove typedefs tty: cyclades, fix nports handling tty: cyclades, remove unused variables serial: refactor ASYNC_ flags rocket: fix test_bit parameters epca: fix test_bit parameters tty: remove sleep_on tty: use prepare/finish_wait Char: isicom: fix build warning ath5k: fix beacon_int handling staging: comedi, remove interrupt.h staging: agnx, probe cleanup staging: agnx, remove memlens from probe staging: agnx, fix fail paths in probe staging: agnx, fix bssid compiler warnings staging: meilhaus, switch to misc device staging: meilhaus, annotate cpi functions staging: meilhaus, move tables to .c dma-mapping: mark DMA_nBITS_MASK as deprecated Net: qla3xxx, remove sleeping in atomic fusion: mptsas, fix lock imbalance n_r3964: fix lock imbalance pcmcia/cm4000: fix lock imbalance vt_ioctl: fix lock imbalance tty: fix tty_port_block_til_ready waiting Joachim Fenkes (1): IB/ehca: Remove superfluous bitmasks from QP control block Joakim Tjernlund (2): ucc_geth: Move freeing of TX packets to NAPI context rtc: rtc-ds1307 add ds1388 Joao Ramos (2): ide: try to use PIO Mode 0 during probe if possible ide: do not access ide_drive_t 'drive_data' field directly Joe Carnuccio (1): [SCSI] qla2xxx: Perform an implicit login to the Management Server. Joe Eykholt (3): [SCSI] libfcoe: fip: fix non-FIP-mode FLOGI state after reset. [SCSI] net, libfcoe: Add the FCoE Initialization Protocol ethertype fix race that can give duplicate host number Joe Perches (33): drivers/net: Convert #ifdef DEBUG printk(KERN_DEBUG to pr_debug( atl1c_main.c: add wait_for_idle routine arch/m68knommu: Convert #ifdef DEBUG printk(KERN_DEBUG to pr_debug( x_tables: Convert printk to pr_err MAINTAINERS: update 8250 section, give Alan Cox a name scripts/get_maintainer.pl: output first field only in mailing lists and after maintainers. scripts/get_maintainer.pl: better fix for subscriber-only mailing lists scripts/get_maintainer.pl: improve --git-chief-penquins (Linus Torvalds) filtering scripts/get_maintainer.pl: warn on missing git or git repository scripts/get_maintainer.pl: support M: lines with names and multiple entries per M: line scripts/get_maintainer.pl: better email name quoting scripts/get_maintainer.pl: support both "P:/M:" and integrated "M:" lines scripts/get_maintainer.pl: don't print maintainers when not requested scripts/get_maintainer.pl: allow 8 bit characters in email addresses scripts/get_maintainer.pl: change "die" to "warn" when command line file is not a patch MAINTAINERS: swap mismarked ECRYPT FS M: and P: entries MAINTAINERS: add file patterns to "THE REST" MAINTAINERS: update M32R file patterns after rename MAINTAINERS: mark ALSA lists as moderated MAINTAINERS: remove L: linux-kernel@vger.kernel.org from all but "THE REST" MAINTAINERS: mention scripts/get_maintainer.pl in the preface MAINTAINERS: add file pattern to CISCO FCOE HBA DRIVER MAINTAINERS: add Paul McKenney to RCU and RCUTORTURE MAINTAINERS: add file patterns to TTY LAYER MAINTAINERS: Fix Atheros pattern paths bootmem.c: avoid c90 declaration warning MAINTAINERS: pair names/addresses in EDAC-I82975X MAINTAINERS: fix Atheros pattern paths MAINTAINERS: update Ftrace documentation pattern MAINTAINERS: update wireless.h path MAINTAINERS: ieee802154 fix pattern typo MAINTAINERS: kmemtrace pattern update kmemleak: use pr_fmt Joel Becker (2): ocfs2: Add statistics for the checksum and ecc operations. ocfs2: Provide the ocfs2_dlm_lvb_valid() stack API. Joerg Roedel (53): dma-debug: re-add dma memory leak detection amd-iommu: add amd_iommu_dump parameter amd-iommu: add dump for iommus described in ivrs table amd-iommu: print ivhd information to dmesg when requested amd-iommu: print ivmd information to dmesg when requested amd-iommu: move protection domain printk to dump code x86/iommu: add IOMMU_STRESS Kconfig entry amd-iommu: disable device isolation with CONFIG_IOMMU_STRESS amd-iommu: make sure only ivmd entries are parsed amd-iommu: introduce for_each_iommu* macros amd-iommu: consolidate hardware initialization to one function amd-iommu: drop pointless iommu-loop in msi setup code amd-iommu: remove support for msi-x amd-iommu: add function to disable all iommus amd-iommu: add function to flush tlb for all domains amd-iommu: add function to flush tlb for all devices amd_iommu: un __init functions required for suspend/resume amd-iommu: implement suspend/resume amd-iommu: introduce aperture_range structure amd-iommu: move page table allocation code to seperate function amd-iommu: handle page table allocation failures in dma_ops code amd-iommu: make address allocator aware of multiple aperture ranges amd-iommu: change dma_dom->next_bit to dma_dom->next_address amd-iommu: move aperture_range allocation code to seperate function amd-iommu: handle exlusion ranges and unity mappings in alloc_new_range amd-iommu: enlarge the aperture dynamically amd-iommu: remove amd_iommu_size kernel parameter amd-iommu: disable round-robin allocator for CONFIG_IOMMU_STRESS amd-iommu: don't preallocate page tables with CONFIG_IOMMU_STRESS amd-iommu: don't free dma adresses below 512MB with CONFIG_IOMMU_STRESS Merge branches 'amd-iommu/fixes', 'amd-iommu/debug', 'amd-iommu/suspend-resume' and 'amd-iommu/extended-allocator' into amd-iommu/2.6.31 dma-debug: add variables and checks for driver filter dma-debug: add debugfs file for driver filter dma-debug: add dma_debug_driver kernel command line dma-debug: add documentation for the driver filter Merge branches 'dma-debug/fixes' and 'dma-debug/driver-filter' into dma-debug/2.6.31 dma-debug: change hash_bucket_find from first-fit to best-fit dma-debug: comment style fixes dma-debug: code style fixes dma-debug: use pr_* instead of printk(KERN_* ...) dma-debug: disable/enable irqs only once in device_dma_allocations dma-debug: simplify logic in driver_filter() Merge commit 'tip/core/iommu' into amd-iommu/fixes amd-iommu: remove BUS_NOTIFY_BOUND_DRIVER handling amd-iommu: detach device explicitly before attaching it to a new domain amd-iommu: remove unnecessary "AMD IOMMU: " prefix KVM: MMU: remove call to kvm_mmu_pte_write from walk_addr dma-debug: check for sg_call_ents in best-fit algorithm too dma-debug: be more careful when building reference entries amd-iommu: disable IOMMU hardware on shutdown x86: disable IOMMUs on kernel crash amd-iommu: set event buffer head and tail to 0 manually driver core: add BUS_NOTIFY_UNBOUND_DRIVER event Johann Baudy (1): net: TX_RING and packet mmap Johannes Berg (122): nl80211: validate some input better rfkill: remove deprecated state constants rfkill: remove user_claim stuff rfkill-input: remove unused code mac80211: move ieee80211_enable_ht function to mlme.c cfg80211: introduce scan IE limit attribute mac80211: pass all probe request IEs to driver mac80211: include HT capabilities in probe request cfg80211: add cipher capabilities mac80211: re-upload keys only after telling driver about association mac80211: update injection documentation cfg80211: convert mutex assert to macro mac80211: add hardware restart function mac80211: improve powersave implementation mac80211: disable powersave if pm_qos asks for low latency mac80211: implement beacon filtering in software mac80211: enable PS by default mac80211: document powersaving/beacon filter future nl80211: send wiphy along with netdev cfg80211/mac80211: move wext SIWMLME into cfg80211 cfg80211/nl80211: add IBSS API mac80211: convert to cfg80211 IBSS API cfg80211: clean up includes rndis_wlan: remove nickname support ar9170: support HT receive and channel config cfg80211: clear WEXT SSID when clearing IBSS cfg80211: mark all WEXT handlers _GPL mac80211: validate TIM IE length (redux) iwlwifi: rename PROBE_OPTION_MAX_API1 to PROBE_OPTION_MAX_3945 iwlwifi: improve scan support iwlwifi: support truly passive scanning mac80211: fix IBSS code to not sleep while atomic rndis_wlan: make some symbols static mac80211: fix variable truncation on 32-bit mac80211: remove IEEE80211_CONF_CHANGE_DYNPS_TIMEOUT nl80211: allow configuring IBSS beacon interval mac80211: calculate maximum sleep interval mac80211: fix various problems in ibss code mac80211: fix PS vs. scan race mac80211: rename max_sleep_interval to max_sleep_period mac80211: internally clear failed scans properly mac80211: fix scan races and rework scanning mac80211: clean up beacon interval settings mac80211: unify config_interface and bss_info_changed mac80211: add driver ops wrappers mac80211_hwsim: fix bogus warning mac80211: fix probe response processing mac80211: tell driver when idle mac80211: report operating frequency rather than current mac80211: fix scan channel race mac80211: set default QoS values according to spec cfg80211: fix wext iw_freq parsing iwlwifi: make iwl_set_rate static mac80211: improve scan timing mac80211: move HT operation mode BSS info mac80211: properly track HT operation_mode mac80211: remove ieee80211_ht_bss_info iwlwifi: do proper hw restart iwlwifi: fix PS disable status race iwlwifi: clean up PS code cfg80211: constify key mac address in ops cfg80211: put wext data into substructure cfg80211: disallow interfering with stations on non-AP wext: fix get_wireless_stats locking cfg80211: implement wext key handling nl80211: improve station flags handling wext: remove seq_start/stop sparse annotations mac80211: respond to beacon loss report only once mac80211: split out and decrease probe wait time mac80211: don't connect to IBSS network with different privacy mac80211: IBSS supported rate fixes mac80211: make noack test available mac80211: move channel switch code mac80211: cancel/restart all timers across suspend/resume b43/legacy: fix beacon change processing cfg80211: allow wext to remove keys that don't exist mac80211: fix kernel-doc mac80211: don't try to do anything on unchanged genIE mac80211: fix parameter confusion when finding IBSS mac80211: fix managed mode BSSID handling wext: remove atomic requirement for wireless stats mac80211: fix probe response wait timing mac80211: correct probe wait time mac80211: deprecate conf.beacon_int properly cfg80211: validate AID of stations being added nl80211: bounce scan request back to userspace cfg80211: use key size constants mac80211: fix transposed min/max CW values cfg80211: disallow interfering with stations on non-AP (part 2) net: introduce pre-up netdev notifier mac80211_hwsim: remove deprecated radio_enabled rfkill: rewrite rfkill: create useful userspace interface cfg80211: move txpower wext from mac80211 rfkill: add function to query state cfg80211: add rfkill support iwm: port to new cfg80211 rfkill rfkill: always init poll delayed work rfkill: document /dev/rfkill cfg80211: fix Kconfig for users of cfg80211 wimax: depend on rfkill properly rfkill: include err.h iwlwifi: port to cfg80211 rfkill ar9170: interpret firmware debug commands rfkill: print events when input handler is disabled/enabled b43/legacy: port to cfg80211 rfkill rfkill: remove input Kconfig sony: fix rfkill code mac80211: do not pass PS frames out of mac80211 again mac80211: don't use master netdev name mac80211: clean up return value of __ieee80211_parse_tx_radiotap mac80211: disable PS while probing AP cfg80211: fix rfkill locking problem sony: fix rfkill code again iwlwifi: revamp bss_info_changed ath9k: port to cfg80211 rfkill mac80211: add queue debugfs file mac80211: disconnect when user changes channel rfkill: improve docs dell-laptop: fix rfkill conversion mac80211: fix wext bssid/ssid setting cfg80211: validate station settings Johannes Klug (1): V4L/DVB (11645): gspca - m5602-ov9650: Add image flip quirk for the ASUS A6VA Johannes Weiner (7): wait: don't use __wake_up_common() crypto: api - Use kzfree mm: introduce follow_pte() mm: use generic follow_pte() in follow_phys() mm: introduce follow_pfn() mm: page_alloc: clear PG_locked before checking flags on free ipc: unbreak 32-bit shmctl/semctl/msgctl John Dykstra (5): pcnet32: Remove redundant set of skb->dev pcnet32: Remove pointless memory barriers Network Drop Monitor: Fix skb_kill_datagram tcp: tcp_prequeue() can use keyed wakeups net core: Some interface flags not returned by SIOCGIFFLAGS John Linn (1): fbdev: Add PLB support and cleanup DCR in xilinxfb driver. John Stoffel (1): sym53c8xx: ratelimit parity errors John W. Linville (9): rndis_wlan: initiate cfg80211 conversion rndis_wlan: convert get/set mode to cfg80211 libertas: fix warning about %zd: rndis_wlan: select CFG80211 in Kconfig libertas: fix format warning wireless: remove some (bogus?) 'may be used uninitialized' warnings p54: correct merge damage from "p54: more SoftLED updates" ath5k: avoid leaking mutex in ath5k_config firmware: wireless/libertas: prepare for FIRMWARE_NAME_MAX removal John Williams (1): microblaze: Don't use access_ok for unaligned Jon Hunter (1): timers: allow deferrable timers for intervals tv2-tv5 to be deferred Jon Smirl (10): ASoC: Add SNDRV_PCM_FMTBIT_S32_BE as a valid AC97 format ASoC: Codec for STAC9766 used on the Efika ASoC: Basic split of mpc5200 DMA code out of mpc5200_psc_i2s ASoC: Rename the PSC functions to DMA ASoC: Add a few more mpc5200 PSC defines ASoC: Main rewite of the mpc5200 audio DMA code ASoC: AC97 driver for mpc5200 ASoC: Support for AC97 on Phytec pmc030 base board. ASoC: Fabric bindings for STAC9766 on the Efika ASoC: Modify mpc5200 AC97 driver to use V9 of spin_event_timeout() Jonas Larsson (2): atmel-mci: Add support for inverted detect pin avr32: Solves problem with inverted MCI detect pin on Merisc board Jonas Sjöquist (1): cdc_ether: additional PID's to the whitelist Jonathan Brassow (1): dm exception store: fix exstore lookup to be case insensitive Jonathan Cameron (7): ASoC WM8940 Driver ASoC: IMote2 ASoC Support [ARM] pxa: Stargate 2 board support [ARM] pxa/stargate2: Add board specific elements to the smc91x driver [ARM] pxa/stargate2: add support for Compact Flash/PCMCIA [ARM] pxa/imote2: add board config for SHT15 humidity sensor [ARM] pxa/imote2: add i2c board info for the wm8940 audio codec Jonathan Corbet (4): Document Reported-by in SubmittingPatches docs: Encourage better changelogs in the development process document Document the debugfs API debugfs: fix docbook error Jonthan Brassow (2): dm table: improve warning message when devices not freed before destruction dm raid1: add userspace log Joonyoung Shim (5): ASoC: TWL4030: Add support Voice DAI ASoC: OMAP: Add checking to detect bufferless pcms ASoC: TWL4030: Add VDL path support ASoC: TWL4030: change DAPM for analog microphone selection [ARM] Add old Feroceon support to compressed/head.S Jorg Schummer (1): mmc: mmc_rescan detects card change in one run Jose Luis Perez Diez (1): Documentation/Changes: perl is needed to build the kernel Joseba Goitia Gandiaga (1): V4L/DVB (11488): get_dvb_firmware: trivial url change Josh Boyer (3): powerpc/4xx: Disable PCI_LEGACY powerpc/40x: Convert AMCC Makalu board to ppc40x_simple powerpc/40x: Convert AMCC Kilauea/Halekala boards to ppc40x_simple Josua Dietze (1): USB: usb-storage: add filter to "option_ms" to leave unrecognized devices alone Jouni Hogander (2): OMAP: Add new function to check wether there is irq pending OMAP: UART: Add sysfs interface for adjusting UART sleep timeout Jouni Malinen (37): nl80211: Require auth type for NL80211_CMD_AUTHENTICATE nl80211: Generate deauth/disassoc event for locally generated frames nl80211: Add Michael MIC failure event mac80211: Report rejected association to user space SME mac80211: Allow scan to be requested in AP mode nl80211: Add set/get for frag/rts threshold and retry limits nl80211: Add event for authentication/association timeout nl80211: Send timeout event on failed direct probe mac80211: Use a shared function to release frames from RX reorder buf mac80211: Add a timeout for frames in the RX reorder buffer mac80211: Comment the order of HT RX reorder handler vs. RX handlers mac80211: Update SA Query transaction id length nl80211 : Add support for configuring MFP mac80211: Drop unencrypted frames based on key setup mac80211: MFP - Drop unprotected Action frames prior key setup mac80211: Robust Action frame categories for MFP nl80211: Validate MFP flag type when parsing STA flags nl80211: Add IEEE 802.1X PAE control for station mode nl80211: Add RSC configuration for new keys mac80211: Cancel pending probereq poll on beacon RX ath9k: Fix a check for multicast address for virtual wiphy ath9k: Clean up RX processing a bit ath9k: Fix PS mode operation to receive buffered broadcast/multicast frames nl80211: Validate NL80211_ATTR_KEY_SEQ length ath9k: Wake up for TX in mac80211 timeout=0 sleep mode ath9k: Do not try to calibrate radio when in sleep mode ath9k: Use TSFOOR interrupt to trigger TSF sync with next Beacon ath9k: Wake up for RX filter changes ath9k: Set PM field in frame control when in PS mode mac80211: PS processing for every Beacon with our AID in TIM mac80211: Do not override AID in the duration field ath9k: Optimize TBTT/DTIM calculation for timers ath9k: Update Beacon timers based on timestamp from the AP ath9k: Add sanity check for beacon_int in adhoc/mesh case mac80211: Do not try to associate with an empty SSID ath9k: Fix PCI FATAL interrupts by restoring RETRY_TIMEOUT disabling ath5k: avoid PCI FATAL interrupts by restoring RETRY_TIMEOUT disabling Jozsef Kadlecsik (1): netfilter: nf_ct_tcp: TCP simultaneous open support Juha Yrjola (1): ARM: OMAP2/3: Add generic onenand support when connected to GPMC Julia Lawall (5): sound: use dev_set_drvdata drivers/net: use dev_get_drvdata Staging: wlan-ng: p80211wext.c: problem with IW_ENCODE_ALG_WEP Staging: cpc-usb: Adjust NULL test Staging: rtl8192su: Correct use of ! and & Julian Calaby (1): mb862xxfb: restrict compliation of platform driver to PPC Jussi Kivilinna (14): cfg80211: add cfg80211_inform_bss rndis_wlan: change quality level scale rndis_wlan: convert get range to cfg80211 rndis_wlan: convert scan to cfg80211 rndis_wlan: fix initialization order for workqueue&workers rndis_wlan: free priv correctly when rndis_wext_bind fails HID: force feedback support for SmartJoy PLUS PS2/USB adapter rndis_wlan: fix support for bcm4320a rndis_wlan: remove CAP_SUPPORT_TXPOWER/OID_802_11_TX_POWER_LEVEL code rndis_wlan: explain bits used in key setup code. rndis_wlan: split add_wpa_key from rndis_iw_set_encode_ext rndis_wlan: do not try to restore wpa keys using add_wep_key() rndis_wlan: cleanup: capitalize enum labels rndis_wlan: cleanup: rename all rndis_wext* objects to rndis_wlan* Justin Chen (1): FRV: bitops: Change the bitmap index from int to unsigned long JĂĽrgen Schindele (1): [ARM] pxa: add additional mfp definitions for pxa320 KAMEZAWA Hiroyuki (9): memcg: fix page_cgroup fatal error in FLATMEM mm: add swap cache interface for swap reference mm: modify swap_map and add SWAP_HAS_CACHE flag mm: reuse unused swap entry if necessary mm: fix lumpy reclaim lru handling at isolate_lru_pages memcg: fix swap accounting memcg: fix behavior under memory.limit equals to memsw.limit memcg: fix lru rotation in isolate_pages mm: fix incorrect page removal from LRU KOSAKI Motohiro (3): vmscan: low order lumpy reclaim also should use PAGEOUT_IO_SYNC page allocator: move free_page_mlock() to page_alloc.c mm: remove CONFIG_UNEVICTABLE_LRU config option Kacper Szczesniak (2): ALSA: hda - Add support for MacBook 5.1 (Aluminium) ALSA: hda - Macbook[Pro] 5 6ch support Kai Makisara (1): [SCSI] st: fix gcc 4.4 warning KaiGai Kohei (1): Permissive domain in userspace object manager Kalle Valo (1): wl12xx: add driver Karen Xie (2): cxgb3i: use kref to track ddp usage cxgb3i: suppot of different kernel page sizes Karl Beldan (5): ASoC: pxa2xx-i2s: Proper initialization ASoC: pxa2xx-i2s: Proper hw initialization ASoC: pxa2xx-i2s: Handle SACR1_DRPL and SACR1_DREC separately ASoC: pxa2xx-i2s: Fix inappropriate release of i2s clock ASoC: pxa2xx-i2s: Fix suspend/resume Karl Relton (2): Staging: wlan-ng: Move firmware loading into driver Staging: wlan-ng: Change KERN_DEBUG or pr_debug to match orig driver Karsten Keil (7): mISDN: Fix skb leak in error cases mISDN: Add XHFC support for embedded Speech-Design board to hfcmulti mISDN: Cleanup debug messages ISDN:Fix DMA alloc for hfcpci mISDN: Fix overlapping data access mISDN: Do not disable IRQ in ph_data_ind() mISDN: cleanup mISDNhw.h Kashyap, Desai (16): [SCSI] mpt fusion: Fixing 1078 data corruption issue for 36GB memory region [SCSI] mpt fusion: Added support for MPT discovery completion check [SCSI] mpt fusion: Optimized SendEvent notification Using Doorbell instead FIFO [SCSI] mpt fusion: config path optimized, completion queue is used [SCSI] mpt fusion: rewrite of all internal generated functions [SCSI] mpt fusion: rewrite taskmgmt request and completion routines [SCSI] mpt fusion: Adding DeviceResetCtx for internal Device reset frame [SCSI] mpt fusion: rewrite of ioctl_cmds internal generated function [SCSI] mpt fusion: Firmware event implementation using seperate WorkQueue [SCSI] mpt fusion: SAS topology scan changes, expander events [SCSI] mpt fusion: Rescan SAS topology added [SCSI] mpt fusion: Code Cleanup patch [SCSI] mpt fusion: Put IOC into ready state if it not already in ready state [SCSI] mpt fusion: RAID device handling and Dual port Raid support is added [SCSI] mpt fusion: Queue full event handling [SCSI] mpt fusion: Added support for Broadcast primitives Event handling Kay Sievers (17): ALSA: use card device as parent for jack input-devices driver core: set default SYSFS_DEPRECATED=n sched: delayed cleanup of user_struct Driver Core: add nodename callbacks Driver Core: misc: add nodename support for misc devices. Driver Core: usb: add nodename support for usb drivers. Driver Core: block: add nodename support for block drivers. Driver Core: x86: add nodename for cpuid and msr drivers. Driver Core: dvb: add nodename for dvb drivers Driver Core: input: add nodename for input drivers Driver Core: sound: add nodename for sound drivers Driver Core: raw: add nodename for raw devices Driver Core: drm: add nodename for drm devices Driver Core: aoe: add nodename for aoe devices Driver Core: bsg: add nodename for bsg driver usb: convert endpoint devices to bus-less childs of the usb interface V4L/DVB (11517): v4l: remove driver-core BUS_ID_SIZE Kees Cook (1): modules: sysctl to block module loading Keika Kobayashi (2): softirq: introduce statistics for softirq proc: export statistics for softirq to /proc Keith Packard (4): drm/i915: Don't trim cursor addresses to 11 bits drm/i915: Add Display Port register defines drm/i915: Hook connector to encoder during load detection (fixes tv/vga detect) drm: Eliminate magic I2C frobbing when reading EDID Ken Kawasaki (1): 3c589_cs: add cis(firmware) of 3Com multifunction pcmcia card Kenji Kaneshige (25): PCI: use pci_is_root_bus() in acpi_pci_get_bridge_handle() PCI: use pci_is_root_bus() in acpi_find_root_bridge_handle() PCI: use pci_is_root_bus() in pci_find_upstream_pcie_bridge() PCI: use pci_is_root_bus() in pci_read_bridge_bases() PCI: use pci_is_root_bus() in pci_get_interrupt_pin() PCI: use pci_is_root_bus() in pci_common_swizzle() PCI: Remove untested Electromechanical Interlock (EMI) support in pciehp. PCI hotplug: fix return value of has_foo() functions PCI hotplug: create symlink to hotplug driver module PCI hotplug: remove redundant .owner initializations PCI: remove invalid comment of msi_mask_irq() PCI ASPM: fix typo in struct pcie_link_state PCI ASPM: cleanup aspm state field in struct pcie_link_state PCI ASPM: cleanup latency field in struct pcie_link_state PCI ASPM: cleanup clkpm state in struct pcie_link_state PCI ASPM: cleanup misc in struct pcie_link_state PCI ASPM: cleanup change input argument of aspm functions PCI ASPM: cleanup initialization PCI ASPM: cleanup __pcie_aspm_check_state_one PCI ASPM: cleanup clkpm checks PCI ASPM: cleanup pcie_aspm_get_cap_device PCI ASPM: cleanup calc_Lx_latency PCI ASPM: remove has_switch field PCI ASPM: cleanup pcie_aspm_sanity_check PCI ASPM: remove get_root_port_link Kevin Cernekee (9): Documentation: add MTD sysfs docs mtd: add MEMERASE64 ioctl for >4GiB devices mtd: compat_ioctl cleanup mtd: add OOB ioctls for >4GiB devices mtd: Handle compat ioctls directly; remove all trace from compat_ioctl.c UBI: add reboot notifier MIPS: Add size and direction arguments to plat_unmap_dma_mem() MIPS: Pass struct device to plat_dma_addr_to_phys() MIPS: Support 64-byte D-cache line size Kevin Hao (2): net/ucc_geth: allow to set mac address on running device powerpc/85xx: Add nor flash partitions for mpc8569mds Kevin Hilman (22): davinci: fixups for banked GPIO interrupt handling davinci: add platform support for watchdog timer davinci: DM355: add base SoC and board support davinci: DM646x: add base SoC and board support davinci: update davinci_all_defconfig for dm355, dm6467 davinci: MMC platform support davinci: EMAC platform support Revert "ARM: OMAP: Mask interrupts when disabling interrupts, v2" OMAP2/3: PM: push core PM code from linux-omap OMAP3: PM: Force IVA2 into idle during bootup OMAP3: PM: Add wake-up bit defintiions for CONTROL_PADCONF_X OMAP3: PM: UART: disable clocks when idle and off-mode support OMAP3: PM: Add D2D clocks and auto-idle setup to PRCM init OMAP3: PM: D2D clockdomain supports SW supervised transitions OMAP3: PM: Ensure PRCM interrupts are cleared at boot OMAP3: PM: Clear pending PRCM reset flags on init OMAP3: PM: prevent module wakeups from waking IVA2 OMAP1: PM: update and decouple from OMAP2/3 PM core davinci: cleanup: move dm355 UART2 define to dm355.c davinci: defconfig update: add EMAC [ARM] 5529/1: davinci: MMC platform support: DMA_32BIT_MASK --> DMA_BIT_MASK(32) serial@ add OMAP wakeup-enable register Kevin Huang (1): Staging: add pata_rdc driver Kieran Bingham (2): sh: Add in some ptrace definitions from GDB. sh: Fix UBC setup and registers for SH2A Kim Phillips (3): crypto: talitos - Whitespace/codingstyle/overrun lines cleanup crypto: talitos - containerof related codingstyle crypto: talitos - Avoid unnecessary decrypt check Kir Kolyshkin (1): USB: cdc-acm: quirk for Alcatel OT-I650 Kiyoshi Ueda (11): block: fix no diskstat problem block: fix a possible oops on elv_abort_queue() block: add request clone interface (v2) dm mpath: add start_io and nr_bytes to path selectors dm mpath: add queue length load balancer dm mpath: add service time load balancer dm: prepare for request based option dm: enable request based option dm: do not set QUEUE_ORDERED_DRAIN if request based dm: disable interrupt when taking map_lock dm mpath: change to be request based Klaus-Dieter Wacket (2): qeth: Clear SBALF15 in any case for output buffers. [S390] pm: lcs driver power management callbacks Kleber S. Souza (2): [SCSI] ipr: ipr_remove() marked __devexit [SCSI] ipr: fix PCI permanent error handler Kristian Høgsberg (1): drm_calloc_large: check right size, check integer overflow, use GFP_ZERO Kristoffer Ericson (1): fbdev: s1d13xxxfb: add accelerated bitblt functions Krzysztof HaĹ‚asa (9): IXP4xx: Add support for the second half of the 64 hardware queues. IXP4xx: Ethernet and WAN drivers now support "high" hardware queues. IXP4xx: Whitespace fixes in the Ethernet driver. IXP42x: Identify Intel IXP425 rev. A0 processors. IXP42x: add NPE support for IXP425 rev. A0 processors. IXP42x: Add QMgr support for IXP425 rev. A0 processors. IXP42x: Use __fls() in QMgr interrupt handlers. IXP4xx: support for Goramo MultiLink router platform. IXP4xx: Change QMgr function names to qmgr_stat_*_watermark and clean the comments. Krzysztof Helt (17): ALSA: sc6000: add support for SC-6600 and SC-7000 ALSA: sc6000: fix older card initialization ALSA: sc6000: enable joystick port bw2: use standard fields for framebuffer physical address and length cg14: use standard fields for framebuffer physical address and length cg3: use standard fields for framebuffer physical address and length cg6: use standard fields for framebuffer physical address and length leo: use standard fields for framebuffer physical address and length p9100: use standard fields for framebuffer physical address and length chipsfb: remove redundant assignment igafb: use framebuffer_alloc() to allocate fb_info struct offb: use framebuffer_alloc() to allocate fb_info struct acornfb: remove fb_mmap function s3c-fb: fix resource releasing on error during probing fbdev: use framebuffer_release() for freeing fb_info structures tcx: use standard fields for framebuffer physical address and length fbdev: do not allow VESA modes without compiled-in drivers Kumar Gala (35): fs_enet: Remove dead code gianfar: Use memset instead of cacheable_memzero powerpc/fsl: Remove cell-index from PCI nodes powerpc: Refactor board check for PCI quirks on FSL boards with uli1575 powerpc/fsl: use of_iomap() for rstcr mapping powerpc/85xx: Add binding for LAWs and ECM powerpc/85xx: Add new LAW & ECM device tree nodes for all 85xx systems powerpc/86xx: Add binding for LAWs and MCM powerpc/86xx: Add new LAW & MCM device tree nodes for all 86xx systems powerpc/cpm: Remove some cruft code and defines powerpc/86xx: clean up smp init code powerpc/fsl: Removed reg property from 85xx/86xx soc node fsldma: Fix compile warnings powerpc/85xx: Add MSI nodes for MPC8568/9 MDS systems powerpc/fsl: Support unique MSI addresses per PCIe Root Complex powerpc/8xxx: Update PCI outbound window addresses for 36-bit configs powerpc/fsl_rio: Fix compile warnings powerpc/fsl: Update FSL esdhc binding powerpc/85xx: Add P2020DS board support powerpc/fsl: Setup PCI inbound window based on actual amount of memory powerpc: Fix up elf_read_implies_exec() usage powerpc/pci: Clean up direct access to sysdata by indirect ops powerpc/pci: Clean up direct access to sysdata by FSL platforms powerpc/pci: Clean up direct access to sysdata by 52xx platforms powerpc/pci: Clean up direct access to sysdata by 4xx platforms powerpc/pci: Clean up direct access to sysdata by CHRP platforms powerpc/pci: Clean up direct access to sysdata on tsi108 platforms powerpc/pci: Clean up direct access to sysdata by powermac platforms powerpc/pci: Clean up direct access to sysdata by RTAS powerpc/pci: Clean up direct access to sysdata by celleb platforms powerpc/pci: Move pseries code into pseries platform specific area powerpc/pci: Cleanup some minor cruft powerpc/pci: Remove redundant pcnet32 fixup powerpc/pci: clean up direct access to sysdata by iseries platform powerpc/85xx: Add SWIOTLB support to FSL boards Kuninori Morimoto (14): sh: Add support for SH7724 (SH-Mobile R2R) CPU subtype. serial: sh-sci: SH7724 support. sh: sh7724: Add I2C support. sh: sh7724: Add VPU support. sh: sh7724: Add VEU support. sh: Add ms7724se (SH7724) board support sh: SH7724 has an L2 cache. sh: fix CONFIG_SH_PCLK_FREQ bug for sh7724 sh: add RAMCR definition for sh4 sh: add weak l2_cache_init function. sh: sh7724: L2 cache initialization. sh: sh7723: L2 cache initialization. sh: sh7724: INTC setting update sh: sh7724: Add JPU support Kwangwoo Lee (2): S3C64XX: Basic A&W6410 board support patch V2 Input: tsc2007 - make sure platform provides get_pendown_state() Kyle McMartin (1): MAINTAINERS: rds list is moderated Kyungmin Park (2): [ARM] S3C6410: Basic support for NCP board (v2) mtd: onenand: add bbt_wait & unlock_all as replaceable for some platform Lachlan McIlroy (1): xfs_file_last_byte() needs to acquire ilock Lai Jiangshan (2): ring_buffer: compressed event header tracing: add trace_event_read_lock() Larry Finger (6): kaweth: Clean up code b43legacy: Do not select HW_RANDOM rfkill: Fix broken rfkill LED in 2.6.30-rc1 b43legacy: Fixes for beaconing b43legacy: Clean up beacon IRQ rtl8187: Implement TX/RX blink for LED Laszlo Attila Toth (1): netfilter: xt_socket: added new revision of the 'socket' match supporting flags Laurent Pinchart (8): V4L/DVB (11835): uvcvideo: Parse frame descriptors with non-continuous indexes. V4L/DVB (11836): uvcvideo: Add missing whitespaces to multi-line format strings. V4L/DVB (11837): uvcvideo: Start status polling on device open V4L/DVB (11944): uvcvideo: Add generic control blacklist. V4L/DVB (11945): uvcvideo: Don't accept to change the format when buffers are allocated. V4L/DVB (11946): uvcvideo: Add support for Aveo Technology webcams V4L/DVB (11947): uvcvideo: Add support for FSC V30S webcams V4L/DVB (11948): uvcvideo: Ignore non-UVC trailing interface descriptors. Lee Nipper (2): crypto: talitos - scaffolding for new algorithm types crypto: talitos - Add ablkcipher algorithms Len Brown (9): ACPI: delete acpi.power_nocheck from kernel-parameters.txt ACPI: delete dead acpi_disabled setting code ACPI, PCI, x86: move MCFG parsing routine from ACPI to PCI file ACPI: move declaration acpi_early_init() to acpi.h ACPI: #define acpi_disabled 1 for CONFIG_ACPI=n ACPI: battery: fix CONFIG_ACPI_PROCFS_POWER=n build warning ACPI: idle: rename lapic timer workaround routines Merge branches 'acerhdf', 'acpi-pci-bind', 'bjorn-pci-root', 'bugzilla-12904', 'bugzilla-13121', 'bugzilla-13396', 'bugzilla-13533', 'bugzilla-13612', 'c3_lock', 'hid-cleanups', 'misc-2.6.31', 'pdc-leak-fix', 'pnpacpi', 'power_nocheck', 'thinkpad_acpi', 'video' and 'wmi' into release Merge branch 'bjorn-notify' into release Lennart Poettering (2): V4L/DVB (11960): v4l: generate KEY_CAMERA instead of BTN_0 key events on input devices V4L/DVB (11993): V4L/pwc - use usb_interface as parent, not usb_device Lennert Buytenhek (8): mv643xx_eth: fix variable shadowing sparse warning mv643xx_eth: count handling a link event as one unit of napi work mv643xx_eth: minor register definition cleanup mv643xx_eth: rework receive skb cache alignment [ARM] alternative copy_to_user/clear_user implementation mtd: m25p80: add support for Macronix MX25L12805D [ARM] Kirkwood: add Marvell 88F6281 GTW GE board support fb: add support of LCD display controller on pxa168/910 (base layer) Li Yang (2): powerpc/fsl_rio: use LAW address from device tree rapidio: fix section mismatch warnings Li Zefan (45): tracing: use macros to denote usec and nsec per second blktrace: fix output of unknown events blktrace: fix output of BLK_TC_PC events blktrace: support per-partition tracing for ftrace plugin blktrace: add trace/ to /sys/block/sda blktrace: fix context-info when mixed-using blk tracer and trace events tracing: fix file mode of trace and README tracing/filters: don't remove old filters when failed to write subsys->filter tracing/filters: allow user-input to be integer-like string tracing/events: make struct trace_entry->type to be int type tracing/events: don't say hi when loading the trace event sample tracing/events: make SAMPLE_TRACE_EVENTS default to n tracing/events: fix memory leak when unloading module tracing/events: fix concurrent access to ftrace_events list tracing/events: fix concurrent access to ftrace_events list, fix tracing/events: clean up for ftrace_set_clr_event() tracing/events: simplify system_enable_read() blktrace: pdu_buf of pc events should be unsigned blktrace: from-sector redundant in trace_block_remap, cleanup tracing/filters: add missing unlock in a failure path tracing/filters: fix off-by-one bug cls_cgroup: remove unneeded cgroup_lock tracing/events: Documentation updates tracing/events: change the type of __str_loc_item to unsigned short tracing/stat: change dummpy_cmp() to return -1 tracing/stat: remember to free root node tracing/stat: do some cleanups tracing/events: fix a typo in __string() format output tracing/events: put TP_fast_assign into braces tracing/events: introduce __dynamic_array() tracing/events: convert block trace points to TRACE_EVENT() tracing/events: convert block trace points to TRACE_EVENT(), fix !CONFIG_BLOCK tracing: fix a typo in tracing_cpumask_write() tracing: replace a GFP_ATOMIC with GFP_KERNEL allocation tracing/filters: operand can be negative tracing/filters: strloc should be unsigned short block: remove some includings of blktrace_api.h tracing/filters: free filter_string in destroy_preds() tracing/filters: fix race between filter setting and module unload hexdump: remove the trailing space sched: Remove unneeded __ref tag cgroups: forbid noprefix if mounting more than just cpuset subsystem devcgroup: skip superfluous checks when found the DEV_ALL elem memcg: remove some redundant checks memcg: remove unneeded forward declaration from sched.h Liam Girdwood (2): regulator: build fix for powerpc - renamed show_state regulator: lp3971 - fix driver link error when built-in. Lin Ming (4): ACPICA: Fix reference count issues for DdbHandle object ACPICA: Invalidate DdbHandle after table unload ACPICA: New: AcpiInstallMethod - install a single control method ACPICA: Region deletion: Ensure region object is removed from handler list Linus Torvalds (205): x86: unify arch/x86/boot/compressed/vmlinux_*.lds ext3: avoid unnecessary spinlock in critical POSIX ACL path x86, e820, pci: reserve extra free space near end of RAM Make /dev/zero reads interruptible by signals Merge branch 'irq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-kbuild-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-docs-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'futexes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'percpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'printk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'signal-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'oprofile-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'serial-from-alan' Merge branches 'frv' and 'mn10300' Merge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'kvm-updates/2.6.31' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw Merge branch 'for-2.6.31' of git://git.kernel.dk/linux-2.6-block Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6 Merge branch 'topic/slab/earlyboot' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'perfcounters-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://linux-arm.org/linux-2.6 Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-module-and-param Merge branch 'cuse' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-virtio Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-lguest Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw Merge git://git.infradead.org/~dwmw2/firmware-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'topic/slab/earlyboot-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://linux-arm.org/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/configfs Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'docs-next' of git://git.lwn.net/linux-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'next-i2c' of git://aeryn.fluff.org.uk/bjdooks/linux Merge git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/headers-check-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 Merge branch 'timers-for-linus-ntp' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-for-linus-clocksource' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-for-linus-clockevents' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-for-linus-migration' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 printk: clean up handling of log-levels and newlines printk: Add KERN_DEFAULT printk log-level printk: add KERN_DEFAULT loglevel to print_modules() Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 Merge branch 'serial' Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 readahead: clean up and simplify the code for filemap page fault readahead Merge branch 'akpm' Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'next-i2c' of git://aeryn.fluff.org.uk/bjdooks/linux ext3: avoid unnecessary spinlock in critical POSIX ACL path Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubi-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'kmemleak' of git://linux-arm.org/linux-2.6 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'for-linus' of git://neil.brown.name/md Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 x86: don't use 'access_ok()' as a range check in get_user_pages_fast() Merge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6 Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip x86, 64-bit: Clean up user address masking Remove internal use of 'write_access' in mm/memory.c Move FAULT_FLAG_xyz into handle_mm_fault() callers Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Revert "char: moxa, prevent opening unavailable ports" Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/czankel/xtensa-2.6 Merge branch 'next-i2c' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'for-2.6.31' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'for-2.6.31' of git://fieldses.org/git/linux-nfsd Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm Merge git://git.infradead.org/mtd-2.6 mm/init: cpu_hotplug_init() must be initialized before SLAB Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge git://git.infradead.org/~dwmw2/iommu-2.6.31 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://www.jni.nu/cris Merge branch 'kmemleak' of git://linux-arm.org/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'next-i2c' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge git://git.infradead.org/iommu-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'audit.b63' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Don't warn about order-1 allocations with __GFP_NOFAIL Merge branch 'futexes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branches 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/{vfs-2.6,audit-current} Merge git://git.infradead.org/battery-2.6 Revert "PCI: use ACPI _CRS data by default" Linux 2.6.31-rc1 Linus Walleij (16): [ARM] 5470/1: U300 register definitions [ARM] 5471/2: U300 GPIO and PADMUX support [ARM] 5474/1: U300 clocking framework [ARM] 5473/1: U300 core machine support [ARM] 5480/1: U300-v5 integrate into the ARM architecture [ARM] 5510/1: U300 GPIO debug and init fixes [ARM] 5533/1: Add U300 series defconfig [ARM] 5535/1: U300 Makefile.boot [ARM] 5546/1: ARM PL022 SSP/SPI driver v3 [ARM] 5544/1: Trust PrimeCell resource sizes driver core: Const-correct platform getbyname functions i2c: ST DDC I2C U300 bus driver v3 i2c: Use resource_size macro i2c-stu300: Make driver depend on MACH_U300 mfd: add U300 AB3100 core support [WATCHDOG] U300 COH 901 327 watchdog driver Lopez Cruz, Misael (4): ASoC: TWL4030: Add VDL analog bypass ASoC: TWL4030: Add voice digital loopback: sidetone ASoC: TWL4030: Add control for selecting codec operation mode ASoC: SDP3430: Connect twl4030 voice DAI to McBSP3 Louis Rilling (2): configfs: Silence lockdep on mkdir() and rmdir() configfs: Rework configfs_depend_item() locking and make lockdep happy Lubomir Rintel (1): x86: Fix non-lazy GS handling in sys_vm86() Luck, Tony (1): intel-iommu: Fix one last ia64 build problem in Pass Through Support Luis Henriques (3): perf_counter: fix alignment in /proc/interrupts locking, rtmutex.c: Documentation cleanup [CPUFREQ] powernow-k8.c: mess cleanup Luis R. Rodriguez (33): ath9k: Update maintainers for ath9k atheros: put atheros wireless drivers into ath/ ath: space cleanup ath5k: sparse fix ath5k_led_on needs to be static cfg80211: respect API on orig_flags on channel for beacon hint cfg80211: add netlink channel put helper cfg80211: send regulatory beacon hint events to userspace atheros: fix propagation of bad EEPROM on regulatory init cfg80211: make nl80211_send_mlme_timeout() static mac80211: Fix sparse warning for ssid_len on ieee80211_sta_config_auth() ath9k: make private driver rate tables const cfg80211: Process regulatory max bandwidth checks for HT40 wireless: rename IEEE80211_CHAN_NO_FAT_* to HT40-/+ mac80211: check if HT40+/- is allowed before sending assoc cfg80211: check allowed channel type upon userspace requests mac80211/cfg80211: move wiphy specific debugfs entries to cfg80211 cfg80211: add debugfs HT40 allow map cfg80211: return immediately if num reg rules > NL80211_MAX_SUPP_REG_RULES cfg80211: cleanup return calls on nl80211_set_reg() cfg80211: fix in nl80211_set_reg() ath9k: fix custom regulatory call position ath9k: set max default eirp to 20 dBm cfg80211: warn when wiphy_apply_custom_regulatory() does nothing mac80211: handle -EALREADY on cfg80211 op assoc req ar9170: add support for 1-stage firmware ar9170: add AVM FRITZ devices cfg80211: fix for duplicate userspace replies ath: make regulatory parsing more verbose on debug cfg80211: make ieee80211_get_mesh_hdrlen() static mac80211: extend sta kdoc - explain when they are added mac80211: removed unused variable in ieee80211_tx() cfg80211: fix for duplicate response for driver reg request mac80211: disable moving between PS modes during scan Luk?? Karas (1): V4L/DVB (11451): gspca - m5602-s5k83a: Add rotation, ctrl cache. Rename some ctrls. Lukas Karas (1): V4L/DVB (11634): gspca - m5602-s5k83a: Set the sensor_settings pointer correctly Ma Ling (1): drm/i915: Set correct TV detection voltage level override values Maciej W. Rozycki (2): declance: Restore tx descriptor ring locking eisa.ids: add Network Peripherals FDDI boards Magnus Damm (104): sh: pass along struct pci_channel sh: add init member to pci_channel data sh: avoid using PCIBIOS_MIN_xxx sh: hook in struct pci_channel in sysdata sh: add reg_base member to pci_channel sh: add io_base member to pci_channel sh: pci memory range checking code sh: pci io port base address code sh: export board_pci_channels in one place clocksource: sh_cmt earlytimer support sh: arch earlytimer support sh: Add plat_early_device_setup() sh: Early Platform Data for SuperH Mobile clocksource: sh_cmt clocksource support smsc911x: add fifo byteswap support V2 clocksource: improve sh_cmt clocksource overflow handling sh: setup timers in late_time_init() sh: pass through ioremap() for non-mmu processors. clocksource: sh_cmt 16-bit fixes sh: sh2/sh2a 16-bit CMT platform data sh: remove old CMT driver clocksource: setup mult_orig in clocksource_enable() clockevent: export register_device and delta2ns clocksource: SuperH MTU2 Timer driver sh: sh2a MTU2 platform data sh: remove old MTU2 driver clocksource: SuperH TMU Timer driver sh: TMU platform data for sh7722 sh: sh7785 early scif fix sh: call clock framework init() callback once sh: r7785 highlander clock fixes sh: TMU platform data for sh7785 sh: clock framework update, fix count and kill off kref sh: enable TMU clocksource on sh7722 sh: TMU platform data for sh7723 sh-sci: add platform device private data sh-sci: remove early_sci_setup() sh-sci: rework serial console support sh-sci: use to_sci_port() if possible sh-sci: allow single port platform devices sh-sci: replace sci_init_ports() sh-sci: ioremap() in a single place sh-sci: improve clock framework support sh: include empty_zero_page in text sh: TMU platform data for sh775x sh: TMU platform data for sh7760 sh: multiple vectors per irq - sh7760 sh: r7780 highlander clock fixes sh: TMU platform data for sh7780 sh: TMU platform data for sh7763 sh: add sh7770_generic_defconfig sh: TMU platform data for sh7770 sh: TMU platform data for sh4-202 sh: add sh4-202 INTC tables sh: TMU platform data for sh7343 sh: TMU platform data for sh7366 sh: TMU platform data for sh7724 sh: TMU platform data for sh7705 sh: TMU platform data for sh7706/sh7707/sh7708/sh7709 sh: TMU platform data for sh7710/sh7712 sh: TMU platform data for sh7720/sh7721 sh: CMT platform data for sh7720/sh7721 sh: remove old TMU driver sh: intc tables for sh7770 sound: oss: sh_dac_audio timer fixes. sh: clkfwk branch compile fix for clock-sh7722 sh: add pll_clk to sh7785 sh: add shared clock framework frequency table code sh: use shared frequency tables on sh7785 sh: remove clk_ops->build_rate_table() sh: boot word / mode pin support V2 sh: sh7785 mode pin definitions sh: sh7785lcr mode pin configuration sh: sh7785 pll configuration from mode pin sh: shared mstp32 clock code sh: hook up shared mstp32 clock code to sh7785 sh: shared div4 clock code sh: hook up shared div4 clock code to sh7785 sh: 16-bit get_unaligned() sh4a fix sh: clock div4 frequency table offset fix sh: clock div6 helper code sh: rework mode pin code sh: sh7723 mode pin V2 sh: sh7724 mode pin comments sh: sh7722 mode pin definitions sh: add Migo-R mode pin configuration sh: add AP325RXA mode pin configuration sh: add enable()/disable()/set_rate() to div6 code sh: sh7723 clock framework rewrite V2 sh: sh7724 clock framework rewrite V3 sh: sh7343 clock framework rewrite sh: sh7366 clock framework rewrite sh: sh7722 clock framework rewrite PM: Remove unused asm/suspend.h PM: Rename device_power_down/up() PM: Remove bus_type suspend_late()/resume_early() V2 PM: Remove device_type suspend()/resume() Driver Core: Rework platform suspend/resume, print warning sh: smsc911x support for the rsk7203 board V4L/DVB (11731): buf-dma-contig: remove sync operation videobuf-dma-contig: zero copy USERPTR support sh: unbreak WARN_ON() sh: use kzalloc() for cpg clocks sh: turn off irqs when disabling CMT/TMU timers Magnus Lilja (9): i.MX31: Add UART1 device to Litekit board. i.MX31: Removed unused items from board-mx31lite.h. i.MX31: Correct comments on CONFIG_DEBUG_LL. i.MX31: Add ethernet support to i.MX31 Litekit board. i.MX31: Add NAND device driver for Litekit board. i.MX31: Restructure UART setup for PDK board. i.MX31: Add support for the CPLD on PDK Debug board. i.MX31: Add support for LAN9217 on PDK debug board. mtd: mxc_nand: add correct dev_id parameter to free_irq() calls Mallikarjuna R Chilakala (2): ixgbe: Fix 82599 adapter link flickering issues ixgbe: ethtool support to change advertised link modes of 82599 adapters Manish Katiyar (5): ext4: Fix memory leak in ext4_fill_super() in case of a failed mount ext3: Fix memory leak in ext3_fill_super() in case of a failed mount ext2: Fix memory leak in ext2_fill_super() in case of a failed mount kernel/kallsyms.c: replace deprecated __initcall with device_initcall and fix whitespace trivial: kernel/power/poweroff.c: whitespace fix Mans Rullgard (1): ARM: OMAP: Increase VMALLOC_END to allow 256MB RAM Manu Abraham (12): V4L/DVB (11579): Initial go at TT S2-1600 V4L/DVB (11581): stv090x and stv6110x: fix repeater level setup and ref clock V4L/DVB (11582): stv090x: fix Undocumented Registers V4L/DVB (11586): stv090x: switch i/p ADC as well during Power management V4L/DVB (11587): stv090x: set DiSEqC frequency to 22kHz V4L/DVB (11588): stv090x: support > 60MSPS, simplify Srate calculation V4L/DVB (11589): stv090x: code simplification V4L/DVB (11590): stv090x: code simplification V4L/DVB (11591): stv090x: code simplification V4L/DVB (11682): STV0900/STV0903: Add support for Silicon cut >= 3 V4L/DVB (12130): Fix a redundant compiler warning V4L/DVB (12131): BUGFIX: An incorrect Carrier Recovery Loop optimization table was being Manuel Gebele (3): Staging: comedi: add vmk80xx USB driver Staging: comedi: Makefile changes Staging: Comedi: vmk80xx: Add k8061 support Manuel Lauss (5): MIPS: Alchemy: Remove unused au1000_gpio.h header MIPS: Alchemy: Rewrite GPIO support. MIPS: Alchemy: MTX-1: Use linux gpio api. MIPS: Alchemy: xxs1500: use linux gpio api. MIPS: Alchemy: devboards: Convert to gpio calls. Marcel Holtmann (10): Bluetooth: Remove unnecessary variable initialization Bluetooth: Add basic constants for L2CAP ERTM support and use them Bluetooth: Remove pointless endian conversion helpers Bluetooth: Use only MISC_DYNAMIC_MINOR for virtual driver Bluetooth: Use wait_event_interruptible for virtual driver Bluetooth: Remove BKL from open callback of virtual driver Bluetooth: Remove unused and unneeded support in virtual driver Bluetooth: Add native RFKILL soft-switch support for all devices Bluetooth: Fix Kconfig issue with RFKILL integration Bluetooth: Fix issue with uninitialized nsh.type in DTL-1 driver Marcel Jueling (1): V4L/DVB (11492): af9015: support for Conceptronic USB2.0 DVB-T CTVDIGRCU V3.0 Marcelo Tosatti (12): KVM: x86: paravirt skip pit-through-ioapic boot check KVM: PIT: remove unused scheduled variable KVM: PIT: remove usage of count_load_time for channel 0 KVM: unify part of generic timer handling KVM: PIT: fix count read and mode 0 handling KVM: MMU: remove global page optimization logic KVM: x86: check for cr3 validity in ioctl_set_sregs KVM: use smp_send_reschedule in kvm_vcpu_kick KVM: protect assigned dev workqueue, int handler and irq acker KVM: MMU: protect kvm_mmu_change_mmu_pages with mmu_lock KVM: take mmu_lock when updating a deleted slot KVM: x86: check for cr3 validity in mmu_alloc_roots Marek Szyprowski (3): LP3971 PMIC regulator driver (updated and combined version) [ARM] S3C64XX: add to_irq() support for EINT() GPIO [ARM] S3C: Fix gpio-config off-by-one bug Marek Vasut (6): Add support for CF8381 WiFi card. ASoC: Support AC97 link off by default on WM9712 [ARM] pxa/palm: Switch PalmT5, TX, TE2 to GPIO VBUS [ARM] pxa/palm: Add Palm27x aSoC driver to PalmTE2 [ARM] pxa/palm: Palm TX, T5, LD suspend-to-mem rework [ARM] pxa/palm: various fixes for PalmZ72 (mostly audio asoc and usb) Marek Vašut (1): [ARM] 5522/1: PalmLD: IDE support Mario Limonciello (2): dell-wmi: mask off upper bytes of event response dell-wmi: add additional keyboard events Mariusz Kozlowski (3): Blackfin: fix parentheses balance and convert some tab/space mixing V4L/DVB (11566): remove broken macro from dvb stv0900_priv.h sound: fix check for return value in snd_pcm_hw_refine Mark A. Greer (17): davinci: support different UART bases for zImage uncompress davinci: Encapsulate SoC-specific data in a structure davinci: Support JTAG ID register at any address davinci: Add clock init call to common init routine davinci: Add support for multiple PSCs davinci: Move pinmux setup info to SoC infrastructure davinci: Move interrupt ctlr info to SoC infrastructure davinci: Add base address and timer flexibility davinci: Add watchdog base address flexibility davinci: Make GPIO code more generic davinci: Move serial platform_device into SoC-specific files davinci: Move emac platform_data to SoC-specific files davinci: Remove unused i2c eeprom_read/write routines davinci: Factor out emac mac address handling davinci: Integrate cp_intc support into low-level irq code davinci: Add compare register support to timer code davinci: Move PINMUX defines to SoC files Mark Adamson (2): USB: serial: FTDI: add high speed device support USB: ftdi_sio: fix hi-speed device packet size calculation Mark Brown (94): ASoC: Display return code when failing to add a DAPM kcontrol ASoC: Provide core support for symmetric sample rates ASoC: Add WM8988 CODEC driver Merge branch 's6000' into for-2.6.31 ASoC: WM9713 requires symmetric rates on the voice DAI ASoC: Factor out application of power for generic widgets ASoC: Support DAPM events for DACs and ADCs ASoC: Move the WM9713 voice DAC powerdown to a DAPM event ASoC: Add WM8960 CODEC driver Merge branch 'for-2.6.30' into for-2.6.31 Merge branch 'for-2.6.30' into for-2.6.31 ASoC: Check we have DAI ops when calling via accessor functions ASoC: Volume controls are never of boolean type ASoC: Request shared rates for WM8903 Merge branch 'for-2.6.30' into for-2.6.31 Merge branch 'for-2.6.30' into for-2.6.31 ASoC: Factor out generic widget power checks ASoC: Factor out DAPM power checks for DACs and ADCs ASoC: Make the DAPM power check an operation on the widget ASoC: Add power supply widget to DAPM ASoC: Use DAPM supply widget for WM8903 charge pump ASoC: Support CLK_DSP in WM8903 ASoC: Optimise configuration of WM8903 DC servo ASoC: Actively manage the DC servo for WM8903 ASoC: Remove redundant rate constraint for WM8903 ASoC: Implement WM8903 digital sidetone support Merge branch 'for-2.6.30' into for-2.6.31 Merge branch 'for-2.6.30' into for-2.6.31 ASoC: Fix S3C64xx IIS device registration and support both ports ASoC: S3C2412: Failing to get the I2S clock is an error ASoC: Enforce symmetric rates for S3C64xx I2S interface ASoC: Include WM8350 register definitions in CODEC header ASoC: s3c-i2s-v2 diagnostic improvements ASoC: Use our registration function for S3C64xx Merge branch 'for-2.6.30' into for-2.6.31 ASoC: Staticise TLV values in WM8940 Merge branch 'for-2.6.30' into for-2.6.31 ASoC: Fix error message formatting in s3c64xx-i2s driver ASoC: Check for supported CPUs when building s3c-i2s-v2 ASoC: Make S3C64xx clock export function to return struct clk ASoC: Fix data format configuration for S3C64xx IISv2 and add 24 bit ASoC: Fix boot warnings from S3C IISv2 ASoC: Allow use of resource from the platform device for S3C IISv2 ASoC: Display the clock rate used as the basis for rate calculation ASoC: Display S3C IISv2 mode and MS errors by default ASoC: Staticise txctrl and rxctrl for S3C IISv2 ASoC: Use platform device resource for S3C64xx IISv2 [ARM] SMDK6410: Add support for SMSC9115 ethernet controller [ARM] SMDK6410: Support WM1190-EV1 PMIC board [ARM] SMDK6410: Use active high IRQ for the WM8350 on the WM1190-EV1 [ARM] SMDK6410: Mark all supplies as always_on [ARM] SMDK6410: Hook regulator control of VDDARM up for WM1190-EV1 ASoC: Use a shared define for AC97 CODEC data formats ASoC: Remove unused DAI format defines Merge commit 'takashi/topic/asoc' into for-2.6.31 Merge branch 'for-2.6.30' into for-2.6.31 ASoC: Remove redundant codec pointer from DAIs ASoC: Add headers to match patterns in MAINTAINERS [ARM] S3C64XX: Configure clocks for DMA controller ASoC: Fix file patterns for PXA sound drivers ASoC: Fix up CODEC DAI formats for big endian CPUs ASoC: Enforce symmetric rates for PXA2xx I2S Merge branch 'for-2.6.30' into for-2.6.31 ASoC: Point at kernel.org git Merge branch 'pxa2xx-i2s' into for-2.6.31 Merge branch 'for-2.6.30' into for-2.6.31 ASoC: Split DAPM power checks from sequencing of power changes ASoC: Make DAPM sysfs entries non-optional ASoC: Integrate bias management with DAPM power management ASoC: Add debug trace for bias level transitions [ARM] S3C64XX: Lower severity of DMA logging AsoC: Make snd_soc_read() and snd_soc_write() functions ASoC: WM9081 mono DAC with integrated 2.6W class AB/D amplifier driver ASoC: Fix WM9081 PowerPC compiler issues ASoC: Fix minor issues in STAC9766 driver ASoC: Mark MPC5200 AC97 as BROKEN until PowerPC merge issues are resolved ASoC: Switch FSL SSI DAI over to symmetric_rates ASoC: Initialise dev for the dummy S/PDIF DAI ALSA: Fix double locking of card list in snd_card_register() ASoC: Apostrophe patrol ASoC: Fix lm4857 control ASoC: Remove odd bit clock ratios for WM8903 ASoC: Revert duplicated code in SSM2602 driver ASoC: Instantiate any forgotten DAPM widgets regulator: Move regulator drivers to subsys_initcall() regulator: Support list_voltage for fixed voltage regulator regulator: Set MODULE_ALIAS for regulator drivers [ARM] pxa: register wm8731 explicitly for corgi and poodle [ARM] S3C64XX: Provide device for IIS ports [ARM] S3C64XX: Add device for IISv4 port [ARM] S3C64XX: Initial support for DVFS mfd: Correct readability of WM8350 register 227 mfd: Mark WM8350 mask revision as readable to match silicon mfd: Fix Kconfig help text for WM8350 Mark Jackson (1): Fix MIMC200 board LCD init Mark Langsdorf (4): x86: cacheinfo: replace sysfs interface for cache_disable feature x86: cacheinfo: disable L3 ECC scrubbing when L3 cache index is disabled x86/docs: add description for cache_disable sysfs interface x86: enable GART-IOMMU only after setting up protection methods Mark McLoughlin (3): virtio: teach virtio_has_feature() about transport features virtio: indirect ring entries (VIRTIO_RING_F_INDIRECT_DESC) lguest: add support for indirect ring entries Mark Salter (1): MN10300: Add support for new ELF relocs in kernel modules Mark de Wever (1): ide-tape: fix debug call Markus Heidelberg (11): kconfig: fix typo "mconfig" to "menuconfig" in a comment kconfig: add a note about the deps to the 'silentoldconfig' help kconfig: resort the documentation of the environment variables gitignore: ignore Kconfig i18n files kconfig qconf: fix -Wall compiler warnings kconfig qconf: fix namespace for Horizontal and Vertical enum values kconfig qconf: add namespace for use of Key_ enum values kconfig qconf: fix the type of the desktop widget kconfig: do not hardcode ".config" filename kconfig: do not hardcode "include/config/auto.conf" filename trivial: remove the trivial patch monkey's name from SubmittingPatches Markus Metzger (29): x86, bts: detect size of DS fields x86, bts: add selftest for BTS x86, bts: correct comment style in ds.c x86, hw-branch-tracer: keep resources on stop x86, hw-branch-tracer: add selftest x86, bts: use atomic memory allocation x86, bts: fix race when bts tracer is removed sched, hw-branch-tracer: add wait_task_context_switch() function to sched.h mm, x86, ptrace, bts: defer branch trace stopping x86, bts: wait until traced task has been scheduled out x86, bts: fix race between per-task and per-cpu branch tracing x86, bts: use trace_clock_global() for timestamps x86, debugctlmsr: add _on_cpu variants to debugctlmsr functions x86, bts, hw-branch-tracer: add _noirq variants to the debug store interface x86, hw-branch-tracer: allocate selftest iterator on heap x86, ds: fix compiler warning x86, ds: fix bounds check in ds selftest x86, ds: selftest each cpu x86, ds: add task tracing selftest x86, ds: add leakage warning x86, ds: use single debug store cpu configuration x86, ptrace: add bts context unconditionally x86, ds: dont use TIF_DEBUGCTLMSR x86, ds: fix bad ds_reset_pebs() x86, ds: allow small debug store buffers x86, ds: support Core i7 x86, ds: fix buffer alignment in debug store selftest x86, bts: reenable ptrace branch trace support x86, bts, mm: clean up buffer allocation Markus Trippelsdorf (1): inline functions left without protection of ifdef (acl) Marti Raudsepp (1): perf_counter: Fix stack corruption in perf_read_hw Martin Fuzzey (2): MXC : update i.MX21 clock support for USB host. USB: usbtest fix endless loop in unlink tests. Martin K. Petersen (14): block: Do away with the notion of hardsect_size block: Use accessor functions for queue limits block: Move queue limits to an embedded struct block: Expose stacked device queues in sysfs block: Export I/O topology for block devices and partitions ide-disk: fix missing max_sectors accessor function block: Fix bounce limit setting in DM block: Add missing bounce_pfn stacking and fix comments block: Introduce helper to reset queue limits to default values block: Fix bounce_pfn setting sd: Physical block size and alignment support sd: Detect non-rotational devices sd: Block limits VPD support scsi_debug: Add support for physical block exponent and alignment Martin Olsson (3): trivial: Fix paramater/parameter typo in dmesg and source comments trivial: fix typos s/paramter/parameter/ and s/excute/execute/ in documentation and source comments. trivial: fix typo milisecond/millisecond for documentation and source comments. Martin Petermann (2): [SCSI] zfcp: Increase ref counter for port open requests [S390] pm: zfcp driver power management callbacks Martin Schwidefsky (14): [S390] vdso: kernel parameter syntax [S390] merge cpu.h into cputime.h [S390] use facility list for cpu type safety check [S390] 3270: do not register with tty_register_device [S390] 3270: lock dependency fixes [S390] profile_tick called twice [S390] cio: force console function [S390] pm: con3215 power management callbacks [S390] pm: smsgiucv power management callbacks. [S390] pm: con3270 power management callbacks. [S390] driver_data access [S390] lockless idle time accounting [S390] Enable tick based perf_counter on s390. [S390] Update default configuration. Marton Balint (3): V4L/DVB (11394): cx88: Add support for stereo and sap detection for A2 V4L/DVB (11395): cx88: audio thread: if stereo detection is hw supported don't do it manually V4L/DVB (11396): cx88: avoid reprogramming every audio register on A2 stereo/mono change Martyn Welch (1): powerpc/86xx: Add I2C device mappings in DTS for SBC610 Masakazu Mokuno (1): net/ps3: Update maintainer Masanori Kobayasi (1): trivial: Documentation/dell_rbu.txt: fix typos Masatake YAMATO (2): trivial: Fix a typo in comment of addrconf_dad_start() syscalls.h: remove duplicated declarations for sys_pipe2 Mateusz Mandera (1): 8390p: Get rid of init_module/cleanup_module Mathieu Desnoyers (2): x86: clean up alternative.h tracepoint: trace_sched_migrate_task(): remove parameter Matias Zabaljauregui (6): lguest: Segment selectors are 16-bit long. Fix lg_cpu.ss1 definition. lguest: map switcher with executable page table entries lguest: use native_set_* macros, which properly handle 64-bit entries when PAE is activated lguest: replace hypercall name LHCALL_SET_PMD with LHCALL_SET_PGD lguest: Add support for kvm_hypercall4() lguest: PAE support Mats Erik Andersson (1): PCI: expose SMBus on Asus notebook A6L Matt Carlson (7): tg3: Allow screaming interrupt detection tg3: Handle NVRAM absent cases tg3: Prevent send BD corruption tg3: Allow 5761 WOL and LED fixes to 5761S too tg3: Limit CLKREQ fix to A[01] of 57780 asic rev tg3: Restore LAA sooner in shutdown sequence tg3: Update version to 3.99 Matt Fleming (4): sh: Update my email address sh: Fix dynamic ftrace's NOP action. sh: Make the atomic functions safe for irqsoff tracing sh: Fix declaration of __kernel_sigreturn and __kernel_rt_sigreturn Matt Helsley (1): futex: documentation: fix inconsistent description of futex list_op_pending Matt Kraai (1): trivial: Remove the hyphen from git commands Matt LaPlante (1): trivial: Miscellaneous documentation typo fixes Matt T. Yourst (1): KVM: x86: silence preempt warning on kvm_write_guest_time Matthew Garrett (2): dell-wmi: don't generate errors on empty messages hp-wmi: Add support for reporting tablet state Matthew Wilcox (8): mm: check the argument of kunmap on architectures without highmem [IA64] Convert ia64 to use int-ll64.h Fix pci_claim_resource Delete pcibios_select_root x86: Use pci_claim_resource ia64: Fix resource assignment for root busses PCI: remove redundant __msi_set_enable() PCI: Fix the NIU MSI-X problem in a better way Matthias Kaehlcke (7): [ARM] 5552/1: ep93xx get_uart_rate(): use EP93XX_SYSCON_PWRCNT and EP93XX_SYSCON_PWRCN USB: ci13xxx_udc: use helper functions to determine endpoint type and direction USB: atmel_usba_udc: use helper functions to determine endpoint type and direction USB: at91_udc: use helper functions to determine endpoint type and direction USB: Goku-S: use helper functions to determine endpoint type and direction USB: gadgetfs: use helper functions to determine endpoint type and direction USB: UHCI queue: use usb_endpoint_type() Matthias Ludwig (1): smsc911x: fix calculation of res_size for ioremap Matthias Schwarzott (2): V4L/DVB (11828): Reducing print-level of I2C error prints V4L/DVB (11894): flexcop-pci: dmesg visible names broken Matthieu CASTET (2): mtd: m25p80 nand: add m45pe10 ids b43: Fix possible unaligned u32 access Matthieu Castet (1): MIPS: BCM47xx: Fix gpio_direction_output Maulik Mankad (1): USB: gadget : Fix RNDIS code to pass USB Compliance tests (USBCV) with g_ether Mauro Carvalho Chehab (11): V4L/DVB (11654a): Add a missing end of line at the end of gspca/m5602/Makefile V4L/DVB (11663): Fix a warning introduced by git commit ec5f5bf80501abfe2da2897cfcde8452b545aacb V4L/DVB (11825): em28xx: add Terratec Grabby V4L/DVB (11827): Add support for Terratec Grabster AV350 V4L/DVB (11917): Fix firmware load for DVB-T @ 6MHz bandwidth for xc3028/xc3028L V4L/DVB (11918): tuner-xc2028: Fix offset frequencies for DVB @ 6MHz V4L/DVB (11922): tuner-xc2028: cleanup: better use tuner type defines V4L/DVB (11966): ov511: Fix unit_video parameter behavior V4L/DVB (11986): Kconfig: DVBWorld DVB-C USB Cable card needs tda1002x frontend V4L/DVB (11780): Siano: fix compilation error due to the lack of EXTERNAL_SYMBOL V4L/DVB (12010): cx88: Properly support Leadtek TV2000 XP Global Max Filippov (12): p54spi: mask value read from SPI_ADRS_DMA_WRITE_CTRL in p54spi_wait_bit p54spi: fix p54spi_upload_firmware p54spi: fix p54spi_tx_frame DMA transfer initiation and skb cleanup p54spi: compensate firmware alignment bug in p54spi_rx p54spi: get rid of busy-wait loops p54: call p54_wake_free_queues on every p54_free_skb and p54_rx_frame_sent p54spi: fix incorrect access sequence to DMA_WRITE_CTRL in p54spi_spi_write_dma p54spi: cosmetic fixes: use even byte count in SPI write; drop unused interrupt status read p54spi: return status of p54spi_wakeup p54spi: always call p54spi_sleep in p54spi_tx_frame if p54spi_wakeup succeeded p54spi: use firmware/DMA bug workaround that work under hight load in p54spi_rx p54spi: drop test for FW_STATE_RESET in p54spi_work Mel Gorman (25): page allocator: replace __alloc_pages_internal() with __alloc_pages_nodemask() page allocator: do not sanity check order in the fast path page allocator: do not check NUMA node ID when the caller knows the node is valid page allocator: check only once if the zonelist is suitable for the allocation page allocator: break up the allocator entry point into fast and slow paths page allocator: move check for disabled anti-fragmentation out of fastpath page allocator: calculate the preferred zone for allocation only once page allocator: calculate the migratetype for allocation only once page allocator: remove a branch by assuming __GFP_HIGH == ALLOC_HIGH page allocator: inline __rmqueue_smallest() page allocator: inline buffered_rmqueue() page allocator: inline __rmqueue_fallback() page allocator: do not call get_pageblock_migratetype() more than necessary page allocator: do not disable interrupts in free_page_mlock() page allocator: do not setup zonelist cache when there is only one node page allocator: use allocation flags as an index to the zone watermark page allocator: update NR_FREE_PAGES only as necessary page allocator: get the pageblock migratetype without disabling interrupts page allocator: slab: use nr_online_nodes to check for a NUMA platform page allocator: sanity check order in the page allocator slow path mm: use alloc_pages_exact() in alloc_large_system_hash() to avoid duplicated logic mm: add a gfp-translate script to help understand page allocation failure reports vmscan: properly account for the number of page cache pages zone_reclaim() can reclaim vmscan: do not unconditionally treat zones that fail zone_reclaim() as full vmscan: count the number of times zone_reclaim() scans and fails Miao Xie (4): sched: use group_first_cpu() instead of cpumask_first(sched_group_cpus()) cpusets: restructure the function cpuset_update_task_memory_state() cpusets: update tasks' page/slab spread flags in time cpuset,mm: update tasks' mems_allowed in time Michael Buesch (8): b43: Do not "select" HW_RANDOM b43: Remove unnecessary MMIO in interrupt hotpath cfg80211: Remove unnecessary ksize() call cfg80211: Use the correct IE buffer pointer b43: Add fw capabilities parport_pc: Fix subscription bugs ppdev: reduce kernel log spam pegasus usb-net: Fix endianness bugs Michael Chan (6): [SCSI] iscsi class: Add new NETLINK_ISCSI messages for cnic/bnx2i driver. [SCSI] bnx2: Add support for CNIC driver. [SCSI] cnic: Add new Broadcom CNIC driver. [SCSI] bnx2i: Add bnx2i iSCSI driver. [SCSI] cnic, bnx2i: Fix build failure when CONFIG_PCI is not set. cnic: Fix __symbol_get() build error. Michael Cousin (1): drm/i915: Skip lvds with Aopen i945GTt-VFA Michael Ellerman (16): powerpc/oprofile: Remove unused dump_pmcs() in FSL oprofile powerpc/irq: Move #ifdef'ed body of do_IRQ() into a separate function powerpc/irq: Move stack overflow check into a separate function powerpc/irq: Move get_irq() comment into header powerpc/irq: Remove fallback to __do_IRQ() powerpc/powermac: Use generic_handle_irq() in gatwick_action() powerpc/irq: We don't need __do_IRQ() anymore powerpc/ftrace: Use ppc_function_entry() instead of GET_ADDR powerpc/ftrace: Remove unused macros powerpc/ftrace: Use PPC_INST_NOP directly powerpc: Fix warning in setup_64.c when CONFIG_RELOCATABLE=y powerpc/cell: Use driver_data acessors, not platform_data in Axon MSI powerpc: Only build prom_init.o when CONFIG_PPC_OF_BOOT_TRAMPOLINE=y powerpc/iseries: Fix unused function warning in iSeries DT code powerpc/iseries: Mark signal_vsp_instruction() as maybe unused powerpc: Add configurable -Werror for arch/powerpc Michael Hennerich (10): netdev: bfin_mac: drop useless IRQF_SHARED from Blackfin EMAC interrupt netdev: bfin_mac: fix performance issue found by netperf Blackfin SPORT UART: fix data misses while using transmit frame sync Blackfin: add comment for anomaly 05000171 to init code Blackfin: fix up PATA resource handling in bf537-stamp Blackfin: do not error if GPIO IRQ is requested already as GPIO Blackfin: update gptimers API Blackfin: bf548-ezkit/bf537-stamp: add resources for ADXL345/346 i2c: Blackfin TWI: make sure we don't end up with a CLKDIV=0 i2c: Blackfin TWI: implement I2C_FUNC_SMBUS_I2C_BLOCK functionality Michael Holzheu (3): [S390] pm: xpram driver power management callbacks [S390] pm: power management support for SCLP drivers. [S390] Use del_timer instead of del_timer_sync Michael Krufky (13): V4L/DVB (11766): cx23885: mark functions encoder_on_port[bc] as static inline V4L/DVB (11768): cx23885: add ATSC/QAM tuning support for Hauppauge WinTV-HVR1270 V4L/DVB (11769): cx23885: add ATSC/QAM tuning support for Hauppauge WinTV-HVR1275 V4L/DVB (11770): cx23885: add ATSC/QAM tuning support for Hauppauge WinTV-HVR1255 V4L/DVB (11771): cx23885: add DVB-T tuning support for Hauppauge WinTV-HVR1210 V4L/DVB (11772): cx23885: update model matrix for "k2c2" retail boards V4L/DVB (11773): cx23885: clean up struct names for Hauppauge WinTV-HVR127X devices V4L/DVB (11858): cx23885: fix tda10048 IF frequencies for the Hauppauge WinTV-HVR1210 V4L/DVB (11860): saa7134: fix quirk in saa7134_i2c_xfer for the saa7131 bridge V4L/DVB (11861): saa7134: enable digital tv support for Hauppauge WinTV-HVR1110r3 V4L/DVB (11877): lgdt3305: fix 64bit division in function lgdt3305_set_if V4L/DVB (12115): tda10048: add missing entry to pll_tab for 3.8 MHz IF V4L/DVB (12116): cx23885: ensure correct IF freq is used on HVR1200 & HVR1700 Michael Neuling (3): powerpc: Cleanup macros in ppc-opcode.h powerpc: Move VSX load/stores into ppc-opcode.h powerpc: Make the NR_CPUS max 8192 Michael Reed (3): [SCSI] qla2xxx: Conditionally disable automatic queue full tracking. [SCSI] qla1280: driver clean up [SCSI] qla1280: error recovery rewrite Michael Roth (3): Input: ads7846 - support swapping x and y axes Input: ads7846 - more detailed model name in sysfs Input: ads7846 - pin change interrupt support Michael S. Tsirkin (7): net: skb_copy_datagram_const_iovec() tun: fix tun_chr_aio_read so that aio works tun: fix tun_chr_aio_write so that aio works PCI MSI: let drivers retry when not enough vectors virtio: find_vqs/del_vqs virtio operations virtio_pci: split up vp_interrupt virtio_pci: optional MSI-X support Michael Shields (1): Doc fix: ext2 can only have 32,000 subdirs, not 32,768 Michael Trimarchi (1): i2c: Fix stuck transaction on cpm-i2c driver Michal Marek (5): ALSA: clean up the logic for building sequencer modules kbuild: handle non-existing options in scripts/config kbuild: simplify argument loop in scripts/config kbuild: add generic --set-str option to scripts/config kobject: samples: make SAMPLE_KOBJECT module-only Michal Miroslaw (2): PCI quirk: unhide 'Overflow' device on i828{6,7}5P/PE chipsets PCI quirk: HP hides SMBus controller in Compaq nx9500 laptops Michal Simek (42): microblaze: Remove POWERPC reference from Microblaze gpio.h microblaze: Kconfig: Enable drivers for Microblaze microblaze: prepare signal handling for generic unistd.h microblaze: Fix early cmdline for CMDLINE_FORCE microblaze: Cleanup compiled-in rootfs in BSS section Microblaze: Remove unused variable from paging init microblaze: Fix cast warning for __va in prom.c microblaze: Kbuild update microblaze: Fix size of __kernel_mode_t to short microblaze_mmu_v2: Add mmu_defconfig microblaze_mmu_v2: MMU update for startup code microblaze_mmu_v2: Alocate TLB for early console microblaze_mmu_v2: TLB low level code microblaze_mmu_v2: MMU initialization microblaze_mmu_v2: mmu.h update microblaze_mmu_v2: Page fault handling high level - fault.c microblaze_mmu_v2: Context handling - mmu_context.c/h microblaze_mmu_v2: Page table - ioremap - pgtable.c/h, section update microblaze_mmu_v2: io.h MMU update microblaze_mmu_v2: pgalloc.h and page.h microblaze_mmu_v2: Update process creation for MMU microblaze_mmu_v2: Update tlb.h and tlbflush.h microblaze_mmu_v2: MMU asm offset update microblaze_mmu_v2: Add CURRENT_TASK for entry.S microblaze_mmu_v2: entry.S, entry.h microblaze_mmu_v2: Update exception handling - MMU exception microblaze_mmu_v2: uaccess MMU update microblaze_mmu_v2: Add MMU related exceptions handling microblaze_mmu_v2: Update linker script for MMU microblaze_mmu_v2: Enable fork syscall for MMU and add fork as vfork for noMMU microblaze_mmu_v2: Traps MMU update microblaze_mmu_v2: Update signal returning address microblaze_mmu_v2: Update cacheflush.h microblaze_mmu_v2: Update dma.h for MMU microblaze_mmu_v2: Elf update microblaze_mmu_v2: stat.h MMU update microblaze_mmu_v2: Kconfig update microblaze_mmu_v2: Makefiles microblaze: Fix problem with early_printk in startup fs/bio.c: add missing __user annotation procfs: remove sparse errors in proc_devtree.c microblaze: Add missing symbols for CONSTRUCTORS support MichaĹ‚ MirosĹ‚aw (10): genetlink: Introduce genl_register_family_with_ops() irda: Use genl_register_family_with_ops() tipc: Use genl_register_family_with_ops() ipvs: Use genl_register_family_with_ops() netlabel: Use genl_register_family_with_ops() wireless: Use genl_register_family_with_ops() mtd: add SST39SF040 chip to jedec_probe bridge: Simplify interface for ATM LANE mmc: Driver for CB710/720 memory card reader (MMC part) cb710: more cleanup for the DEBUG case. Michel Dänzer (8): therm_adt746x: Always clear hardware bit which inverts fan speed range. drm: EDID endianness fixes. drm/radeon: Respect AGP cant_use_aperture flag. radeon: Enable modesetting on non-x86. drm/ttm: Add some powerpc cache flush code. agp/uninorth: Handle user memory types. radeon: Fix CP byte order on big endian architectures with KMS. drm/radeon: Fully initialize LVDS info also when we can't get it from the ROM. Michel Pollet (5): [MTD] [NAND] S3C2410: Added a kerneldoc for s3c2410_nand_set [MTD] [NAND] S3C2410: Allow the machine code to get the BBT table from NAND [ARM] MINI2440: Add machine support [ARM] MINI2440: Document the mini2440= kernel parameter [ARM] MINI2440: Create a mini2440_defconfig file Michele Valzelli (1): USB: option.c: add Toshiba 3G HSDPA SM-Bus Minicard device id Mika Korhonen (1): mtd: OneNAND: add missing __devexit_p Mikael Pettersson (1): nvidiafb: fix boot-time printk string Mike Christie (16): [SCSI] iscsi: pass ep connect shost [SCSI] libiscsi: check of LLD has a alloc pdu callout. [SCSI] libiscsi: handle param allocation failures [SCSI] libiscsi: export iscsi_itt_to_task for bnx2i [SCSI] libiscsi: have iscsi_data_in_rsp call iscsi_update_cmdsn [SCSI] libiscsi: fix nop response/reply and session cleanup race [SCSI] libiscsi_tcp: update recv tracking for each skb instead of iscsi pdu [SCSI] libiscsi: fix iscsi transport checks to account for slower links [SCSI] libiscsi: handle cleanup task races [SCSI] libiscsi: don't let io sit in queue when session has failed [SCSI] libiscsi: check if iscsi host has work queue before queueing work [SCSI] libiscsi: add task aborted state [SCSI] libiscsi: add debug printks for iscsi command completion path [SCSI] libfc: use DID_ERROR when we have internall aborted command libiscsi: don't run scsi eh if iscsi task is making progress iscsi_tcp: propogate EAGAIN from sendpage to libiscsi Mike Frysinger (107): crypto: hifn_795x - fix __dev{init,exit} markings mtd: blackfin NFC: remove pointless return value in bf5xx_nand_dma_rw mtd: uclinux: allow systems to override map addr/size mtd: uclinux: do not allow to be built as a module mtd: uclinux: mark local stuff static mtd: maps: Blackfin async: fix memory leaks in probe/remove funcs netdev: smsc911x: allow building on Blackfin systems netdev: smsc911x: add missing __devexit_p() usage ignore *.patch files ftrace/documentation: fix typo in function grapher name Blackfin SPORT UART: fix typo in sport_set_termios prototype Blackfin SPORT UART: rewrite inline assembly tty: bfin_jtag_comm: emulate a TTY over the Blackfin EMUDAT/JTAG interface linux/magic.h: move cramfs magic out of cramfs_fs.h Blackfin: add some help text to the EBIU_AMBCTL settings Blackfin: fix data cache flushing when doing icache flushing Blackfin: fix warnings with I/O port macros Blackfin: pull updated anomaly lists from toolchain Blackfin: set bf51x/bf52x to 0.0 rev by default and bf54x to 0.2 Blackfin: simplify the do_flush macro Blackfin: simplify BF561 coreb driver greatly Blackfin: fix detection of cached L2 SRAM Blackfin: punt useless GPIO init call Blackfin: delete unused sys_getpagesize() function Blackfin: workaround anomaly 05000227 Blackfin: do not append newlines to panic() messages Blackfin: rename some Blackfin drivers Blackfin: add note about anomaly 05000242 being worked around Blackfin: fix command line corruption with DEBUG_DOUBLEFAULT Blackfin: override default uClinux MTD addr/size Blackfin: check SIC defines rather than variant names Blackfin: rename Blackfin relocs according to the toolchain Blackfin: document the lsl variants of the L1 allocator Blackfin: convert early_printk EVT init to a loop Blackfin: punt duplicated search_exception_table() prototype Blackfin: push access_ok() L1 attribute down Blackfin: kgdb: fix up error return values Blackfin: fix unused warnings after nommu update Blackfin: fix sparseirq/kstat_irqs fallout virtio_blk: add missing __dev{init,exit} markings perf_counter: Start documenting HAVE_PERF_COUNTERS requirements Blackfin: export ip_compute_csum/csum_partial_copy_from_user symbols Blackfin: add support for GENERIC_BUG Blackfin: fix trap_c() exit paths Blackfin: push down exception oops checking Blackfin: fix flag storage for irq funcs Blackfin: bf537-stamp: update ADP5520 resources Blackfin: bf548-ezkit: update smsc911x resources Blackfin: convert Kconfig style to def_bool Blackfin: add support for bzip2/lzma compressed kernel images Blackfin: add support for irqflags Blackfin: punt unused/wrong mutex-dec.h Blackfin: move custom sections into sections.h Blackfin: add preliminary support for STACKTRACE Blackfin: enable support for LOCKDEP Blackfin: initial support for ftrace Blackfin: initial support for ftrace grapher Blackfin: improve CLKIN_HZ config default Blackfin: hook up new rt_tgsigqueueinfo syscall kallsyms: generalize text region handling ramfs: ignore unknown mount options drivers/hvc: Add missing __devexit_p() tty: fix unused warning when TCGETX is not defined i2c-bfin-twi: pull in io.h for ioremap() fbdev: blackfin has __raw I/O accessors, so use them in fb.h fbdev: bfin-t350mcqb-fb: drop unused local variables fbdev: *bfin*: fix __dev{init,exit} markings fbdev: bf54x-lq043fb: use kzalloc over kmalloc/memset drivers/char/rtc: disable legacy RTC driver on Blackfin systems gpio: max7301: add missing __devexit marking edac: add missing __devexit_p() Blackfin: use common test_bit() rather than __test_bit() Blackfin: pull in asm/io.h in ksyms for prototypes Blackfin: only build irqpanic.c when needed Blackfin: convert asm/ioctls.h to asm-generic/ioctls.h Blackfin: convert shm/sysv/ipc to asm-generic Blackfin: convert user/elf to asm-generic Blackfin: convert socket/poll to asm-generic Blackfin: convert simple headers to asm-generic Blackfin: convert termios to asm-generic Blackfin: convert locking primitives to asm-generic Blackfin: convert signal/mmap to asm-generic Blackfin: convert irq/process to asm-generic Blackfin: convert types to asm-generic Blackfin: convert page/tlb to asm-generic asm-generic: uaccess: add missing access_ok() check to strnlen_user() asm-generic: uaccess: fix up local access_ok() usage istallion: add missing __devexit marking kallsyms: fix inverted valid symbol checking bfin_jtag_comm: clean up printk usage serial: bfin_5xx: add missing spin_lock init serial: bfin_5xx: fix building as module when early printk is enabled Blackfin: unify memory region checks between kgdb and traps Blackfin: bf518f-ezbrd: update DSA resources Blackfin: bf533-ezkit: add resources for FISP devices Blackfin: update anomaly lists Blackfin: redo handling of bad irqs Blackfin: only build show_interrupts() when procfs is enabled Blackfin: simplify irq stack overflow checking Blackfin: abstract irq14 lowering in do_irq Blackfin: allow people to select BF51x-0.1 silicon rev Blackfin: update defconfigs Blackfin: unify memory map headers Blackfin: drop unused ISP1760 port1_disable from board resources Blackfin: fix GPTMR0_CLOCKSOURCE dependency on BFIN_GPTIMERS Blackfin: hook up new perf_counter_open syscall rmap: fixup page_referenced() for nommu systems Mike Galbraith (24): perfcounters: throttle on too high IRQ rates perfcounters: ratelimit performance counter interrupts perfcounters fix section mismatch warning in perf_counter.c::perf_counters_lapic_init() perfcounters: fix refcounting bug perfcounters: fix "perf counters kill oprofile" bug perf_counters: account NMI interrupts perfcounters: fix use after free in perf_release() perf_counter tools: kerneltop: add real-time data acquisition thread perf_counter tools: kerneltop: display per function percentage along with event count perf_counter tools: fix build error perf_counter, x86: clean up throttling printk perf top: fix segfault perf top: Reduce display overhead perf top: Remove leftover NMI/IRQ bits perf top: fix typo in -d option perf record: Fix the profiling of existing pid or whole box perf_counter tools: Document '--' option parsing terminator perf_counter tools: Fix top symbol table dump typo perf_counter tools: Fix top symbol table max_ip typo perf_counter tools: Guard against record damaging existing files perf_counter tools: Make .gitignore reflect perf_counter tools files perf_counter tools: Cleanup Makefile perf_counter tools: Fix uninitialized variable in perf-report.c x86, boot: add new generated files to the appropriate .gitignore files Mike Isely (10): V4L/DVB (11744): pvrusb2: Select, track, and report IR scheme in use with the device V4L/DVB (11745): pvrusb2: Update to work with upcoming ir_video changes in v4l-dvb core V4L/DVB (11746): pvrusb2: Set ir_video autoloading to default disabled V4L/DVB (11747): pvrusb2: Bump up version advertised through v4l interface V4L/DVB (11750): pvrusb2: Allocate a routing ID for future support of Terratec Grabster AV400 V4L/DVB (12118): pvrusb2: Fix hardware scaling when used with cx25840 V4L/DVB (12119): pvrusb2: Re-fix hardware scaling on video standard change V4L/DVB (12120): pvrusb2: Change initial default frequency setting V4L/DVB (12121): pvrusb2: Improve handling of routing schemes V4L/DVB (12122): pvrusb2: De-obfuscate code which handles routing schemes Mike Lockwood (1): Staging: android: timed_gpio: Separate timed_output class into a separate driver. Mike Rapoport (20): ASoC: em-x270: make the driver support also eXeda and CM-X300 machines [ARM] pxa: update pxa2xx_spi_chip initialization to use .gpio_cs field [ARM] pxa: add ability to set suspend mode [ARM] pxa/em-x270: add exeda GPIO extender and update GPIO mappings [ARM] pxa/em-x270: update libertas device setup [ARM] pxa/em-x270: change power supply name to "battery" [ARM] pxa/em-x270: add support for on-board USB Hub [ARM] pxa/em-x270, cm-x270: use DEEPSLEEP for PM_SUSPEND_MEM [ARM] pxa/cm-x300: use OBM configuration for NAND flash [ARM] pxa/cm-x300: add rtc-v3020 device registration [ARM] pxa/cm-x300: use STUART for uncompressor [ARM] pxa/cm-x300: add .fixup method to enable second DRAM bank [ARM] pxa/cm-x300: update defconfig da9030_battery: Fix race between event handler and monitor regulator: add userspace-consumer driver [ARM] pxa/em-x270: remove .gpio_cs from em_x270_libertas_pdata [ARM] pxa/em-x270: add ability to control GPS and GPRS power [ARM] pxa/em-x270: always register AC97 controller device [ARM] pxa/em-x270: fix type in SND_PXA2XX_LIB_AC97 Input: add driver for Synaptics I2C touchpad Mike Sager (3): nfs41: define NFS4_MAX_MINOR_VERSION based on CONFIG_NFS_V4_1 nfs41: add mount command option minorversion nfsd41: Remove ip address collision detection case Mike Snitzer (8): block: export blk_stack_limits() dm table: ensure targets are aligned to logical_block_size dm table: validate device logical_block_size dm table: replace struct io_restrictions with struct queue_limits dm table: establish queue limits by copying table limits dm target:s introduce iterate devices fn dm log: fix create_log_context to use logical_block_size of log device dm: calculate queue limits during resume not load Mike Travis (1): sfc: modify allocation error message Mike Waychison (1): mm: remove __invalidate_mapping_pages variant Miklos Szeredi (14): fuse: use struct path in release structure fuse: clean up fuse_write_fill() fuse: prepare fuse_direct_io() for CUSE fuse: add members to struct fuse_file fuse: don't use inode in helpers called by fuse_direct_io() fuse: clean up args in fuse_finish_open() and fuse_release_fill() fuse: create fuse_do_open() helper for CUSE fuse: don't use inode in fuse_sync_release() fuse: don't use inode in fuse_do_ioctl() helper fuse: don't use inode in fuse_file_poll splice: implement pipe to pipe splicing splice: implement default splice_read method splice: implement default splice_write method splice: fix kmaps in default_file_splice_write() Mikulas Patocka (24): dm mpath: validate table argument count dm mpath: validate hw_handler argument count dm raid1: keep retrying alloc if mempool_alloc failed dm mpath: flush keventd queue in destructor dm: avoid unsupported spanning of md stripe boundaries dm: use i_size_read dm: rename suspended_bdev to bdev dm: always hold bdev reference dm: make dm_flush return void dm: process requeue in dm_wq_work dm: store only first barrier error dm: remove EOPNOTSUPP for barriers dm: remove check that prevents mapping empty bios dm: introduce num_flush_requests dm: send empty barriers to targets in dm_flush dm: linear support flush dm: stripe support flush dm crypt: support flush dm delay: support barriers dm mpath: support barriers dm snapshot: support barriers dm io: record eopnotsupp dm io: retry after barrier error dm snapshot: use barrier when writing exception store Milan Broz (2): dm: sysfs skip output when device is being destroyed dm ioctl: support cookies for udev Milton Miller (2): powerpc: Enable MMU feature sections for inline asm powerpc: Add 2.06 tlbie mnemonics Mimi Zohar (7): integrity: lsm audit rule matching fix integrity: use audit_log_string integrity: remove __setup auditing msgs integrity: path_check update integrity: move ima_counts_get integrity: nfsd imbalance bug fix integrity: ima audit dentry_open failure MinChan Kim (1): vmscan: prevent shrinking of active anon lru list in case of no swap space V3 Minchan Kim (6): page-allocator: clean up functions related to pages_min page-allocator: add inactive ratio calculation function of each zone page-allocator: reset wmark_min and inactive ratio of zone when hotplug happens mm: remove annotation of gfp_mask in add_to_swap mm: remove file argument from swap_readpage() use printk_once() in several places Ming Lei (4): tracing: fix check for return value of register_module_notifier ftrace: fix check for return value of register_module_notifier in event_trace_init driver core: firmware_class: replace kfree(dev) with put_device(dev) driver core: fix documentation of request_firmware_nowait Minkyu Kang (1): Add MAX17040 Fuel Gauge driver Miroslav Sustek (2): V4L/DVB (11879): Adds support for Leadtek WinFast DTV-1800H V4L/DVB (11441): cx88-dsp: fixing 64bit math Misael Lopez Cruz (1): ASoC: TWL4030: Enable/disable voice digital filters Mithlesh Thukral (2): Staging: wlan-ng: Lindent cleanups Staging: wlan-ng: Update README file. Remove Lindent task Mohamed Abbas (12): iwlagn: Sync rxon active with changes iwlcore: fix channel display in debugfs iwlcore: Fix stay in table function. iwlwifi: allow config if device not ready iwlagn: improve rate scale table search iwlcore: register locks iwlcore: support ICT interrupt iwlcore: Allow skb allocation from tasklet. iwlcore: Add support for periodic RX interrupt iwlcore: Set rb_timeout to 0x10 for devices with ICT iwlagn: co-exist with AMT iwlagn: delay ict interrupt. Márton NĂ©meth (2): V4L/DVB (11573): uvcvideo: Prevent invormation loss with removing implicit casting V4L/DVB (11574): uvcvideo: fill reserved fields with zero of VIDIOC_QUERYMENU Naga Chumbalkar (3): x86: Print real IOAPIC version for x86-64 [CPUFREQ] powernow-k8: read P-state from HW [CPUFREQ] powernow-k8: get drv data for correct CPU Nate Case (8): powerpc/fsl-booke: Enable L1 cache on e500v1/e500v2/e500mc CPUs powerpc/85xx: cuboot - Fix up ethernet3 MAC address on MPC85xx powerpc/85xx: Add platform support for X-ES MPC85xx boards powerpc/85xx: Add dts files for X-ES MPC85xx boards powerpc/85xx: Add defconfig for X-ES MPC85xx boards powerpc/bootwrapper: Custom build options for XPedite52xx targets gpio: pca953x: Get platform_data from OpenFirmware gpio: pca953x: Add support for PCA9556 Nathan Fontenot (1): powerpc: Display processor virtualization resource allocs in lparcfg Neil Horman (6): snmp: add missing counters for RFC 4293 drop_monitor: Update netlink protocol to include netlink attribute header in alert message dropmon: add ability to detect when hardware dropsrxpackets kexec: sysrq: simplify sysrq-c handler ipv4: fix NULL pointer + success return in route lookup path ipv4 routing: Ensure that route cache entries are usable and reclaimable with caching is off Neil Turton (2): amd-iommu: fix an off-by-one error in the AMD IOMMU driver. amd-iommu: fix the handling of device aliases in the AMD IOMMU driver. NeilBrown (16): md/raid0: two cleanups in create_stripe_zones. md: raid0: remove ->sectors from the strip_zone structure. md: raid0: remove ->dev pointer from strip_zone structure md: raid0: remove setting of segment boundary. md: remove mddev_to_conf "helper" macro md: raid0: chunk_sectors cleanups. md: raid5: check stripe cache is large enough in start_reshape md: remove unnecessary arguments from ->reconfig method. md: merge reconfig and check_reshape methods. md: move assignment of ->utime so that it never gets skipped. md: raid0/linear: ensure device sizes are rounded to chunk size. md: remove chunksize rounding from common code. md/linear: use call_rcu to free obsolete 'conf' structures. md/raid5: correctly update sync_completed when we reach max_resync nfsd: don't take nfsd_mutex twice when setting number of threads. nfsd: optimise the starting of zero threads when none are running. Nelson Castillo (4): [ARM] S3C: ADC: Fix lines with more than 80 chars in adc.h [ARM] S3C: ADC: Expose number of remaining conversions to [MTD] [NAND] S3C2410: Small colon cleanup [MTD] [NAND] S3C2410: Uninitialised variable cleanup Nelson, Shannon (3): ixgbe: Interrupt management update for 82599 ixgbe: Clear out stray tx work on link down ixgbe: Typecase '1' for 64 bit shift Nick Kossifidis (7): ath5k: Allow user/driver to set txpower ath5k: Read Spur channels from EEPROM ath5k: Put remaining EEPROM data on ee struct ath5k: Beaconing fixes ath5k: Implement antenna control ath5k: Add Spur filter support on newer chips ath5k: fix mesh beaconing Nick Piggin (6): fs: remove incorrect I_NEW warnings fs: block_dump missing dentry locking SLUB: Fix early boot GFP_DMA allocations mm: clean up get_user_pages_fast() documentation page allocator: do not check for compound pages during the page allocator sanity checks mm: madvise(): correct return code Nickolas Lloyd (2): ALSA: hda - add controls to toggle DC bias on mic ports ALSA: hda - Jack Mode changes for Sigmatel boards Nico Schottelius (1): kbuild: fix delay in setlocalversion on readonly source Nicolas Ferre (5): [ARM] 5438/1: AT91: manage clock by functionality instead of CPUs atmel-mci: Integrate AT91 specific definition in header file atmel-mci: add MCI2 register definitions USB: atmel_usba_udc: change way of specifying bias function MAINTAINERS: add myself as atmel-mci maintainer (sd/mmc interface) Nicolas Pitre (14): [ARM] allow for alternative __copy_to_user/__clear_user implementations [ARM] lower overhead with alternative copy_to_user for small copies [ARM] alternative copy_to_user: more precise fallback threshold mtd: orion_nand: use burst reads with double word accesses [ARM] orion: make sure sched_clock() usage of cnt32_to_63() is safe [ARM] Kirkwood: only map peripheral register space once [ARM] Kirkwood: comment type fix [ARM] Kirkwood: rationalize NAND setup a bit [ARM] Orion/Kirkwood: rename orion5x_wdt to orion_wdt [ARM] Kirkwood: let's use real size for resources [ARM] Kirkwood: create a mapping for the Security Accelerator SRAM [ARM] Kirkwood: platform device registration for the crypto engine [ARM] 5545/2: add flush_kernel_dcache_page() for ARM [ARM] orion5x: register the crypto device on SOCs that support it Niilo Minkkinen (1): usb: musb: disable OTG AUTOIDLE only with omap3430 Nikanth Karthikesan (4): block: catch trying to use more bits than request->cmd_flags has block: prevent possible io_context->refcount overflow trivial: fix comment typo in fs/compat.c trivial: fix typo in bio_alloc kernel doc Nitin A Kamble (1): KVM: VMX: Rename rmode.active to rmode.vm86_active Nivedita Singhvi (1): ipv4: New multicast-all socket option Nobuhiro Iwamatsu (3): sh: Add support mtd mapping for highlander sh: Update r7780mp defconfig sh: Revised clock function in highlander NĂ©meth Márton (2): trivial: usb: fix missing space typo in doc V4L/DVB (11736): videobuf: modify return value of VIDIOC_REQBUFS ioctl OGAWA Hirofumi (1): fat: Fix the removal of opts->fs_dmask Olaf Weber (1): xfs: add more checks to superblock validation OldĹ™ich JedliÄŤka (1): V4L/DVB (11567): saa7134: Added support for AVerMedia Cardbus Plus Oleg Nesterov (34): selinux: selinux_bprm_committed_creds() should wake up ->real_parent, not ->parent. do_wait: do take security_task_wait() into account rcu: rcu_sched_grace_period(): kill the bogus flush_signals() slow_work_thread() should do the exclusive wait shift current_cred() from __f_setown() to f_modown() send_sigio_to_task: sanitize the usage of fown->signum allow_signal: kill the bogus ->mm check, add a note about CLONE_SIGHAND ptrace: remove PT_DTRACE from arch/h8300 ptrace: remove PT_DTRACE from avr32, mn10300, parisc, s390, sh, xtensa ptrace: remove PT_DTRACE from m68k, m68knommu ptrace: remove PT_DTRACE from arch/m32r ptrace: mm_need_new_owner: use ->real_parent to search in the siblings ptrace: tracehook_unsafe_exec(): remove the stale comment ptrace: do not use task->ptrace directly in core kernel ptrace: ptrace_attach: check PF_KTHREAD + exit_state instead of ->mm ptrace: cleanup check/set of PT_PTRACED during attach ptrace: do not use task_lock() for attach ptrace_get_task_struct: s/tasklist/rcu/, make it static ptrace: wait_task_zombie: s/->parent/->real_parent/ ptrace: do_notify_parent_cldstop: fix the wrong ->nsproxy usage ptrace: don't take tasklist to get/set ->last_siginfo wait_task_zombie: do not use thread_group_cputime() copy_process(): remove the unneeded clear_tsk_thread_flag(TIF_SIGPENDING) elf_core_dump: use rcu_read_lock() to access ->real_parent shift "ptrace implies WUNTRACED" from ptrace_do_wait() to wait_task_stopped() introduce "struct wait_opts" to simplify do_wait() patches do_wait: simplify retval/tsk_result/notask_error mess do_wait: kill the old BUG_ON, use while_each_thread() do_wait: fix the theoretical race with stop/trace/cont kthreads: simplify the startup synchronization kthreads: rework kthread_stop() kthreads: simplify migration_thread() exit path Staging: epl: do not use CLONE_SIGHAND with allow_signal() ptrace: wait_task_zombie: do not account traced sub-threads Oliver Endriss (5): V4L/DVB (11759): dvb-ttpci: Add TS replay capability V4L/DVB (11760): dvb-ttpci: Check transport error indicator flag V4L/DVB (11761): dvb-ttpci: Fixed VIDEO_SLOWMOTION ioctl V4L/DVB (11762): dvb-ttpci: Fixed return code of av7110_av_start_play V4L/DVB (11763): dvb-ttpci: Some whitespace adjustments Oliver Neukum (1): USB: support for cdc-acm of single interface devices Olivier Berger (1): ACPI: Remove Asus P4B266 from blacklist Olivier Bornet (4): tty: iuu_phoenix: fix locking. tty: iuu_phoenix: Fix stopbit when uart goes on. tty: iuu_phoenix: set termios. tty: iuu_phoenix: update version number. Ondrej Zary (2): floppy: fix hibernation agpgart: detected ALi M???? chipset with M1621 Ooiwa Naohiro (1): bnx2: Fix the behavior of ethtool when ONBOOT=no Oskar Schirmer (8): imx: serial: fix whitespaces (no changes in functionality) lib: isolate rational fractions helper function imx: serial: use rational library function imx: serial: use tty_encode_baud_rate to set true rate xtensa: cache inquiry and unaligned cache handling functions xtensa: s6000 dma engine support s6gmac: xtensa s6000 on-chip ethernet driver xtensa: s6105 specific configuration for s6gmac Ozan ÇaÄźlayan (1): ALSA: hda - fix audio on LG R510 PJ Waskiewicz (6): ixgbe: Enable another bit for flow control operation ixgbe: Don't return error in flow control configuration if FC is off ixgbe: Move PHY ops initialization to centralize bus accesses ixgbe: Remove unnecessary PHY reset, properly identify multispeed fiber modules ixgbe: Update the usage of orig_autoc to be more consistent ixgbe: Add FCoE Storage MAC Address support Pablo Neira Ayuso (15): net: use NLMSG_DEFAULT_SIZE in nlmsg_new() allocations netfilter: conntrack: add support for DCCP handshake sequence to ctnetlink netfilter: nfnetlink: cleanup for nfnetlink_rcv_msg() function netfilter: ctnetlink: remove nowait parameter from *fill_info() netfilter: ctnetlink: rename tuple() by nf_ct_tuple() macro definition netfilter: ctnetlink: use nlmsg_* helper function to build messages netfilter: ctnetlink: cleanup message-size calculation netfilter: conntrack: don't report events on module removal netfilter: conntrack: remove events flags from userspace exposed file netfilter: conntrack: simplify event caching system netfilter: conntrack: replace notify chain by function pointer netfilter: conntrack: move event caching to conntrack extension infrastructure netfilter: conntrack: move helper destruction to nf_ct_helper_destroy() list_nulls: add hlist_nulls_add_head and hlist_nulls_del netfilter: conntrack: optional reliable conntrack event delivery Pallipadi, Venkatesh (2): ACPI: Disable ARB_DISABLE on platforms where it is not needed ACPI: pdc init related memory leak with physical CPU hotplug Paride Legovini (1): Add LED support for AR5BXB6 IBM Thinkpad PCIe adapters Pascal Terjan (1): USB: Ignore storage device in modem mode on DWN-652 Patrick Boettcher (2): V4L/DVB (11829): Rewrote frontend-attach mechanism to gain noise-less deactivation of submodules V4L/DVB (11831): dib0700: added USB IDs for Terratec T3 and T5 Patrick McHardy (23): net: factor out ethtool invocation of vlan/macvlan drivers Merge branch 'master' of git://dev.medozas.de/linux netfilter: nf_conntrack: use per-conntrack locks for protocol data Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 netfilter: nf_ct_tcp: fix up build after merge netfilter: ip_tables: fix build error net: fix network driver ndo_start_xmit() return values (part 1) net: fix network drivers ndo_start_xmit() return values (part 2) net: fix network drivers ndo_start_xmit() return values (part 3) net: fix network drivers ndo_start_xmit() return values (part 4) net: fix network drivers ndo_start_xmit() return values (part 5) net: fix network drivers ndo_start_xmit() return values (part 6) net: fix network drivers ndo_start_xmit() return values (part 7) net: fix network drivers ndo_start_xmit() return values (part 8) net: use symbolic values for ndo_start_xmit() return codes netfilter: nf_log: fix sleeping function called from invalid context netfilter: nf_conntrack: use mod_timer_pending() for conntrack refresh net: fix network drivers ndo_start_xmit() return values netfilter: nf_conntrack: fix confirmation race condition netfilter: nf_conntrack: fix conntrack lookup race netfilter: fix some sparse endianess warnings netfilter: nf_log: fix direct userspace memory access in proc handler netfilter: xt_rateest: fix comparison with self Patrick Ringl (1): README: fix misleading pointer to the defconf directory Paul E. McKenney (3): RCU: make treercu be default rcu: Add __rcu_pending tracing to hierarchical RCU rcu: Update RCU tracing documentation for __rcu_pending Paul Fulghum (3): tty: synclink_gt add receive pio mode tty: n_hdlc add buffer flushing synclink_gt: fix transmit race and timeout Paul Mackerras (77): perf_counter: Fix return value from dummy hw_perf_counter_init perf_counter: Fix the cpu_clock software counter perf_counter: Add optional hw_perf_group_sched_in arch function perf_counter: Add dummy perf_counter_print_debug function powerpc/perf_counter: Add perf_counter system call on powerpc powerpc: Provide a way to defer perf counter work until interrupts are enabled powerpc/perf_counter: Add generic support for POWER-family PMU hardware powerpc/perf_counter: Add support for PPC970 family powerpc/perf_counter: Add support for POWER6 perf_counter: Always schedule all software counters in powerpc/perf_counter: Make sure PMU gets enabled properly perf_counter: Add support for pinned and exclusive counter groups perf_counter: Add counter enable/disable ioctls perf_counters: make software counters work as per-cpu counters perf_counters: allow users to count user, kernel and/or hypervisor events perfcounters: fix refcounting bug, take 2 perfcounters: make context switch and migration software counters work again perfcounters/powerpc: Make exclude_kernel bit work on Apple G5 processors perfcounters/powerpc: Add support for POWER5 processors perfcounters: fix a few minor cleanliness issues perfcounters: provide expansion room in the ABI perfcounters/powerpc: fix oops with multiple counters in a group perfcounters/powerpc: add support for POWER5+ processors perfcounters/powerpc: add support for POWER4 processors perf_counter: abstract wakeup flag setting in core to fix powerpc build perf_counter: powerpc: clean up perc_counter_interrupt perf_counter: fix type/event_id layout on big-endian systems perf_counter: add an mmap method to allow userspace to read hardware counters perf_counter tools: remove glib dependency and fix bugs in kerneltop.c perf_counter: update documentation perf_counter: record time running and time enabled for each counter perf_counter: powerpc: only reserve PMU hardware when we need it perf_counter: make it possible for hw_perf_counter_init to return error codes perf_counter tools: optionally scale counter values in perfstat mode perf_counter: fix powerpc build perf_counter: powerpc: set sample enable bit for marked instruction events perf_counter: add MAINTAINERS entry perf_counter: powerpc: add nmi_enter/nmi_exit calls perf_counter: powerpc: allow use of limited-function counters perf_counter: update copyright notice perf_counter: Put whole group on when enabling group leader perf_counter: don't count scheduler ticks as context switches perf_counter: call atomic64_set for counter->count perf_counter: call hw_perf_save_disable/restore around group_sched_in perf_counter: powerpc: use u64 for event codes internally perf_counter: allow arch to supply event misc flags and instruction pointer perf_counter: powerpc: supply more precise information on counter overflow events perf_counter: powerpc: initialize cpuhw pointer before use perf_counter: Dynamically allocate tasks' perf_counter_context struct perf_counter: Optimize context switch between identical inherited contexts perf_counter: powerpc: Implement interrupt throttling perf_counter: Fix race in attaching counters to tasks and exiting perf_counter: Don't swap contexts containing locked mutex perf_counter: Provide functions for locking and pinning the context for a task perf_counter: Allow software counters to count while task is not running perf_counter: Initialize per-cpu context earlier on cpu up perf_counter: Fix cpu migration counter perf_counter: Remove unused prev_state field perf_counter: powerpc: Fix event alternative code generation on POWER5/5+ perf_counter: powerpc: Fix race causing "oops trying to read PMC0" errors perf_counter: powerpc: Use new identifier names in powerpc-specific code perf_counter: Fix lockup with interrupting counters perf_counters: powerpc: Add support for POWER7 processors perf_counter: powerpc: Implement generalized cache events for POWER processors perf_counter: Fix atomic_set vs. atomic64_t type mismatch powerpc: Add compiler memory barrier to mtmsr macro lib: Provide generic atomic64_t implementation powerpc: Use generic atomic64_t implementation on 32-bit processors perf_counter: powerpc: Fix two compile warnings perf_counter: Make set_perf_counter_pending() declaration common perf_counter: powerpc: Enable use of software counters on 32-bit powerpc perf_counter: powerpc: Use unsigned long for register and constraint values perf_counter: powerpc: Change how processor-specific back-ends get selected perf_counter: powerpc: Make powerpc perf_counter code safe for 32-bit kernels perf_counter: powerpc: Add processor back-end for MPC7450 family perf_counter: tools: Makefile tweaks for 64-bit powerpc perf_counter tools: Define and use our own u64, s64 etc. definitions Paul Menzel (3): fbdev: add video modes for resolutions and timings of PAL RGB Documentation/fb/vesafb.txt: fix typo intelfb: fix a bug when changing video timing Paul Mundt (200): sh: sh7724: Add CMT clockevents support. sh: Have SH7724 select ARCH_SHMOBILE. sh: Add a generic defconfig for SH7724 platforms. sh: drop duplicate symbol export on dreamcast and sh7785lcr. sh: sh7785lcr: Update for recent PCI changes. sh: pci: drop duplicate PCIC fixups for SE7780 and SH7785LCR. sh: pci: Kill off unused SH4_PCIC_NO_RESET code. sh: pci: Kill off useless debugging printk() in pci-sh7780 init. sh: pci: Move se7780 INTC fixups out of pci-sh7780.c. sh: pci: Prefer P1SEG over P1SEGADDR for CONFIG_CMD. sh: pci: Set class/sub-class code correctly for SH7780 PCIC. sh: pci: Rework SH7780 host controller detection. sh: pci: Use the proper write size for class/sub-class code. sh: pci: Set pci_cache_line_size on SH7780 via the PCICLS register. sh: pci: Set the I/O port base to the SH7780 I/O window default. sh: pci: Consolidate PCI I/O and mem window definitions for SH7780. sh: pci: Kill off platform-specific multi-window mappings. sh: pci: Consolidate SH7780 PCIC IRQ routing. sh: pci: Start unifying the SH7780 PCIC initialization. Merge branches 'sh/earlytimer' and 'sh/shmobile-r2r-staging' sh: sh7724: Don't default enable the RTC clock. sh: sh7724: Register CMT as an early platform device here too. sh: pci: Drop asm-generic/pci.h, so we can use our own fixups. sh: pci: Split out new-style PCI core. sh: pci: HAVE_PCI_MMAP support. sh: pci: Consolidate pcibios_align_resource() definitions. sh: pci: Kill off unused pcibios_fixup(). sh: pci: Consolidate pci_iomap() and use the generic I/O base. sh: pci: Rework fixed region checks in ioremap(). sh: pci: New-style controller registration. sh: pci: Track io and mem_offset per-channel. sh: pci: Consolidate bus<->resource mapping in pci-lib. sh: pci: Consolidate the remaining common bits. sh: pci: Kill off the now unused hose->io_base. sh: pci: Kill off superfluous lboxre2 pci fixups. sh: pci: Flag the dreamcast BBA as IORESOURCE_PCI_FIXED. sh: pci: Kill off dead references to is_pci_ioaddr and friends. sh: pci: Consolidate pcibios_setup() in pci-lib. sh: pci: Kill off legacy ide quirks. sh: pci: Tidy up the dreamcast PCI support. sh: pci: Convert the SH-5 code over to the new interface. sh: pci: Rename ops-cayman -> fixups-cayman. sh: pci: Rewrite SH7751 PCI support to follow SH7780. sh: pci: Rename SH7751 platform ops files to fixups. sh: pci: Consolidate lboxre2 and r2d IRQ fixups. sh: pci: Convert dreamcast to new-style interface. sh: pci: Move the se7751 fixups in to arch/sh/drivers/pci/. sh: pci: Kill off the last remnants of the now unused pci-auto code. sh: pci: Roll pci-lib in to pci-new. sh: pci: Rename pci-new.c to pci.c. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 sh: pci: Fix up the build for CONFIG_PCI=n. Merge branches 'sh/stable-updates' and 'sh/pci-rework' sh: update defconfigs for PCI changes. sh: select GENERIC_TIME for new CMT driver. sh: rtc-generic support. sh: register the rtc-generic platform device properly. Merge branch 'timers/clocksource' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip sh: Consolidate MTU2/CMT/TMU timer platform data. clocksource: sh_mtu2/cmt_register() should be static. sh: select both GENERIC_TIME and GENERIC_CLOCKEVENTS. sh: Kill off the now unused ARCH_USES_GETTIMEOFFSET code. sh: Move dummy clockevents broadcast timer to its new home. sh: Flag IRQSTACKS as BROKEN for now. sh: Handle shm_align_mask also for HAVE_ARCH_UNMAPPED_AREA_TOPDOWN. sh: sh64 still needs ARCH_USES_GETTIMEOFFSET temporarily. sh: Integrate the SH-5 onchip_remap() more coherently. sh: Kill off unused SH-5 irq_describe cruft. sh: Enable new TMU driver support for all SH-3 and SH-4 CPUs. sh: Move out rtc-sh registration from time_64.c to setup-sh5.c sh: Finish the sh64 migration off of ARCH_USES_GETTIMEOFFSET. sh: Rename arch/sh/kernel/time_32.c to arch/sh/kernel/time.c. sh: Wire up GENERIC_CMOS_UPDATE for the platforms that need it. sh: Kill off dead handle_timer_tick() code. sh: Kill off dead timer sysclass pm hooks. sh: mach-sh03: Give the sh03 rtc its own spinlock. sh: Kill off the global rtc_lock with extreme prejudice. sh: Kill off sh64's hand-rolled syscall tracer. sh: Kill off unused sh64 debug code. sh: Move out cayman-specific panic handler code to its own file. sh: Drop dead rules from arch/sh/kernel/Makefile_64. sh: Always select RTC_LIB, not just for SUPERH32. sh: Kill off extra cflags Kconfig entry. sh: Always fixup unaligned userspace accesses on sh64. sh: TMU platform data for SH7786. sh: TMU platform data for SH-X3 proto CPU. sh: Kill off the GENERIC_CALIBRATE_DELAY ifndef. sh: Add clock id to sh-sci platform data on SH-Mobile CPUs. serial: sh-sci: Fix up section mismatch in error path. sh: Fix up the sh64 earlyprintk build. sh: Cleanup irqflags size mismatch on SH-5 build. sh: Provide __read_{read,write}sl() definitions for sh64. sh: Rename opcode_t to insn_size_t. sh: Provide an __sdivsi3_2 export for sh64. sh: Fix up SHmedia module ELF relocations. sh: Integrate sh64 bits in vmlinux_32.lds.S. sh: Move the unified linker script in place, kill off old _64 one. sh: Tidy up the ldscript output format specifier. sh: Fix up the sh64 zImage build. sh: Provide a tighter BOOT_LINK_OFFSET definition for the Cayman board. sh: Provide a BITS definition, use it in the arch/sh/boot/ Makefiles. sh: Merge the split arch/sh/boot/compressed/ Makefiles. sh: Consolidate the boot link and entry offset definitions. sh: Hook up cc-cross-prefix support. sh: Fix up R0 dependence in __arch_swab16/32. sh: Fix up typo in arch/sh/kernel/vmlinux.lds.S sh: Account for INITIAL_JIFFIES when using jiffies clocksource. sh: clkfwk: Make recalc return an unsigned long. sh: clkfwk: Add a followparent_recalc() helper. sh: clkfwk: refactor rate propagation. sh: clkfwk: Consolidate the ALWAYS_ENABLED / NEEDS_INIT mess. sh: clkfwk: Convert SH-Mobile CPUs to use CLK_ENABLE_ON_INIT. sh: clkfwk: Fix up the clk_enable() error path. sh: clkfwk: Improve the generic clk_set_parent() implementation. sh: clkfwk: Tidy up on-chip clock registration and rate propagation. sh: clkfwk: Kill off clk_recalc_rate(). sh: clkfwk: Wire up clk_get_sys() support. sh: clkfwk: Handle clk_get_sys() returning an ERR_PTR. sh: clkfwk: Use arch_clk_init() for on-chip clock registration. sh: Kill off the remnants of the old timer code. Merge branch 'master' into sh/clkfwk sh: clkfwk: module_clk -> peripheral_clk rename. sh: clkfwk: Handle NULL clkops for root clocks. sh: clkfwk: Provide a generic clk_set_rate_ex() path for root clocks. sh: clkfwk: Rework legacy CPG clock handling. sh: clkfwk: Update SH7785 for refactored clock framework. sh: clkfwk: rate table construction and rounding for SH7785. sh: clkfwk: Map tree hierarchy in debugfs. sh: clkfwk: Add MSTP bits to SH7785 clock framework. sh: Provide FORCE_MAX_ZONEORDER. sh: hd64461: Fix up I/O base register offsets. sh: mach-hp6xx: Fix up the hp6xx build for hd64461 changes. sh: irq: Rework the SR.IMASK bitmap handling. sh: irq: Convert from irq_desc[] to irq_to_desc(). sh: irq: Teach ipr and intc about dynamically allocating irq_descs. sh: irq: Provide an arch_probe_nr_irqs() that wraps the machvec def. Merge branches 'sh/stable-updates' and 'sh/sparseirq' sh: Wrap irq_to_desc_alloc_cpu() around CONFIG_SPARSE_IRQ temporarily. sh: Add a NR_IRQS_LEGACY for external IRQ0-7. sh: clkfwk: Make clock-cpg usable for non-legacy platforms. sh: Prefer slab_is_available() over after_bootmem. sparseirq: Allow early irq_desc allocation sh: irq: Fix up imask build warnings. sh: Record ms7724se in mach-types. sh: Add a KBUILD_DEFCONFIG for sh64. sh: pci-sh7751: Initialize io_map_base in controller definition. sh: pci: Disable MWI and make pci_dma_burst_advice() a bit more accurate. Merge branch 'sh/clkfwk' sh: pci-sh7780: Fix up for PCI_DISABLE_MWI changes. sh: Tidy up the optional L2 probing, wire it up for SH7786. sh: Tidy up SH-4A boot_cpu_data.flags probing. nommu: Provide mmap_min_addr definition. sh: plug vsyscall dir in to archclean. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 sh: Fix sys_pwritev() syscall table entry for sh32. sh: Wire up sys_rt_tgsigqueueinfo. sh: Tie sparseirq in to Kconfig. Merge branch 'sh/ftrace' of git://github.com/mfleming/linux-2.6 sh: Wire up sys_perf_counter_open. sh: intc: alloc_bootmem() -> kzalloc() conversion. sh: Bump the earlytimer bits back to time_init(). sh: Use generic sched_clock(). sh: Bump the earlytimer probe devices up. clocksource: Drop unused irqaction.mask from SH drivers. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 sh: Convert to asm-generic/current.h. sh: Convert to asm-generic/dma.h. sh: Convert to asm-generic/posix_types.h. sh: Convert to asm-generic/termbits.h and termios.h. sh: Convert ipc/shm bits to their asm-generic versions. sh: Tidy up duplication in irq/swab/timex.h. sh: Conver to asm-generic/mmu_context.h. sh: Convert to asm-generic/module.h. sh: Convert to asm-generic/unaligned.h. sh: Convert to asm-generic/scatterlist.h. sh: Convert to asm-generic/types.h. sh: Convert to asm-generic/signal.h. sh: Switch to asm-generic versions for identical headers. sh: Derive COMMAND_LINE_SIZE from asm-generic/setup.h. sh: Convert sh64 to use the generic checksum code. serial: sh-sci: Move over to dev_pm_ops. sh: urquell: Add system FPGA mode pin support. sh: Set EARLY_SCIF_CONSOLE_PORT sanely for SH7786. sh: pci: Allow register_pci_controller() to handle overlapping regions. sh: pci: SH7786 PCI ops. wusb: hwa-hc: Drop unused pci_suspend/resume hooks. USB: xhci depends on PCI. sh: Use generic atomic64_t implementation. sh: Generic HAVE_PERF_COUNTER support. Merge branches 'sh/pci-express-integration', 'sh/rsk-updates', 'sh/platform-updates' and 'sh/perf_counter' sh: pci: Initial PCI-Express support for SH7786 Urquell board. sh: defconfig updates. sh: Enable soc-camera in ap325rxa/migor/se7724 defconfigs. sh: Provide cpu_idle_wait() to fix up cpuidle/SMP build. sh: Use local TLB flush in set_pte_phys(). sh: Wire up the uncached fixmap on sh64 as well. sh: SH7786 SMP support. sh: Fix up more dma-mapping fallout. asm-generic: add dummy pgprot_noncached() sh: Fix up HAVE_PERF_COUNTERS typo. Paul Turner (1): sched: remove redundant hierarchy walk in check_preempt_wakeup Paul Walmsley (18): OMAP3 SRAM: mark OCM RAM as Non-cacheable Normal memory OMAP3 SRAM: add ARM barriers to omap3_sram_configure_core_dpll OMAP3 clock: add interconnect barriers to CORE DPLL M2 change OMAP3 SRAM: clear the SDRC PWRENA bit during SDRC frequency change OMAP3 SDRC: initialize SDRC_POWER at boot OMAP3 SRAM: renumber registers to make space for argument passing OMAP3 clock: only unlock SDRC DLL if SDRC clk < 83MHz OMAP3 clock: use pr_debug() rather than pr_info() in some clock change code OMAP2xxx clock: rename clk_init_one() to clk_preinit() ARM: OMAP3: SDRC: add timing data for Micron MT46H32M32LF-6, v2 ARM: OMAP3: SDRC: add timing data for Qimonda HYB18M512160AF-6 OMAP3 clock: remove wait for DPLL3 M2 clock to stabilize OMAP3 clock: initialize SDRC timings at kernel start OMAP3 clock: add a short delay when lowering CORE clk rate OMAP3 clock/SDRC: program SDRC_MR register during SDRC clock change OMAP3 SRAM: add more comments on the SRAM code OMAP3 SRAM: convert SRAM code to use macros rather than magic numbers OMAP3 SDRC: set FIXEDDELAY when disabling SDRC DLL Paulius Zaleckas (3): wimax: Add netlink interface to get device state hso: convert dev_alloc_skb() to netdev_alloc_skb() trivial: mtd: fix Kconfig comment about 'armflash' Pavel Machek (5): SubmittingPatches: fix typo [ARM] pxa/sharpsl_pm: zaurus needs generic pxa suspend/resume routines trivial: Fix Pavel's address in MAINTAINERS trivial: SubmittingPatches: fix typo trivial: Kconfig: .ko is normally not included in module names Pavel Roskin (3): ath5k: fix scanning in AR2424 cfg80211: fix compile error with CONFIG_CFG80211_DEBUGFS intelfb: fix spelling of "CLOCK" Pekka Enberg (67): x86: move x86_quirk_pre_intr_init() to irqinit_32.c x86: move init_ISA_irqs() in irqinit_32.c to match ordering in irqinit_64.c x86: introduce smp_intr_init() in irqinit_32.c x86: introduce apic_intr_init() in irqinit_32.c x86: use identical loop constructs in 32-bit and 64-bit native_init_IRQ() x86: unify smp_intr_init() in irqinit_{32,64}.h x86: unify init_ISA_irqs() in irqinit_{32,64}.c x86: unify native_init_IRQ() in irqinit_{32,64}.c x86: unify trivial differences in irqinit_{32,64}.c x86: unify apic_intr_init() in irqinit_{32,64}.c x86: unify irqinit_{32,64}.c into irqinit.c x86: define IA32_SYSCALL_VECTOR on 32-bit to reduce ifdefs x86: remove some ifdefs from native_init_IRQ() x86: unify noexec handling x86: move max_pfn_mapped and max_low_pfn_mapped to setup.c x86: move per-cpu mmu_gathers to mm/init.c x86: unify 64-bit UMA and NUMA paging_init() x86: use sparse_memory_present_with_active_regions() on UMA kmemtrace: fix kernel parameter documentation slab: document kzfree() zeroing behavior perf report: Add support for profiling JIT generated code SLUB: Out-of-memory diagnostics bootmem: use slab if bootmem is no longer available bootmem: fix slab fallback on numa slab: setup allocators earlier in the boot sequence vmalloc: use kzalloc() instead of alloc_bootmem() init: introduce mm_init() sched: use kzalloc() instead of the bootmem allocator vt: use kzalloc() instead of the bootmem allocator sched: use alloc_cpumask_var() instead of alloc_bootmem_cpumask_var() sched: use slab in cpupri_init() irq: use kcalloc() instead of the bootmem allocator vgacon: use slab allocator instead of the bootmem allocator slab: fix gfp flag in setup_cpu_cache() slab,slub: don't enable interrupts during early boot slab: setup cpu caches later on when interrupts are enabled slab: move struct kmem_cache to headers kmemcheck: add Vegard and Pekka to MAINTAINERS SLUB: Don't print out OOM warning for __GFP_NOFAIL kmemcheck: remove forward declarations from error.c kmemcheck: make initialization message less confusing kmemcheck: remove multiple ifdef'd definitions of the same global variable kmemcheck: move 64-bit ifdef out of kmemcheck_opcode_decode() kmemcheck: use kmemcheck_pte_lookup() instead of open-coding it slab: add hooks for kmemcheck kmemcheck: make kconfig accessible for other architectures Merge branches 'slab/documentation', 'slab/fixes', 'slob/cleanups' and 'slub/fixes' into for-linus Merge branch 'slub/earlyboot' into for-linus Staging: w35und: remove unused code from wbsoft_configure_filter() Staging: w35und: replace switch error handling with gotos in wb35_hw_init() Staging: w35und: move hal_init_hardware() and hal_halt() int wbusb.c Staging: w35und: simplify error handling in wb35_hw_init() Staging: w35und: simplify hal_init_hardware() error handling Staging: w35und: more simplify hal_init_hardware() error handling Staging: w35und: simplify hal_init_hardware() and hal_halt() Staging: w35und: clean up comments in wbusb.c Staging: w35und: inline hal_set_phy_type() to wb35_hw_init() Staging: w35und: reformat wbusb.c Staging: w35und: remove MODULE_AUTHOR Staging: w35und: make led lookup tables static Staging: w35und: reformat wbhal.c Staging: w35und: merge wbhal.c to wbusb.c Staging: w35und: inline hal_set_rf_power() to mto.c Staging: w35und: merge rest of wbhal.c to phy_calibration.c [S390] s390: remove DEBUG_MALLOC eeepc-laptop: enable camera by default SLUB: Don't pass __GFP_FAIL for the initial allocation Pete Zaitcev (1): USB: janitor storage initializers Peter 'p2' De Schrijver (1): OMAP3: PM: Ensure MUSB block can idle when driver not loaded Peter Feuerer (1): acerhdf: Acer Aspire One fan control Peter Griffin (2): sh: Add ptrace support for NOMMU debugging sh: Add UBC trap vector for SH2A Peter Holik (2): export usbnet_get_ethernet_addr from usbnet and fixed cdc_ether.c usb driver for intellon int51x1 based PLC like devolo dlan duo Peter Huewe (2): trivial: pci hotplug: adding __init/__exit macros to sgi_hotplug RDMA: Add __init/__exit macros to addr.c and cma.c Peter Korsgaard (9): dm9601: trivial comment fixes smsc95xx: strip ethernet fcs (crc) on receive path mtd: nand: s3c2410_nand_setrate(): use correct macros for 2412/2440 mtd/nand: s3c6400 support for s3c2410 driver kconfig: handle comment entries within choice/endchoice powerpc/mpc83xx: Fix usb mux setup for mpc834x [ARM] S3C64XX: fix HCLK gate defines [ARM] S3C64XX: clock.c: fix typo in usb-host clock ctrlbit serial: samsung.c: mark s3c24xx_serial_remove as __devexit Peter Ma (2): avr32: Change Atmel ATNGW100 config to add choice of add-on board avr32: Add support for Mediama RMTx add-on board for ATNGW100 Peter Oberparleiter (4): kernel: constructor support seq_file: add function to write binary data gcov: add gcov profiling infrastructure gcov: enable GCOV_PROFILE_ALL for x86_64 Peter P Waskiewicz Jr (21): ixgbe: Update get_physical_layer() calls, plus a version bump ixgbe: Set Priority Flow Control low water threshhold for DCB ixgbe: Allow link flow control in DCB mode for 82599 adapters ixgbe: When in DCB mode with PFC enabled, show LFC is disabled ixgbe: Don't reset the hardware when switching between LFC and PFC ixgbe: Add generic XAUI support to 82599 ixgbe: Increase the driver version number ixgbe: Add semaphore access for PHY initialization for 82599 ixgbe: Change Direct Attach Twinax cable detection for SFP+ NICs ixgbe: Remove device ID 0x10d8 ixgbe: Fix build warning ixgbe: Enable ACPI WoL capabilities for 82599 ixgbe: Change the 82599 PHY DSP restart logic ixgbe: Add ethtool offline test support ixgbe: Harden the 82599 multispeed fiber autotry mechanism ixgbe: Add a second feature flags variable, move HW RSC capability there ixgbe: Add hardware defines for Flow Director for 82599 ixgbe: Add Flow Director init and modify functions for 82599 ixgbe: Enable Flow Director hashing in 82599 ixgbe: Add FW detection and warning for 82599 SFP+ adapters ixgbe: Increase the driver version number Peter Rajnoha (1): dm: sysfs add suspended attribute Peter Ujfalusi (20): ASoC: tlv320aic23: add DSP_A format support ASoC: OMAP: Use single-phase for DSP mode ASoC: OMAP: Add DSP_A mode support for mcbsp ASoC: TWL4030: Fix for the constraint handling ASoC: OMAP: Add 4 channel support to mcbsp ASoC: TWL4030: Add 4 channel TDM support ASoC: Beagle: Add support for 4 channel ASoC: TWL4030: Add VIBRA output ASoC: TWL4030: Fix typo in twl4030_codec_mute function ASoC: TWL4030: Fix Analog capture path for AUXR ASoC: TWL4030: Change DAPM routings and controls for DACs and PGAs ASoC: TWL4030: Move the Headset pop-attenuation code to PGA event ASoC: TWL4030: Add support for platform dependent configuration ASoC: SDP4030: Use the twl4030_setup_data for headset pop-removal ASoC: TWL4030: Differentiate the playback streams ASoC: TWL4030: Handsfree pop removal redesign ASoC: TWL4030: Add shadow register ASoC: TWL4030: HandsfreeL/R mute DAPM switch ASoC: TWL4030: Use reg_cache in twl4030_init_chip ASoC: TWL4030: Check the interface format for 4 channel mode Peter Zijlstra (211): perfcounters: IRQ and NMI support on AMD CPUs perfcounters: IRQ and NMI support on AMD CPUs, fix x86: perf_counter cleanup perf_counter: x86: fix 32-bit irq_period assumption perf_counter: use list_move_tail() perf_counter: add comment to barrier perf_counter: x86: use ULL postfix for 64bit constants perf_counter: software counter event infrastructure perf_counter: provide pagefault software events perf_counter: provide major/minor page fault software events perf_counter: hrtimer based sampling for software time events perf_counter: add an event_list perf_counter: fix hrtimer sampling perf_counter: fix uninitialized usage of event_list perf_counter: generic context switch event perf_counter: fix up counter free paths perf_counter: hook up the tracepoint events perf_counter: revamp syscall input ABI perf_counter: unify irq output code perf_counter: remove the event config bitfields perf_counter: avoid recursion perf_counter: new output ABI - part 1 perf_counter tools: update to new syscall ABI perf_counter tools: use mmap() output perf_counter tools: remove glib dependency and fix bugs in kerneltop.c, fix poll() perf_counter: fix perf_poll() perf_counter: more elaborate write API perf_counter: output objects perf_counter: sanity check on the output API perf_counter: optionally provide the pid/tid of the sampled task perf_counter: kerneltop: mmap_pages argument perf_counter: kerneltop: output event support perf_counter: allow and require one-page mmap on counting counters perf_counter: unify and fix delayed counter wakeup perf_counter: fix update_userpage() perf_counter: kerneltop: simplify data_head read perf_counter: executable mmap() information perf_counter: kerneltop: parse the mmap data stream perf_counter: x86: proper error propagation for the x86 hw_perf_counter_init() perf_counter: small cleanup of the output routines perf_counter: re-arrange the perf_event_type perf_counter tools: kerneltop: update event_types perf_counter: provide generic callchain bits perf_counter: x86: callchain support perf_counter: pmc arbitration perf_counter: move the event overflow output bits to record_type perf_counter: per event wakeups perf_counter: kerneltop: update to new ABI perf_counter: add more context information perf_counter: update mmap() counter read perf_counter: update mmap() counter read, take 2 perf_counter: add more context information perf_counter: SIGIO support perf_counter: generalize pending infrastructure perf_counter: x86: self-IPI for pending work perf_counter: theres more to overflow than writing events perf_counter: fix the mlock accounting perf_counter: PERF_RECORD_TIME perf_counter: counter overflow limit perf_counter: comment the perf_event_type stuff perf_counter: change event definition perf_counter: rework context time perf_counter: rework the task clock software counter perf_counter: remove rq->lock usage perf_counter: minimize context time updates perf_counter: fix NMI race in task clock perf_counter: provide misc bits in the event header perf_counter: use misc field to widen type perf_counter: kerneltop: keep up with ABI changes perf_counter: add some comments perf_counter: track task-comm data perf_counter: some simple userspace profiling perf_counter: move PERF_RECORD_TIME perf_counter: allow for data addresses to be recorded perf_counter: optimize mmap/comm tracking perf_counter: sysctl for system wide perf counters perf_counter: log full path names sched: remove extra call overhead for schedule() perf_counter tools: fix Documentation/perf_counter build error perf_counter: fix race in perf_output_* perf_counter: fix nmi-watchdog interaction perf_counter: tool: handle 0-length data files perf_counter: documentation update perf_counter: x86: fixup nmi_watchdog vs perf_counter boo-boo sched: rt: document the risk of small values in the bandwidth settings perf_counter: uncouple data_head updates from wakeups perf_counter: add ioctl(PERF_COUNTER_IOC_RESET) perf_counter: provide an mlock threshold perf_counter: fix the output lock perf_counter: inheritable sample counters perf_counter: tools: update the tools to support process and inherited counters perf_counter: optimize perf_counter_task_tick() perf_counter: rework ioctl()s perf_counter: add PERF_RECORD_CONFIG perf_counter: add PERF_RECORD_CPU perf_counter: fix print debug irq disable perf_counter: x86: More accurate counter update perf_counter: x86: Allow unpriviliged use of NMIs perf_counter: Fix perf_output_copy() WARN to account for overflow perf_counter: x86: Fix up the amd NMI/INT throttle perf_counter: Rework the perf counter disable/enable perf_counter: x86: Robustify interrupt handling perf_counter: remove perf_disable/enable exports perf_counter: per user mlock gift perf_counter: frequency based adaptive irq_period perf top: update to use the new freq interface perf_counter: frequency based adaptive irq_period, 32-bit fix perf_counter: Fix inheritance cleanup code perf_counter: Fix counter inheritance perf_counter: Solve the rotate_ctx vs inherit race differently perf_counter: Log irq_period changes perf_counter: Optimize disable of time based sw counters perf_counter: Optimize sched in/out of counters perf_counter: Fix dynamic irq_period logging perf_counter: Sanitize counter->mutex perf_counter: Sanitize context locking perf_counter: Fix userspace build perf_counter: Simplify context cleanup perf_counter: Change pctrl() behaviour perf_counter: Remove perf_counter_context::nr_enabled perf_counter: Fix perf-$cmd invokation perf_counter: Remove unused ABI bits perf_counter: Make pctrl() affect inherited counters too perf_counter: Propagate inheritance failures down the fork() path perf_counter: Fix PERF_COUNTER_CONTEXT_SWITCHES for cpu counters perf_counter: x86: Expose INV and EDGE bits perf_counter: x86: Remove interrupt throttle perf_counter: Generic per counter interrupt throttle perf report: Fix segfault on unknown symbols perf report: Fix ELF symbol parsing perf report: More robust error handling perf_counter: tools: /usr/lib/debug%s.debug support perf_counter: tools: report: Add vmlinux support perf_counter: tools: report: Rework histogram code perf_counter: tools: report: Dynamic sort/print bits pref_counter: tools: report: Add --sort option perf_counter: tools: report: Add comm sorting pref_counter: tools: report: Add dso sorting perf_counter tools: report: Implement header output for --sort variants perf_counter: Fix COMM and MMAP events for cpu wide counters perf_counter: Clean up task_ctx vs interrupts perf_counter: Ammend cleanup in fork() fail perf_counter: Use PID namespaces properly perf_counter: tools: Expand the COMM,MMAP event synthesizer perf_counter: tools: Better handle existing data files perf_counter tools: Remove the last nmi bits x86: Fix atomic_long_xchg() on 64bit perf_counter: Add unique counter id perf_counter: Rename various fields perf_counter: Remove the last nmi/irq bits perf_counter: x86: Emulate longer sample periods perf_counter: Change data head from u32 to u64 perf_counter: Add ioctl for changing the sample period/frequency perf_counter: Rename perf_counter_hw_event => perf_counter_attr perf_counter tools: Fix up the ABI shakeup perf report: Separate out idle threads perf_counter: Add a comm hook for pure fork()s perf record: Use long arg for counter period perf report: Fix comm sorting perf_counter: Fix race in counter initialization perf report: Simplify symbol output perf report: Add consistent spacing rules perf_counter: Add fork event perf_counter: Remove munmap stuff perf_counter tools: Use fork and remove munmap events x86: Set context.vdso before installing the mapping perf_counter: Generate mmap events for install_special_mapping() perf report: Deal with maps perf_counter: Change PERF_SAMPLE_CONFIG into PERF_SAMPLE_ID perf_counter: Add PERF_SAMPLE_PERIOD perf_counter: Fix frequency adjustment for < HZ perf_counter: Add mmap event hooks to mprotect() ring-buffer: pass in lockdep class key for reader_lock perf_counter: More aggressive frequency adjustment perf_counter tools: Small frequency related fixes perf_counter tools: Propagate signals properly perf_counter: Annotate exit ctx recursion perf_counter tools: Normalize data using per sample period data perf_counter: Introduce struct for sample data perf_counter: Accurate period data perf_counter: More paranoia settings perf_counter: Rename perf_counter_limit sysctl perf_counter: Rename enums perf_counter: Standardize event names perf_counter: Rename L2 to LL cache perf_counter: Add counter->id to the throttle event perf_counter: PERF_TYPE_HW_CACHE is a hardware counter too perf_counter: Remove PERF_TYPE_RAW special casing perf record: Explicity program a default counter perf_counter: Add forward/backward attribute ABI compatibility perf_counter: Fix ctx->mutex vs counter->mutex inversion x86, mm: Add __get_user_pages_fast() x86: Add NMI types for kmap_atomic perf_counter: x86: Fix call-chain support to use NMI-safe methods x86: Add NMI types for kmap_atomic, fix page allocator: calculate the alloc_flags for allocation only once sched, x86: Fix cpufreq + sched_clock() TSC scaling perf report: Add --sort --call <$regex> perf_counter: x86: Set the period in the intel overflow handler perf_counter tools: Replace isprint() with issane() perf_counter tools: Add and use isprint() fs: Provide empty .set_page_dirty() aop for anon inodes perf_counter: Add event overlow handling perf_counter tools: Handle lost events perf_counter: Make callchain samples extensible perf_counter: Update userspace callchain sampling uses perf_counter tools: Add a data file header perf_counter: Simplify and fix task migration counting perf_counter: Close race in perf_lock_task_context() perf_counter: Push perf_sample_data through the swcounter code lockdep: Select frame pointers on x86 Petr Tesarik (1): x86: move rdtsc_barrier() into the TSC vread method Philipp Reisner (1): drbd: add major number to major.h Philipp Zabel (24): [ARM] pxa: allow IRQ_BOARD_END to be customized and make zylonite to use it [ARM] pxa/magician: use I2C fast mode [ARM] pxa/magician: use ARRAY_AND_SIZE for platform_add_devices [ARM] pxa: add basic support for HP iPAQ hx4700 PDAs [ARM] pxa: magician_defconfig enable hx4700, asic3 and w100fb MAINTAINERS: add a maintainer for iPAQ hx4700 MFD,mmc: tmio_mmc: make HCLK configurable tmio_mmc: add bus_shift support tmio_mmc: don't use set_irq_type tmio_mmc: correct probe return value for num_resources != 3 tmio_mmc: map SD control registers after enabling the MFD cell tmio_mmc: allow compilation for ASIC3 ASoC: magician: fix PXA SSP clock polarity regulator/max1586: support increased V3 voltage range regulator/max1586: fix V3 gain calculation integer overflow [ARM] pxa/hx4700: add Maxim 1587A voltage regulator [ARM] pxa/mioa701: add V3 gain configuration for Maxim 1586 voltage regulator mfd: asic3: add asic3_set_register common operation mfd: asic3: add clock handling for MFD cells mfd: add ASIC3 IRQ numbers mfd: asic3: use resource_size macro instead of local variable mfd: asic3: remove SD/SDIO controller register definitions mfd: asic3: enable DS1WM cell mfd: asic3: enable SD/SDIO cell Philippe Gerum (5): Blackfin: merge Philippe's recent ipipe patch Blackfin: convert interrupt pipeline to irqflags Blackfin: allow CONFIG_TICKSOURCE_GPTMR0 with interrupt pipeline Blackfin: remove obsolete mcount support from I-pipe code Blackfin: update I-pipe patch level Pierre Ossman (6): sdhci: avoid changing voltage needlessly cb710: fix printk format string cb710: add missing parenthesis cb710: handle DEBUG define in Makefile mxcmmc: remove frequency workaround sdhci: remove needless double parenthesis Pierre Willenbrock (1): agp/intel: Make intel_i965_mask_memory use dma_addr_t for physical addresses Pieter Van Schaik (1): V4L/DVB (11735): Enables the Winfast TV2000 XP Global TV IR Ping Cheng (2): Input: wacom - add support for Intuos4 tablets Input: wacom - clear Intuos4 wheel data when finger leaves proximity Prabhanjan Sarnaik (1): mv643xx_eth: fix unicast filter programming in promiscuous mode Prarit Bhargava (1): x86: nmi: Add Intel processor 0x6f4 to NMI perfctr1 workaround Rabeeh Khoury (2): [ARM] Kirkwood: CPU idle driver [ARM] Kirkwood: clock gating for unused peripherals Rafael J. Wysocki (10): NET/r8169: Rework suspend and resume PCI PM: Follow PCI_PM_CTRL_NO_SOFT_RESET during transitions from D3 PM: Warn if interrupts are enabled during suspend-resume of sysdevs PM/Suspend: Do not shrink memory before suspend PM/Hibernate: Move memory shrinking to snapshot.c (rev. 2) PM: Separate suspend to RAM functionality from core PM/Hibernate: Rename disk.c to hibernate.c PCI PM: Fix handling of devices without PM support by pci_target_state() mm, PM/Freezer: Disable OOM killer when tasks are frozen Net / e100: Fix suspend of devices that cannot be power managed Rahul Iyer (1): nfs41: Get the rpc_xprt * from the rpc_rqst instead of the rpc_clnt. Rainer Weikusat (1): ide-cd: prevent null pointer deref via cdrom_newpc_intr Rakib Mullick (1): mfd: Mark clocks_init as non-init in twl4030-core.c Ralf Baechle (12): MIPS: Fix typo resulting in far too long ndelay times. MIPS: SMTC: Fix formatting difference to linux-mips.org code MIPS: SB1250: Sort out merge mistake. MIPS: ioctl.h: Cleanup. MIPS: bug.h Build fix - include . MIPS: Build fix - include into all smp_processor_id() users. MIPS: Hibernation: Remove SMP TLB and cacheflushing code. MIPS: MIPSsim: Fix build error if MSC01E_INT_BASE is undefined. MIPS: Sibyte: Fix build error if CONFIG_SERIAL_SB1250_DUART is undefined. MIPS: Add arch generic CPU hotplug MIPS: SMP: Allow suspend and hibernation if CPU hotplug is available MIPS: Cavium: Add CPU hotplugging code. Rami Rosen (8): ipv4: remove unused member in fib_table. ipv4: remove unused macro (FIB_RES_RESET) from ip_fib.h. ipv4: remove an unused parameter from configure method of fib_rules_ops. ipv4: cleanup - remove two unused parameters from fib_semantic_match(). ipv4: cleanup: remove unnecessary include. net: Remove unused parameter from fill method in fib_rules_ops. iwlwifi: avoid build warning in iwl-core. ipv4: remove ip_mc_drop_socket() declaration from af_inet.c. Randy Dunlap (30): nfsd: use C99 struct initializers lockd: fix FILE_LOCKING=n build error [SCSI] fcoe, libfc: fix function declarations to be ANSI-compliant iwmc3200wifi: fix printk format menu: fix embedded menu presentation kernel-doc: cleanup perl script block: fix kernel-doc in recent block/ changes kmemcheck: include module.h to prevent warnings [SCSI] cnic: fix undefined reference to `ip6_route_output' ieee802154: fix kconfig bool/tristate muckup x86: atomic_32.h: Fix kernel-doc warnings genirq, irq.h: Fix kernel-doc warnings fusion: fix recent kernel-doc problems [SCSI] qla2xxx: fix printk format warnings USB: composite.h: mark private struct members as private: USB: usb.h: change private: kernel-doc for new format requirement V4L/DVB (11756): soc_camera: depends on I2C V4L/DVB (11758): 2: handle unregister for non-I2C builds V4L/DVB (11881): one kconfig controls them all V4L/DVB (11936): Fix v4l2-device usage of i2c_unregister_device() kmap_types: make most arches use generic header file skbuff.h: fix skb_dst kernel-doc phy_device: fix parameter name in kernel-doc cgroups: make messages more readable Fix kernel-doc parameter name typo in blk-settings.c: Staging: comedi: uses udelay, needs delay.h Staging: vt6655: uses pci functions, should depend on PCI kernel-doc: ignore kmemcheck_bitfield_begin/end kernel-doc: fix param matching for array params cnic: add NETDEV_1000 and NETDEVICES to Kconfig select Raphael Doursenaud (1): ALSA: hdsp: allow firmware loading from inside the kernel Reinette Chatre (6): iwlwifi: change check triggering device restart after rfkill change iwlagn: disable PS support for iwlagn iwlwifi: more descriptive unsupported hardware message iwlwifi: fix merge error iwlwifi: fix otp access init iwlwifi: fix comment describing disable_11n Remis Lima Baima (1): x86: added 'ifndef _ASM_X86_IOMAP_H' to iomap.h Ricardo Labiaga (21): nfs41: Add Kconfig symbols for NFSv4.1 nfs41: Add ability to read RPC call direction on TCP stream. nfs41: Process the RPC call direction nfs41: client callback structures nfs41: Initialize new rpc_xprt callback related fields nfs41: New backchannel helper routines nfs41: New include/linux/sunrpc/bc_xprt.h nfs41: New xs_tcp_read_data() nfs41: Add backchannel processing support to RPC state machine nfs41: Backchannel callback service helper routines nfs41: Refactor svc_process() nfs41: Backchannel bc_svc_process() nfs41: Implement NFSv4.1 callback service process. nfs41: Rename rq_received to rq_reply_bytes_recvd nfs41: Backchannel: update cb_sequence args and results nfs41: Backchannel: Refactor nfs4_reset_slot_table() nfs41: Backchannel: Refactor nfs4_init_slot_table() nfs41: Backchannel: Add a backchannel slot table to the session nfs41: Backchannel: New find_client_with_session() nfs41: Backchannel: CB_SEQUENCE validation nfs41: sunrpc: xprt_alloc_bc_request() should not use spin_lock_bh() Riccardo Ghetta (4): sis190: fix for x86_64 (bug 11509) sis190: better message on unknown PHY sis190: add new phy found on asus F5Sr laptop sis190: fix gigabit negotiation Richard Genoud (4): Remove duplicate slow protocol define in bond_3ad.h Staging: rspiusb: clean rspiusb code Staging: rspiusb.c: break the huge piusb_ioctl function into several ones Staging: rspiusb: duplicate code in pixis_io Richard Kennedy (1): mm: exit.c reorder wait_opts to remove padding on 64 bit builds Richard Laager (1): USB: Identify Novatel MC760 in option driver Richard Ršöjfors (1): netdev: Added KS8842 driver Richard Röjfors (4): serial: Added Timberdale UART driver i2c-ocores: Can add I2C devices to the bus sdhci: platform driver for SDHCI timbuart: Fix for tx_empty Rik van Riel (2): x86: 46 bit physical address support on 64 bits vmscan: evict use-once pages first Risto Suominen (1): de2104x: support for systems lacking cache coherence Robert Hancock (1): sata_sil: enable 32-bit PIO Robert Jarzmik (8): [ARM] pxa: add udc support for pxa3xx [ARM] pxa: add vcc_core regulation for cpufreq on pxa2xx Maxim 1586 regulator driver USB: pxa27x_udc: compatibility with pxa320 SoC USB: pxa27x_udc: single-thread setup requests [ARM] pxa/mioa701: add Maxim 1586 voltage regulator MAINTAINERS: add entry for Mitac Mio A701 board V4L/DVB (11613): pxa_camera: Documentation of the FSM Robert Jennings (3): powerpc/pseries: CMO unused page hinting [SCSI] ibmvscsi: Add specific timeouts for operations [SCSI] ibmvscsi: Enable fast fail feature Robert Krakora (2): V4L/DVB (11896): em28xx: Fix for Slow Memory Leak V4L/DVB (12002): uvc: Fix for no return value check of uvc_ctrl_set() which calls mutex_lock_interruptible() Robert Love (4): fcoe: Add runtime debug logging with module parameter debug_logging libfcoe: Add runtime debugging with module param debug_logging libfc: Add runtime debugging with debug_logging module parameter msm_serial: serial driver for MSM7K onboard serial peripheral. Robert P. J. Day (9): scripts/headers_check.pl: correct RE in header CONFIG leak check KVM: Expand on "help" info to specify kvm intel and amd module names ramdisk: remove long-deprecated "ramdisk=" boot-time parameter drm: simplify kcalloc() call to kzalloc(). sparc: Simplify code using is_power_of_2() routine. kernel/kfifo.c: replace conditional test with is_power_of_2() ntfs: use is_power_of_2() function for clarity. Staging: meilhaus: Remove long-deprecated SA_* interrupt macros. h8/300: fix incorrect "select" directives in arch/h8300/Kconfig.cpu. Robert Reif (1): sparc: move of_device common code to of_device_common Robert Richter (31): perf_counter, x86: remove X86_FEATURE_ARCH_PERFMON flag for AMD cpus perf_counter, x86: declare perf_max_counters only for CONFIG_PERF_COUNTERS perf_counter, x86: add default path to cpu detection perf_counter, x86: rework pmc_amd_save_disable_all() and pmc_amd_restore_all() perf_counter, x86: protect per-cpu variables with compile barriers only perfcounters: rename struct hw_perf_counter_ops into struct pmu perf_counter, x86: rename struct pmc_x86_ops into struct x86_pmu perf_counter, x86: make interrupt handler model specific perf_counter, x86: remove get_status() from struct x86_pmu perf_counter, x86: remove ack_status() from struct x86_pmu perf_counter, x86: rename __hw_perf_counter_set_period into x86_perf_counter_set_period perf_counter, x86: rename intel only functions perf_counter, x86: modify initialization of struct x86_pmu perf_counter, x86: make x86_pmu data a static struct perf_counter, x86: move counter parameters to struct x86_pmu perf_counter, x86: make pmu version generic perf_counter, x86: make x86_pmu_read() static inline perf_counter, x86: rename cpuc->active_mask perf_counter, x86: generic use of cpuc->active perf_counter, x86: consistent use of type int for counter index perf_counter, x86: rework counter enable functions perf_counter, x86: rework counter disable functions perf_counter, x86: change and remove pmu initialization checks perf_counter, x86: implement the interrupt handler for AMD cpus perf_counter, x86: return raw count with x86_perf_counter_update() perf_counter, x86: introduce max_period variable perf_counter, x86: remove vendor check in fixed_mode_idx() perf_counter, x86: remove unused function argument in intel_pmu_get_status() perf_counter: update 'perf top' documentation perf_counter, x86: rename bitmasks to ->used_mask and ->active_mask oprofile: introduce module_param oprofile.cpu_type Roberto De Ioris (2): Staging: add udlfb driver Staging: udlfb: update to version 0.2.3 Robin Getz (20): Blackfin Serial Driver: fix baudrate for early_printk Blackfin: allow scheduler functions to be placed into L1 Blackfin: fix early L1 relocation crash Blackfin: document anomaly 05000234 workaround Blackfin: annotate anomaly 05000119 in core DMA code Blackfin: make sure MPU CPLB for first 1k is marked as valid Blackfin: make deferred hardware errors more exact Blackfin: make sure stack is accessible before dumping it Blackfin: add workaround for anomaly 05000461 Blackfin: include system/processor info in dump messages Blackfin: add missing access_ok() checks to user functions Blackfin: export the last exception cause via debugfs Blackfin: only handle CPLB protection violations when MPU is enabled Blackfin: include the cpu compiled version in /proc/cpuinfo Blackfin: do not configure the UART early if on wrong processor kallsyms: support kernel symbols in Blackfin on-chip memory debugfs: use specified mode to possibly mark files read/write only irqs: add IRQF_SAMPLE_RANDOM to the feature-removal-schedule.txt (deprecated) list Blackfin: stick the CPU name into boot image name Blackfin: fix early crash when booting on wrong cpu Roderick Colenbrander (3): powerpc/virtex: Add support for Xilinx PCI host bridge powerpc/virtex: Add Xilinx ML510 reference design support powerpc/virtex: Add ml510 reference design device tree Rodolfo Giometti (2): LinuxPPS: core support i2c: Use rwsem instead of mutex for board info Roel Kluin (49): rpcgss: remove redundant test on unsigned ar9170: wrong test on outlen in ar9170_usb_exec_cmd() ? ASoC: remove driver_data direct access of struct device RDMA/nes: Fix off-by-one bugs in reset_adapter_ne020() and init_serdes() smack: do not beyond ARRAY_SIZE of data sh: clkfwk: beyond ARRAY_SIZE of onchip_ops for sh7722. xen-blkfront: beyond ARRAY_SIZE of info->shadow [SCSI] ibmvscsi: Remove redundant test on unsigned. mISDN: get_free_devid() failure ignored ASoC: correct print specifiers for unsigneds uwb: event_size should be signed ALSA: burgundy: timeout message is off by one. mtd: nand: max_retries off by one in mxc_nand CRIS: assignment/is equal confusion drm: fix LOCK_TEST_WITH_RETURN macro atl1c: WAKE_MCAST tested twice, not WAKE_UCAST drivers/isdn/i4l/isdn_tty.c: fix check for array overindexing [S390] qdio: fix access beyond ARRAY_SIZE of irq_ptr->{in,out}put_qs Blackfin: fix length checking in kgdb_ebin2mem lguest: beyond ARRAY_SIZE of cpu->arch.gdt irda: smsc wait count reaches -1 block/ps3: remove driver_data direct access of struct device [SCSI] ncr53c8xx: div reaches -1 [SCSI] nsp_cs: time_out reaches -1 block/ps3: remove driver_data direct access of struct device V4L/DVB: cx23885/cymax2: binary/logical &/&& typo V4L/DVB: cleanup redundant tests on unsigned V4L/DVB (11741): zoran: Fix &&/|| typo V4L/DVB (11961): tvp514x: try_count off by one spi: takes size of a pointer to determine the size of the pointed-to type alpha: bad macro expansion, parameter is member uml: bad macro expansion, parameter is member carminefb: fix possible access beyond end of carmine_modedb[] radeon: P2G2CLK_ALWAYS_ONb tested twice, should 2nd be P2G2CLK_DAC_ALWAYS_ONb? spi_bfin5xx: limit reaches -1 ufs: sector_t cannot be negative Staging: comedi: non working tests on unsigned cmd->convert_arg staging: comedi: fix missing parentheses Staging: rtl8187se: wmm_param[1].ac_aci_acm_aifsn tested twice Staging: fix operator precedence errors Staging: otus: beyond ARRAY_SIZE of wd->ap.wds.encryMode staging: rtlxxxx: off by one in AsicSendCommandToMcu() and NDIS_STATUS NICLoadFirmware() staging: wis-sony-tuner.c: fix &&/|| error dtlk: off by one in {read,write}_tts() OMAP2 clock/powerdomain: off by 1 error in loop timeout comparisons serial: fix off by one errors IB/ehca: Ensure that guid_entry index is not negative CRISv10: remove redundant tests on unsigned udf: remove redundant tests on unsigned Rohit Hagargundgi (1): mtd: Flex-OneNAND support Roland Dreier (6): IB/mthca: Don't double-free IRQs when falling back from MSI-X to INTx mlx4_core: Don't double-free IRQs when falling back from MSI-X to INTx Merge branches 'cxgb3', 'ehca', 'misc', 'mlx4', 'mthca' and 'nes' into for-linus IB/mthca: Replace dma_sync_single() use with proper functions mlx4_core: Fix dma_sync_single_for_cpu() with matching for_device() calls Merge branches 'ehca', 'misc', 'mlx4', 'mthca' and 'nes' into for-linus Roland McGrath (1): powerpc: Add PTRACE_SINGLEBLOCK support Ron Lee (1): slab: fix generic PAGE_POISONING conflict with SLAB_RED_ZONE Ron Mercer (17): qlge: Fix firmware event handler loop. qlge: Fix bug in firmware event handler. qlge: Fix bug in MTU setting process. qlge: Fix timeout on indexed register wait. qlge: Fix timeout on firmware mailbox commands. qlge: Add support for retrieving firmware version. qlge: Remove netif_set_gso_max_size() call. qlge: Drop inbound error frames. qlge: Drop inbound frames > MTU. qlge: Add support for using alternate MAC address. qlge: Add support for varied pcie function numbers. qlge: Add set TX csum ethtool op. qlge: bugfix: Get rid of errant spin_unlock(). qlge: Relax alignment on TX harware queue. qlge: Allow RX buf rings to be > than 4096 bytes. qla3xxx: Give the PHY time to come out of reset. qla3xxx: Don't sleep while holding lock. Russell King (41): [ARM] Convert pmd_page() to be highmem safe [ARM] Kconfig: sort ARM machine class support choice list by option name [ARM] sort machine- and plat- by CONFIG* name [ARM] smp: move core localtimer support out of platform specific files [ARM] smp: SCU is used on non-realview platforms [ARM] smp: separate SCU support code from realview [ARM] smp: allow re-use of realview localtimer TWD support [ARM] smp: fix style issues in smp_twd.c Merge branch 'for-rmk-devel' of git://git.pengutronix.de/git/imx/linux-2.6 into devel Merge branch 'ixp4xx' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 into devel Merge branch 'iommu' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git into devel Merge branch 'ixp4xx' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 into devel [ARM] smp: use new cpumask functions Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci into devel Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel [ARM] make U300 clk_set_rate() return a _real_ errno [ARM] Kconfig: remove 'default n' Merge branch 'smp' into devel Merge branch 'mxc-master' of git://git.pengutronix.de/git/imx/linux-2.6 into devel Merge branch 'for-rmk' of git://git.marvell.com/orion into devel kbuild: fix headers_exports with boolean expression Merge branch 'for_rmk' of git://dev.omapzoom.org/pub/scm/santosh/kernel-omap4-base into devel Merge branch 'at91' into devel Merge branch 'ep93xx' into devel Merge branch for-rmk-devel of git://aeryn.fluff.org.uk/bjdooks/linux into devel [ARM] Make ARM_VIC_NR depend on ARM_VIC Merge branch 'w90x900' into devel Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6 into devel Merge branch 'copy_user' of git://git.marvell.com/orion into devel Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel Merge branch 'stmp' into devel Merge branch 'u300' into devel MAINTAINERS: EB110ATX is not ebsa110 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel Merge branch 'next-s3c' of git://aeryn.fluff.org.uk/bjdooks/linux into devel Merge branch 'for-rmk' of git://git.marvell.com/orion into devel Merge branch 'omap-clock-for-next' of git://git.pwsan.com/linux-2.6 into devel [ARM] wire up rt_tgsigqueueinfo and perf_counter_open [ARM] Update mach-types Merge branch 'next-s3c' of git://aeryn.fluff.org.uk/bjdooks/linux into devel [ARM] idle: clean up pm_idle calling, obey hlt_counter Rusty Russell (46): cyber2000fb.c: use proper method for stopping unload if CONFIG_ARCH_SHARK module_param: invbool should take a 'bool', not an 'int' module_param: split perm field into flags and perm module_param: add __same_type convenience wrapper for __builtin_types_compatible_p module_param: allow 'bool' module_params to be bool, not just int. uvesafb: improve parameter handling. module: trim exception table on init free. module: cleanup FIXME comments about trimming exception table entries. virtio: fix obsolete documentation on probe function virtio: meet virtio spec by finalizing features before using device virtio: add names to virtqueue struct, mapping from devices to queues. virtio: expose features in sysfs virtio: handle short buffers in virtio_rng. lguest: be paranoid about guest playing with device descriptors. lguest: cleanup passing of /dev/lguest fd around example launcher. lguest: clean up lguest_init_IRQ lguest: get more serious about wmb() in example Launcher code sched: export kick_process lguest: fix lguest wake on guest clock tick, or fd activity lguest: remove invalid interrupt forcing logic. lguest: fix race in halt code lguest: improve interrupt handling, speed up stream networking lguest: optimize by coding restore_flags and irq_enable in assembler. lguest: clean up example launcher compile flags. lguest: clean up length-used value in example launcher lguest: fix writev returning short on console output lguest: PAE fixes lguest: allow any process to send interrupts eventfd: export eventfd_signal and eventfd_fget for lguest lguest: use eventfds for device notification lguest: have example Launcher service all devices in separate threads lguest: remove obsolete LHREQ_BREAK call lguest: implement deferred interrupts in example Launcher lguest: avoid sending interrupts to Guest when no activity occurs. lguest: try to batch interrupts on network receive lguest: suppress notifications in example Launcher cpumask: remove the now-obsoleted pcibus_to_cpumask(): sh cpumask: arch_send_call_function_ipi_mask: sh cpumask: use mm_cpumask() wrapper: sh cpumask: Use accessors for cpu_*_mask: sh cpumask: use new operators in kernel/trace [CPUFREQ] cpumask: avoid playing with cpus_allowed in speedstep-ich.c [CPUFREQ] cpumask: avoid cpumask games in arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c [CPUFREQ] cpumask: avoid playing with cpus_allowed in powernow-k8.c [CPUFREQ] cpumask: new cpumask operators for arch/x86/kernel/cpu/cpufreq/powernow-k8.c [IA64] fix compile error in arch/ia64/mm/extable.c Ryan Mallon (2): [ARM] 5523/1: ep93xx phys offset selection [ARM] 5523/2: Updated ep93xx defconfig Ryusuke Konishi (27): nilfs2: remove nilfs_dat_prepare_free function nilfs2: unify bmap operations starting use of indirect block address nilfs2: add sufile function that can modify multiple segment usages nilfs2: eliminate removal list of segments nilfs2: remove header file for segment list operations nilfs2: remove nilfs_bmap_put_block nilfs2: remove nilfs_bmap_delete_block nilfs2: move get block functions in bmap.c into btree codes nilfs2: remove pointless NULL check of bpop_commit_alloc_ptr function nilfs2: remove useless b_low and b_high fields from nilfs_bmap struct nilfs2: remove bmap pointer operations nilfs2: remove nilfs_direct_operations from direct mapping nilfs2: remove nilfs_btree_operations from btree mapping nilfs2: allow future expansion of metadata read out via get info ioctl nilfs2: set bio unplug flag for the last bio in segment nilfs2: enable sync_page method nilfs2: modify list of unsupported features in caveats nilfs2: return EBUSY against delete request on snapshot nilfs2: use device's backing_dev_info for btree node caches nilfs2: add sync_page method to page caches of meta data nilfs2: support contiguous lookup of blocks nilfs2: remove meaningless EBUSY case from nilfs_get_sb function nilfs2: get rid of sget use for acquiring nilfs object nilfs2: get rid of sget use for checking if current mount is present nilfs2: simplify remaining sget() use nilfs2: correct exclusion control in nilfs_remount function nilfs2: get rid of bd_mount_sem use from nilfs RĂ©mi Denis-Courmont (4): Phonet: fix accounting race between gprs_writeable() and gprs_xmit() f_phonet: dev_kfree_skb instead of dev_kfree_skb_any in TX callback f_phonet: no need to check for carrier - scheduler does it internally usb: gadget: f_phonet: fix memory allocation sizes SUGIOKA Toshinobu (1): serial: sh-sci: Fix up PORT_SCI console output ordering. Saeed Bishara (1): mv643xx_eth: only unmask RX and TX_END interrupts for available queues Sam Ravnborg (21): x86: standardize Kbuild rules x86: beautify vmlinux_64.lds.S x86: beautify vmlinux_32.lds.S x86, vmlinux.lds: unify header/footer x86, vmlinux.lds: unify PHDRS x86, vmlinux.lds: unify start/end of SECTIONS x86, vmlinux.lds: unify .text output sections x86, vmlinux.lds: unify exception table x86, vmlinux.lds: unify data output sections x86, vmlinux.lds: move vsyscall output sections x86, vmlinux.lds: unify first part of initdata x86, vmlinux.lds: unify parainstructions x86, vmlinux.lds: unify .exit.* and .init.ramfs x86, vmlinux.lds: unify percpu x86, vmlinux.lds: unify remaining parts x86: boot/compressed/vmlinux.lds.S: fix build of bzImage with 64 bit compiler kbuild: add hint about __refdata to modpost Improve vmlinux.lds.h support for arch specific linker scripts vmlinux.lds.h update [IA64] unexport fpswa.h fbdev: generated logo sources depend on scripts/pnmtologo Samuel Bronson (1): x86: use symbolic name for VM86_SIGNAL when used as vm86 default return Samuel Ortiz (12): iwmc3200wifi: fix fragmentation threshold setting iwmc3200wifi: shrink calibration lmac name wireless/p54: prepare for FIRMWARE_NAME_MAX removal irda: add git tree to MAINTAINERS file firmware: allocate firmware id dynamically firmware: atm/ueagle-atm: prepare for FIRMWARE_NAME_MAX removal firmware: tuners/xc2028: prepare for FIRMWARE_NAME_MAX removal firmware: dvb/dvb-usb: prepare for FIRMWARE_NAME_MAX removal firmware: pcmcia/ds: prepare for FIRMWARE_NAME_MAX removal firmware: FIRMWARE_NAME_MAX removal mfd: fix tmio related warnings mfd: early init for MFD running regulators Samuel Thibault (1): keyboard: advertise KT_DEAD2 extended diacriticals Sandeep K Sinha (3): md: Removal of hash table in linear raid md: Removing num_sector and replacing start_sector with end_sector md: Binary search in linear raid SandeepKsinha (1): md linear: Protecting mddev with rcu locks to avoid races Sankar P (1): trivial: spelling fix in ppc code comments Santosh Shilimkar (15): ARM: OMAP: Remove unwanted type casts and fix the compiler warning. ARM: OMAP: Remove useless omap_sram_error function. ARM: OMAP: Remove unnecessary omap2_globals. ARM: OMAP: Remove unwanted type casts and fix the compiler warning. ARM: OMAP: Remove useless omap_sram_error function. ARM: OMAP: Remove unnecessary omap2_globals. ARM: OMAP2/3: sDMA: Correct omap_request_dma_chain(), v2 ARM: OMAP4: Add minimal support for omap4 ARM: OMAP4: Clock stubs since CLKDEV not in yet. ARM: OMAP4: Add support for 4430 SDP ARM: OMAP4: Add defconfig for 4430 SDP ARM: OMAP4: SMP: Add OMAP4430 SMP board files ARM: OMAP4: SMP: Add mpu timer support for OMAP4430 ARM: OMAP4: SMP: Enable SMP support for OMAP4430 ARM: OMAP4: SMP: Update defconfig for OMAP4430 Sarah Sharp (34): USB: xhci: Support xHCI host controllers and USB 3.0 devices. USB: xhci: BIOS handoff and HW initialization. USB: xhci: Ring allocation and initialization. USB: xhci: Device context array allocation. USB: xhci: No-op command queueing and irq handler. USB: Add SuperSpeed to the list of USB device speeds. USB: Add USB 3.0 roothub support to USB core. USB: Don't reset USB 3.0 devices on port change detection. USB: Add route string to struct usb_device. USB: xhci: Root hub support. USB: Support for addressing a USB device under xHCI USB: xhci: Allocate and address USB devices USB: Support for submitting control URBs under xHCI. USB: xhci: Control transfer support. USB: Parse and store the SuperSpeed endpoint companion descriptors. USB: Support for bandwidth allocation. USB: xhci: Bandwidth allocation support USB: xhci: Bulk transfer support USB: Push scatter gather lists down to host controller drivers. USB: xhci: Scatter gather list support for bulk transfers. USB: xhci: URB cancellation support. USB: xhci: Fix register write order. USB: xhci: Fix Link TRB handoff bit twiddling. USB: xhci: Avoid global namespace pollution. USB: xhci: Clean up xhci_irq() function. USB: xhci: Avoid compiler reordering in Link TRB giveback. USB: Change names of SuperSpeed ep companion descriptor structs. USB: xhci: drop spinlock in xhci_urb_enqueue() error path. USB: xhci: Make xhci-mem.c include linux/dmapool.h usb; xhci: Fix TRB offset calculations. USB: xhci: Remove packed attribute from structures. USB: xHCI: Fix interrupt moderation. USB: xhci: Respect critical sections. USB: xhci: Add Makefile, MAINTAINERS, and Kconfig entries. Sascha Hauer (37): fec: switch to writel/readl fec: do not typedef struct types fec: remove unnecessary cast fec: Codingstyle cleanups fec: refactor set_multicast_list() to make it more readable fec: refactor init function fec: align receive packets fec: remove debugging printks fec: switch to net_device_ops FEC Buffer rework fec: call fec_restart() in fec_open() MXC irq: remove unused defines MXC: Add iomux support for MX35 SoCs MX35: Add iomux pin defintions [ARM] MX35: Add PCM043 board support i.MX35 clock support: remove automotive path pcm037: setup all pins at once and not in init functions pcm037: add SDHC card detection MX35: Fix IPU/Framebuffer clock names pcm037: Add support for UART2 MXC: rename mxc_map_io to architecture specific versions mxc timer: make compile time independent mxc irq: make architecture runtime dependent [ARM] Remove arch-imx from build system [ARM] remove arch-imx pcm038: Setup all iomux pins at once PCM038: Remove unnecessary ifdefs, reorder includes alphabetically mx1ads: remove ifdefs, reorder include alphabetically mx1ads: setup iomux pins at once mx1: add missing include mx1ads: rename mxc_map_io to mx1_map_io mxc: fix wrong register access in timer code MXC qonq: mxc_map_io is now mx31_map_io mx31: calls to gpio_request moved into platform code mx3fb: Issue prettier log message MMC core: limit minimum initialization frequency to 400kHz imx: Check for NULL pointer deref before calling tty_encode_baud_rate Sascha Hlusiak (5): sit: Fail to create tunnel, if it already exists sit: strictly restrict incoming traffic to tunnel link device sit: ipip6_tunnel_del_prl: return err addrconf: refuse isatap eui64 for INADDR_ANY sit: stateless autoconf for isatap Sasha Alexandr (3): ALSA: HDA - Add pci-quirk for MSI MS-7350 motherboard. ALSA: HDA - Name-fixes in code (tagra/targa) ALSA: HDA - Correct trivial typos in comments. Sathya Perla (9): be2net: Use cancel_delayed_work_sync instead of cancel_delayed_work() be2net: fix netdev stats rx_errors and rx_dropped be2net: Fix rx stats updation in non-lro path be2net: Fix early reset of rx-completion be2net: Fix be_tx_q_clean() being called on freed queues be2net: Add MCC queue mechanism for BE cmds be2net: Use MCC queue for cmds that may be called in BH context be2net: cleanup multicast_set cmd to avoid mc_list copy be2net: receive asynchronous link status notifications from BE Scott James Remnant (1): USB: usbfs: deprecate and hide option for !embedded Sean MacLennan (3): powerpc: Update Warp to use leds-gpio driver i2c: Fix confusing i2c-ibm_iic message powerpc/warp: Fix ISA_DMA_THRESHOLD default Sebastian Andrzej Siewior (7): Input: ucb1400 - move static function from header into core crypto: padlock - Enable on x86_64 net/libertas: make SPI interface big endian aware [ARM] orion5x: add sram support for crypto net/libertas: remove GPIO-CS handling in SPI interface code [ARM] orion5x: increment window counter after adding sram mapping net/libertas: don't recursive spin lock in if_spi_e2h() Sebastian Haas (1): Staging: add cpc-usb driver to the staging tree Sebastian Ott (7): [S390] cio: fix sanity checks in device_ops. [S390] dasd: check_characteristics cleanup [S390] dasd: sync after async probe [S390] pm: ccw bus power management callbacks [S390] pm: ccwgroup bus power management callbacks [S390] pm: css bus power management callbacks [S390] dasd: fix refcounting in dasd_change_state Senthil Balasubramanian (1): mac80211: Initialize RX's last received sequence number Seokmann Ju (1): [SCSI] qla2xxx: Correct bus-reset behaviour with recent ISPs. Serge E. Hallyn (3): don't raise all privs on setuid-root file with fE set (v2) tomoyo: avoid get+put of task_struct staging: p9auth: prevent some oopses and memory leaks Sergei Poselenov (1): kbuild: fix "Argument list too long" error for "make headers_check", Sergei Shtylyov (25): davinci: INTC: add support for TI cp_intc pdc202xx_old: use ide_dma_test_irq() pdc202xx_old: don't call pdc202xx_reset() on IRQ timeout pdc202xx_old: kill resetproc() method sl82c105: add printk() logging facility libata-sff: avoid byte swapping in ata_sff_data_xfer() sgiioc4: coding style cleanup ide: call clear_irq() method in ide_timer_expiry() cmd64x: implement clear_irq() method (take 2) siimage: use ide_dma_test_irq() (take 2) ide: move IRQ clearing from ack_intr() method to clear_irq() method (take 2) ide: move ack_intr() method into 'struct ide_port_ops' (take 2) cmd640: implement test_irq() method cmd64x: implement test_irq() method pdc202xx_old: implement test_irq() method (take 2) siimage: implement test_irq() method sl82c105: implement test_irq() method musb_gadget: fix unhandled endpoint 0 IRQs musb_gadget: suppress "parasitic" TX interrupts with CPPI musb_host: refactor musb_save_toggle() (take 2) musb_host: factor out musb_ep_{get|set}_qh() musb_host: simplify check for active URB musb_host: streamline musb_cleanup_urb() calls musb_host: refactor URB giveback musb: split out CPPI interrupt handler Sergei Trofimovich (1): mm cleanup: shmem_file_setup: 'char *' -> 'const char *' for name argument Sergey Belyashov (2): HID: autocentering support for Logitech G25 Racing Wheel HID: autocentering support for Logitech Force 3D Pro Sergey Lapin (8): ASoC: AFEB9260 driver [ARM] 5514/1: AFEB9260 sound support [ARM] 5525/1: AFEB9260: fix for MMC support Add constants for the ieee 802.15.4 stack net: add IEEE 802.15.4 socket family implementation net: add NL802154 interface for configuration of 802.15.4 devices ieee802154: add documentation about our stack ieee802154: add simple HardMAC driver sample Sergey Matyukevich (1): [libata] PATA driver for CF interface on AT91SAM9260 SoC Sergio Luis (6): x86: unify power/cpu_(32|64) headers x86: unify power/cpu_(32|64) global variables x86: unify power/cpu_(32|64) regarding saving processor state x86: unify power/cpu_(32|64) regarding restoring processor state x86: unify power/cpu_(32|64) copyright notes x86: unify power/cpu_(32|64).c Shan Wei (1): tcp:fix the code indent Shane Huang (1): [libata] ahci: Restore SB600 SATA controller 64 bit DMA Shane McDonald (1): mtd: remove pmcmsp-ramroot.c Shaohua Li (4): x86: make sparse mem work in non-NUMA mode PCI: disable ASPM on VIA root-port-under-bridge configurations x86: change kernel_physical_mapping_init() __init to __meminit driver core: synchronize device shutdown Shawn Du (1): blktrace: support per-partition tracing Sheng Yang (17): KVM: Split IOAPIC structure KVM: Unify the delivery of IOAPIC and MSI interrupts KVM: Change API of kvm_ioapic_get_delivery_bitmask KVM: Update intr delivery func to accept unsigned long* bitmap KVM: bit ops for deliver_bitmap KVM: Ioctls for init MSI-X entry KVM: Add MSI-X interrupt injection logic KVM: Enable MSI-X for KVM assigned device KVM: Merge kvm_ioapic_get_delivery_bitmask into kvm_get_intr_delivery_bitmask KVM: Device assignment framework rework KVM: VMX: Correct wrong vmcs field sizes KVM: VMX: Clean up Flex Priority related KVM: VMX: Fix feature testing KVM: MMU: Discard reserved bits checking on PDE bit 7-8 KVM: Replace get_mt_mask_shift with get_mt_mask KVM: Enable snooping control for supported hardware KVM: VMX: Disable VMX when system shutdown Shin Hong (1): Btrfs: init worker struct fields before kthread-run Siddarth Gore (1): [ARM] Kirkwood: enable gpio leds/buttons for the mv88f6281gtw_ge board Simon Arlott (3): cxacru: Fix negative dB output V4L/DVB (11841): core: fix potential mutex_unlock without mutex_lock in dvb_dvr_read ALSA: via82xx: add option to disable 500ms delay in snd_via82xx_codec_wait Simon Horman (1): e1000e: Call e1000e_config_collision_dist() after TCTL has been set Simon POLETTE (1): PATCH] mx27pdk: rename mxc_map_io to mx27_map_io Simon Polette (1): mtd: add on-flash BBT support for Atmel NAND driver Simos Xenitellis (1): ALSA: hda - add quirk for STAC92xx (SigmaTel STAC9205) Sivakumar Subramani (1): vxge: Enable SRIOV support in the driver. Sonic Zhang (15): netdev: bfin_mac: fix malformed UDP packet transmission when polling with KGDB ASoC: Blackfin: document how anomaly 05000250 is handled Blackfin Serial Driver: fix error while transferring large files Blackfin Serial Driver: handle irregular DMA register status in auto start mode Blackfin Serial Driver: annotate anomalies 05000215 and 05000099 Blackfin Serial Driver: handle anomaly 05000231 Blackfin Serial Driver: disable dma rx interrupt only rather than all irqs Blackfin: Allow bf548 ATAPI to be routed to GPIO Blackfin: update defconfigs Blackfin: detect anomaly 05000274 Blackfin: add SSYNC to set_dma_sg() for descriptor fetching i2c: Blackfin TWI: fix REPEAT START mode doesn't repeat Blackfin: add blackfin_invalidate_entire_icache for SMP systems Blackfin: fix deadlock in SMP IPI handler Blackfin: fix accidental reset in some boot modes Sridhar Samudrala (3): net: Fix skb_copy_datagram_from_iovec() to pass the right offset net: Fix memcpy_toiovecend() to use the right offset tun: Fix copy/paste error in tun_get_user Srinivas Eeda (2): ocfs2: timer to queue scan of all orphan slots ocfs2 patch to track delayed orphan scan timer statistics Stanislaw Gruszka (2): bnx2x: free workqueue when driver fail to register bnx2x: do not return negative number of received packages Stefan Agner (1): [ARM] orion: sched_clock implementation for orion platforms Stefan Haberland (2): [S390] pm: dasd power management callbacks. [S390] dasd_pm: fix stop flag handling Stefan Raspl (1): blktrace: remove debugfs entries on bad path Stefan Richter (25): firewire: core: improve check for local node firewire: core: check for missing struct update at build time, not run time firewire: core: add sysfs attribute for easier udev rules firewire: share device ID table type with ieee1394 firewire: also use vendor ID in root directory for driver matches firewire: ohci: access bus_seconds atomically firewire: clean up includes firewire: reorganize header files firewire: rename source files firewire: add parent-of-unit accessor firewire: core: include linux/uaccess.h instead of asm/uaccess.h firewire: core: prepare for non-core children of card devices firewire: core: don't update Broadcast_Channel if RFC 2734 conditions aren't met firewire: core: use more outbound tlabels firewire: net: add Kconfig item, rename driver firewire: net: style changes firewire: net: allow for unordered unit discovery firewire: net: remove unused code firewire: net: adjust net_device ops firewire: core: fix DMA unmapping in iso buffer removal firewire: core: fix iso context shutdown on card removal firewire: net: fix card driver reloading firewire: net: better FIFO address range check and rcodes firewire: new stack is no longer experimental explain the hidden scsi_wait_scan Kconfig variable Stefan Roese (2): powerpc/4xx: Sequoia: Enable NAND support mtd: physmap_of: Add multiple regions and concatenation support Stefan Roscher (3): IB/ehca: Fall back to vmalloc() for big allocations IB/ehca: Remove unnecessary memory operations for userspace queue pairs IB/ehca: Increment version number Stefan Schmidt (1): MAINTAINERS: Update entry with file and SCM for EZX Stefan Weil (1): cpmac: prevent fatal exception in cpmac_end_xmit Stefan Weinhuber (3): [S390] dasd: no High Performance FICON in 31-bit mode [S390] dasd: forward internal errors to dasd_sleep_on caller [S390] pm: vmlogrdr power management callbacks Stefani Seibold (1): proc.txt: update kernel filesystem/proc.txt documentation Stefano Brivio (1): b43legacy: Remove unnecessary MMIO in interrupt hotpath Stephane Chatty (2): HID: add new multitouch and digitizer contants HID: Multitouch support for the N-Trig touchscreen Stephen Hemminger (24): netns: remove leftover debugging message netns: simplify net_ns_init bonding: fix multiple module load problem bonding: bond_create always called with default parameters bonding: initialize before registration bonding: remove bonding read/write semaphore bonding: fix destructor bonding: fix style issues bonding: elminate bad refcount code bonding: network device names are case sensative bonding: use is_zero_ether_addr bonding: initialization rework sky2: don't look for VPD size skbuff: skb_mac_header_was_set is always true on >32 bit skbuff: don't corrupt mac_header on skb expansion sky2: turn off pause during shutdown sky2: more receive shutdown sky2: PCI irq issues sky2: fix shutdown synchronization sky2: receive counter update sky2: reduce default transmit ring sky2: skb recycling sky2: add GRO support sky2: version 1.23 Stephen M. Cameron (2): cciss: factor out core of sendcmd() for a more sane interface cciss: fix SCSI device reset handler Stephen Rothwell (13): sparc64: extend TI_RESTART_BLOCK space by 8 bytes modules: Fix up build when CONFIG_MODULE_UNLOAD=n. net/ibmveth: fix panic in probe powerpc/pci: Fix annotation of pcibios_claim_one_bus ALSA: sound/ppc: update annotations of serveral functions powerpc/pseries: Fix warnings when printing resource_size_t powerpc/xmon: Remove unused variable in xmon.c powerpc: Fix warning when printing a resource_size_t powerpc/spufs: Remove unused error path perfcounters: remove powerpc definitions of perf_counter_do_pending powerpc: Wire up sys_rt_tgsigqueueinfo USB: xhci: use xhci_handle_event instead of handle_event sparc: replace uses of CPU_MASK_ALL_PTR Stephen Smalley (1): selinux: remove obsolete read buffer limit from sel_read_bool Steve French (2): [CIFS] Update readme to indicate change to default mount (serverino) [CIFS] Add mention of new mount parm (forceuid) to cifs readme Steve Ma (1): [SCSI] libfc: Check if exchange is completed when receiving a sequence Steve Magnani (2): microblaze: Fix paging init-zone initialization microblaze: Guard __HAVE_ARCH macros with __KERNEL__ in string.h Steve Wise (5): RDS/IW+IB: Set recv ring low water mark to 1/2 full. RDS/IW+IB: Set the RDS_LL_SEND_FULL bit when we're throttled. RDS/IW+IB: Allow max credit advertise window. RDMA/cxgb3: Report correct port state and MTU RDMA/cxgb3: Limit fast register size based on T3 limitations Steven Luo (1): ath9k: reset after PCI FATAL/PERR interrupts Steven Rostedt (132): tracing: add handler to trace_stat tracing: add function profiler tracing: move function profiler data out of function struct tracing: adding function timings to function profiler tracing: make the function profiler per cpu function-graph: add option to calculate graph time or not tracing: clean up tracing profiler tracing: remove on the fly allocator from function profiler tracing: add average time in function to function profiler function-graph: use int instead of atomic for ftrace_graph_active x86, function-graph: only save return values on x86_64 ring-buffer: add ring_buffer_discard_commit tracing/filters: use ring_buffer_discard_commit for discarded events tracing: consolidate trace and trace_event headers tracing: create automated trace defines tracing: make trace_seq operations available for core kernel tracing/events: move declarations from trace directory to core include tracing/events: move the ftrace event tracing code to core tracing/events: convert event call sites to use a link list tracing/events: add export symbols for trace events in modules tracing/events: add support for modules to TRACE_EVENT tracing/events: fix compile for modules disabled tracing/events: fix lockdep system name tracing/events: move trace point headers into include/trace/events tracing/events: add trace-events-sample ftrace: use module notifier for function tracer tracing/events: add startup tests for events tracing/events/ring-buffer: expose format of ring buffer headers to users tracing/events: perform function tracing in event selftests tracing/events: enable code with EVENT_TRACING not EVENT_TRACER tracing: add EXPORT_SYMBOL_GPL for trace commits tracing: add same level recursion detection tracing: protect trace_printk from recursion tracing: remove format attribute of inline function tracing: change branch profiling to a choice selection tracing: create menuconfig for tracing infrastructure tracing: rename EVENT_TRACER config to ENABLE_EVENT_TRACING tracing/events: call the correct event trace selftest init function tracing: remove dangling semicolon tracing: fix recursive test level calculation tracing: remove recursive test from ring_buffer_event_discard tracing: use recursive counter over irq level tracing: use nowakeup version of commit for function event trace tests ring-buffer: only warn on wrap if buffer is bigger than two pages tracing/wakeup: move access to wakeup_cpu into spinlock tracing: increase size of number of possible events tracing: add size checks for exported ftrace internal structures tracing: fix cut and paste macro error tracing/lockdep: convert lockdep to use TRACE_EVENT macro tracing/irq: convert irq traces to use TRACE_EVENT macro tracing: remove deprecated TRACE_FORMAT tracing/events: reuse trace event ids after overflow tracing/events: make modules have their own file_operations structure tracing: convert ftrace_dump spinlocks to raw tracing: fix ref count in splice pages tracing: only add splice page if entries exist tracing: have splice only copy full pages ring-buffer: fix printk output ring-buffer: export symbols ring-buffer: add counters for commit overrun and nmi dropped entries tracing: export stats of ring buffers to userspace ring-buffer: convert cpu buffer entries to local_t ring-buffer: record page entries in buffer page descriptor ring-buffer: have read page swap increment counter with page entries ring-buffer: disable writers when resetting buffers tracing: use proper export symbol for tracing api ring-buffer: move big if statement down ring-buffer: add benchmark and tester ring-buffer: remove unneeded conditional in rb_reserve_next ring-buffer: check for failed allocation in ring buffer benchmark ring-buffer: make moving the tail page a separate function ring-buffer: change test to be more latency friendly tracing: update sample with TRACE_INCLUDE_FILE tracing: reset ring buffer when removing modules with events tracing: add hierarchical enabling of events ring-buffer: remove complex calculations in ring-buffer-test tracing: append ":*" to internal setting of system events tracing: have menu default enabled when kernel debug is configured ring-buffer: only periodically call cond_resched to ring-buffer-benchmark ring-buffer: add total count in ring-buffer-benchmark ring-buffer: change WARN_ON from checking preempt_count to preemptible tracing: initialize return value for __ftrace_set_clr_event tracing: add trace_set_clr_event to export event enabling function ring-buffer: replace constants with time macros in ring-buffer-benchmark ring-buffer: check for divide by zero in ring-buffer-benchmark ring-buffer: remove type parameter from rb_reserve_next_event ring-buffer: move calculation of event length ring-buffer: small optimizations ring-buffer: use internal time stamp function ring-buffer: move code around to remove some branches genirq: fix comment to say IRQ_WAKE_THREAD x86/stacktrace: return 0 instead of -1 for stack ops tracing: stop stack trace on first empty entry tracing: add __print_flags for events tracing: add previous task state info to sched switch event tracing: add flag output for kmem events tracing: add __print_symbolic to trace events tracing: convert irq events to use __print_symbolic ftrace: add kernel command line function filtering tracing: fix config options to not show when automatically selected tracing: combine the default tracers into one config tracing: remove redundant SOFTIRQ from softirq event traces tracing: make trace pipe recognize latency format flag ftrace: do not profile functions when disabled function-graph: only allocate init tasks if it was not already done function-graph: enable the stack after initialization of other variables function-graph: add memory barriers for accessing task's ret_stack function-graph: move initialization of new tasks up in fork function-graph: always initialize task ret_stack ring-buffer: try to discard unneeded timestamps ring-buffer: discard timestamps that are at the start of the buffer tracing: add annotation to what type of stack trace is recorded ring-buffer: fix ret in rb_add_time_stamp tracing: fix the block trace points print size tracing: add trace_seq_vprint interface tracing: add protection around module events unload tracing: do not translate event helper macros in print format ring-buffer: prevent adding write in discarded area debugfs: dont stop on first failed recursive delete ring-buffer: have benchmark test handle discarded events ring-buffer: remove unused variable ring-buffer: use commit counters for commit pointer accounting tracing: update sample event documentation ring-buffer: use BUF_PAGE_HDR_SIZE in calculating index ring-buffer: remove useless warn on check ring-buffer: remove useless compile check for buffer_page size ring-buffer: check for less than two in size allocation ring-buffer: add locks around rb_per_cpu_empty ring-buffer: do not grab locks in nmi ring-buffer: have benchmark test print to trace buffer function-graph: disable when both x86_32 and optimize for size are configured function-graph: add stack frame test Steven Toth (13): V4L/DVB (11665): cx88: Add support for the Hauppauge IROnly board. V4L/DVB (11666): cx23885: Don't assume GPIO interrupts are cam related. V4L/DVB (11697): tda10048: Add ability to select I/F at attach time. V4L/DVB (11698): cx23885: For tda10048 boards ensure we specify the I/F V4L/DVB (11699): pvrusb2: Ensure we specify the I/F at attach time V4L/DVB (11700): tda10048: Added option to block i2c gate control from other drivers. V4L/DVB (11701): pvrusb2: Ensure the PVRUSB2 disabled the i2c gate on the tda10048. V4L/DVB (11765): cx23885: Add generic functions for driving GPIO's V4L/DVB (11767): cx23885: Add preliminary support for the HVR1270 V4L/DVB (11854): TDA10048: Ensure the I/F changes during DVB-T 6/7/8 bandwidth changes. V4L/DVB (11855): cx23885: Ensure we specify I/F's for all bandwidths V4L/DVB (11856): pvrusb2: Ensure we specify I/F's for all bandwidths V4L/DVB (11857): TDA10048: Missing two I/F's / Pll combinations from the PLL table Steven Whitehouse (29): perfcounters: export perf_tpcounter_event decnet: Use data ready call back, rather than hand coding it GFS2: Update the rw flags GFS2: Optimise writepage for metadata GFS2: Something nonlinear this way comes! GFS2: Move journal live test at transaction start GFS2: Add commit= mount option GFS2: Remove a couple of unused sysfs entries GFS2: Umount recovery race fix GFS2: Update docs GFS2: Don't warn when delete inode fails on ro filesystem GFS2: Improve resource group error handling GFS2: Add a rgrp bitmap full flag GFS2: Be more aggressive in reclaiming unlinked inodes GFS2: Clean up some file names GFS2: Merge mount.c and ops_super.c into super.c GFS2: Move gfs2_rmdiri into ops_inode.c GFS2: Move gfs2_readlinki into ops_inode.c GFS2: Move gfs2_unlink_ok into ops_inode.c GFS2: Remove lockstruct subdir from gfs2 sysfs files GFS2: Remove args subdir from gfs2 sysfs files tracing: add exports to use __print_symbolic and __print_flags from a module GFS2: Remove unused variable tracing: fix multiple use of __print_flags and __print_symbolic GFS2: Fix locking issue mounting gfs2meta fs GFS2: Fix cache coherency between truncate and O_DIRECT read GFS2: Merge gfs2_get_sb into gfs2_get_sb_meta GFS2: Add tracepoints GFS2: Remove lock_kernel from gfs2_put_super() Stoyan Gaydarov (1): FRV: BUG to BUG_ON changes Stuart Bennett (3): tracing: x86, mmiotrace: code consistency/legibility improvement tracing: x86, mmiotrace: refactor clearing/restore of page presence tracing: x86, mmiotrace: only register for die notifier when tracer active Sujith (28): ath9k: Remove a few unused flags ath9k: Remove redundant chainmask check ath9k: Cleanup debug messages ath9k: Change return value of ath9k_hw_fill_cap_info ath9k: Remove redundant variable for Interrupt Mitigation ath9k: Avoid unneeded casts ath9k: Cleanup buffer status handling ath9k: Remove a couple of unused variables in descriptor handling ath9k: Remove unused structures ath9k: Check for root debugfs file ath9k: Remove TIM from the interrupt mask ath9k: Remove the useless do..while loops ath9k: Initialize values when setting up the queue parameters ath9k: Trivial fix to handle AMPDU params properly ath9k: Clean Interrupt handling routine ath9k: Determine number of streams from HT capabilities ath9k: Fix bug in determining HT40 mode ath9k: Handle ASPM properly for RFKILL ath9k: Fix memleak on TX DMA failure ath9k: Fix bug in scan termination ath9k: Remove unused channel flags ath9k: Fix bug in checking HT flag ath9k: Fix bug in determining calibration support ath9k: Initialize ANI timers ath9k: Cleanup calibration interface ath9k: Use a consistent naming convention ath9k: Fix bug in calibration initialization ath9k: Remove CHANNEL_CW_INT handling in ath9k_hw_calibrate Sukanto Ghosh (1): sysctl.c: remove unused variable Sunil Mushran (6): ocfs2/net: Use wait_event() in o2net_send_message_vec() ocfs2: Pin journal head before accessing jh->b_committed_data ocfs2: Fix ocfs2_osb_dump() ocfs2: Stop orphan scan as early as possible during umount ocfs2: Do not initialize lvb in ocfs2_orphan_scan_lock_res_init() ocfs2: Disable orphan scanning for local and hard-ro mounts Suresh Jayaraman (1): NFS: add support for splice writes Suresh Siddha (5): x86: x2apic, IR: Clean up X86_X2APIC and INTR_REMAP config checks x86: x2apic, IR: Move eoi_ioapic_irq() into a CONFIG_INTR_REMAP section x86: x2apic, IR: Clean up panic() with nox2apic boot option x86: x2apic, IR: Make config X86_UV dependent on X86_X2APIC x86: x2apic, IR: remove reinit_intr_remapped_IO_APIC() Sven Schuetz (1): [SCSI] zfcp: Add FC pass-through support Swen Schillig (1): [SCSI] zfcp: Changed D_ID left port disabled Syed Mohammed Khasim (2): ARM: OMAP3: Add omap3 EVM support ARM: OMAP3: Add omap3 EVM defconfig SĂ©guier RĂ©gis (1): via-velocity : fix no link detection on boot Tadashi Abe (1): irda-usb: suspend/resume support Takahiro Yasui (1): [SCSI] limit state transitions in scsi_internal_device_unblock Takashi Iwai (175): ALSA: lx6464es - Use snd_card_create() ALSA: lx6464es - Disable lx_message_send() ALSA: Add missing description of lx6464es to ALSA-Configuration.txt ALSA: hda - Add Creative CA0110-IBG support ALSA: hda - Check strcpy length ALSA: hda - Fix channels_max setting for CA0110 ALSA: hda - Use snd_hda_codec_get_pincfg() in patch_ca0110.c Merge branch 'fix/hda' into topic/hda ALSA: Remove deprecated snd_card_new() ALSA: Remove deprecated include/sound/driver.h ALSA: hda - Cache PCM and STREAM parameters queries ALSA: hda - Retry codec-verbs at errors ALSA: hda - Add debug prints for Realtek auto-init Merge branch 'topic/hda-cache' into topic/hda ALSA: hda - minor optimization in hda_set_power_state() ALSA: hda - Fix a typo in debug print for realtek auto-detection Merge branch 'fix/hda' into topic/hda ALSA: hda - Add amp initialization for realtek auto mode Merge branch 'fix/hda' into topic/hda Merge branch 'topic/hda-realtek-amp' into topic/hda ALSA: hda - Don't enable auto-mute but for speakers in patch_realtek.c ALSA: hda - Fix a typo in patch_realtek.c again Merge branch 'fix/asoc' into topic/asoc ALSA: Add extra delay count in PCM ALSA: usbaudio - Add delay account ALSA: ice1724 - Check error in set_rate function ALSA: ice1724 - Clean up definitions of DMA records ALSA: ice1724 - Add PCI postint to reset sequence ALSA: ice1724 - Allow spec driver to create own routing controls ALSA: ice1724 - Add ESI Maya44 support ALSA: hda - Fix secondary SPDIF on VT1708S and VT1702 codecs ALSA: hda - Fix and clean up hippo-compat HP auto-muting ALSA: hda - Clean up for ALC262 HP model auto-mute functions ALSA: hda - Clean up Realtek auto-mute unsol routines Merge branch 'fix/hda' into topic/hda ALSA: hda - Add missing models for Realtek codecs Merge branch 'topic/hda-vt-spdif' into topic/hda ALSA: hdsp - Add a comment about external firmwares for hdsp Merge branch 'topic/drvdata-fix' into topic/asoc Merge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc ALSA: hda - Disable fallback to model=acer for Acer laptops ALSA: ctxfi - Add missing inclusion of linux/delay.h ALSA: ctxfi - Move PCI ID definitions to linux/pci_ids.h ALSA: ctxfi - Avoid unneeded pci_read_config_*() calls ALSA: ctxfi - Add prefix to debug prints ALSA: hda - Add a quirk entry for Macbook Pro 5,1 Merge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc ASoC: Add missing __devexit in wm8940.c ASoC: Optimize switch/case in magician.c ALSA: hda - Split codec->name to vendor and chip name strings ALSA: hda - Show the actual chip name in 'unkown model' messages ALSA: hda - Avoid conflicts with snd-ctxfi driver ALSA: hda - Add prefix to kernel messages ALSA: hda - Fix digital beep tone calculation ALSA: ctxfi - Add depends on X86 ALSA: hda - Reset CORB/RIRB at retrying the verb communication ALSA: riptide - Code clean up ALSA: riptide - Fix joystick resource handling ALSA: hda - Minor clean up of patch_sigmatel.c Merge branch 'fix/hda' into topic/hda ALSA: hda - Allow concurrent RIRB access in single_cmd mode ALSA: hda - Support sync after writing a verb ALSA: ctxfi - Add missing module parameter definitions ALSA: hda - Always sync writes in single_cmd mode ALSA: hda - Add more register bits definitions Merge branch 'fix/hda' into topic/hda Merge branch 'fix/pcm-jiffies-check' into topic/pcm-jiffies-check ALSA: hda - Fix reverted LED setup for HP ALSA: hda - Fix a typo in the previous patch ALSA: usb-audio - Add quirk for Roland/Edirol M-16DX ALSA: hda - Reorder and clean-up ALC268 quirk table ALSA: hda - Add codec bus reset and verb-retry at critical errors ALSA: hda - Limit codec-verb retry to limited hardwares ALSA: ctxfi - Fix Oops at mmapping ALSA: ctxfi - Fix a typo in MODULE_LICENSE ALSA: ca0106 - Add missing registrations of vmaster controls Merge branch 'topic/hda-ctl-reset' into topic/hda Merge branch 'topic/core-id-check' into topic/caiaq ALSA: Remove invalid GENERIC_MIX PCM sublass ALSA: ALSA: ctxfi - Release PCM resources at each prepare call ALSA: ctxfi - Fix surround mixer names ALSA: ctxfi - Fix PCM device naming ALSA: ctxfi - Fix supported PCM formats ALSA: ctxfi - Remove PAGE_SIZE limitation ALSA: ctxfi - Support SG-buffers Merge branch 'topic/ctxfi-fix' into topic/ctxfi ALSA: ca0106 - Add missing card->mixername field setup ALSA: bt87x - Add a quirk entry for Askey Computer Corp. MagicTView'99 ALSA: powermac - Replace the rest of __init* ASoC: Fix build error in twl4030.c ALSA: ctxfi - Allow 64bit DMA ALSA: ctxfi - Fix endian-dependent codes ALSA: ctxfi - Fix previous fix for 64bit DMA ALSA: ctxfi - Use native timer interrupt on emu20k1 ALSA: ctxfi - Set periods_min to 2 ALSA: ctxfi - Clean up / optimize ALSA: ctxfi - Set device 0 for mixer control elements ALSA: Clean up 64bit division functions ALSA: ctxfi - Add missing inclusion of linux/math64.h ALSA: pcm - Fix update of runtime->hw_ptr_interrupt ALSA: ctxfi - Optimize the native timer handling using wc counter ALSA: ca0106 - Fix master volume scale ALSA: ctxfi - Make volume controls more intuitive ALSA: ctxfi - Fix DMA mask for emu20k2 chip ALSA: ctxfi - Remove useless initializations and cast ALSA: ctxfi - Fix possible buffer pointer overrun ALSA: ctxfi - Fix / clean up hw20k2 chip code ALSA: emu10k1 - Fix minimum periods for efx playback ALSA: pcm - A helper function to compose PCM stream name for debug prints ALSA: hda - Fix the previous tagra-8ch patch ALSA: ctxfi - Clean up probe routines ALSA: ctxfi - Fix wrong model id for UAA ALSA: ctxfi - Add use_system_timer module option ALSA: ctxfi - Add missing start check in atc_pcm_playback_start() ALSA: ctxfi - Check the presence of SRC instance in PCM pointer callbacks ALSA: ctxfi - Clear PCM resources at hw_params and hw_free Merge branch 'topic/asoc' into for-linus Merge branch 'topic/au88x0' into for-linus Merge branch 'topic/ca0106' into for-linus Merge branch 'topic/caiaq' into for-linus Merge branch 'topic/cleanup' into for-linus Merge branch 'topic/core-id-check' into for-linus Merge branch 'topic/ctxfi' into for-linus Merge branch 'topic/div64-cleanup' into for-linus Merge branch 'topic/emu10k1' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/hdsp' into for-linus Merge branch 'topic/lx6464es' into for-linus Merge branch 'topic/maya44' into for-linus Merge branch 'topic/misc' into for-linus Merge branch 'topic/oxygen' into for-linus Merge branch 'topic/pcm-delay' into for-linus Merge branch 'topic/pcm-jiffies-check' into for-linus Merge branch 'topic/pcm-subclass-fix' into for-linus Merge branch 'topic/riptide' into for-linus Merge branch 'topic/sc6000' into for-linus Merge branch 'topic/section-fix' into for-linus Merge branch 'topic/seq-kconfig-cleanup' into for-linus Merge branch 'topic/usb-audio' into for-linus ALSA: pcm - Update document about xrun_debug proc file Merge branch 'topic/asoc' into for-linus Merge branch 'topic/caiaq' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/lx6464es' into for-linus Merge branch 'topic/misc' into for-linus Merge branch 'topic/pcm-jiffies-check' into for-linus Merge branch 'topic/ps3' into for-linus ALSA: ctxfi - Replace atc lock to mutex ALSA: hda - Add quirk for Acer Aspire 6935G ALSA: intel8x0 - Fix PCM position craziness ALSA: ctxfi - Fix deadlock with xfi-timer Merge branch 'topic/asoc' into for-linus Merge branch 'topic/ctxfi' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/intel8x0' into for-linus Merge branch 'topic/usb-audio' into for-linus ALSA: hda - Fix memory leak at codec creation ASoC: Kill BUS_ID_SIZE ALSA: hda - Add model=6530g option Merge branch 'topic/asoc' into for-linus Merge branch 'topic/caiaq' into for-linus Merge branch 'topic/hda' into for-linus ALSA: ctxfi - Allow unknown PCI SSIDs ALSA: hda - Fix unsigned comparison in patch_sigmatel.c ALSA: hda - Get back Input Source for ALC262 toshiba-s06 model ALSA: hda - Add quirk for Sony VAIO Z21MN ALSA: hda - Fix check of input source type for realtek codecs ALSA: hda - Add digital-mic support to ALC262 auto model ALSA: hda - Make jack-plug notification selectable Merge branch 'topic/asoc' into for-linus Merge branch 'topic/ctxfi' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/misc' into for-linus Merge branch 'topic/pcm-jiffies-check' into for-linus Merge branch 'topic/seq-midi-fix' into for-linus Tanli Chang (1): niu: Add support for C10NEM Tao Ma (5): ocfs2: Don't printk the error when listing too many xattrs. ocfs2: Remove redundant gotos in ocfs2_mount_volume() ocfs2: Adjust rightmost path in ocfs2_add_branch. ocfs2: Update atime in splice read if necessary. ocfs2/trivial: Wrap ocfs2_sysfile_cluster_lock_key within define. Tejun Heo (115): percpu: don't put the first chunk in reverse-map rbtree block: clear req->errors on bio completion only for fs requests ide-tape: remove back-to-back REQUEST_SENSE detection ide: use blk_run_queue() instead of blk_start_queueing() ide: don't set REQ_SOFTBARRIER ide kill unused ide_cmd->special ide-cd: clear sense buffer before issuing request sense ide-floppy: block pc always uses bio ide-taskfile: don't abuse rq->buffer ide-atapi: don't abuse rq->buffer ide-cd: don't abuse rq->buffer ide-cd,atapi: use bio for internal commands ide-pm: don't abuse rq->data ide-tape,floppy: fix failed command completion after request sense ide-atapi,tape,floppy: allow ->pc_callback() to change rq->data_len ide-tape: use single continuous buffer ide-tape: use standard data transfer mechanism ide-tape: kill idetape_bh ide-tape: unify r/w init paths ide-tape: use byte size instead of sectors on rw issue functions ide-tape: simplify read/write functions ide-atapi: kill unused fields and callbacks ide: drop rq->data handling from ide_map_sg() ide-dma: don't reset request fields on dma_timeout_retry() mg_disk: fix locking hd: fix locking block: clear req->errors on bio completion only for fs requests ide-tape: remove back-to-back REQUEST_SENSE detection ide: use blk_run_queue() instead of blk_start_queueing() ide: don't set REQ_SOFTBARRIER ide kill unused ide_cmd->special ide-cd: clear sense buffer before issuing request sense ide-floppy: block pc always uses bio ide-taskfile: don't abuse rq->buffer ide-atapi: don't abuse rq->buffer ide-cd: don't abuse rq->buffer ide-cd,atapi: use bio for internal commands ide-pm: don't abuse rq->data ide-tape,floppy: fix failed command completion after request sense ide-atapi,tape,floppy: allow ->pc_callback() to change rq->data_len ide-tape: use single continuous buffer ide-tape: use standard data transfer mechanism ide-tape: kill idetape_bh ide-tape: unify r/w init paths ide-tape: use byte size instead of sectors on rw issue functions ide-tape: simplify read/write functions ide-atapi: kill unused fields and callbacks ide: drop rq->data handling from ide_map_sg() ide-dma: don't reset request fields on dma_timeout_retry() block: merge blk_invoke_request_fn() into __blk_run_queue() block: kill blk_start_queueing() block: don't set REQ_NOMERGE unnecessarily block: cleanup REQ_SOFTBARRIER usages block: clean up misc stuff after block layer timeout conversion block: reorder request completion functions block: reorganize request fetching functions block: kill blk_end_request_callback() block: clean up request completion API block: move rq->start_time initialization to blk_rq_init() block: implement and use [__]blk_end_request_all() block: replace end_request() with [__]blk_end_request_cur() arm-omap: don't abuse rq->data block: kill rq->data block: make blk_end_request_cur() return bool block: don't init rq fields unnecessarily amiflop,ataflop,xd,mg_disk: clean up unnecessary stuff from block drivers ps3disk: simplify request completion sunvdc: kill vdc_end_request() ubd: cleanup completion path ubd: drop unnecessary rq->sector manipulation hd: clean up request completion paths swim3: clean up request completion paths swim: clean up request completion paths mg_disk: fold mg_disk.h into mg_disk.c mg_disk: clean up request completion paths fuse: misc cleanups fuse: update fuse_conn_init() and separate out fuse_conn_kill() fuse: export symbols to be used by CUSE nbd: don't clear rq->sector and nr_sectors unnecessarily ide-tape: don't initialize rq->sector for rw requests block: add rq->resid_len block: implement blk_rq_pos/[cur_]sectors() and convert obvious ones block: convert to pos and nr_sectors accessors ide: convert to rq pos and nr_sectors accessors block: drop request->hard_* and *nr_sectors block: cleanup rq->data_len usages ide: cleanup rq->data_len usages block: hide request sector and data_len block: blk_rq_[cur_]_{sectors|bytes}() usage cleanup ide: dequeue in-flight request mg_disk: fix queue hang / infinite retry on !fs requests mg_disk: dequeue and track in-flight request hd: dequeue and track in-flight request ataflop: dequeue and track in-flight request swim3: dequeue in-flight request xsysace: dequeue in-flight request paride: dequeue in-flight request ps3disk: dequeue in-flight request amiflop: dequeue in-flight request swim: dequeue in-flight request xd: dequeue in-flight request mtd_blkdevs: dequeue in-flight request jsflash: dequeue in-flight request z2ram: dequeue in-flight request block: convert to dequeueing model (easy ones) gdrom: dequeue in-flight request block: implement and enforce request peek/start/fetch scsi: fix resid_len mis-conversion in scsi_end_request() ub: use __blk_end_request_all() block: set rq->resid_len to blk_rq_bytes() on issue bio: always copy back data for copied kernel requests CUSE: implement CUSE - Character device in Userspace ahci: misc cleanups for EM stuff sata_nv: use hardreset only for post-boot probing libata: don't set IORDY for reset Tero Kristo (1): OMAP3: Add support for DPLL3 divisor values higher than 2 Tero Saarni (1): Input: synaptics - add support for reporting x/y resolution Tetsuo Handa (9): tomoyo: remove "undelete domain" command. rootplug: Remove redundant initialization. smack: Remove redundant initialization. TOMOYO: Remove unused mutex. TOMOYO: Remove redundant markers. TOMOYO: Simplify policy reader. TOMOYO: Remove unused parameter. TOMOYO: Remove unused field. TOMOYO: Add description of lists and structures. Thadeu Lima de Souza Cascardo (5): Input: fix typo in documentation Input: simplify name handling for certain input handles trivial: typo (en|dis|avail|remove)bale -> (en|dis|avail|remove)able Trivial: fix typo s/balence/balance/ trivial: fix typo compatiable/compatiability has extra 'a'. Theodore Kilgore (1): V4L/DVB (11483): gspca - mr97310a: Webcam 093a:010f added. Theodore Ts'o (46): tracing: Add documentation for the power tracer tracing: Document the event tracing system ext4: Fallback to vmalloc if kmalloc can't allocate s_flex_groups array ext4: Use is_power_of_2() for clarity ext4: Simplify ext4_commit_super()'s function signature ext4: Fix and simplify s_dirt handling ext4: Use separate super_operations structure for no_journal filesystems ext4: Avoid races caused by on-line resizing and SMP memory reordering ext4: Remove outdated comment about lock_super() ext4: ext4_mark_recovery_complete() doesn't need to use lock_super ext4: Replace lock/unlock_super() with an explicit lock for the orphan list ext4: Replace lock/unlock_super() with an explicit lock for resizing jbd2: convert instrumentation from markers to tracepoints ext4: convert instrumentation from markers to tracepoints ext4: avoid unnecessary spinlock in critical POSIX ACL path ext4: Don't avoid using BLOCK_UNINIT block groups in mballoc ext4: Move the ext4_i.h header file into ext4.h ext4: Move the ext4_sb.h header file into ext4.h ext4: Move fs/ext4/namei.h into ext4.h ext4: Move fs/ext4/group.h into ext4.h ext4: fix the length returned by fiemap for an unallocated extent ext4: Simplify function signature for ext4_da_get_block_write() ext4: Rename ext4_get_blocks_handle() to be ext4_ind_get_blocks() ext4: Rename ext4_get_blocks_wrap() to be ext4_get_blocks() ext4: Define a new set of flags for ext4_get_blocks() ext4: Add documentation to the ext4_*get_block* functions ext4: Add BUG_ON debugging checks to noalloc_get_block_write() ext4: Merge ext4_da_get_block_write() into mpage_da_map_blocks() ext4: Clean up ext4_get_blocks() so it does not depend on bh_result->b_state ext4: Add a comprehensive block validity check to ext4_get_blocks() ext4: down i_data_sem only for read when walking tree for fiemap ext4: remove unused function __ext4_write_dirty_metadata ext4: Clean up calls to ext4_get_group_desc() Documentation: Add "how to write a good patch summary" to SubmittingPatches ext4: Don't treat a truncation of a zero-length file as replace-via-truncate fs: Remove i_cindex from struct inode fs: Rearrange inode structure elements to avoid waste due to padding ext4: change s_mount_opt to be an unsigned int ext4: update the s_last_mounted field in the superblock ext4: move the abort flag from s_mount_opts to s_mount_flags ext4: document the "abort" mount option ext4: Use a hash of the topdir directory name for the Orlov parent group ext4: Fix 64-bit block type problem on 32-bit platforms ext4: Fix up whitespace issues in fs/ext4/inode.c ext4: Don't update ctime for non-extent-mapped inodes ext4: avoid unnecessary spinlock in critical POSIX ACL path Thomas Chou (2): microblaze: clean LDFLAGS to build kernel mtd: plat_nand: fix section error Thomas Gleixner (46): performance counters: core code perf counters: protect them against CSTATE transitions perf counters: clean up 'raw' type API perf counters: expand use of counter->event signals: split do_tkill signals: implement sys_rt_tgsigqueueinfo x86: hookup sys_rt_tgsigqueueinfo Merge branch 'core/signal' into perfcounters/core perf_counter tools: remove build generated files perfcounter tools: move common defines ... to local header file perfcounter tools: make rdclock an inline function perfcounter tools: fix pointer mismatch perfcounter tools: get the syscall number from arch/*/include/asm/unistd.h sh: remove obsolete no_irq_type sh: remove obsolete hw_interrupt_type avr32: remove obsolete hw_interrupt_type futex: remove the wait queue sched, timers: move calc_load() to scheduler sched, timers: cleanup avenrun users Merge branch 'core/urgent' into core/futexes futex: cleanup error exit futex: fix restart for early wakeup in futex_wait_requeue_pi() futex: fix restart in wait_requeue_pi x86, mce: unify Intel thermal init, prepare x86, mce: unify Intel thermal init x86, mce: Cleanup symbols in intel thermal codes x86, mce: Cleanup MCG definitions x86, mce: remove mce_init unused argument perf_counter tools: Add 'perf list' to list available events perf_counter tools: Add help for perf list perf_counter, x86: Implement generalized cache event types, add Core2 support perf_counter, x86: Implement generalized cache event types, add Atom support perf_counter, x86: Implement generalized cache event types, add AMD support perf_counter, x86: Clean up hw_cache_event ids copies x86: memtest: use pointers of equal type for comparison clocksource: prevent selection of low resolution clocksourse also for nohz=on x86: hpet: Mark per cpu interrupts IRQF_TIMER to prevent resume failure [IA64] remove obsolete no_irq_type [IA64] remove obsolete irq_desc_t typedef [IA64] remove obsolete hw_interrupt_type alpha: remove obsolete hw_interrupt_type m32r: remove obsolete hw_interrupt_type um: remove obsolete hw_interrupt_type remove put_cpu_no_resched() drivers/mfd: remove obsolete irq_desc_t typedef futex: Fix the write access fault problem for real Thomas Hellstrom (4): drm: Add the TTM GPU memory manager subsystem. ttm: Return -ERESTART when a signal interrupts bo eviction. drm: Apply "Memory fragmentation from lost alignment blocks" drm/ttm: fix an error path to exit function correctly Thomas Mingarelli (1): [WATCHDOG] hpwdt: Add NMI sourcing Thomas Petazzoni (1): macb: Add support of the netpoll API Thomas Reitmayr (2): [ARM] orion5x: Change names of defines for Reset-Out-Mask register [ARM] Kirkwood: Add the watchdog timer as a platform device. Thomas Renninger (3): [CPUFREQ] ondemand: Uncouple minimal sampling rate from HZ in NO_HZ case [CPUFREQ] powernow-k8: Set transition latency to 1 if ACPI tables export 0 [CPUFREQ] Only set sampling_rate_max deprecated, sampling_rate_min is useful Tilman Schmidt (14): ISDN: update Documentation/isdn/00-INDEX gigaset: remove obsolete references to m10x state table gigaset: fix possible oops in error handling gigaset: skip unnecessary hex formatting gigaset: fix error return code gigaset: documentation update gigaset: move up Kconfig inclusion point gigaset: remove UNDOCREQ config option gigaset: remove unused structure member rcvbytes isdn: rename capi_ctr_reseted() to capi_ctr_down() isdn: kerneldoc for capiutil.c isdn: prevent NULL ptr Oops in capi_cmsg2str() isdn: extend INTERFACE.CAPI document isdn: clean up documentation index Tim Abbott (1): ftrace: use .sched.text, not .text.sched in recordmcount.pl Tim Bird (1): ring-buffer: fix bug in ring_buffer_discard_commit Tim Blechmann (3): perf_counter: include missing header ALSA: lx6464es - driver for the digigram lx6464es interface ALSA: lx6464es - support standard alsa module parameters Tim Gardner (1): Staging: winbond: mac80211 - unify config_interface and bss_info_changed Timo Kokkonen (1): [WATCHDOG] twl4030 watchdog driver Timo Teras (1): neigh: fix state transition INCOMPLETE->FAILED via Netlink request Timo Teräs (1): ipv4: update ARPD help text Timur Tabi (1): powerpc: Introduce macro spin_event_timeout() Tobias Doerffel (1): ath5k: added cfg80211 based rfkill support Tobias Klauser (5): ath5k: Storage class should be before const qualifier s2io: Remove private boolean definitions V4L/DVB (11654): gspca - m5602: Storage class should be before const qualifier V4L/DVB (11724): firedtv: Storage class should be before const qualifier Staging: pohmelfs: Storage class should be before const qualifier Tom Goff (1): PIM-SM: namespace changes Tom Mingarelli (1): [WATCHDOG] hpwdt: Add NMI priority option Tom Zanussi (9): tracing/filters: add run-time field descriptions to TRACE_EVENT_FORMAT events tracing/filters: add TRACE_EVENT_FORMAT_NOFILTER event macro tracing/infrastructure: separate event tracer from event support tracing/filters: use ring_buffer_discard_commit() in filter_check_discard() tracing/filters: allow on-the-fly filter switching tracing/filters: add filter_mutex to protect filter predicates tracing/filters: move preds into event_filter object tracing/filters: distinguish between signed and unsigned fields tracing/filters: a better event parser Tomas 'Sleep_Walker' Cech (2): [ARM] pxa/treo680: initial support MAINTAINERS: add entry for Palm Treo680 Tomas Szepe (1): CONFIG_FILE_LOCKING should not depend on CONFIG_BLOCK Tomas Winkler (4): iwlwifi: replace test_and_set_bit by set_bit in clear stations function iwlwifi: drop struct iwl3945_hw_key iwlwifi: drop iwl3945_tid_data iwlwifi: unify station management Tomi Valkeinen (1): ARM: OMAP2/3: DMA: implement trans copy and const fill Tony Breeds (2): ixgbe: Be explict with what we are !'ing in ixgbe_sfp_config_module_task() powerpc/mpic: Cleanup mpic_find() implementation Tony Cook (1): USB: mos7840: fix debug log messages Tony Lindgren (24): ARM: OMAP2/3: Remove OMAP2_32KSYNCT_BASE ARM: OMAP2/3: Remove OMAP_PRM_REGADDR and OMAP2_PRM_BASE ARM: OMAP2/3: Move define of OMAP2_VA_IC_BASE to be local to entry-macro.S ARM: OMAP2/3: Remove OMAP2_PRCM_BASE ARM: OMAP2/3: Remove OMAP_CM_REGADDR ARM: OMAP2/3: Reorganize Makefile to add omap4 support ARM: OMAP1: Misc clean-up ARM: OMAP2/3: Remove OMAP2_32KSYNCT_BASE ARM: OMAP2/3: Remove OMAP_PRM_REGADDR and OMAP2_PRM_BASE ARM: OMAP2/3: Move define of OMAP2_VA_IC_BASE to be local to entry-macro.S ARM: OMAP2/3: Remove OMAP2_PRCM_BASE ARM: OMAP2/3: Remove OMAP_CM_REGADDR ARM: OMAP2/3: Reorganize Makefile to add omap4 support Merge branch 'omap-clock-upstream' of git://git.pwsan.com/linux-2.6 into for-next ARM: OMAP2/3: Add generic smc91x support when connected to GPMC ARM: OMAP: Add some entries to MAINTAINERS ARM: OMAP2/3: Remove L4_WK_OMAP_BASE, L4_PER_OMAP_BASE, L4_EMU_BASE, L3_OMAP_BASE ARM: OMAP3: Initialize more devices for LDP Merge branch 'omap-upstream' into for-next Merge branch 'omap3-upstream' into for-next Merge branch 'omap3-boards' into for-next Merge branch 'omap4' into for-next [ARM] 5536/1: Move clk_add_alias() to arch/arm/common/clkdev.c i2c-omap: Fix build breaking typo cpu_is_omap_2430 Tony Luck (3): [IA64] hook up new rt_tgsigqueueinfo syscall [IA64] ia64 does not need umount2() syscall Pull for-2.6.31 into release Tony Thompson (1): ARMv7: Mark the PTWs inner WBWA on SMP and WB on UP Tony Vroon (1): ALSA: hda - Acer Inspire 6530G model for Realtek ALC888 Torben Schulz (1): ALSA: hda - Improved MacBook 3,1 support Torsten Ertbjerg Rasmussen (1): rtc: rtc-ds1742 nvram attribute fix Toshiyuki Okajima (1): ext4: fix dx_map_entry to support 256k directory blocks Trent Piepho (15): V4L/DVB (11964): b2c2: Fix problems with frontend attachment V4L/DVB (11901): v4l2: Create helper function for bounding and aligning images V4L/DVB (11902): pxa-camera: Use v4l bounding/alignment function V4L/DVB (11903): sh_mobile_ceu_camera: Use v4l bounding/alignment function V4L/DVB (11904): zoran: Use v4l bounding/alignment functiob V4L/DVB (11905): vivi: Use v4l bounding/alignment function V4L/DVB (11906): saa7134: Use v4l bounding/alignment function V4L/DVB (11907): cx88: Use v4l bounding/alignment function V4L/DVB (11908): w8968cf: Use v4l bounding/alignment function V4L/DVB (11909): cx23885: Use v4l bounding/alignment function V4L/DVB (11910): mt9: Use v4l bounding/alignment function V4L/DVB (11911): cx231xx: Use v4l bounding/alignment function V4L/DVB (11912): em28xx: Use v4l bounding/alignment function V4L/DVB (11913): cx231xx: TRY_FMT should not actually set anything V4L/DVB (12003): v4l2: Move bounding code outside I2C ifdef block Trond Myklebust (16): nfsd: Use write gathering only with NFSv2 SUNRPC: Fix a missing "break" option in xs_tcp_setup_socket() NFSv4: Fix the 'nolock' option regression NFSv4: Move error handling out of the delegation generic code NFSv4: Handle more errors when recovering open file and locking state NFS: Ensure we always hold the BKL when dereferencing inode->i_flock NFSv4/NLM: Push file locking BKL dependencies down into the NLM layer Merge commit 'linux-pnfs/nfs41-for-2.6.31' into nfsv41-for-2.6.31 Merge branch 'devel-for-2.6.31' into for-2.6.31 SUNRPC: Fix the TCP server's send buffer accounting VFS: Uninline the function put_mnt_ns() VFS: Add VFS helper functions for setting up private namespaces NFSv4: Replace nfs4_path_walk() with VFS path lookup in a private namespace NFS: Fix nfs_path() to always return a '/' at the beginning of the path NFS: Correct the NFS mount path when following a referral VFS: Switch init_mount_tree() to use the new create_mnt_ns() helper Troy Kisky (2): davinci: interrupts: get_irqnr_and_base: save an instruction ASoC: codec tlv320aic23 fix bogus divide by 0 message Troy Moure (1): acer-wmi: fix rfkill conversion Ulrich Dangel (1): Input: ALPS - handle touchpoints buttons correctly Ulrik Bech Hald (1): [WATCHDOG] OMAP fixes: enable clock in probe, trigger timer reload Uri Shkolnik (42): V4L/DVB (11812): Siano: smsusb - add big endian support V4L/DVB (11239): sdio: add cards ids for sms (Siano Mobile Silicon) MDTV receivers V4L/DVB (11240): siano: add high level SDIO interface driver for SMS based cards V4L/DVB (11552): Siano: SDIO interface driver - remove two redundant lines V4L/DVB (11554): Siano: core header - add definitions and structures V4L/DVB (11555): Siano: core - move and update the main core structure declaration V4L/DVB (11556): Siano: core header - indentation V4L/DVB (11559): Siano: add support for infra-red (IR) controllers V4L/DVB (11561): Siano: add messages handling for big-endian target V4L/DVB (11726): Modify the file license to match all other Siano's files V4L/DVB (11727): Siano: core header - update include files V4L/DVB (11728): Siano: smsdvb - modify license V4L/DVB (11729): Siano: smsdvb - remove redundent complete instruction V4L/DVB (11776): Siano: smsusb - update license V4L/DVB (11777): Siano: smsusb - handle byte ordering and big endianity V4L/DVB (11778): Siano: smsusb - lost buffers bug fix V4L/DVB (11779): Siano: Makefile - add smsendian to build V4L/DVB (11781): Siano: smsdvb - add big endian support V4L/DVB (11782): Siano: smsdvb - use 'push' status mechanism V4L/DVB (11783): Siano: smsdvb - small typo fix ad module author V4L/DVB (11813): Siano: move dvb-api headers' includes to dvb adapter V4L/DVB (11814): Siano: smscards - add gpio look-up table V4L/DVB (11815): Siano: bind infra-red component V4L/DVB (11816): Siano: USB - move the device id table to the cards module V4L/DVB (11817): Siano: smscards - fix wrong firmware assignment V4L/DVB (11818): Siano: smscards - assign gpio to HPG targets V4L/DVB (11819): Siano: smscore - fix get_common_buffer bug V4L/DVB (11820): Siano: smscore - fix byte ordering bug V4L/DVB (11821): Siano: smscore - fix isdb-t firmware name V4L/DVB (11822): Siano: smscore - bug fix at get_device_mode V4L/DVB (11823): Siano: smsusb - fix typo in module description V4L/DVB (11824): Siano: smsusb - change exit func debug msg V4L/DVB (11883): Siano: cards - add two additional (USB) devices V4L/DVB (11884): Siano: smssdio - revert to stand alone module V4L/DVB (11885): Siano: Add new GPIO management interface V4L/DVB (11886): Siano: smscore - fix some new GPIO definitions names V4L/DVB (11887): Siano: smscards - add board (target) events V4L/DVB (11888): Siano: smsusb - remove redundant ifdef V4L/DVB (11889): Siano: smsdvb - add DVB v3 events V4L/DVB (11890): Siano: smscore - remove redundant code V4L/DVB (11891): Siano: smscore - bind the GPIO SMS protocol V4L/DVB (11892): Siano: smsendian - declare function as extern Ursula Braun (10): iucv: provide second per-cpu IUCV command parameter block af_iucv: Fix merge. qeth: avoid crash after detach of replugged device ctcm: avoid crash in ctcm_remove_device qeth: support z/VM VSWITCH Port Isolation qeth: omit upstream checksumming for HiperSockets [S390] iucv: establish reboot notifier [S390] pm: iucv power management callbacks. [S390] pm: netiucv power management callbacks. [S390] PM: af_iucv power management callbacks. Uwe Kleine-König (5): hwrng: omap - Move probe function to .devinit.text mmc/omap: make mmci-omap using platform_driver_probe USB: move twl4030_usb's probe function to .devinit.text USB: move r8a66597_hcd's probe function to .devinit.text USB: move orion-ehci's probe function to .devinit.text Vaidyanathan Srinivasan (1): sched: Don't export sched_mc_power_savings on multi-socket single core system Valentin Longchamp (10): mx31moboard: clean-up of board support mx31: define various pins used on mx31moboard (v2) mx31moboard: setup all pins (v2) mx31moboard: add i2c support (v2) mx31moboard: add sdhc support (v3) mx31: remove gpio_request calls from iomux code mx31moboard: add support for usb OTG device (v3) mx31: add camera device mx31: changed CONSISTENT_DMA_SIZE to 8M for mx31 video mx31: correct csi_clk parent (v2) Vasanthakumar Thiagarajan (12): mac80211: Don't access managed mode bits in non-managed mode ath9k: Remove bogus break after return ath9k: Cleanup ineffective return values ath9k: Print hw reset failure status as signed int ath9k: Remove unused parameters which are passed to ath_beacon_config_X() ath9k: cleanup beacon parameters configuration ath9k: Move PS wakeup/restore calls from isr to tasklet ath9k: Fix write callback of 'debug' which configures debug mask mac80211: Fix the way ADDBA request count being modified ath9k: Fix tx stuck when connected to aggr disabled HT AP ath9k: Add helper to get ath9k specific current channel ath9k: Make sure we have current channel in ah_curchan before rf disable/enable Vasu Dev (5): fcoe: consolidates netdev related config and cleanup for spma mode fcoe: adds spma mode support [SCSI] fcoe: reduces lock cost when adding a new skb to fcoe_pending_queue [SCSI] fcoe: removes fcoe_watchdog [SCSI] fcoe: removes reserving memory for vlan_ethdr on tx path Vegard Nossum (28): x86: add save_stack_trace_bp() for tracing from a specific stack frame stacktrace: add forward-declaration struct task_struct tasklets: new tasklet scheduling function kmemcheck: add the kmemcheck documentation kmemcheck: add the kmemcheck core x86: add hooks for kmemcheck kmemcheck: add mm functions kmemcheck: add DMA hooks slub: add hooks for kmemcheck crypto: don't track xor test pages with kmemcheck kmemcheck: don't track page tables kmemcheck: add hooks for page- and sg-dma-mappings kmemcheck: add hooks for the page allocator kmemcheck: enable in the x86 Kconfig kmemcheck: add opcode self-testing at boot kmemcheck: introduce bitfield API net: use kmemcheck bitfields API for skbuff net: annotate bitfields in struct inet_sock ieee1394: annotate bitfield ieee1394/csr1212: fix false positive kmemcheck report net: annotate inet_timewait_sock bitfields c2port: annotate bitfield for kmemcheck net: annotate struct sock bitfield trace: annotate bitfields in struct ring_buffer_event fs: introduce __getname_gfp() fs: fix do_mount_root() false positive kmemcheck warning signal: fix __send_signal() false positive kmemcheck warning Merge commit 'linus/master' into HEAD Vikram Pandita (3): ARM: OMAP2/3: Serial: Remove arch_initcall dependency ARM: OMAP3: Add support for OMAP3 Zoom2 board ARM: OMAP3: Defconfig for Zoom2 board Ville Syrjala (1): Input: ati_remote2 - use non-atomic bitops Vimal Singh (2): mtd: nand: fix 512 byte software ecc support mtd: nand: add OMAP2/OMAP3 NAND driver Vinay Sridhar (1): powerpc/xmon: Add dl command to dump contents of __log_buf Vincent Minet (1): ext4: Fix spinlock assertions on UP systems Viral Mehta (2): trivial: remove extra space USB: xhci: replace if-elseif-else with switch-case Vivek Kutal (1): fbdev: *bfin*: drop unnecessary calls to memset Vivek Natarajan (2): ath9k: No need to abort Rx path when autosleep is enabled. ath9k: Disable autosleep feature for AR9285 based chipsets. Vlad Yasevich (1): sctp: support non-blocking version of the new sctp_connectx() API Vladimir Barinov (7): MX27ADS: setup all pins at once in one table MX27ADS: Add NAND support MX27ADS: Add I2C support MX27ADS: Add framebuffer support MX27ADS: Add 1-wire support MX27ADS: Add SDHC support mtd: MXC NAND support for 2KiB page size flashes Vladislav Zolotarov (4): bnx2x: FW 4.8.53.0 bnx2x: Separated FW from the source. bnx2x: Removed blob file bnx2x: driver version 1.48.105-1 Wai Yew CHAY (2): ALSA: SB X-Fi driver merge ALSA: ctxfi - Add PM support Wan ZongShun (1): Input: add support for touchscreen on W90P910 ARM platform Wang Chen (1): nfsd: nfs4_stat_init cleanup Wang Tinggong (1): trivial: rbtree.txt: fix rb_entry() parameters in sample code Waskiewicz Jr, Peter P (2): ixgbe: Disallow SFP 1G modules in the SFP+ cages for 82598 and 82599 ixgbe: Add SAN MAC address to the RAR, return the address to DCB Wayne Boyer (2): ipr: add test for MSI interrupt support ipr: differentiate pci-x and pci-e based adapters Wei Ni (1): ALSA: hda - Support NVIDIA 8 channel HDMI audio Wei Yongjun (12): rds: use kmem_cache_zalloc instead of kmem_cache_alloc/memset at76c50x-usb: remove pointless conditional before kfree_skb() wireless: fix to set dev->broadcast correctly sctp: fix error cause codes of ADD-IP extension sctp: fix report unrecognized parameter in ACSONF-ACK sctp: fix the error code when ASCONF is received with invalid address sctp: fix a typo in net/sctp/sm_statetable.c sctp: fix to only enable IPv6 address support on PF_INET6 socket sctp: fix panic when T2-shutdown timer expire on removed transport sctp: fix panic when T4-rto timer expire on removed transport sctp: fix to choose alternate destination when retransmit ASCONF chunk KVM: remove pointless conditional before kfree() in lapic initialization Weidong Han (7): docs, x86: add nox2apic back to kernel-parameters.txt x86, intr-remap: fix ack for interrupt remapping x86, intr-remap: enable interrupt remapping early x86, intr-remap: add option to disable interrupt remapping x86, intr-remap: fix x2apic/intr-remap resume Intel-IOMMU, intr-remap: set the whole 128bits of irte when modify/free it Intel-IOMMU, intr-remap: source-id checking Wen-chien Jesse Sung (1): V4L/DVB (11730): af9015: support for KWorld MC810 Werner Almesberger (2): [ARM] S3C6410: Add CAMIF clock [ARM] S3C64XX: Add HCLKx2 Wey-Yi Guy (22): iwlwifi: merge and better support of suspend/resume for iwlagn and iwl3945 iwlwifi: adding triple stream rate support for MIMO3 iwlwifi: adding MIMO3 support in rate scaling iwlwifi: add debug messages when start aggregation queue iwlwifi: Display decoded rate/mcs information iwlwifi: adding interrupt counter in debugfs for debugging iwlwifi: clean up unused NL80211_IFTYPE_MONITOR for Monitor mode iwlwifi: "is_fat" bit in rate scale match RXON flag iwlwifi: use #define instead of hard coded value iwlagn: show current rate scale data in debugfs iwlwifi: show qos AC parameters iwlwifi: default WMM AC parameters iwlwifi: add Greenfield support for 11n iwlwifi: Temperature sensor voltage reading for 5150 iwlwifi: support NVM access (EEPROM/OTP) iwlwifi: report the rate index as an MCS rate number iwlwifi: support "pure 40MHz" in RXON command iwlwifi: check for valid band for channel info iwlwifi: add value and range define for link quality command iwlwifi: checking for 40MHz mode iwlwifi: check control channel for pure 40MHz iwlwifi: check for channel location for 40MHz Wim Van Sebroeck (6): [WATCHDOG] iTCO_wdt: Cleanup code [WATCHDOG] Some more general cleanup [WATCHDOG] move platform probe and remove function to devinit and devexit [WATCHDOG] Correct WDIOF_MAGICCLOSE flag [WATCHDOG] iTCO_wdt: Fix ICH7+ reboot issue. [WATCHDOG] wdt_pci.c: remove #ifdef CONFIG_WDT_501_PCI Wolfgang Denk (2): powerpc/mpc8272ads: fix device tree for 8 MB flash size powerpc/5xxx: Add common mpc5xxx_get_bus_frequency() function Wolfgang Grandegger (12): can: Documentation for the CAN device driver interface can: Update MAINTAINERS and CREDITS file can: CAN Network device driver and Netlink interface can: Driver for the SJA1000 CAN controller can: SJA1000 generic platform bus driver can: SJA1000 driver for EMS PCI cards The patch adds support for the PCI cards: PCIcan and PCIcanx (1, 2 or 4 channel) from Kvaser (http://www.kvaser.com). can: some fixes and cleanups to the initial device driver interface can: sja1000: stop misusing member base_addr of struct net_device can: sja1000: generic OF platform bus driver can: sja1000_of_platform: fix build problems with printk format rtc: add stand-alone driver for RX8025 chip Wolfgang Muees (2): mmc_spi: speedup for slow cards, less wear-out mmc_spi: don't use EINVAL for possible transmission errors Wolfram Sang (5): trivial: fs/inode: Fix typo in file_update_time nanodoc i2c/chips: Move max6875 to drivers/misc/eeprom powerpc/5200: Update pcm030.dts to add i2c eeprom and delete cruft powerpc/5121: make clock debug output more readable rtc: rtc-ds1307 add ds3231 Wolfram Strepp (3): rb_tree: reorganize code in rb_erase() for additional changes rb_tree: make clear distinction between two different cases in rb_erase() rb_tree: remove redundant if()-condition in rb_erase() Wu Fengguang (37): perf_counter tools: Merge common code into perfcounters.h perf_counter tools: Move perfstat supporting code into perfcounters.h perf_counter tools: support symbolic event names in kerneltop perf_counter tools: Reuse event_name() in kerneltop perf_counter tools: move remaining code into kerneltop.c perf_counter tools: fix comment for sym_weight() perf_counter tools: fix event_id type perf_counter tools: cut down default count for cpu-cycles perf_counter tools: when no command is feed to perfstat, display help and exit slob: use PG_slab for identifying SLOB pages readahead: make mmap_miss an unsigned int readahead: move max_sane_readahead() calls into force_page_cache_readahead() readahead: apply max_sane_readahead() limit in ondemand_readahead() readahead: remove one unnecessary radix tree lookup readahead: increase interleaved readahead size readahead: remove sync/async readahead call dependency readahead: sequential mmap readahead readahead: enforce full readahead size on async mmap readahead readahead: record mmap read-around states in file_ra_state radix-tree: add radix_tree_prev_hole() readahead: move the random read case to bottom readahead: introduce context readahead algorithm readahead: remove redundant test in shrink_readahead_size_eio() readahead: enforce full sync mmap readahead size mm: introduce PageHuge() for testing huge/gigantic pages proc: kpagecount/kpageflags code cleanup proc: export more page flags in /proc/kpageflags pagemap: document clarifications pagemap: document 9 more exported page flags pagemap: add page-types tool vmscan: cleanup the scan batching code vmscan: don't export nr_saved_scan in /proc/zoneinfo vmscan: ZVC updates in shrink_active_list() can be done once vmscan: report vm_flags in page_referenced() vmscan: make mapped executable pages the first class citizen vmscan: merge duplicate code in shrink_active_list() writeback: skip new or to-be-freed inodes Wu Zhangjin (2): tracing: fix undeclared 'PAGE_SIZE' in include/linux/trace_seq.h MIPS: Add hibernation support Xiantao Zhang (1): KVM: ia64: Flush all TLBs once guest's memory mapping changes. Xiaochen Shen (1): USB: Add Intel Langwell USB Device Controller driver Yan Zheng (4): btrfs: Fix set/clear_extent_bit for 'end == (u64)-1' Btrfs: Mixed back reference (FORWARD ROLLING FORMAT CHANGE) Btrfs: check duplicate backrefs for both data and metadata Btrfs: always update root items for fs trees at commit time Yang Li (1): rio: warn_unused_result warnings fix Yang Zhang (2): KVM: ia64: fix compilation error in kvm_get_lowest_prio_vcpu KVM: ia64: enable external interrupt in vmm Yevgeny Petrilin (17): mlx4_en: Removed redundant stride variable mlx4_en: Fix partial rings feature mlx4_en: Giving interface name in debug messages mlx4_en: Moved all module parameters handling to en_main.c mlx4_en renamed en_params.c to en_ethtool.c mlx4_en: Work with part of the ports. mlx4_en: Coalescing target is equal for all mtu's mlx4_en: multiqueue support mlx4_en: Added vlan_features support mlx4_en: Updated driver version mlx4: FIX error flow when initializing EQ table mlx4_en: Counting all the dropped packets on the TX side mlx4_en: Removed redundant skb->len check mlx4_en: using stop/start_all_queues mlx4_en: Cancel port_up check in transmit function mlx4_en: Removed redundant check on lso header size mlx4_en: Remove redundant refill code on RX Yi Li (4): Blackfin: bf527-ezkit: add support for mmc-spi Blackfin: define SPI IRQ in board resources Blackfin: update aedos-ipipe code to upstream 1.10-00 Blackfin: drop BF535-specific text for exception 0x2A (unaligned instruction) Yi Zou (13): ixgbe: Enable L2 header split in 82599 ixgbe: Add FCoE feature register defines to 82599 ixgbe: Add FCoE feature header to 82599 ixgbe: Add FCoE feature code to 82599 ixgbe: Add infrastructure code for FCoE large send offload to 82599 ixgbe: Implement FCoE Tx side offload features in base driver of 82599 ixgbe: Add infrastructure code for FCoE large receive offload to 82599 ixgbe: Implement FCoE Rx side large receive offload feature to 82599 ixgbe: Add FCoE related statistics to 82599 ixgbe: Add RING_F_FCOE for FCoE feature in 82599 ixgbe: Enable FCoE redirection table feature in 82599 ixgbe: Enable jumbo frame for FCoE feature in 82599 ixgbe: Include offloaded FCoE data into total rx/tx statistics for 82599 Yinghai Lu (56): perf_counter: more barrier in blank weak function x86: make irqinit_32.c more like irqinit_64.c, v2 x86: make wakeup_secondary_cpu_via_init static x86: consistent about warm_reset_vector for UN_NON_UNIQUE_APIC x86: remove (null) in /sys kernel_page_tables x86: use used_vectors in init_IRQ() x86: apic: Remove duplicated macros x86: Use dmi check in apic_is_clustered() on 64-bit to mark the TSC unstable irq, cpumask: correct CPUMASKS_OFFSTACK typo and fix fallout x86/irq: remove leftover code from NUMA_MIGRATE_IRQ_DESC irq: change ->set_affinity() to return status irq: only update affinity if ->set_affinity() is sucessfull x86/irq: change irq_desc_alloc() to take node instead of cpu irq: change ACPI GSI APIs to also take a device argument irq: change io_apic_set_pci_routing() to use device parameter x86/irq: change MSI irq_desc to be more numa aware irq: make ht irq_desc more numa aware x86/irq: use move_irq_desc() in create_irq_nr() x86/pci: remove rounding quirk from e820_setup_gap() x86/acpi: remove irq-compression trick on 32-bit x86: fix alloc_mptable() x86/acpi: call mp_config_acpi_gsi() in mp_register_gsi() x86/acpi: move pin_programmed bit map to io_apic.c x86/pci: add 4 more return parameters to IO_APIC_get_PCI_irq_vector() x86/acpi: move setup io apic routing out of CONFIG_ACPI scope x86/pci: update pirq_enable_irq() to setup io apic routing x86: apic: Check rev 3 fadt correctly for physical_apic bit x86: clean up and fix setup_clear/force_cpu_cap handling x86: clean up and and print out initial max_pfn_mapped x86: read apic ID in the !acpi_lapic case x86: Sanity check the e820 against the SRAT table using e820 map only x86: Allow 1MB of slack between the e820 map and SRAT, not 4GB x86: read apic ID in the !acpi_lapic case x86, apic: introduce io_apic_irq_attr x86: don't call read_apic_id if !cpu_has_apic mm, x86: remove MEMORY_HOTPLUG_RESERVE related code x86, mm: Fix node_possible_map logic x86: fix system without memory on node0 x86, irq: update_mptable needs pci_routeirq x86, irq: don't call mp_config_acpi_gsi() if update_mptable is not enabled x86, io-apic: Don't mark pin_programmed early x86: enable_update_mptable should be a macro x86: remove some alloc_bootmem_cpumask_var calling irq/cpumask: make memoryless node zero happy memcg: don't use bootmem allocator in setup code PCI/x86: don't assume prefetchable ranges are 64bit PCI: improve resource allocation under transparent bridges x86: handle initrd that extends into unusable memory x86: use zalloc_cpumask_var in arch_early_irq_init kvm: remove the duplicated cpumask_clear irq: slab alloc for default irq_affinity x86: make zap_low_mapping could be used early firmware_map: fix hang with x86/32bit page-allocator: clear N_HIGH_MEMORY map before we set it again x86: fix duplicated sysfs attribute x86: use zalloc_cpumask_var for mce_dev_initialized Yong Wang (8): perf_counter/x86: Always use NMI for performance-monitoring interrupt perf_counter/x86: Remove the IRQ (non-NMI) handling bits perf_counter: Documentation update perf_counter tools: Fix incorrect printf formats perf_counter, x86: Correct some event and umask values for Intel processors perf_counter/x86: Fix the model number of Intel Core2 processors perf_counter tools: Remove one L1-data alias perf_counter/x86: Add a quirk for Atom processors Yoshihiro Shimoda (12): sh: sh7785lcr: fix I2C device address map for 32-bit mode net: sh_eth: fix cache coherency issue net: sh_eth: fix TX/RX descriptor not set physical memory net: sh_eth: fix receive desciptor loop net: sh_eth: CPU dependency code collect to "struct sh_eth_cpu_data" net: sh_eth: Add support SH7724 USB: r8a66597-hcd: use platform_data instead of module_param sh: sh7785lcr: add platform data for r8a66597-hcd sh: highlander: add platform data for r8a66597-hcd sh: x3proto: add platform data for r8a66597-hcd sh: add platform data for r8a66597-hcd in setup-sh7366 sh: add platform data for r8a66597-hcd in setup-sh7723 Yoshinori Sato (1): serial: sh-sci: Fix up h8300 support. Yu Zhao (11): VT-d: fix invalid domain id for KVM context flush PCI: support the ATS capability PCI: handle Virtual Function ATS enabling VT-d: parse ATSR in DMA Remapping Reporting Structure VT-d: add device IOTLB invalidation support VT-d: cleanup iommu_flush_iotlb_psi and flush_unmaps VT-d: support the device IOTLB PCI: fix SR-IOV function dependency link problem PCI: cleanup Function Level Reset PCI: support PM D0hot->D3 transition reset PCI: support Secondary Bus Reset Yu Zhiguo (3): NFSv4: do exact check about attribute specified NFSv4: kill off complicated macro 'PROC' NFS: kill off complicated macro 'PROC' Zephaniah E. Hull (1): Input: psmouse - ESD workaround fix for OLPC XO touchpad Zhang Rui (5): Show the physical device node of backlight class device. ACPI: fix a deadlock in hotplug case ACPI: DMI to disable Vista compatibility on some Sony laptops ACPI: run ACPI device hot removal in kacpi_hotplug_wq ACPI: video: DMI workaround broken Acer 7720 BIOS enabling display brightness Zhang, Xiantao (1): KVM: ia64: make kvm depend on CONFIG_MODULES. Zhang, Yanmin (3): PCI AER: support Multiple Error Received and no error source id PCI AER: support invalid error source IDs PCI AER: multiple error support Zhao Yakui (3): ACPI: increase size of acpi_bus_id[] ACPI: Add the reference count to avoid unloading ACPI video bus twice ACPI: Rename ACPI processor device bus ID Zhaolei (13): ftrace: clean up enable logic for sched_switch printk: add support of hh length modifier for printk tracing, net, skb tracepoint: make skb tracepoint use the TRACE_EVENT() macro tracing, kmemtrace: Separate include/trace/kmemtrace.h to kmemtrace part and tracepoint part tracing, kmemtrace: Make kmem tracepoints use TRACE_EVENT macro tracing: Remove include/trace/kmem_event_types.h ftrace: Add task_comm support for trace_event ftrace: clean up of using ftrace_event_enable_disable() ftrace: don't convert function's local variable name in macro ftrace, workqueuetrace: make workqueue tracepoints use TRACE_EVENT macro trace_workqueue: use list_for_each_entry() instead of list_for_each_entry_safe() trace_workqueue: remove cpu_workqueue_stats->first_entry trace_workqueue: remove blank line between each cpu Zhenwen Xu (1): [SCSI] NCR_D700: fix IRQ handler return type Zhenyu Wang (10): agp/intel: Add support for new chipsets drm/i915: Add chipset/feature defines for for new chipsets drm/i915: Add new chipset register definitions drm/i915: Disable opregion on IGDNG for now drm/i915: Disable tiling on IGDNG for now drm/i915: enable kernel modesetting on IGDNG drm/i915: Add HDMI support on IGDNG drm/i915: Add LVDS support for IGDNG drm/i915: handle interrupt on new chipset drm/i915: Enable probe on new chipset Zhu Yi (7): wireless: move some utility functions from mac80211 to cfg80211 iwmc3200wifi: Add new Intel Wireless Multicomm 802.11 driver iwmc3200wifi: fix link error when CFG80211 is not selected iwmc3200wifi: check for iwm_priv_init error iwmc3200wifi: add iwm_if_add and iwm_if_remove iwmc3200wifi: fix potential kernel oops on module removal iwmc3200wifi: add a mutex to protect iwm_reset_worker Zygo Blaxell (1): lib/genalloc.c: remove unmatched write_lock() in gen_pool_destroy akpm@linux-foundation.org (1): PCI: ibmphp_core.c: fix warning due to missing module_exit() andrey@cozybit.com (1): libertas: fix GSPI card event handling chaithrika@ti.com (1): TI DaVinci EMAC : Fix rmmod error dann frazier (1): Remove bashisms from scripts dmitry pervushin (18): [ARM] 5461/1: Freescale STMP platform support [ARM] 5469/1: Freescale STMP platform support [2/10] [ARM] 5468/1: Freescale STMP platform support [3/10] [ARM] 5467/1: Freescale STMP platform support [4/10] [ARM] 5466/1: Freescale STMP platform support [5/10] [ARM] 5477/1: Freescale STMP platform support [6/10] [ARM] 5465/1: Freescale STMP platform support [7/10] [ARM] 5464/1: Freescale STMP platform support [7/10] [ARM] 5463/1: Freescale STMP platform support [10/10] [ARM] 5483/1: Freescale STMP: add Kconfig/Makefile entries [ARM] 5501/1: Freescale STMP: fix compilation warning [ARM] 5530/1: Freescale STMP: get rid of HW_zzz macros [1/3] [ARM] 5531/1: Freescale STMP: get rid of HW_zzz macros [2/3] [ARM] 5532/1: Freescale STMP: register definitions [3/3] [ARM] 5537/1: Freescale STMP: 37nn registers definition [ARM] 5538/1: Freescale STMP: 378n registers definition [ARM] 5539/1: Freescale STMP: onboard devices declaration [WATCHDOG] Freescale STMP: watchdog driver figo.zhang (4): trivial: Documentation/rbtree.txt: cleanup kerneldoc of rbtree.txt V4L/DVB (11852): saa7134-video.c: poll method lose race condition V4L/DVB (11853): minor have assigned value twice V4L/DVB (11990): saa7134-video.c: fix the block bug françois romieu (4): r8169: remove useless struct member r8169: allow true forced mode setting sis190: use an adequate phy list entry as a fallback r8169: do not bring device down when suspending gouji-new (1): ixgbe: Proposed PARCH PCIE legacy I/O port free intel 10Gb NIC driver hermann pitton (1): V4L/DVB (11732): saa7134: disable not yet existing IR and DVB support on the Compro T750 john cooper (1): Add serial number support for virtio_blk, V4a john stultz (5): timekeeping: create arch_gettimeoffset infrastructure time: sh: convert to use arch_getoffset() infrastructure ntp: adjust SHIFT_PLL to improve NTP convergence ntp: fix comment typos clocksource: sanity check sysfs clocksource changes leon.woestenberg@gmail.com (1): powerpc/83xx: Add MSI interrupts to DTS of MPC8315E-RDB matthieu castet (3): mac80211 : fix unaligned rx skb V4L/DVB (11832): dibusb_mc: fix i2c to not corrupt eeprom in case of strange read pattern [WATCHDOG] add bcm47xx watchdog driver maximilian attems (5): kbuild, deb-pkg: improve maintainer identification kbuild, deb-pkg: fix generated package name kbuild, deb-pkg: fix Provides field kbuild, deb-pkg: fix Section field kbuild, deb-pkg: bump standards version mware@internode.on.net (1): powerpc/fsl: Increase the number of possible localbus banks nathan binkert (1): KVM: Make kvm header C++ friendly npiggin@suse.de (3): fs: mnt_want_write speedup fs: introduce mnt_clone_write fs: move mark_files_ro into file_table.c raz ben yehuda (7): md: have raid0 compile with MD_DEBUG on md: have raid0 report its formation md: raid0: chunk size check in raid0_run md: raid10: chunk size check in run md: raid5: chunk size check in setup_conf md: prepare for non-power-of-two chunk sizes md: raid0 :Enables chunk size other than powers of 2. roel kluin (2): pasemi_mac: mac_to_intf() error not noticed tape: beyond ARRAY_SIZE of viocd_diskinfo scameron@beardog.cca.cpqcorp.net (8): cciss: Use schedule_timeout_uninterruptible in SCSI error handling code cciss: factor out core of sendcmd_withirq() for use by SCSI error handling code cciss: simplify interface of sendcmd() and sendcmd_withirq() cciss: factor out fix target status processing code from sendcmd functions cciss: separate error processing and command retrying code in sendcmd_withirq_core() cciss: change SCSI error handling routines to work with interrupts enabled. cciss: Remove no longer needed sendcmd reject processing code cciss: decode unit attention in SCSI error handling code sebastian.blanes@gmail.com (1): ps3av: Set 16:9 aspect ratio for 720p video modes sg.tweak@gmail.com (1): drivers/net/macvlan.c: fix cloning of tagged VLAN interfaces tomas petr (1): V4L/DVB (11830): dib0700: add support for Leadtek WinFast DTV Dongle H unsik Kim (1): mg_disk: seperate mg_disk.h again vibi sreenivasan (3): Removed reference to non-existing file Documentation/PCI/PCI-DMA-mapping.txt Staging: rspiusb: Fix a bunch of warnings. Staging: rspiusb: copy_to/from_user related fixes walimis (3): tracing/trace_stack: fix the number of entries in the header tracing/events: fix output format of kernel stack tracing/events: fix output format of user stack wanzongshun (13): [ARM] 5493/1: Add w90p910 IC interface controller regester map [ARM] 5494/1: Add w90p910 irq number define [ARM] 5495/1: Add w90p910 usb host driver relevant kernel parts[1/2] [ARM] 5496/1: Add w90p910 touch screen driver relevant kernel parts[2/2]. [ARM] 5497/1: Add usb and ts relevant kernel maping option [ARM] 5498/1: w90p910 Clock register controller header file dfine [ARM] 5499/1: Add Usb register controller header file dfine [ARM] 5511/1: Add w90p910 rtc,kpi and usbd device map_desc define. [ARM] 5512/1: Add w90p910 rtc,kpi and usbd device platform_device define. [ARM] 5551/1: Add multi-function pin api for w90p910 platform. [ARM] 5548/1: Add gpio api for w90p910 platform [ARM] 5549/1: Add clock api for w90p910 platform. [ARM] 5550/1: Add default configure file for w90p910 platform yakui_zhao (8): drm/i915: Add the structure of child_device_config in video BIOS tables. drm/i915: parse VBT general definition block to get the SDVO device info drm/i915: Initialize the SDVO device based on the sdvo info parsed from VBT drm: add separate drm debugging levels drm/i915: replace DRM_DEBUG with DRM_DEBUG_KMS in intel_lvds drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in intel_sdvo drm: Replace DRM_DEBUG with DRM_DEBUG_MODE in drm_mode drm: Replace DRM_DEBUG with DRM_DEBUG_DRIVER in i915 driver ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:15 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=1.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_45,J_CHICKENPOX_52,J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLFm2143234 for ; Fri, 22 Jan 2010 16:21:15 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLEM5143201; Fri, 22 Jan 2010 16:21:14 -0600 Date: Fri, 22 Jan 2010 16:21:14 -0600 Message-Id: <201001222221.o0MMLEM5143201@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.31-rc2, created. v2.6.31-rc2 X-Git-Refname: refs/tags/v2.6.31-rc2 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: c5d511255186f0bba081f11cbe11c856cadaedf7 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.31-rc2 has been created at c5d511255186f0bba081f11cbe11c856cadaedf7 (tag) tagging 8e4a718ff38d8539938ec3421935904c27e00c39 (commit) replaces v2.6.31-rc1 tagged by Linus Torvalds on Sat Jul 4 10:59:57 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.31-rc2 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkpPmKIACgkQF3YsRnbiHLvszgCcCexk9CUU4/b+jSc9N3OpEgk2 IEcAn2BjgAbk4CeY5FKHT6q5qtQn8ved =gQFm -----END PGP SIGNATURE----- Aaro Koskinen (1): [ARM] 5560/1: Avoid buffer overrun in case of an invalid IRQ Abhijeet Joglekar (1): [SCSI] fnic: use DMA_BIT_MASK(nn) instead of deprecated DMA_nnBIT_MASK Adrian Hunter (2): OMAP2/3: gpmc-onenand: correct use of async timings OMAP3: RX51: Use OneNAND sync read / write Adrian Reber (1): powerpc/rtas: Fix watchdog driver temperature read functionality Ajit Khaparde (1): be2net: Fix to avoid a crash seen on PPC with LRO and Jumbo frames. Alan Cox (2): tty: Fix the leak in tty_ldisc_release [IA64] sprintf should not be used with same source & destination address Alexander Beregalov (5): parisc: stifb: should depend on STI_CONSOLE parisc: ccio-dma: fix build failure without procfs parisc: remove CVS keywords parisc: decode_exc.c should include kernel.h parisc: superio: fix build breakage Alexander Duyck (1): igb: return PCI_ERS_RESULT_DISCONNECT on permanent error Amerigo Wang (3): gitignore: ignore gcov output files kbuild: finally remove the obsolete variable $TOPDIR elf: fix one check-after-use Amit Shah (1): KVM: Ignore reads to K7 EVNTSEL MSRs Andre Detsch (1): e1000: return PCI_ERS_RESULT_DISCONNECT on permanent error Andre Noll (1): Trivial typo fixes in Documentation/block/data-integrity.txt. Andreas Herrmann (1): x86: Set cpu_llc_id on AMD CPUs Andrew de Quincey (1): OMAP1: Fix N770 MMC support Anton Vorontsov (2): powerpc/85xx: Make eSDHC 1-bit only transfer mode default for MPC8569E-MDS sky2: Fix checksum endianness Antonio Ospite (2): leds: pca9532 - Indent using tabs, not spaces. leds: LED driver for National Semiconductor LP3944 Funlight Chip Arnaldo Carvalho de Melo (4): perf_counter tools: Adjust only prelinked symbol's addresses perf report: Add --dsos parameter perf report: Add --comms parameter perf report: Add --symbols parameter Arun R Bharadwaj (1): timers: Fix timer_migration interface which accepts any number as input Avi Kivity (2): KVM: MMU: Allow 4K ptes with bit 7 (PAT) set KVM: VMX: Handle vmx instruction vmexits Aviv Laufer (1): backlight: Fix tdo24m crash on kmalloc Bartlomiej Zolnierkiewicz (7): ide: fix handling of unexpected IRQs vs request_irq() ide: relax DMA info validity checking ide: add QUANTUM FIREBALLct20 30 with firmware APL.090 to ivb_list[] ide: improve handling of Power Management requests ide: fix ide_kill_rq() for special ide-{floppy,tape} driver requests ide: always kill the whole request on error ide: fix resume for CONFIG_BLK_DEV_IDEACPI=y Baruch Siach (2): gpio: pl061: fix probe error handling code gpio: pl061: fix IRQ handling for GPIOs >= PL061_GPIO_NR Bastian Blank (1): parisc: Remove casts from atomic macros Ben Dooks (10): MAINTAINERS: Update file list for ARM/S3C2410 and ARM/S3C2440 MAINTAINERS: Add ARM S3C2442, S3C2443, S3C6400, S3C6410 and ARM/SAMSUNG [ARM] S3C24XX: Fix use of CONFIG_S3C24XX_PWM [ARM] S3C: Remove unused CONFIG_DEBUG_S3C_PORT [ARM] S3C24XX: Fix spi-bus configuration build errors [ARM] S3C24XX: Fix missing s3c_iis_device. [ARM] S3C: Fix S3C24XX build to not include s3c64xx IIS devices [ARM] s3c2410_defconfig: add MINI2440 machine to build [ARM] MINI2440: Add missing flash_bbt flat to NAND [ARM] S3C maintainer updates merge branch maintainers-updates into s3c-fixes Benjamin Herrenschmidt (13): powerpc/mpic: Fix mapping of "DCR" based MPIC variants powerpc/pmac: Fix issues with PowerMac "PowerSurge" SMP powerpc/mm: Make k(un)map_atomic out of line powerpc/pmac: Fix DMA ops for MacIO devices powerpc: Map more memory early on 601 processors powerpc: Add irqtrace support for 32-bit powerpc powerpc/rtas: Turn rtas lock into a raw spinlock powerpc: Use one common impl. of RTAS timebase sync and use raw spinlock powerpc/pasemi: Use raw spinlock in SMP TB sync powerpc/of: Fix usage of dev_set_name() in of_device_alloc() powerpc/440: Fix warning early debug code powerpc/mm: Fix potential access to freed pages when using hugetlbfs Merge commit 'kumar/next' into merge Borislav Petkov (4): amd64_edac: check only ECC bit in amd64_determine_edac_cap amd64_edac: fix ecc_enable_override handling amd64_edac: misc small cleanups ide-cd: handle fragmented packet commands gracefully Brandon Philips (1): atl1*: add device_set_wakeup_enable to atl1*_set_wol Brian King (1): [SCSI] ibmvscsi: Fix module load hang Bryan Donlan (1): ext2: return -EIO not -ESTALE on directory traversal through deleted inode Catalin Marinas (8): kmemleak: Allow the early log buffer to be configurable. kmemleak: Enable task stacks scanning by default kmemleak: Simplify the reports logged by the scanning thread kmemleak: Do not trigger a scan when reading the debug/kmemleak file kmemleak: Slightly change the policy on newly allocated objects kmemleak: Do not report new leaked objects if the scanning was stopped kmemleak: Do not warn if an unknown object is freed kmemleak: Inform kmemleak about pid_hash Chris Mason (3): Btrfs: don't log the inode in file_write while growing the file Btrfs: fix the file clone ioctl for preallocated extents Btrfs: honor nodatacow/sum mount options for new files Chris Wright (1): intel-iommu: fix Identity Mapping to be arch independent Christian Borntraeger (1): KVM: s390: Allow stfle instruction in the guest Christian Engelmayer (1): ide: memory overrun in ide_get_identity_ioctl() on big endian machines using ioctl HDIO_OBSOLETE_IDENTITY Christof Schmitt (1): [SCSI] FC transport: Locking fix for common-code FC pass-through patch Christoph Hellwig (1): parisc: remove dead code from sys_parisc32.c Clemens Ladisch (2): sound: oxygen: make mic volume control mono sound: virtuoso: fix Xonar D1/DX silence after resume Cliff Wickman (1): x86: Fix uv bau sending buffer initialization Coly Li (1): parisc: add parameter to read_cr16() Corentin Chary (6): eeepc-laptop: Register as a pci-hotplug device eeepc-laptop: rfkill refactoring eeepc-laptop: right parent device eeepc-laptop: makes get_acpi() returns -ENODEV eeepc-laptop: get the right value for CMSG eeepc-laptop: add rfkill support for the 3G modem in Eee PC 901 Go Csaba Henk (1): fuse: fix return value of fuse_dev_write() Daniel Mack (1): ALSA: snd_usb_caiaq: reparent sound device Daniel Ribeiro (1): mfd: fix pcap adc locking Dave Airlie (1): Merge remote branch 'origin/drm-intel-next' of ../drm-intel into drm-fixes David Brownell (3): spi: new spi->mode bits spi: add spi_master flag word spi: bitbang bugfix in message setup David Daney (3): MIPS: Hookup new syscalls sys_rt_tgsigqueueinfo and sys_perf_counter_open. MIPS: Define __arch_swab64 for all mips r2 cpus MIPS: Reorganize Cavium OCTEON PCI support. David Howells (5): FRV: Wire up new syscalls MN10300: Wire up new syscalls FRV: Implement atomic64_t FRV: Add basic performance counter support NFSD: Don't hold unrefcounted creds over call to nfsd_setuser() David S. Miller (6): ide-cd: Don't warn on bogus block size unless it actually matters. ide cs5520: Initialize second port's interrupt number. Revert "veth: prevent oops caused by netdev destructor" sparc64: Don't use alloc_bootmem() in init_IRQ() code paths. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan David Woodhouse (41): jffs2: fix another potential leak on error path in scan.c mtd: maps: Remove BUS_ID_SIZE from integrator_flash intel-iommu: Create new iommu_domain_identity_map() function intel-iommu: Clean up identity mapping code, remove CONFIG_DMAR_GFX_WA intel-iommu: Change dma_set_pte_addr() to dma_set_pte_pfn() intel-iommu: Change address_level_offset() to pfn_level_offset() intel-iommu: Change dma_addr_level_pte() to dma_pfn_level_pte() intel-iommu: Make dma_pte_clear_one() take pfn not address intel-iommu: Don't just mask out too-big physical addresses; BUG() instead intel-iommu: Make dma_pte_clear_range() use pfns intel-iommu: Make dma_pte_clear_range() take pfns as argument intel-iommu: Make dma_pte_free_pagetable() use pfns intel-iommu: Make dma_pte_free_pagetable() take pfns as argument intel-iommu: Clean up intel_iommu_unmap_range() intel-iommu: Change addr_to_dma_pte() to pfn_to_dma_pte() intel-iommu: Clean up address handling in domain_page_mapping() intel-iommu: Introduce domain_pfn_mapping() intel-iommu: Use domain_pfn_mapping() in __intel_map_single() intel-iommu: Use domain_pfn_mapping() in intel_iommu_map_range() intel-iommu: Clean up intel_map_sg(), remove domain_page_mapping() intel-iommu: Change aligned_size() to aligned_nrpages() intel-iommu: Make iommu_flush_iotlb_psi() take pfn as argument intel-iommu: Remove last use of PHYSICAL_PAGE_MASK, for reserving PCI BARs intel-iommu: Clean up iommu_domain_identity_map() intel-iommu: Performance improvement for dma_pte_clear_range() intel-iommu: Performance improvement for domain_pfn_mapping() intel-iommu: Simplify __intel_alloc_iova() intel-iommu: Introduce domain_sg_mapping() to speed up intel_map_sg() intel-iommu: Combine domain_pfn_mapping() and domain_sg_mapping() intel-iommu: dump mappings but don't die on pte already set intel-iommu: Don't free too much in dma_pte_free_pagetable() intel-iommu: Performance improvement for dma_pte_free_pagetable() intel-iommu: Make iommu=pt work on i386 too Fix pci_unmap_addr() et al on i386. Fix iommu address space allocation intel-iommu: Ensure that PTE writes are 64-bit atomic, even on i386 intel-iommu: Kill superfluous mapping_lock intel-iommu: Warn about unmatched unmap requests intel-iommu: Use cmpxchg64_local() for setting PTEs intel-iommu: Introduce first_pte_in_page() to simplify PTE-setting loops intel-iommu: Don't keep freeing page zero in dma_pte_free_pagetable() Davide Libenzi (1): eventfd: revised interface and cleanups Dmitri Vorobiev (1): MIPS: Malta: Remove unnecessary function prototypes Dmitry Eremin-Solenikov (3): MAINTAINERS: ieee802154 lists are moderated for non-subscribers. nl802154: fix Oops in ieee802154_nl_get_dev nl802154: add module license and description Don Skidmore (1): ixgbe: Fix SFP log messages Emilio LĂłpez (1): ALSA: hda - Fix acer-aspire-6530g model quirk Eric Anholt (2): drm/i915: Add missing dependency on Intel AGP support. Merge commit 'keithp/drm-intel-next' into drm-intel-next Eric W. Biederman (1): Revert "ipv4: arp announce, arp_proxy and windows ip conflict verification" Fernando Guzman Lugo (1): OMAP: IOMMU: function flush_iotlb_page is not flushing correct entry Florian Fainelli (2): cpmac: fix compilation failure introduced with netdev_ops conversion MIPS: Add support for Texas Instruments AR7 System-on-a-Chip Floris Kraak (1): Kbuild: Disable the -Wformat-security gcc flag Frans Pop (1): ide-cd: Improve "weird block size" error message Frederic Weisbecker (3): perf record: Fix unhandled io return value perf_counter tools: Prepare a small callchain framework perf report: Print sorted callchains per histogram entries Gerhard Pircher (1): powerpc/amigaone: Limit ISA I/O range to 4k in the device tree Graf Yang (1): net/irda: convert bfin_sir to net_device_ops Grant Grundler (3): parisc: advertise PCI devs after "assign_resources" parisc: Fix gcc 4.4 warning in lba_pci.c parisc: fix "delay!" timer handling Grant Likely (2): ASoC: Fix typo in MPC5200 PSC AC97 driver Kconfig ASoC: remove BROKEN from Efika and pcm030 fabric drivers Grazvydas Ignotas (1): OMAP2/3: mmc-twl4030: use correct controller in twl_mmc23_set_power GrĂ©goire Henry (1): drm/i915: initialize fence registers to zero when loading GEM H. Peter Anvin (2): x86, setup: correct include file in Revert "x86: cap iomem_resource to addressable physical memory" Hannes Reinecke (1): cciss: Ignore stale commands after reboot Heiko Carstens (2): timer stats: Optimize by adding quick check to avoid function calls gcov: fix __ctors_start alignment Helge Deller (3): parisc: fix ldcw inline assembler parisc: fix irq compile bugs in arch/parisc/kernel/irq.c parisc: ensure broadcast tlb purge runs single threaded Herbert Xu (12): ipsec: Fix name of CAST algorithm inet: Call skb_orphan before tproxy activates gro: Flush GRO packets in napi_disable_pending path tcp: Stop non-TSO packets morphing into TSO tcp: Do not tack on TSO data to non-TSO packet cdc_eem: Use netdev stats structure dm9601: Use netdev stats structure net1080: Use netdev stats structure rndis_host: Use netdev stats structure smsc95xx: Use netdev stats structure usbnet: Use netdev stats structure usbnet: Remove private stats structure Hidetoshi Seto (2): x86, mce: Fix mce resume on 32bit x86, mce: percpu mcheck_timer should be pinned Hu Tao (1): Btrfs: fix error message formatting Huang Weiyi (4): OMAP1: remove duplicated #include powerpc/85xx: remove duplicated #include [ARM] MINI2440: remove duplicated #include drm: remove unused #include 's Ingo Molnar (11): perf_counter tools: Fix vmlinux fallback when running on a different kernel Merge branch 'for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu into x86/urgent perf report: Fix help text typo perf_counter tools: Add CREDITS file for Git contributors i2c: fix build bug in i2c-designware.c perf_counter tools: Remove dead code perf stat: Add -n/--null option to run without counters perf stat: Fix multi-run stats eeepc-laptop: Fix build failure with HOTPLUG_PCI && !SYSFS perf stat: Use percentages for scaling output kmemleak: Fix scheduling-while-atomic bug Ionut Nicu (1): fsl_pq_mdio: Fix fsl_pq_mdio to work with modules Izik Eidus (1): KVM: Fix dirty bit tracking for slots with large pages James Bottomley (1): [SCSI] zalon: fix oops on attach failure Jan Beulich (1): [IA64] address compiler warnings perfmon.c/salinfo.c Jan Engelhardt (1): netfilter: xtables: conntrack match revision 2 Janusz Krzysztofik (1): ASoC: OMAP: fix OMAP1510 broken PCM pointer callback Jarek Poplawski (1): ipv4: Fix fib_trie rebalancing, part 3 Jaswinder Singh Rajput (16): perf_counter, x8: Fix L1-data-Cache-Store-Referencees for AMD perf_counter tools: Define separate declarations for H/W and S/W events perf_counter tools: Introduce alias member in event_symbol perf_counter tools: Set alias for page-faults perf stat: Fix command option / manpage perf stat: Fix verbose for perf stat perf stat: Remove dead code perf_counter tools: Check for valid cache operations perf_counter tools: Shorten names for events perf_counter tools: Add alias for 'l1d' and 'l1i' gitignore: ignore scripts/ihex2fw perf stat: Improve output KVM: kvm/x86_emulate.c toggle_interruptibility() should be static KVM: shut up uninit compiler warning in paging_tmpl.h perf stat: Micro-optimize the code: memcpy is only required if no event is selected and !null_run netfilter: headers_check fix: linux/netfilter/xt_osf.h Jeff Layton (8): cifs: remove unneeded NULL checks from cifs_show_options cifs: have cifs_show_options show forceuid/forcegid options cifs: add new routine for converting AF_INET and AF_INET6 addrs cifs: display scopeid in /proc/mounts cifs: have cifs parse scope_id out of IPv6 addresses and use it cifs: fix problems with earlier patches cifs: remove rw/ro options cifs: fix fh_mutex locking in cifs_reopen_file Jens Axboe (3): cfq-iosched: move cfqq initialization out of cfq_find_alloc_queue() cfq-iosched: get rid of the need for __GFP_NOFAIL in cfq_find_alloc_queue() block: get rid of queue-private command filter Jens Rosenboom (1): ipv6: avoid wraparound for expired preferred lifetime Jeremy Kerr (1): fs: allow d_instantiate to be called with negative parent dentry Jerome Glisse (2): drm/radeon: fix radeon kms framebuffer device drm/radeon: fix driver initialization order so radeon kms can be builtin Jes Sorensen (1): KVM: ia64: fix ia64 build due to missing kallsyms_lookup() and double export Jesper Dangaard Brouer (6): nf_conntrack: Use rcu_barrier() decnet: Use rcu_barrier() on module unload. ipv6: Use rcu_barrier() on module unload. bridge: Use rcu_barrier() instead of syncronize_net() on unload. sunrpc: Use rcu_barrier() on unload. mac80211: Use rcu_barrier() on unload. Jesse Barnes (2): drm/i915: correct suspend/resume ordering drm/i915: fix LFP data fetch Jesse Brandeburg (3): ixgbe: fix unmap length bug igb: fix unmap length bug e1000: fix unmap bug Jiri Slaby (5): sound: OSS: mpu401, fix deadlock AFS: Fix lock imbalance floppy: fix lock imbalance Btrfs: fix use after free in btrfs_start_workers fail path mfd: sm501, fix lock imbalance Joe Perches (8): sound: Use PCI_VDEVICE sound: Use PCI_VDEVICE for CREATIVE and ECTIVA eeepc-laptop.c: use pr_fmt and pr_ arch/sh/boards/mach-se/7206/io.c: Remove unnecessary semicolons [IA64] Remove unnecessary semicolons MAINTAINERS: update EDAC-I82975X MAINTAINERS: STARFIRE/DURALAN update MIPS: MT: Remove unnecessary semicolons Johannes Weiner (1): perf record: Fix filemap pathname parsing in /proc/pid/maps John Muir (1): fuse: invalidation reverse calls Jon Smirl (1): powerpc: Have git ignore generated files from dtc compile Jonathan McDowell (1): OMAP1: Fix compilation of arch/arm/mach-omap1/mailbox.c Josef Bacik (1): Btrfs: account for space we may use in fallocate Julia Lawall (1): mtd: Use BLOCK_NIL consistently in NFTL/INFTL Julian Calaby (3): sparc64: Fix build warnings in piggyback_64.c sparc32: Fix tftpboot.img Makefile sparc32: Fix makefile not generating required files KAMEZAWA Hiroyuki (1): elf: limit max map count to safe value Kalle Jokiniemi (1): OMAP3: DMA: Enable idlemodes for DMA OCP Karen Xie (1): [SCSI] cxgb3i: fix connection error when vlan is enabled Kay Sievers (1): sound: do not set DEVNAME for OSS devices Keith Packard (13): drm/i915: Require digital monitor on HDMI ports for detect drm/i915: Apple DMI info has inconsistent SYS_VENDOR information drm/i915: check for CONFIG_PNP before using pnp function drm/i915: Change I2C api to pass around i2c_adapters drm/i915: Clean up SDVO i2c handling drm/i915: add per-output hotplug callback for KMS drm/i915: Add Display Port support drm/i915: Use hotplug callback to retrain DP link drm/i915: Split array of DAC limits into separate structures. drm/i915: Add CLKCFG register definition drm/i915: Clarify error returns from display port aux channel I/O drm/i915: Generate 2MHz clock for display port aux channel I/O. Retry I/O. fs/notify/inotify: decrement user inotify count on close Kevin Hilman (1): OMAP2/3: Add omap_type() for determining GP/EMU/HS Kim Kyuwon (3): leds: fix led-bd2802 errors while resuming leds: change the license information leds: add the sysfs interface into the leds-bd2802 driver for changing wave pattern and led current. Krzysztof Halasa (2): drm/i915: Fix size_t handling in off-by-default debug printfs drm/i915: Catch up to obj_priv->page_list rename in disabled debug code. Krzysztof Helt (1): fbdev: add mutex for fb_mmap locking Kumar Gala (6): powerpc/cpm1: Remove IMAP_ADDR powerpc/85xx: Stop using ppc_md.init on socrates powerpc/85xx: Fix issue found by lockdep trace in smp_85xx_kick_cpu powerpc: Refactor device tree binding powerpc: Fix output from show_regs powerpc: Fix mpic alloc warning Kuninori Morimoto (2): sh: ms7724se: Add sh_eth support sh: ms7724se: Enable sh_eth in defconfig. Kurt Garloff (1): x86: Add sysctl to allow panic on IOCK NMI error Kyle McMartin (10): parisc: wire up preadv/pwritev syscalls parisc: kill WARN in free_initmem when DEBUG_KERNEL parisc: wire up rt_tgsigqueueinfo parisc: fix compile warning in mm/init.c parisc: processor.c, fix bloated stack frame parisc: inventory.c, fix bloated stack frame parisc: wire sys_perf_counter_open to sys_ni_syscall parisc: add task_pt_regs macro parisc: perf: wire up sys_perf_counter_open parisc: use generic atomic64 on 32-bit Li Zefan (10): tracing/events: Don't increment @pos in s_start() tracing_bprintk: Don't increment @pos in t_start() trace_stat: Don't increment @pos in seq start() tracing: Reset iterator in t_start() ftrace: Don't increment @pos in g_start() ftrace: Don't manipulate @pos in t_start() ftrace: Fix t_hash_start() tracing: Fix trace_buf_size boot option ftrace: Remove duplicate newline ftrace: Fix the output of profile Linus Torvalds (46): Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge branch 'futexes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.infradead.org/iommu-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'kvm-updates/2.6.31' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-backlight Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'bugfixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Merge branch 'kmemleak' of git://linux-arm.org/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge git://git.infradead.org/mtd-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 x86: fix power-of-2 round_up/round_down macros Merge git://git.infradead.org/iommu-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-2.6.31' of git://linux-nfs.org/~bfields/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 Linux 2.6.31-rc2 Linus Walleij (1): [ARM] 5565/2: Use PAGE_SIZE and RO_DATA() in link script Magnus Damm (2): sh: fix se7724 ceu names sh: re-add LCDC fbdev support to the Migo-R defconfig Mallikarjuna R Chilakala (2): ixgbe: Fix device capabilities of 82599 single speed fiber NICs. ixgbe: Fix link capabilities during adapter resets Marcelo Tosatti (1): KVM: protect concurrent make_all_cpus_request Mark Brown (2): leds: Further document parameters for blink_set() ASoC: Only disable pxa2xx-i2s clocks if we enabled them Martin K. Petersen (2): md: Use new topology calls to indicate alignment and I/O sizes block: Create bip slabs with embedded integrity vectors Matt Fleming (1): sh: Fix compiler error and include the definition of IS_ERR_VALUE Matthew Wilcox (1): parisc: Fix PCI resource allocation on non-PAT SBA machines Michael Buesch (1): parport/serial: add support for NetMos 9901 Multi-IO card Michael Ellerman (1): powerpc: Swiotlb breaks pseries Michel Dänzer (3): drm/radeon: Don't initialize acceleration related fields of struct fb_info. drm/radeon: Clear surface registers at initialization time. drm: Fix shifts which were miscalculated when converting from bitfields. Mike Frysinger (1): bfin: delay IRQ registration until driver is ready Mike Mason (1): e1000e: io_error_detected callback should return PCI_ERS_RESULT_DISCONNECT Mike Snitzer (1): dm table: fix blk_stack_limits arg to use bytes not sectors Miklos Szeredi (2): fuse: fix bad return value in fuse_file_poll() fuse: allow umask processing in userspace Milan Broz (1): dm exception store: really fix type lookup Mimi Zohar (3): integrity: ima mq_open imbalance msg fix integrity: ima audit hash_exists fix integrity: add ima_counts_put (updated) Naohiro Ooiwa (1): bnx2x: Fix the behavior of ethtool when ONBOOT=no NeilBrown (6): md: avoid dereferencing NULL pointer when accessing suspend_* sysfs attributes. md: fix error path when duplicate name is found on md device creation. md: tidy up error paths in md_alloc md/raid5: suspend shouldn't affect read requests. md: use interruptible wait when duration is controlled by userspace. blocK: Restore barrier support for md and probably other virtual devices. Nelson Castillo (1): [ARM] GTA02: build fixes (s3c2410_nand_set usage) Nicolas Ferre (2): [ARM] 5563/1: at91: at91sam9rlek lcd interface correction [ARM] 5562/2: at91: add gpio button support for at91sam9g20ek Nicolas Reinecke (1): mdio add missing GPL flag Nikanth Karthikesan (1): cpusets: document adding/removing cpus to cpuset elaborately Ondrej Zary (1): ALSA: cmi8330: fix MPU-401 PnP init copy&paste bug Pallipadi, Venkatesh (1): x86, delay: tsc based udelay should have rdtsc_barrier Patrick McHardy (1): netfilter: tcp conntrack: fix unacknowledged data detection with NAT Paul Mackerras (2): perf_counter tools: Reduce perf stat measurement overhead/skew perf_counter: Provide a way to enable counters on exec Paul Menage (1): UML: Fix some apparent bitrot Paul Mundt (10): sh: make set_perf_counter_pending() static inline. sh: Hook up page fault events for software perf counters. sh64: Hook up page fault events for software perf counters. perf_counter tools: add cpu_relax()/rmb() definitions for sh. ring-buffer: Make it generally available sh: Kill off unused DEBUG_BOOTMEM symbol. nommu: provide follow_pfn(). asm-generic/vmlinux.lds.h: Fix up RW_DATA_SECTION definition. sh: LCDC dcache flush for deferred io video: sm501fb: Early initialization of mm_lock mutex. Pekka J Enberg (1): x86: Move init_gbpages() to setup_arch() Peter Oberparleiter (1): gcov: fix documentation Peter Ujfalusi (1): MAINTAINERS: Add entry for twl4030 series soc codec driver Peter Zijlstra (16): perf report: Output more symbol related debug data perf_counter tools: Handle overlapping MMAP events perf_counter: Optimize perf_swcounter_event() perf_counter: Push inherit into perf_counter_alloc() perf_counter: Optimize perf_counter_alloc()'s inherit case clarify get_user_pages() prototype perf_counter tools: Rework the file format perf_counter: Split the mmap control page in two parts perf_counter: Add scale information to the mmap control page perf_counter, x86: Add mmap counter read support perf_counter: Add PERF_EVENT_READ perf_counter: Implement more accurate per task statistics perf_counter: Rework the sample ABI perf-report: Add modes for inherited stats and no-samples perf-report: Add bare minimum PERF_EVENT_READ parsing perf_counter: Complete counter swap Ralf Baechle (2): MIPS: Allow suspend and hibernation again on uniprocessor kernels. MIPS: Fix CONFIG_FLATMEM version of pfn_valid() Randolph Chung (1): parisc: fix mismatched parenthesis in memcpy.c Randy Dunlap (1): kernel-doc: move ignoring kmemcheck Randy Vinson (1): powerpc/85xx: Fix FSL RapidIO probing on MDS boards Renaud Lottiaux (1): bsdacct: fix access to invalid filp in acct_on() Richard Kennedy (1): mm: prevent balance_dirty_pages() from doing too much work Richard Purdie (2): leds: Remove an orphan Kconfig entry leds: Futher document blink_set Robert P. J. Day (1): x86, setup: Fix typo "CONFIG_x86_64" in Robert Reif (1): sparc32: Fix obvious build issues for tftpboot.img build. Roel Kluin (3): OMAP2/3: omap mailbox: platform_get_irq() error ignored perf_counter tools: Fix strbuf_fread() error path handling [SCSI] fnic: remove redundant BUG_ONs and fix checks on unsigned Russell King (2): Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 's3c-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux RĂ©mi Denis-Courmont (2): Phonet: publicize the Netlink notification function Phonet: generate Netlink RTM_DELADDR when destroying a device Sam Ravnborg (1): sparc: fix tftpboot.img build Sean MacLennan (1): powerpc/warp: Platform fix for i2c change Shan Wei (1): cfq-iosched: remove redundant check for NULL cfqq in cfq_set_request() Shin-ichiro KAWASAKI (1): clocksource: sh_tmu: Make undefined TCOR behaviour less undefined. Simo Leone (1): [CIFS] Copy struct *after* setting the port, instead of before. Sonny Rao (2): powerpc/BSR: add 4096 byte BSR size powerpc/BSR: Fix BSR to allow mmap of small BSR on 64k kernel Stephen Rothwell (1): fbdev: work around old compiler bug Steve French (6): Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6 [CIFS] Fix build break [CIFS] Do not send tree disconnect if session is already disconnected [CIFS] cleanup asn handling for ntlmssp [CIFS] remove bkl usage from umount begin [CIFS] remove unknown mount option warning message Steven A. Falco (1): mtd: m25p80 timeout too short for worst-case m25p16 devices Suresh Jayaraman (1): cifs: Fix incorrect return code being printed in cFYI messages Takashi Iwai (27): ALSA: hda - Simplify AD1986A mixer definitions ALSA: hda - Generalize the pin-detect quirk for Lenovo N100 ALSA: hda - Fix support for Samsung P50 with AD1986A codec ALSA: hda - Add pin-sense trigger when needed for Realtek codecs ALSA: hda - Use model=acer-aspire-6530g for Acer Aspire 6930G Merge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into fix/asoc ALSA: hda - Add missing initializations for ALC268 and ALC269 Merge branch 'fix/hda' into for-linus Merge branch 'fix/hda-samsung-p50' into for-linus Merge branch 'fix/lx6464es' into for-linus Merge branch 'fix/misc' into for-linus Merge branch 'fix/oxygen' into for-linus Merge branch 'fix/pci-vdevice' into for-linus ALSA: hda - Add missing static to patch_ca0110() ALSA: hda - Add quirk for HP 6930p ALSA: usx2y - reparent sound device Merge branch 'fix/asoc' into for-linus Merge branch 'fix/caiaq' into for-linus Merge branch 'fix/hda' into for-linus Merge branch 'fix/oxygen' into for-linus ALSA: hda - Add GPIO1 control at muting with HP laptops ALSA: hda - Improve ASUS eeePC 1000 mixer ALSA: hda - Avoid invalid formats and rates with shared SPDIF ALSA: hda - Call snd_pcm_lib_hw_rates() again after codec open callback ALSA: hda - Add sanity check in PCM open callback Merge branch 'fix/hda' into for-linus Merge branch 'fix/soundcore' into for-linus Tejun Heo (10): percpu: fix too lazy vunmap cache flushing x86: fix duplicate free in setup_pcpu_remap() failure path x86: rename remap percpu first chunk allocator to lpage x86: prepare setup_pcpu_lpage() for pageattr fix x86: reorganize cpa_process_alias() x86: fix pageattr handling for lpage percpu allocator and re-enable it x86: implement percpu_alloc kernel parameter x86: ensure percpu lpage doesn't consume too much vmalloc space alpha: fix percpu build breakage block: don't merge requests of different failfast settings Tero Kristo (1): OMAP3: SRAM size fix for HS/EMU devices Thadeu Lima de Souza Cascardo (5): mtd: cmdlineparts: Use 64-bit format when printing a debug message. mtd: atmel_nand: Fix typo s/parititions/partitions/ acm: Return ENODEV instead of EINVAL when trying to open ACM device. acm: Fix oops when closing ACM tty device right after open has failed. usb_serial: Fix oops when unexisting usb serial device is opened. Thomas Gleixner (3): futex: request only one page from get_user_pages() dmapools: protect page_list walk in show_pools() parisc: remove obsolete hw_interrupt_type Tim Abbott (3): Add new macros for page-aligned data and bss sections. asm-generic/vmlinux.lds.h: shuffle INIT_TASK* macro names in vmlinux.lds.h Add new __init_task_data macro to be used in arch init_task.c files. Tim Anderson (5): MIPS: CMP: Extend the GIC IPI interrupts beyond 32 MIPS: CMP: Extend IPI handling to CPU number MIPS: CMP: activate CMP support MIPS: CMP: Move gcmp_probe to before the SMP ops MIPS: CMP: Update sync-r4k for current kernel Tim Blechmann (1): ALSA: lx6464es - configure ethersound io channels Timur Tabi (1): powerpc/qe: add polling timeout to qe_issue_cmd() Tobias Mueller (1): leds: alix-leds2 fixed for Award BIOS Tony Lindgren (1): OMAP: Fix IOMEM macro for assembly Tony Luck (1): Add Fenghua Yu as temporary co-maintainer for ia64 Tony Vroon (1): ALSA: hda - Line In for Acer Inspire 6530G model Trent Piepho (1): leds: Add options to have GPIO LEDs start on or keep their state Troy Moure (1): ACPI: video: prevent NULL deref in acpi_get_pci_dev() Ville Syrjala (2): atyfb: fix HP OmniBook 500 reboot hang atyfb: fix alignment for block writes Wei Yongjun (3): tcp: missing check ACK flag of received segment in FIN-WAIT-2 state xfrm: use xfrm_addr_cmp() instead of compare addresses directly sctp: xmit sctp packet always return no route error Wolfgang Illmeyer (1): hostfs: set maximum filesize in superblock for proper LFS support Yan Zheng (1): Btrfs: update backrefs while dropping snapshot Yang Shi (1): edac: add DDR3 memory type for MPC85xx EDAC Yinghai Lu (3): perf_counter, x86: Update x86_pmu after WARN() x86: only clear node_states for 64bit x86: add boundary check for 32bit res before expand e820 resource to alignment Yoichi Yuasa (2): MIPS: Update VR41xx GPIO driver to use gpiolib Update Yoichi Yuasa's e-mail address Yong Wang (1): perf_counter, x86: Set global control MSR correctly Yong Zhang (1): MIPS: 64-bit: Fix o32 core dump Yu Zhao (1): intel-iommu: Only avoid flushing device IOTLB for domain ID 0 in caching mode Zhang Rui (1): kernel/resource.c: fix sign extension in reserve_setup() Zhao Yakui (2): drm/i915: Add support for changing LVDS panel fitting using an output property. drm/i915: Don't change the blank/sync width when calculating scaled modes Zhenwen Xu (1): leds: leds-gpio - fix a section mismatch Zhenyu Wang (1): drm/i915: Fix HDMI regression introduced in new chipset support janboe (1): OMAP2/3: Initialize gpio debounce register ling.ma@intel.com (1): drm/i915: set TV detection mode when tv is already connected matthieu castet (1): MIPS: BC47xx: Fix SSB irq setup maximilian attems (1): kbuild: deb-pkg ship changelog roel kluin (1): sh_eth: remove redundant test on unsigned vimal singh (1): mtd: nand: fix build failure and incorrect return from omap_wait() ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=1.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_21,J_CHICKENPOX_64 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLGEC143272 for ; Fri, 22 Jan 2010 16:21:17 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLFGt143240; Fri, 22 Jan 2010 16:21:15 -0600 Date: Fri, 22 Jan 2010 16:21:15 -0600 Message-Id: <201001222221.o0MMLFGt143240@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.31-rc3, created. v2.6.31-rc3 X-Git-Refname: refs/tags/v2.6.31-rc3 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: c361304f4a17c05992b1cf68172a5ea8389649ee This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.31-rc3 has been created at c361304f4a17c05992b1cf68172a5ea8389649ee (tag) tagging 6847e154e3cd74fca6084124c097980a7634285a (commit) replaces v2.6.31-rc2 tagged by Linus Torvalds on Mon Jul 13 18:19:13 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.31-rc3 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkpb3RUACgkQF3YsRnbiHLtidgCeIeSRVhH8I2ltGOZ1eKcydkUj 3HAAoJgrSwiVp+KZ3bR3M04XpCXh7YqU =h74p -----END PGP SIGNATURE----- Abhishek Kulkarni (1): net/9p: Fix crash due to bad mount parameters. Adrian Hunter (4): UBIFS: fix integer overflow warning UBIFS: fix 64-bit divisions in debug print UBIFS: minor spelling and grammar fixes UBI: add image sequence number to EC header Ajay Kumar Gupta (1): USB: otg: fix module reinsert issue Akinobu Mita (1): x86: fix usage of bios intcall() Alan Cox (7): PCI: More PATA quirks for not entering D3 pty: Rework the pty layer to use the normal buffering logic tty: maintainers data was edited wrongly by someone tty: Sort out the USB sysrq changes that wrecked performance tty: Fix USB kref leak tty: Fix the PL2303 private methods for sysrq Staging: vt6655: compile fix Alan Stern (9): USB: EHCI: update toggle state for linked QHs USB: fix the clear_tt_buffer interface USB: EHCI: use the new clear_tt_buffer interface USB: EHCI: check for STALL before other errors USB: Sierra: fix oops upon device close USB: cypress_m8: remove invalid Clear-Halt USB: option: remove unnecessary and erroneous code USB: EHCI: report actual_length for iso transfers USB: handle zero-length usbfs submissions correctly Alexander Beregalov (3): wm97xx_batery: replace driver_data with dev_get_drvdata() Staging: comedi: jr3_pci.c: add required includes Staging: stlc45xx: convert config_interface to bss_info_changed, fixing a build error Alexander Duyck (2): if_ether: add define for 1588 aka Timesync igb: set lan id prior to configuring phy Alexey Dobriyan (2): headers: mnt_namespace.h redux headers: smp_lock.h redux Alexey Zaytsev (1): PCI: make pci_name() take const argument Alistair John Strachan (1): hwmon: (abituguru3) DMI probing for AB9, AB9 QuadQT and IX38 QuadGT Amerigo Wang (2): Doc: update Documentation/exception.txt Doc: move Documentation/exception.txt into x86 subdir Amit Kucheria (1): USB: Serial: Add support for Arkham Technology adapters Andiry Brienza (1): ALSA: hda - Disable AMD SB600 64bit address support only Andrey Yurovsky (1): mac80211: fix allocation in mesh_queue_preq Andy Walls (5): V4L/DVB (12167): tuner-xc2028: Fix 7 MHz DVB-T V4L/DVB (12180): cx18: Update Yuan MPC-718 card entry with better information and guesses V4L/DVB (12181): get_dvb_firmware: Add Yuan MPC718 MT352 DVB-T "firmware" extraction V4L/DVB (12182): cx18: Add DVB-T support for Yuan MPC-718 cards with an MT352 or ZL10353 V4L/DVB (12206): get_dvb_firmware: Correct errors in MPC718 firmware extraction logic Andy Whitcroft (1): drm/i915: fix up a raw 64bit divide Aneesh Kumar K.V (5): ext4: Calculate required journal credits for inserting an extent properly ext4: Don't look at buffer_heads outside i_size. ext4: Fix mmap/truncate race when blocksize < pagesize && delayed allocation ext4: Fix mmap/truncate race when blocksize < pagesize && !nodellaoc ext4: Move __ext4_journalled_writepage() to avoid forward declaration Anssi Hannula (1): USB: option.c: add A-Link 3GU device id Anton Blanchard (7): perf report: Fix -z option perf_counter tools: Remove zlib dependency perf top: Move skip symbols to an array perf top: Add ppc64 specific skip symbols and strip ppc64 . prefix perf report: Fix reporting of hypervisor perf report: Add hypervisor dso powerpc/perf_counter: Enable alternate PR/HV bits for POWER7 Anton Vorontsov (2): powerpc: Don't use alloc_bootmem() in init_IRQ() path netpoll: Fix carrier detection for drivers that are using phylib Arnaldo Carvalho de Melo (3): perf_counter tools: Share rbtree.with the kernel perf_counter tools: Share list.h with the kernel perf_counter tools: Adjust symbols in ET_EXEC files too Arnd Bergmann (5): microblaze: fall back on generic header files for the ABI microblaze: clean up signal handling microblaze: use generic syscalls.h signals: declare sys_rt_tgsigqueueinfo in syscalls.h USB: buildfix ppc randconfig Arseniy Lartsev (1): USB: cdc-acm: work around some broken devices Artem Bityutskiy (16): UBIFS: improve debugging messaged UBIFS: slightly optimize write-buffer timer usage UBIFS: set write-buffer timout to 3-5 seconds UBIFS: few spelling fixes UBIFS: fix assertion warning MAINTAINERS: update ahunter's e-mail address UBI: add empty eraseblocks verification UBI: remove bogus debugging checks UBI: nicify image sequence number handling UBI: fix NOR flash recovery UBI: fix compilation warnings UBIFS: dump a little more in case of corruptions UBIFS: small amendments in the LEB scanning code UBIFS: clean up free space checking UBIFS: fix corruption dump AFS: Fix compilation warning Bartlomiej Zolnierkiewicz (2): isofs: fix Joliet regression Staging: rtl8192su: convert to net_device_ops Ben Gamari (3): drm/i915: Remove gtt_bound from drm_i915_gem_object drm/i915: Add gtt_offset to gem object list debugfs output drm/i915: Move lock to more reasonable location Benjamin Herrenschmidt (2): Merge commit 'jwb/merge' into merge devres: WARN() and return, don't crash on device_del() of uninitialized device Bill Pemberton (2): Staging: serqt_usb2: fix qt_close parameters in serqt_usb2 Staging: serqt_usb2: declare qt_open static in serqt_usb2 Boaz Harrosh (5): exofs: Fix bio leak in error handling path (sync read) exofs: Remove IBM copyrights exofs: Avoid using file_fsync() MAINTAINERS: Add osd maintained files (F:) osdblk: Adjust queue limits to lower device's limits Brad Lu (1): USB: option.c to support Qisda H21/H20 usb modem Brian Haley (1): IPv6: preferred lifetime of address not getting updated Bruce Allan (6): e1000e: PHY loopback broken on 82578 e1000e: delay after LCD reset and proper checks for PHY configuration done e1000e: do not write SmartSpeed register bits on parts without support e1000e: prevent NVM corruption on sectors larger than 4K e1000e: delay second read of PHY_STATUS register on failure of first read e1000e: disable K1 at 1000Mbps for 82577/82578 Catalin Marinas (11): kmemleak: Renice the scanning thread to +10 kmemleak: Add more cond_resched() calls in the scanning thread kmemleak: Remove the reported leaks number limitation kmemleak: Do not acquire scan_mutex in kmemleak_open() kmemleak: Scan objects allocated during a scanning episode kmemleak: Trace the kmalloc_large* functions in slub kmemleak: Allow partial freeing of memory blocks kmemleak: Add callbacks to the bootmem allocator Free the memory allocated by memdup_user() in fs/sysfs/bin.c Free struct device in fw_dev_release() kmemleak: Remove alloc_bootmem annotations introduced in the past Chris Wilson (1): drm/i915: Refactor calls to unmap_mapping_range Christian Borntraeger (1): [S390] improve suspend/resume error messages Clyde McPherson (2): b43: Add support for 4318E ssb: Add support for 4318E Curt Wohlgemuth (1): ext4: Fix buffer head reference leak in no-journal mode Dan Aloni (2): Staging: prevent rtl8187se from crashing dev_ioctl() in SIOCGIWNAME Staging: prevent rtl8192su from crashing dev_ioctl in SIOCGIWNAME Dan Williams (1): USB: option: add Novatel Ovation MC760 Daniel Mack (2): UBIFS: allow more than one volume to be mounted USB: fix LANGID=0 regression Darren Salt (1): ALSA: hda - Missing volume controls for Intel HDA (ALC269/EeePC) Dave Jones (2): [CPUFREQ] Fix compile failure in cpufreq.c Fix compile error in bmac.c Dave Kleikamp (1): update JFS entry in MAINTAINERS David Brownell (5): Input: dm355evm_keys - fix kconfig symbol names USB: musb: davinci dm355 updates (remainder) USB: gadget: pxa25x compiler warning fix USB: musb: silence "suspend as a_wait_vrise is_active" msgs USB: RNDIS gadget, fix issues talking from PXA David Heidelberger (1): ALSA: hda - targa and targa-2ch fix David S. Miller (3): Revert "ide: improve handling of Power Management requests" Revert "p54: Use SKB list handling helpers instead of by-hand code." Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 David Woodhouse (8): intel-iommu: Fix dma vs. mm page confusion with aligned_nrpages() intel-iommu: Don't set identity mapping for bypassed graphics devices intel-iommu: Fix reattaching of devices to identity mapping domain intel-iommu: Add iommu_should_identity_map() function intel-iommu: Restore DMAR_BROKEN_GFX_WA option for broken graphics drivers intel-iommu: No mapping for non-PCI devices intel-iommu: Use iommu_should_identity_map() at startup time too. intel-iommu: Don't use identity mapping for PCI devices behind bridges Devin Heitmueller (1): V4L/DVB (12156): em28xx: Fix tuning for Terratec Cinergy T XS USB (zl10353 version) Dhananjay Phadke (2): netxen: fix the version code macro netxen: avoid frequent firmware reset Dmitry Torokhov (1): Input: arrange keyboards alphabetically Don Skidmore (3): ixgbe: fix issues with failing to detect insert of unsupported module ixgbe: fix regression on some 82598 adapters ixgbe: fix inconsistent SFP/SFP+ failure results. Eilon Greenstein (2): bnx2x: Disable HC coalescing when setting timeout to zero. bnx2x: Fix the maximal values of coalescing timeouts. Elina Pasheva (1): USB: serial: sierra driver id_table additions Eric Anholt (3): drm/i915: Disable GEM when a broken video BIOS takes up the whole aperture. drm/i915: Fix harmless warning from patch merged after i2c rework. drm/i915: Zap the GTT mapping when transitioning from untiled to tiled. Eric Dumazet (6): x86: atomic64: The atomic64_t data type should be 8 bytes aligned on 32-bit too x86: atomic64: Improve atomic64_read() x86: atomic64: Improve cmpxchg8b() x86: atomic64: Improve atomic64_read() x86: atomic64: Inline atomic64_read() again forcedeth: Fix NAPI race. Eric Miao (1): Input: add support for generic GPIO-based matrix keypad Eric Sandeen (2): ext4: mark several more functions in mballoc.c as noinline ext4: naturally align struct ext4_allocation_request FUJITA Tomonori (2): block: call blk_scsi_ioctl_init() block: fix sg SG_DXFER_TO_FROM_DEV regression Fernando Luis Vázquez Cao (1): PCI: remove pci_dac_dma_... APIs on mn10300 Florian Fainelli (3): vlynq: fix typo in Kconfig to enable debugging r6040: restore MIER register correctly when IRQ line is shared r6040: bump driver version to 0.24 and date to 08 July 2009 Folkert van Heusden (1): USB: serial: FTDI with product code FB80 and vendor id 0403 Frank Munzert (1): [S390] shutdown actions: save/return rc from init function Frans Pop (1): USB: add missing class descriptions used in usb/devices file Frederic Weisbecker (16): perf_counter tools: Fix storage size allocation of callchain list perf_counter tools: Resolve symbols in callchains perf_counter tools: Various fixes for callchains perf_counter: Ignore the nmi call frames in the x86-64 backtraces perf stat: Handle pipe read failures in perf stat perf_counter tools: Create new chain_for_each_child() iterator perf_counter tools: Add new OPT_CALLBACK_DEFAULT option perf report: Add support for callchain graph output perf_counter tools: Set the minimum percent for callchains to be displayed perf_counter tools: Provide helper to print percents color perf_counter tools: Display percents of hits in callchain with overhead colors perf report: Warn on callchain output request from non-callchain file perf report: Use a modifiable string for default callchain options perf report: Change default callchain parameters perf_counter tools: callchains: Manage the cumul hits on the fly perf report: Add "Fractal" mode output - support callchains with relative overhead rate Gianpaolo Cugola (1): USB: pl2303: New vendor and product id for the prolific driver Grant Likely (3): ASoC: Fix mpc5200-psc-ac97 to ensure the data ready bit is cleared ASoC: add locking to mpc5200-psc-ac97 driver powerpc: Fix spin_event_timeout() to be robust over context switches Greg Kroah-Hartman (7): Sound: remove direct access of driver_data omap: video: remove direct access of driver_data Staging: meilhaus: add email address to TODO Revert "USB: Add Intel Langwell USB OTG Transceiver Drive" USB: gadget: audio: provide correct device id USB: ti_usb_3410_5052: fix duplicate device ids. Revert USB: usbfs: deprecate and hide option for !embedded Greg Ungerer (2): fec: remove extra ";" from definition names fec: fix definition of 5272 version of FEC_X_DES_ACTIVE register Guennadi Liakhovetski (1): V4L/DVB (12160): soc-camera: fix missing clean up on error path Hans Verkuil (1): V4L/DVB (12153): ttpci: config TTPCI_EEPROM depends on I2C Heiko Carstens (7): [S390] sclp: fix compile error for !SCLP_CONSOLE [S390] monreader: fix dev_set_drvdata conversion [S390] udelay: disable lockdep to avoid false positives [S390] perf_counter build fix [S390] add __ucmpdi2() helper function [S390] add generic atomic64 support for 31 bit partitions: fix broken uevent_suppress conversion Herbert Xu (1): tun: Fix device unregister race Herton Ronaldo Krzesinski (2): ALSA: hda - move 8086:fb30 quirk (stac9205) to the proper section Staging: comedi: s626: use subvendor:subdevice ids for SAA7146 board Hidetoshi Seto (4): PCI MSI: Return if alloc_msi_entry for MSI-X failed PCI MSI: shorten PCI_MSIX_ENTRY_* symbol names PCI MSI: Unmask MSI if setup failed PCI MSI: Fix restoration of MSI/MSI-X mask states in suspend/resume Hin-Tak Leung (1): zd1211rw: adding SONY IFU-WLM2 (054c:0257) as a zd1211b device Huang Weiyi (2): powerpc/perf_counter: Remove duplicated #include mn10300: remove duplicated #include Hui Zhu (1): elf: fix multithreaded program core dumping on arm InKi Dae (1): drivers/video/s3c-fb.c: fix clock setting for Samsung SoC Framebuffer Ingo Molnar (18): dma-debug: Put all hash-chain locks into the same lock class ia64/PCI: adjust section annotation for pcibios_setup() Merge branch 'linus' into perfcounters/urgent perf report: Fix HV bit mismerge perf_counter tools: Add more warnings and fix/annotate them x86: Fix printk call in print_local_apic() Merge branch 'dma-debug/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/urgent perf report: Annotate variable initialization x86: atomic64: Move the 32-bit atomic64_t implementation to a .c file x86: atomic64: Improve atomic64_add_return() x86: atomic64: Reduce size of functions x86: atomic64: Make atomic_read() type-safe x86: atomic64: Fix unclean type use in atomic64_xchg() Merge branch 'amd-iommu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent x86: atomic64: Export APIs to modules x86: atomic64: Improve atomic64_xchg() x86: atomic64: Clean up atomic64_sub_and_test() and atomic64_add_negative() dma-debug: Fix the overlap() function to be correct and readable Jan Beulich (1): x86: Fix fixmap ordering Jan Capek (1): USB: ftdi_sio - product ID's for CCS PIC programmers Jan Kara (2): jbd2: Fix a race between checkpointing code and journal_get_write_access() ext4: Fix truncation of symlinks after failed write Jani Nikula (2): Input: gpio-keys - revert 'change timer to workqueue' Input: gpio-keys - avoid possibility of sleeping in timer function Jarek Poplawski (1): ipv4: Fix fib_trie rebalancing, part 4 (root thresholds) Jason Wessel (1): USB: console: Fix regression in usb console on kernel boot Jaswinder Singh Rajput (8): perf stat: Define MATCH_EVENT for easy attr checking x86: Remove double declaration of MSR_P6_EVNTSEL0 and MSR_P6_EVNTSEL1 perf list: Add cache events x86: Mark device_nb as static and fix NULL noise x86: Declare check_efer() before it gets used x86: Remove unused variable disable_x2apic x86: Remove unused function lapic_watchdog_ok() includecheck fix: include/linux, rfkill.h Jay Sternberg (1): Atheros Kconfig needs to be dependent on WLAN_80211 Jean Delvare (1): Fix staging drivers after smp_lock.h redux Jeff Garzik (1): osdblk: a Linux block device for OSD objects Jeff Layton (9): cifs: add new cifs_iget function and convert unix codepath to use it cifs: fix regression with O_EXCL creates and optimize away lookup cifs: add pid of initiating process to spnego upcall info cifs: rename CIFSSMBUnixSetInfo to CIFSSMBUnixSetPathInfo cifs: make a separate function for filling out FILE_UNIX_BASIC_INFO cifs: add and use CIFSSMBUnixSetFileInfo for setattr calls cifs: convert cifs_get_inode_info and non-posix readdir to use cifs_iget cifs: remove cifsInodeInfo->inUse counter cifs: when ATTR_READONLY is set, only clear write bits on non-directories Jens Axboe (1): Fix congestion_wait() sync/async vs read/write confusion Jesper Dangaard Brouer (1): ext4: Use rcu_barrier() on module unload. Jesse Barnes (1): drm/i915: enable error detection & state collection Jiaying Zhang (1): quota: Fix possible deadlock during parallel quotaon and quotaoff Jiri Olsa (2): net: adding memory barrier to the poll and receive callbacks memory barrier: adding smp_mb__after_lock Jiri Slaby (7): V4L/DVB (12202): em28xx, fix lock imbalance V4L/DVB (12203): radio-si470x: fix lock imbalance rtc: ds1374, fix lock imbalance Wireless: nl80211, fix lock imbalance [WATCHDOG] w83697ug, fix lock imbalance hwmon: (max6650) Fix lock imbalance Firmware: firmware_class, fix lock imbalance Jiro SEKIBA (1): nilfs2: fix disorder in cp count on error during deleting checkpoints Joe Perches (5): PCI ECRC: Remove unnecessary semicolons powerpc: Remove unnecessary semicolons Remove multiple KERN_ prefixes from printk formats [WATCHDOG] drivers/watchdog/bcm47xx_wdt.c: Remove unnecessary semicolons hwmon: (sht15) Remove unnecessary semicolon Joerg Roedel (3): dma-debug: fix off-by-one error in overlap function amd-iommu: handle alias entries correctly in init code amd-iommu: set evt_buf_size correctly Johann Lombardi (1): ext4: Fix goal inum check in the inode allocator Johannes Berg (4): hp-wmi: fix rfkill bug cfg80211: fix refcount leak mac80211_hwsim: avoid NULL access mac80211: fix docbook Jonathan McDowell (1): USB: Fix option_ms regression in 2.6.31-rc2 Jorrit Schippers (1): Staging: rt2870: Add USB ID for Sitecom WL-608 Josef Bacik (1): mm: mark page accessed before we write_end() Josh Boyer (1): powerpc/44x: Fix build error with -Werror for Warp platform Julia Lawall (1): drivers/net/smsc911x.c: Fix resource size off by 1 error Julien Tinnes (1): personality: fix PER_CLEAR_ON_SETID Kai Engert (1): USB: option.c: add Qualcomm/Option iCON 210 modem Kay Sievers (2): sparc: remove driver-core BUS_ID_SIZE Driver Core: remove BUS_ID_SIZE Keith Packard (2): drm/i915: Make driver less chatty drm/i915: Adjust DisplayPort clocks to use 96MHz reference Ken Kawasaki (1): pcnet_cs: add new id Kevin Cernekee (1): Fix virt_to_phys() warnings Kevin Hilman (1): USB: musb: davinci dm6446evm GPIO renumbering Krzysztof Halasa (1): USB serial: Add ID for Turtelizer, an FT2232L-based JTAG/RS-232 adapter. Krzysztof Helt (10): sisfb: fix regression with uninitalized fb_info->mm_lock mutex i810fb: fix regression with uninitalized fb_info->mm_lock mutex atafb: fix regression with uninitalized fb_info->mm_lock mutex w100fb: fix regression with uninitalized fb_info->mm_lock mutex matroxfb: fix regression with uninitalized fb_info->mm_lock mutex matroxfb: fix regression with uninitalized fb_info->mm_lock mutex (second head) fsl-diu-fb: fix regression with uninitalized fb_info->mm_lock mutex atmel_lcdfb: fix regression with uninitalized fb_info->mm_lock mutex sm501fb: fix regression with uninitalized fb_info->mm_lock mutex mx3fb: fix regression with uninitalized fb_info->mm_lock mutex Lai Jiangshan (1): trace_export: Repair missed fields Larry Finger (3): b43/b43legacy: fix radio LED initialization p54: tx refused but queue active fuse: Fix build error Lars-Peter Clausen (1): ASoC: Fix wm8753 register cache size and initialization Li Zefan (2): tracing: Fix stack tracer sysctl handling tracing/fastboot: Document the need of initcall_debug Linus Torvalds (41): Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge git://git.infradead.org/iommu-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'fixes-for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Revert "fb: Initialize fb_info mutexes in framebuffer_alloc()" Merge branch 'sh/for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Revert "fuse: Fix build error" as unnecessary Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Don't use '-fwrapv' compiler option: it's buggy in gcc-4.1.x Merge branch 'kmemleak' of git://linux-arm.org/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Linux 2.6.31-rc3 Linus Walleij (2): [ARM] 5579/1: Updated U300 defconfig [ARM] 5581/1: U300 clock updates Luciano Coelho (1): mac80211: minstrel: avoid accessing negative indices in rix_to_ndx() Magnus Damm (3): sh-sci: update receive error handling for muxed irqs usb: allow sh7724 to enable on-chip r8a66597 sh: add r8a66597 usb0 host to the se7724 board Mallikarjuna R Chilakala (1): ixgbe: Not allow 8259x unsupported wol options change from ethtool Mariusz Kozlowski (1): tun/tap: Fix crashes if open() /dev/net/tun and then poll() it. Mark Brown (1): ASoC: Fix register cache initialisation for WM8753 Mark Langsdorf (1): [CPUFREQ] Powernow-k8: support family 0xf with 2 low p-states Martin Geleynse (1): USB: ftdi: support NDI devices Martin Schwidefsky (2): [S390] set SCHED_OMIT_FRAME_POINTER for s390 [S390] define KTIME_SCALAR for 32-bit s390 Masami Hiramatsu (1): kprobes: No need to unlock kprobe_insn_mutex Mathieu Desnoyers (2): x86: Fix fixmap page order for FIX_TEXT_POKE0,1 [CPUFREQ] fix (utter) cpufreq_add_dev mess Matthew Wilcox (1): PCI: Fix IRQ swizzling for ARI-enabled devices Matthias Kaehlcke (1): [ARM] 5576/1: Update kb9202_defconfig Mauro Carvalho Chehab (12): V4L/DVB (12134): vivi: bug: don't assume that S_STD will be called before streaming V4L/DVB (12148): move V4L2_PIX_FMT_SGRBG8 to the proper place V4L/DVB (12135): Add a driver for mt9v011 sensor V4L/DVB (12136): mt9v011: Some fixes at the register initialization table V4L/DVB (12137): mt9v011: CodingStyle fixes V4L/DVB (12173): mt9v011: properly calculate image resolution registers V4L/DVB (12174): mt9v011: let's stick with datasheet values where it works V4L/DVB (12138): em28xx: add support for Silvercrest Webcam V4L/DVB (12139): em28xx: add other video formats V4L/DVB (12169): em28xx-video: fix VIDIOC_G_FMT and VIDIOC_ENUMFMT with webcams V4L/DVB (12171): em28xx: fix webcam usage with different output formats V4L/DVB (12172): em28xx: Add autodetection code for Silvercrest 1.3 mpix Maynard Johnson (1): oprofile: reset bt_lost_no_mapping with other stats Michael Ellerman (7): powerpc/pseries: Use pr_devel() in pseries LPAR HPTE routines powerpc/pseries: Use pr_devel() in xics.c powerpc: Use pr_devel() in arch/powerpc/mm/mmu_context_nohash.c powerpc: Cleanup & use pr_devel() in arch/powerpc/mm/slb.c powerpc: Use pr_devel() in arch/powerpc/mm/gup.c powerpc/cell: Use pr_devel() in axon_msi.c powerpc: Use pr_devel() in do_dcache_icache_coherency() Michael Krufky (2): V4L/DVB (12165): cx23885: override set_frontend to allow rf input path switching on the HVR1275 V4L/DVB (12166): cx23885: add FIXME comment above set_frontend override Michal Simek (2): microblaze: Wire up new syscalls microblaze: Fix cast warning for init.c Mike Frysinger (1): USB: isp1760: use __devexit_p() for remove function Mike Galbraith (6): x86: Fix symbol annotation for arch/x86/lib/clear_page_64.S::clear_page_c perf_counter tools: Make symbol loading consistently return number of loaded symbols perf_counter tools: Add infrastructure to support loading of kernel module symbols perf_counter tools: Connect module support infrastructure to symbol loading infrastructure perf_counter tools: Enable kernel module symbol loading in tools x86: Add missing annotation to arch/x86/lib/copy_user_64.S::copy_to_user Oleg Nesterov (1): cred_guard_mutex: do not return -EINTR to user-space Oliver Neukum (4): USB: fix memory leak in usbtmc USB: fix uninitialised variable in ti_do_download USB: fix memleak in usbfs USB: fix race leading to a write after kfree in usbfs Pablo Bitton (1): davinci_emac: fix kernel oops when changing MAC address while interface is down Parag Warudkar (1): elfcore.h : Fix UML build breakage Pascal Terjan (1): zd1211rw: 07b8:6001 is a ZD1211B Paul E. McKenney (2): rcu: Mark Hierarchical RCU no longer experimental fix RCU-callback-after-kmem_cache_destroy problem in sl[aou]b Paul Mackerras (2): perf_counter tools: Rework event string parsing/syntax x86: atomic64: Code atomic(64)_read and atomic(64)_set in C not CPP Paul Mundt (6): sh: define PERF_COUNTER_INDEX_OFFSET. fb: Initialize fb_info mutexes in framebuffer_alloc() video: sh_mobile_lcdcfb: Convert to framebuffer_alloc(). video: hitfb: Convert to framebuffer_alloc(). video: hitfb: Move over to dev_pm_ops. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into sh/for-2.6.31 Paul Vojta (1): ALSA: hda - fix beep tone calculation for IDT/STAC codecs Paulius Zaleckas (1): USB: gadget: fix imx_udc entry in Kconfig Pekka Enberg (3): SLAB: Fix lockdep annotations xen: Use kcalloc() in xen_init_IRQ() Merge branch 'slab/urgent' into for-linus Peng Tao (1): ext4: fix null handler of ioctls in no journal mode Pete Zaitcev (1): Staging: rspiusb: use NULL virtual address instead of a bogus one Peter Chubb (1): x86: Fix resume from suspend when CONFIG_CC_STACKPROTECTOR Peter Oberparleiter (1): gcov: exclude code operating in userspace from profiling Peter Zijlstra (2): sched: INIT_PREEMPT_COUNT sched: optimize cond_resched() Philipp Zabel (1): USB: gadget: pxa25x uses gpio_is_valid Ping Cheng (1): Input: wacom - add DTF720a support and fix rotation on Intuos3 Qiuping Chen (1): USB: gadget: rndis conformance tweak Rakib Mullick (1): x86, kvm: Fix section mismatches in kvm.c Randy Dunlap (3): PCI: fix kernel-doc warnings USB: usb.h: fix kernel-doc notation USB: gadget audio: select SND_PCM Raphael Assenat (1): [WATCHDOG] SA1100 watchdog maximum timeout Remis Lima Baima (2): microblaze: use the generic lib/checksum.c microblaze: convert all simple headers to use asm-generic Robert P. J. Day (1): vlynq: correct typo of missing "CONFIG_" prefix in ifdef Robert Richter (1): x86/oprofile: rename kernel parameter for architectural perfmon to arch_perfmon Roel Kluin (1): USB: fhci: mutually exclusive port_status Roland Dreier (2): fealnx: Fix build breakage -- PR_CONT should be KERN_CONT cxgb3: Fix crash caused by stashing wrong netdev_queue Ron Mercer (8): qlge: Expand coverage of hw lock for config register. qlge: Clear frame to queue routing before reset. qlge: Fix carrier on condition. qlge: Fix redundant call to free resources. qlge: Fix tx byte counter. qlge: Fix MAC address bonding issue. qlge: Add/use function for link up/down. qlge: Fix sizeof usage. Russell King (4): [ARM] export __cpu_flush_dcache_page [ARM] pgtable: swp pte layout documentation, definitions, and check [ARM] pgtable: file pte layout documentation [ARM] amba: fix amba device resources Ryusuke Konishi (4): nilfs2: remove unlikely directive causing mis-conversion of error code nilfs2: fix hang problem of log writer which occurs after write failures nilfs2: fix incorrect KERN_CRIT messages in case of write failures nilfs2: fix lockdep warning between regular file and inode file SUGIOKA Toshinobu (1): serial: sh-sci: fix sci interrupt handler Saeed Bishara (1): Input: gpio_mouse - use standard driver registration method Samuel Ortiz (1): iwmc3200wifi: add Kconfig help Sathya Perla (1): be2net: fix spurious interrupt handling in intx mode Sean MacLennan (2): powerpc/44x: Update Warp defconfig powerpc/4xx: Have Warp take advantage of GPIO LEDs default-state = keep Sebastian Ott (1): PM: Clear -EAGAIN in dpm_prepare Sergei Shtylyov (1): USB: musb_host: undo incorrect change in musb_advance_schedule() Shaohua Li (1): drm/i915: add FIFO watermark support Sheng Yang (1): intel-iommu: Fix intel_iommu_unmap_range() with size 0 Slobodan Tomić (1): [WATCHDOG] w83627hf_wdt.c: add support for the W83627EHF support Stefan Haberland (1): [S390] dasd: correct debugfeature sense dump Stefan Herbrechtsmeier (1): V4L/DVB (12159): soc_camera: Fix debug output of supported formats count Stefan Richter (3): firewire: core: do not DMA-map stack addresses firewire: sbp2: add support for disks >2 TB (and 16 bytes long CDBs) ieee1394: sbp2: add support for disks >2 TB (and 16 bytes long CDBs) Stephane Contri (1): dsa: fix 88e6xxx statistics counter snapshotting Steve French (1): [CIFS] update cifs version number Takashi Iwai (7): ALSA: hda - Fix error path in the sanity check in azx_pcm_open() ALSA: hda - Clean up VT170x dig-in initialization code ALSA: hda - Add missing EAPD initialization for VIA codecs ALSA: hda - Fix capture source selection in patch_via.c ALSA: hda - Check widget types while parsing capture source in patch_via.c Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus Thadeu Lima de Souza Cascardo (1): Input: mark serio and i8042 as suspended when hibernating too Theodore Ts'o (5): ext4: Fix type warning on 64-bit platforms in tracing events header jbd2: Remove GFP_ATOMIC kmalloc from inside spinlock critical region ext4: Fix potential reclaim deadlock when truncating partial block ext4: fix no journal corruption with locale-gen ext4: Fix ext4_mb_initialize_context() to initialize all fields Tilman Schmidt (2): gigaset: accept connection establishment messages in any order gigaset: drop pointless check Tobias Doerffel (1): linux/sysrq.h needs linux/errno.h Trond Myklebust (1): Fix compile error due to congestion_wait() changes Vasanthakumar Thiagarajan (1): ath9k: Fix leak in tx descriptor Vivek Goyal (1): cfq-iosched: reset oom_cfqq in cfq_set_request() Wade Farnsworth (1): phylib: fixes for PHY_RESUMING state changes Wei Yongjun (3): xfrm4: fix the ports decode of sctp protocol xfrm6: fix the proto and ports decode of sctp protocol sctp: fix warning at inet_sock_destruct() while release sctp socket Xiao Guangrong (1): tracing: Fix trace_print_seq() Yan Li (1): Input: i8042 - more reset quirks for MSI Wind-clone netbooks Yi Zou (1): ixgbe: Fix coexistence of FCoE and Flow Director in 82599 Yinghai Lu (3): x86/PCI: fix boundary checking when using root CRS x86/PCI: get root CRS before scanning children x86: don't clear nodes_states[N_NORMAL_MEMORY] when numa is not compiled in Yu Zhao (1): PCI: check if bus has a proper bridge device before triggering SBR Zhang, Yanmin (1): sys_sync(): fix 16% performance regression in ffsb create_4k test Zhao Yakui (4): drm/i915: Check the LID device to decide whether the LVDS should be initialized drm/i915: Restore the KMS modeset for every activated CRTC drm: Disable the unused connectors explicitly when resuming with KMS. drm/i915: Avoid saving/restore the modesetting registers twice in KMS mode Zhenyu Wang (2): drm/i915: Don't update display FIFO watermark on IGDNG drm/i915: Fix for LVDS VBT change on IGDNG dingdinghua (1): jbd2: fix race between write_metadata_buffer and get_write_access ling.ma@intel.com (4): drm/i915: Set SSC frequency for 8xx chips correctly drm/i915: enable sdvo lvds scaling function. drm/i915: crt fetch EDID by DVI-I converter on G4x platform drm/i915: Disable VGA output when doing DRM_MODE_DPMS_OFF. venkatesh.pallipadi@intel.com (4): [CPUFREQ] Eliminate the recent lockdep warnings in cpufreq [CPUFREQ] Mark policy_rwsem as going static in cpufreq.c wont be exported [CPUFREQ] Cleanup locking in ondemand governor [CPUFREQ] Cleanup locking in conservative governor vibi sreenivasan (1): driver model: fix show/store prototypes in doc. ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=1.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_31,J_CHICKENPOX_32 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLJM0143312 for ; Fri, 22 Jan 2010 16:21:19 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLHjc143278; Fri, 22 Jan 2010 16:21:17 -0600 Date: Fri, 22 Jan 2010 16:21:17 -0600 Message-Id: <201001222221.o0MMLHjc143278@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.31-rc4, created. v2.6.31-rc4 X-Git-Refname: refs/tags/v2.6.31-rc4 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 12ae5c63b8a8ac621ddfc810f774d00cad44765a This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.31-rc4 has been created at 12ae5c63b8a8ac621ddfc810f774d00cad44765a (tag) tagging 4be3bd7849165e7efa6b0b35a23d6a3598d97465 (commit) replaces v2.6.31-rc3 tagged by Linus Torvalds on Wed Jul 22 19:33:11 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.31-rc4 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkpny+sACgkQF3YsRnbiHLtXjACeMSuHactKl2WGEfKPPj2Eml9e m9EAoIFxEMkgOPf/YVkg2+3WPVwgx0e1 =oFzS -----END PGP SIGNATURE----- Abhishek Kulkarni (3): 9p: default 9p transport module fix 9p: Possible regression in p9_client_stat 9p: Fix incorrect parameters to v9fs_file_readn. Alan Cox (4): tty: fix close/hangup race n_tty: Fix echo race tty_port: Fix return on interrupted use tty: fix chars_in_buffers Alberto Panizzo (2): ARM MXC: Armadillo 500 add NOR flash device support (resend). Armadillo 500 add NAND flash device support (resend). Alex Deucher (1): drm/radeon: add some missing pci ids Alex Williamson (1): virtio_net: Sync header with qemu Andreas Jaggi (1): gre: fix ToS/DiffServ inherit bug Andreas Schwab (1): powerpc: Fix another bug in move of altivec code to vector.S Andrew Morton (1): drivers/serial/bfin_sport_uart.c: remove wrong and unneeded memset Anton Blanchard (8): perf_counter tools: Rename cache events to remove $ perf_counter: Make sure we dont leak kernel memory to userspace perf_counter: Synthesize VDSO mmap event perf_counter: Log vfork as a fork event perf_counter: Add perf record option to log addresses perf_counter: Make call graph option consistent perf_counter: Improve perf stat and perf record option parsing perf_counter: Fix throttle/unthrottle event logging Arjan van de Ven (3): perf: Fix stack data leak perf: avoid structure size confusion by using a fixed size perf: fix stack data leak Arnaldo Carvalho de Melo (7): perf report: Adjust column width to the values sampled perf report: Tidy up reporting of symbols not found strlist: Introduce strlist__entry and strlist__nr_entries methods perf report: Make the output more compact perf_counter tools: PLT info is stripped in -debuginfo packages perf report: Introduce -n/--show-nr-samples perf symbol: C++ demangling Arnaud Lacombe (2): kconfig: variable argument lists needs `stdarg.h' kconfig: initialize the screen before using curses(3) functions Artem Bityutskiy (1): UBI: gluebi: initialize ubi_num field Aurelien Jarno (1): Revert "Neither asm/types.h nor linux/types.h is required for arch/ia64/include/asm/fpu.h" Barry Song (1): Blackfin: bf537-stamp: fix irq decl for AD7142 Ben Dooks (1): net: Micrel KS8851 SPI network driver Ben Hutchings (2): netdev: restore MAC address set and validate operations netdev: restore MTU change operation Bruno Premont (1): genirq: Fix UP compile failure caused by irq_thread_check_affinity Casey Dahlin (1): dlm: free socket in error exit path Cesar Eduardo Barros (1): New device ID for sc92031 [1088:2031] Chris Wilson (1): perf_counter: Fix the tracepoint channel to perfcounters Christoph Hellwig (2): virtio_blk: don't bounce highmem requests virtio_blk: ioctl return value fix Clemens Ladisch (1): sound: usb-audio: add workaround for Blue Microphones devices Daniel Mack (4): [ARM] pxa: correct I2CPWR clock for pxa3xx [ARM] pxa: use kzalloc() in pxa_init_gpio_chip() ASoC: Fix NULL pointer dereference in __pxa2xx_pcm_hw_free Input: fix EVIOCGNAME/JSIOCGNAME regression Daniel Qarras (1): perf_counter, x86: Extend perf_counter Pentium M support Dave Jones (1): x86: Fix warning in pvclock.c Dave Kleikamp (1): powerpc: Fix booke user_disable_single_step() David Brownell (1): i2c-davinci: behave with i2cdetect David S. Miller (2): Revert "NET: Fix locking issues in PPP, 6pack, mkiss and strip line disciplines." Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 David Teigland (1): dlm: fix plock use-after-free Davide Libenzi (1): lguest: remove unnecessary forward struct declaration Dhananjay Phadke (3): netxen: fix context deletion sequence netxen: fix deadlock on dev close netxen: fix thermal check and shutdown Dongdong Deng (1): drivers/net: using spin_lock_irqsave() in net_send_packet() Eric Dumazet (5): net: sk_prot_alloc() should not blindly overwrite memory net: ip_push_pending_frames() fix igb: gcc-3.4.6 fix netfilter: nf_conntrack: nf_conntrack_alloc() fixes net: sock_copy() fixes Eugene Teo (1): Add '-fno-delete-null-pointer-checks' to gcc CFLAGS Evgeniy Polyakov (1): connector: maintainer/mail update. Fabio Checconi (2): sched: Fix rt_rq->pushable_tasks initialization in init_rt_rq() sched: Account for vruntime wrapping Fenghua Yu (1): Fix ia64 compilation IS_ERR and PTE_ERR errors. Finn Thain (1): macsonic, jazzsonic: fix oops on module unload Frank Roth (1): ALSA: ctxfi: Swapped SURROUND-SIDE channels on emu20k2 Frans Pop (1): Input: pcspkr - switch driver to dev_pm_ops Giuseppe Mazzotta (1): Input: wistron_btns - recognize Maxdata Pro 7000 notebooks Graf Yang (3): Blackfin: update anomaly lists to match latest sheets/usage Blackfin: update handling of anomaly 364 (wrong rev id in BF527-0.1) Blackfin: add CPLB entries for Core B on-chip L1 SRAM regions Guennadi Liakhovetski (2): pcm037: add MT9T031 camera support ARM: add support for the EET board, based on the i.MX31 pcm037 module Hao Song (1): ALSA: hda - Add quirk for Gateway T6834c laptop Hartley Sweeten (1): [ARM] 5595/1: ep93xx: missing header in dma-m2p.c Heiko Carstens (1): timer stats: fix quick check optimization Holger Brunck (1): UBI: fix bug in image sequence number handling Huang Weiyi (1): mx31: remove duplicated #include Jaroslav Kysela (2): ALSA: hda_intel: more strict alc880_parse_auto_config dig_nid checking ALSA: hda_codec: Check for invalid zero connections Jason Baron (2): perf_counter: Add tracepoint support to perf list, perf stat perf_counter: Detect debugfs location Jaswinder Singh Rajput (2): ALSA: riptide - proper handling of pci_register_driver for joystick ALSA: OSS sequencer should be initialized after snd_seq_system_client_init Jeff Layton (1): cifs: free nativeFileSystem field before allocating a new one Jerone Young (1): Input: atkbd - add force relese key quirk for Soltech TA12 Jesse Barnes (1): fb/intelfb: conflict with DRM_I915 and hide by default Jie Zhang (1): Blackfin: fix miscompilation in lshrdi3 Jiri Slaby (5): HID: hiddev, fix lock imbalance NET: phy_device, fix lock imbalance drm: drm_debugfs, check kmalloc retval drm: drm_gem, check kzalloc retval tty: nozomi, fix tty refcounting bug Joe Perches (1): netfilter: add netfilter git to MAINTAINERS Johannes Weiner (1): vt: drop bootmem/slab memory distinction John Dykstra (2): tcp: Fix MD5 signature checking on IPv4 mapped sockets tcp: Use correct peer adr when copying MD5 keys Julia Lawall (11): i2c: Use resource_size drivers/ata: Move a dereference below a NULL test drm: Move a dereference below a NULL test arch/blackfin: Add kmalloc NULL tests ataflop: adjust NULL test ALSA: sound/isa: convert nested spin_lock_irqsave to spin_lock HID: Move dereferences below a NULL test specialix.c: convert nested spin_lock_irqsave to spin_lock drivers/net: Move a dereference below a NULL test drivers/net: Move a dereference below a NULL test drivers/net/mlx4: Adjust constant Kay Sievers (1): vc: create vcs(a) devices for consoles Ken Kawasaki (1): 3c589_cs: re-initialize the multicast in the tc589_reset Kevin Hilman (1): i2c-davinci: convert clock usage after clkdev conversion Krzysztof Halasa (1): E100: work around the driver using streaming DMA mapping for RX descriptors. Li Zefan (1): tracing/events: Move TRACE_SYSTEM outside of include guard Linus Torvalds (42): Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge branch 'i2c-for-2631-rc3' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Revert "ppp: Fix throttling bugs" Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-sched Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/fyu/linux-2.6 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes fbmon: work around compiler bug in gcc-2.4.2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'linux-next' of git://git.infradead.org/ubi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'tj-block-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-counters-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-perf Merge branch 'lockdep-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Linux 2.6.31-rc4 Linus Walleij (2): [ARM] 5594/1: Correct U300 VIC init PM setting [ARM] 5608/1: Updated U300 defconfig Lothar WaĂźmann (2): net/can bugfix: use after free bug in can protocol drivers net/can: add module alias to can protocol drivers Lucas De Marchi (1): sched: Reset sched stats on fork() Lucy Liu (2): ixgbe: clear mac address data block in DCB mode ixgbe: Remove DPRINTK messages in DCB mode Marc Zyngier (1): backlight: fix pwm_bl.c to notify platform code when suspending Mark Goodwin (1): ahci: add device ID for 82801JI sata controller Mark McLoughlin (1): virtio-pci: correctly unregister root device on error Matias Zabaljauregui (1): lguest: fix journey Matt Reimer (1): pxamci: correct DMA flow control Maxime Bizon (1): ide: fix memory leak when flush command is issued Michael Buesch (1): ide-tape: Don't leak kernel stack information Michael Gruber (1): Input: xpad - don't resend successfully sent outgoing requests Michael Hennerich (3): Blackfin: fix incomplete renaming of the bfin-twi-lcd driver Blackfin: fix bugs in GPIO resume code Blackfin: drop per-cpu loops_per_jiffy tracking Mike Frysinger (5): Blackfin: drop dead flash_probe call Blackfin: restore exception banner when dumping crash info Blackfin: handle BF561 Core B memory regions better when SMP=n Blackfin: fix early_dma_memcpy() handling of busy channels Blackfin: define HARDIRQ_BITS again for now Mike Galbraith (2): perf_counter tools: Fix vmlinux symbol generation breakage perf_counter tools: Give perf top inherit option Mike McCormack (1): sky2: Avoid races in sky2_down Mike Rapoport (1): [ARM] pxa: fix ULPI_{DIR,NXT,STP} MFP defines Moni Shoua (1): bonding: clean muticast addresses when device changes type Nicolas Pitre (1): mvsdio: fix handling of partial word at the end of PIO transfer Patrick McHardy (1): netfilter: xt_osf: fix nf_log_packet() arguments Paul Turner (1): sched: Fix bug in SCHED_IDLE interaction with group scheduling Pavel Roskin (1): timer: Avoid reading uninitialized data Peter Zijlstra (10): perf_counter: Fix up P6 PMU details perf_counter: Clean up global vs counter enable perf_counter: Stop open coding unclone_ctx sched_rt: Fix overload bug on rt group scheduling softirq: introduce tasklet_hrtimer infrastructure Merge commit 'tip/perfcounters/core' into perf-counters-for-linus perf_counter: Remove unused variables perf_counter: Plug more stack leaks perf_counter: PERF_SAMPLE_ID and inherited counters lockdep: Fix lockdep annotation for pipe_double_lock() Rakib Mullick (3): x86: Fix false positive section mismatch in es7000_32.c x86, apic: Fix false positive section mismatch in numaq_32.c virtio_blk: mark virtio_blk with __refdata to kill spurious section mismatch Ralf Baechle (3): NET: Fix locking issues in PPP, 6pack, mkiss and strip line disciplines. MAINTAINERS entry for STRIP driver Update Andreas Koensgen's email address Robin Getz (6): Blackfin: cleanup code a bit with comments and defines Blackfin: work around anomaly 05000281 Blackfin: fix silent crash when no uClinux MTD filesystem exists Blackfin: drop duplicate runtime checking of anomaly 05000448 Blackfin: fix handling of IPEND in interrupt context save Blackfin: work around anomaly 05000189 Roel Kluin (2): perf_counter tools: Fix index boundary check drm/ttm: fix misplaced parentheses Roland Dreier (1): x86: Remove spurious printk level from segfault message Russell King (4): Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'for-rmk' of git://git.marvell.com/orion Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 ARM: Realview & Versatile: Fix i2c_board_info definitions Rusty Russell (1): lguest: restrict CPUID to avoid perf counter wrmsr Ryan Mallon (1): [ARM] 5606/1: Fix ep93xx watchdog driver headers Ryusuke Konishi (1): fs/Kconfig: move nilfs2 out RĂ©mi Denis-Courmont (2): Fix error return for setsockopt(SO_TIMESTAMPING) USB host CDC Phonet network interface driver Sascha Hlusiak (1): sit: fix regression: do not release skb->dst before xmit Simon Davie (1): Input: atkbd - add forced release keys quirk for FSC Amilo Pi 3525 Simon Farnsworth (1): drm/via: Fix vblank IRQ on VIA hardware. Simon Kagstrom (1): [ARM] Kirkwood: Correct header define Sonic Zhang (2): Blackfin: fix wrong CTS inversion blackfin: fix wrong CTS inversion Sonny Rao (1): futexes: Fix infinite loop in get_futex_key() on huge page Stephen Hemminger (1): sky2: revert shutdown changes Steve French (3): [CIFS] Distinguish posix opens and mkdirs from legacy mkdirs in stats Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6 Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6 Steven Rostedt (1): tracing/function-profiler: do not free per cpu variable stat Steven Whitehouse (1): dlm: Fix uninitialised variable warning in lock.c Takashi Iwai (9): Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus Merge branch 'fix/misc' into for-linus Merge branch 'fix/usb-audio' into for-linus ALSA: hda - Fix pin-setup for Sony VAIO with STAC9872 codecs ALSA: ca0106 - Fix the max capture buffer size Merge branch 'fix/ctxfi' into for-linus Merge branch 'fix/hda' into for-linus Merge branch 'fix/misc' into for-linus Tejun Heo (3): libata: fix follow-up SRST failure path libata: implement and use HORKAGE_NOSETXFER, take#2 block: fix failfast merge testing in elv_rq_merge_ok() Thomas Gleixner (6): hrtimer: migration: do not check expiry time on current CPU hrtimer: Fix migration expiry check sched: fix load average accounting vs. cpu hotplug sched: fix nr_uninterruptible accounting of frozen tasks really clocksource: Prevent NULL pointer dereference genirq: Delegate irq affinity setting to the irq thread Tim Abbott (1): vmlinux.lds.h: restructure BSS linker script macros Tobias Klauser (1): skbuff.h: Fix comment for NET_IP_ALIGN Trond Myklebust (3): NFSv4: Fix an Oops in nfs4_free_lock_state NFSv4: Fix an NFSv4 mount regression NFSv4: Fix a problem whereby a buggy server can oops the kernel Uwe Kleine-König (2): serial: don't add msm_serial's probe function to the driver struct macsonic: move probe function to .devinit.text Vince Weaver (1): perf_counter: Add P6 PMU support Vincent CUISSARD (1): cdc-eem: bad crc checking Wan ZongShun (1): Add mac driver for w90p910 Wolfgang Grandegger (3): can: sja1000: remove duplicated includes can: restart device even if dev_alloc_skb() fails can: switch carrier on if device was stopped while in bus-off state Wolfram Sang (1): sched: Documentation/sched-rt-group: Fix style issues & bump version Xiao Guangrong (1): tracing/function: Fix the return value of ftrace_trace_onoff_callback() Xiaotian Feng (1): block: sysfs fix mismatched queue_var_{store,show} in 64bit kernel Yevgeny Petrilin (2): mlx4_core: Handle multi-physical function devices mlx4_core: Add new ConnectX EN PCI ID 0x6764 Yinghai Lu (1): x86/pci: insert ioapic resource before assigning unassigned resources Zhaolei (1): z2ram: Small cleanup for z2ram.c fujita (1): Add dma_debug_init() for ia64 maximilian attems (1): kbuild, deb-pkg: fix install scripts for posix sh roel kluin (3): atlx: duplicate testing of MCAST flag atl1c: add missing parentheses atl1c: misplaced parenthesis ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_13,J_CHICKENPOX_33,J_CHICKENPOX_62, J_CHICKENPOX_64,J_CHICKENPOX_74 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLMst143355 for ; Fri, 22 Jan 2010 16:21:22 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLKIo143321; Fri, 22 Jan 2010 16:21:20 -0600 Date: Fri, 22 Jan 2010 16:21:20 -0600 Message-Id: <201001222221.o0MMLKIo143321@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.31-rc5, created. v2.6.31-rc5 X-Git-Refname: refs/tags/v2.6.31-rc5 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 948e7a0b0e000a8d646b72fcfd8ccaa047e046ab This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.31-rc5 has been created at 948e7a0b0e000a8d646b72fcfd8ccaa047e046ab (tag) tagging ed680c4ad478d0fee9740f7d029087f181346564 (commit) replaces v2.6.31-rc4 tagged by Linus Torvalds on Fri Jul 31 17:40:58 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.31-rc5 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkpzjx8ACgkQF3YsRnbiHLtNLQCeJtacWtnNxC2ucwFGgrxiVvD+ XQ8An2gUzJ3ODsYYD+bDVr5tbKwISgVL =6ZzL -----END PGP SIGNATURE----- Ajay Kumar Gupta (1): USB: musb: fix CONFIGDATA register read issue Ajit Khaparde (1): be2net: Bug fix in the non-lro path. Size of received packet was not updated in statistics properly. Alan Cox (3): tty: Fix a USB serial crash/scribble pty: quickfix for the pty ENXIO timing problems usb_serial: Fix remaining ref count/lock bugs Alan Jenkins (4): rfkill: fix rfkill_set_states() to set the hw state rfkill: remove too-strict __must_check acer-wmi: fix rfkill conversion PM / Hibernate: Replace bdget call with simple atomic_inc of i_count Alan Stern (1): USB: usbtest: no need for USB_DEVICEFS Albin Tonnerre (1): drivers/serial/atmel_serial.c: fix compile when CONFIG_SERIAL_ATMEL=Y and CONFIG_SERIAL_ATMEL_CONSOLE=N Alessandro Rubini (1): smc91x.h: add config for Nomadik evaluation kit Alex Deucher (5): drm/radeon/kms: fix quirk for MSI laptop drm/radeon/kms: get lvds info for DIG LVTMA and UNIPHY encoders drm/radeon/kms: add PLL flag to prefer frequencies <= the target freq drm/radeon/kms: enable frac fb divs on rs600/rs690/rs740 drm/radeon/kms: fix hotspot handling on pre-avivo chips Alexander Beregalov (1): net: KS8851 needs to depend on MII Alexey Fisher (2): x86: Add quirk for Intel DG45ID board to avoid low memory corruption ALSA: usb-audio - Volume control quirk for QuickCam E 3500 Amit Kucheria (2): staging: udlfb: Add vmalloc.h include USB: musb: Refer to musb_otg_timer_func under correct #ifdef Anand Gadiyar (1): USB: OMAP: OHCI: hc_driver's stop method should call ohci_stop Andi Kleen (1): x86-64: Fix bad_srat() to clear all state Andreas Eversberg (1): mISDN: Fix handling of receive buffer size in L1oIP Andres Salomon (2): olpc_battery: Fix up eeprom read function olpc_battery: Ensure that the TRICKLE bit is checked Andy Gospodarek (1): ixgbe: remove unnecessary call to device_init_wakeup Andy Whitcroft (1): rt2x00: Fix chipset detection for rt2500usb Anton Vorontsov (8): of/mdio: Add support function for Ethernet fixed-link property fs_enet: Revive fixed link support gianfar: Revive fixed link support ucc_geth: Revive fixed link support sdhci: get rid of "frequency too high" flood when using eSDHC powerpc/85xx: Fix ethernet link detection on MPC8569E-MDS boards powerpc/85xx: Don't scan for TBI PHY addresses on MPC8569E-MDS boards powerpc/83xx: Fix PCI IO base address on MPC837xE-RDB boards Antti Palosaari (1): V4L/DVB (12269): af9013: auto-detect parameters in case of garbage given by app Arnd Bergmann (1): microblaze: remove sys_ipc Bartlomiej Zolnierkiewicz (4): mg_disk: fix issue with data integrity on error in mg_write() libata: add missing NULL pointer check to ata_eh_reset() libata: remove superfluous NULL pointer checks PM / ACPI: HP G7000 Notebook needs a SCI_EN resume quirk Benjamin Herrenschmidt (2): mm: Pass virtual address to [__]p{te,ud,md}_free_tlb() mm: Remove duplicate definitions in MIPS and SH Benjamin Marzinski (5): GFS2: keep statfs info in sync on grows GFS2: Fix panic in glock memory shrinker GFS2: Don't put unlikely reclaim candidates on the reclaim list. GFS2: Fix incorrent statfs consistency check GFS2: remove dcache entries for remote deleted inodes Bill Pemberton (1): Staging: serqt_usb2: add missing calls to tty_kref_put() Bob Copeland (1): ath5k: temporarily disable crypto for AP mode Brian Johnson (2): V4L/DVB (12282): gspca - main: Support for vidioc_g_chip_ident and vidioc_g/s_register. V4L/DVB (12283): gspca - sn9c20x: New subdriver for sn9c201 and sn9c202 bridges. Carlos R. Mafra (1): USB: option: Remove unused variable Catalin Marinas (3): x86: Include all of .data.* sections in _edata on 64-bit kmemleak: Protect the seq start/next/stop sequence by rcu_read_lock() fs/ramfs/file-nommu.c needs include/linux/sched.h Chaithrika U S (1): ASoC: tlv320aic3x: Enable PLL when not bypassed Chris Mason (3): Btrfs: clear all space_info->full after removing a block group Btrfs: find smallest available device extent during chunk allocation Btrfs: be more polite in the async caching threads Christian Lamparter (1): cfg80211: double free in __cfg80211_scan_done Craig Shelley (1): USB: CP210x Add new device IDs Dan Carpenter (2): p54spi: fix potential null deref in p54spi.c lguest: dereferencing freed mem in add_eventfd() Dan Williams (1): dmaengine: move HIGHMEM64G restriction to ASYNC_TX_DMA Daniel Cadete (1): Btrfs: remove of redundant btrfs_header_level Daniel Mack (1): ALSA: snd_usb_caiaq: add support for Audio2DJ Dave Airlie (17): drm/radeon/kms: fix some GART table entry bugs. drm/radeon/kms: mmio base/size should be resource_size_t. drm/radeon/kms: remove IB flushing trick. drm/radeon/kms: set crtc and cursor offsets correctly on legacy chips. drm/radeon/kms: respect TOM on rs100->rs480 IGP variants. drm/radeon: fix support for vline relocations. drm/radeon/kms: fix vram vs aper size check. drm/radeon/kms: drop zero length CS indirect buffers. drm/radeon/kms: don't swap PCIEGART PTEs in VRAM. drm/ttm/radeon: add dma32 support. drm/radeon/kms: fix VRAM sizing like DDX does it. drm/radeon/kms: block RN50 from using 3D engine. drm/radeon/kms: add initial colortiling support. drm/radeon/kms: vram sizing on certain r100 chips needs workaround. drm/radeon/kms: allow interruptible waits for objects. drm/ttm: fix highuser vs dma32 confusion. drm/radeon: set fb aperture sizes for framebuffer handoff. Dave Hansen (1): lib: flexible array implementation Dave Jones (1): pps.h needs David Milburn (1): ahci: add device IDs for Ibex Peak ahci controllers David Rientjes (2): Staging: android: lowmemorykiller.c: fix it for "oom: move oom_adj value from task_struct to mm_struct" mm: avoid endless looping for oom killed tasks David S. Miller (1): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 David Woodhouse (2): Btrfs: Remove broken sanity check from btrfs_rmap_block() Btrfs: Fix crash on read failures at mount Deepak Saxena (1): net: irda: init spinlock after memcpy Denis Turischev (1): x86: Add reboot fixup for SBC-fitPC2 Devin Heitmueller (7): V4L/DVB (12257): em28xx: make tuning work for Terratec Cinergy T XS USB (mt352 variant) V4L/DVB (12258): em28xx: fix typo in mt352 init sequence for Terratec Cinergy T XS USB V4L/DVB (12260): em28xx: make support work for the Pinnacle Hybrid Pro (eb1a:2881) V4L/DVB (12261): em28xx: set GPIO properly for Pinnacle Hybrid Pro analog support V4L/DVB (12262): em28xx: Make sure the tuner is initialized if generic empia USB id was used V4L/DVB (12263): em28xx: set demod profile for Pinnacle Hybrid Pro 320e V4L/DVB (12265): em28xx: fix tuning problem in HVR-900 (R1) Dhananjay Phadke (1): netxen: reset ring consumer during cleanup Diego Calleja (1): Btrfs: Remove code duplication in comp_keys Don Skidmore (1): ixgbe: fix for 82599 errata marking UDP checksum errors Eero Nurkkala (1): spi: omap2_mcspi rxdma bugfix Eric Paris (7): inotify: drop user watch count when a watch is removed inotify: do not leak inode marks in inotify_add_watch inotify: fix error paths in inotify_update_watch fsnotify: use def_bool in kconfig instead of letting the user choose inotify: check filename before dropping repeat events fsnotify: fix inotify tail drop check with path entries inotify: use GFP_NOFS under potential memory pressure Eric Sandeen (3): hugetlbfs: fix i_blocks accounting xfs: reduce bmv_count in xfs_vn_fiemap xfs: bump up nr_to_write in xfs_vm_writepage Erik AndrĂ©n (4): V4L/DVB (12221): gspca - stv06xx-hdcs: Actually update the sensor state V4L/DVB (12222): gspca - stv06xx-hdcs: Fix sensor sequence bug V4L/DVB (12223): gspca - stv06xx-hdcs: Correct the pixelformat V4L/DVB (12224): gspca - m5602-s5k4aa: Remove erroneous register writes Felix Beck (1): [S390] zcrypt: fix scheduling of hrtimer ap_poll_timer Giacomo Lozito (1): USB: storage: raise timeout in usb_stor_Bulk_max_lun Greg Kroah-Hartman (1): staging: remove aten2011 driver H. Peter Anvin (1): x86: Fix movq immediate operand constraints in uaccess.h Hans Verkuil (1): V4L/DVB (12300): bttv: fix regression: tvaudio must be loaded before tuner Heiko Carstens (3): [S390] hibernation: fix lowcore handling [S390] hibernation: fix register corruption on machine checks [S390] vdso: fix per cpu area allocation Herton Ronaldo Krzesinski (1): USB: option: add ZTE device ids and remove ONDA ids Hidehiro Kawai (1): x86, mce: Rename incorrect macro name "CONFIG_X86_THRESHOLD" Hidetoshi Seto (2): kexec: fix omitting offset in extended crashkernel syntax sysrq, kdump: make sysrq-c consistent Huang Weiyi (1): microblaze: remove duplicated #include Ira Snyder (2): fsldma: enable external start for the 83xx controller fsldma: do not clear bandwidth control bits on the 83xx controller Ira W. Snyder (1): fsldma: use PCI Read Multiple command Jan Beulich (1): x86, mce: Fix set_trigger() accessor Jan Kara (6): jbd: Fail to load a journal if it is too short ext3: Fix truncation of symlinks after failed write jbd: Fix a race between checkpointing code and journal_get_write_access() ext3: Get rid of extenddisksize parameter of ext3_get_blocks_handle() udf: Fix loading of VAT inode when drive wrongly reports number of recorded blocks quota: Silence lockdep on quota_on Javier Cardona (1): mac80211: use correct address for mesh Path Error Javier Martin (1): USB: option.c to support Alcatel X060S/X200 broadband modems Jean Delvare (1): hwmon: (smsc47m1) Differentiate between LPC47M233 and LPC47M292 Jean-Francois Moine (1): V4L/DVB (12267): gspca - sonixj: Bad sensor init of non ov76xx sensors. Jeff Garzik (1): Remove zero-length file drivers/char/vr41xx_giu.c Jeff Layton (2): cifs: disable serverino if server doesn't support it cifs: fix sb->s_maxbytes so that it casts properly to a signed value Jens Axboe (2): block: always assign default lock to queues block: make the end_io functions be non-GPL exports Jeremy Fitzhardinge (1): x86, amd: Don't probe for extended APIC ID if APICs are disabled Jerome Glisse (1): drm/radeon/kms: fix bandwidth computation on avivo hardware Jiri Slaby (1): uio: mark uio.h functions __KERNEL__ only Joe Perches (22): drivers/dma/fsldma.c: Remove unnecessary semicolons drivers/dma: Remove unnecessary semicolons MAINTAINERS: IA64 - pair P:/M: entries properly MAINTAINERS: Remove ivtv-user lists, add CX18 url MAINTAINERS: QLGE 10Gb ETHERNET - pair P:/M: entries properly MAINTAINERS: Use tabs in ACER ASPIRE ONE MAINTAINERS: Remove L: linux-kernel@vger.kernel.org MAINTAINERS: Move ARPD to CREDITS MAINTAINERS: Update KERNEL JANITORS MAINTAINERS: Add PPS patterns MAINTAINERS: USB Serial Digi Acceleport: use separate P: for Al Borchers MAINTAINERS: INPUT: Add Dmitry's name to his email address MAINTAINERS: Remove CS461x sound card section MAINTAINERS: QLOGIC QLA2XXX - add Andrew Vasquez email address MAINTAINERS: QLOGIC QLA3XXX - Add Ron Mercer email address MAINTAINERS: Scott Murray is no longer with SomaNetworks scripts/get_maintainer.pl: Add -f directory use get_maintainer.pl: Add git-min-percent option get_maintainerpl-add-git-min-percent-option-fix MAINTAINERS: coalesce name and email address lines MAINTAINERS: finish off the email address coalescing imxmmc: Remove unnecessary semicolons Johannes Berg (4): mac80211: disable mesh rfkill: allow toggling soft state in sysfs again mac80211_hwsim: fix unregistration mac80211_hwsim: fix use after free John Williams (2): microblaze: Final support for statically linked DTB microblaze: Get module loading working John Youn (2): USB: xhci: Scratchpad buffer allocation USB: xhci: Support for 64-byte contexts Josef Bacik (3): Btrfs: use hybrid extents+bitmap rb tree for free space Btrfs: async block group caching Btrfs: change how we unpin extents Jouni Hogander (1): spi: omap2_mcspi supports wake events Julia Lawall (5): Btrfs: convert nested spin_lock_irqsave to spin_lock Btrfs: adjust NULL test V4L/DVB (12284): gspca - jpeg subdrivers: Check the result of kmalloc(jpeg header). Btrfs: Correct redundant test in add_inode_ref ALSA: sound/aoa: Add kmalloc NULL tests KAMEZAWA Hiroyuki (1): cgroup avoid permanent sleep at rmdir Kristoffer Ericson (2): drivers/video/backlight/jornada720_bl.c: fix build MAINTAINERS: update HP Jornada 700-series and Epson s1d13xxxfb support Kumar Gala (2): powerpc/mm: Fix SMP issue with MMU context handling code powerpc: Update defconfigs for embedded 6xx/7xxx, 8xx, 8{3,5,6}xxx Larry Finger (1): rtl8187: Fix for kernel oops when unloading with LEDs enabled Li Zefan (5): trace_stack: Fix seqfile memory leak function-graph: Fix seqfile memory leak tracing/stat: Fix seqfile memory leak cgroups: fix pid namespace bug io context: fix ref counting Linus Torvalds (39): Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'fixes-for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'zero-length' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6 Merge branch 'drm-radeon-kms' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'i2c-fixes-rc4' of git://aeryn.fluff.org.uk/bjdooks/linux Alan doesn't want to maintain tty code any more Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes Merge git://git.infradead.org/users/cbou/battery-2.6.31 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-quota-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Linux 2.6.31-rc5 Lu Zhihe (1): edac: x38 fix mchbar high register addr Luca Tettamanti (1): hwmon: (asus_atk0110) Fix upper limit readings Lucian Adrian Grijincu (1): driver core: documentation: make it clear that sysfs is optional Lucy Liu (1): ixgbe: Don't priority tag control frames in DCB mode Luis R. Rodriguez (2): ath9k: Tune ANI function processing on AP mode during ANI reset ath: add support for special 0x8000 regulatory domain Magnus Damm (2): i2c-sh_mobile: change module_init() to subsys_initcall() clocksource: Save mult_orig in clocksource_disable() Marek Vasut (1): libertas: Fix problem with broken V4 firmware on CF8381 Mark Ware (2): net: Rework mdio-ofgpio driver to use of_mdio infrastructure cpm_uart: Don't use alloc_bootmem in cpm_uart_cpm2.c Martin Schwidefsky (1): [S390] vdso: clock_gettime of CLOCK_THREAD_CPUTIME_ID with noexec=on Martyn Welch (2): powerpc/86xx: Update defconfig for GE Fanuc's PPC9A powerpc/86xx: Update GE Fanuc sbc310 default configuration Masami Hiramatsu (1): kprobes: Use kernel_text_address() for checking probe address Matthew Wilcox (1): markup_oops: fix it with 32-bit userspace on a 64-bit kernel Mauro Carvalho Chehab (14): V4L/DVB (12233): em28xx: rename is_27xx to is_webcam V4L/DVB (12234): em28xx-cards: use is_webcam flag for devices that are known to be webcams V4L/DVB (12235): em28xx: detects sensors also with the generic em2750/2750 entry V4L/DVB (12236): em28xx: stop abusing of board->decoder for sensor information V4L/DVB (12237): mt9v011: implement VIDIOC_QUERYCTRL V4L/DVB (12238): em28xx: call sensor detection code for all webcam entries V4L/DVB (12239): em28xx: fix webcam scaling V4L/DVB (12240): mt9v011: add a function to calculate frames per second rate V4L/DVB (12241): mt9v011: Fix vstart V4L/DVB (12242): mt9v011: implement core->s_config to allow adjusting xtal frequency V4L/DVB (12243): em28xx: allow specifying sensor xtal frequency V4L/DVB (12244): em28xx: adjust vinmode/vinctl based on the stream input format V4L/DVB (12245): em28xx: add support for mt9m001 webcams V4L/DVB (12286): sn9c20x: reorder includes to be like other drivers Mel Gorman (5): profile: Suppress warning about large allocations when profile=1 is specified page-allocator: preserve PFN ordering when __GFP_COLD is set page-allocator: allow too high-order warning messages to be suppressed with __GFP_NOWARN profile: suppress warning about large allocations when profile=1 is specified net-dccp: suppress warning about large allocations from DCCP Michael Chan (1): cnic: Fix ISCSI_KEVENT_IF_DOWN message handling. Michael Krufky (2): V4L/DVB (12302): cx23885-417: fix broken IOCTL handling V4L/DVB (12303): cx23885: check pointers before dereferencing in dprintk macro Michael S. Tsirkin (3): virtio: fix memory leak on device removal virtio: delete vq from list virtio: refactor find_vqs Michal Simek (11): microblaze: Define tlb_flush macro microblaze: Add messages about FDT blob microblaze: Not to clear r7 after copying DTB to kernel microblaze: Clear print messages for DTB passing via r7 microblaze: Fix put_user macro for 64bits arguments microblaze: Add _PAGE_FILE macros to pgtable.h microblaze: Fix do_page_fault for no context microblaze: Detect new Microblaze 7.20 versions microblaze: Support unaligned address for put/get_user macros microblaze: Add support for R_MICROBLAZE_64_NONE microblaze: Typo fix for cpu param inconsistency Michel Dänzer (6): drm/radeon: Endianness fixes for radeondrmfb. drm/radeon: Don't unreserve twice on failure to validate. drm/radeon: Fall back to evicting BOs with memcpy if necessary. drm/radeon: Pay more attention to object placement requested by userspace. drm/radeon: Add radeon.test parameter for running BO GPU copy tests. drm/radeon: Fix size used for benchmarking BO copies. Michele Jr De Candia (1): i2c/tsl2550: Fix lux value in dark environment Mike Frysinger (1): module: use MODULE_SYMBOL_PREFIX with module_layout Mike Snitzer (2): dm: remove queue next_ordered workaround for barriers dm table: pass correct dev area size to device_area_is_valid Mikulas Patocka (1): dm raid1: wake kmirrord when requeueing delayed bios after remote recovery Ming Lei (1): driver core: firmware_class:fix memory leak of page pointers array Nicolas Ferre (4): dmaengine: dmatest: add a maximum number of test iterations dmaengine: dmatest: correct thread_count while using multiple thread per channel dmaengine: at_hdmac: new driver for the Atmel AHB DMA Controller dmaengine: at_hdmac: add DMA slave transfers Niko Jokinen (1): nl80211: Memory leak fixed OGAWA Hirofumi (1): pty: avoid forcing 'low_latency' tty flag Oleg Nesterov (1): update the comment in kthread_stop() Oliver Neukum (2): Staging: serqt_usb2: fix memory leak in error case USB: let the option driver compile without CONFIG_PM Pavel Roskin (1): mac80211: fix injection in monitor mode Pawel Osciak (1): s3c-fb: fix off-by-one bug in loop indexes Peng Huang (1): USB: serial: option: Add ZTE AC8710 usb modem device. Peter Korsgaard (1): i2c-s3c2410: s3c24xx_i2c_init: don't clobber IICLC value Peter Oberparleiter (1): sysfs: fix hardlink count on device_move Pierre Ossman (1): mmc: orphan subsystem Rafael J. Wysocki (1): skge: Enable WoL by default if supported Ralf Baechle (1): NET: ROSE: Don't use static buffer. Ramon de Carvalho Valle (1): eCryptfs: parse_tag_3_packet check tag 3 packet encrypted key size Reinette Chatre (2): iwlwifi: only show active power level via sysfs iwlwifi: only update byte count table during aggregation Rik van Riel (1): mm: copy over oom_adj value at fork time Roel Kluin (7): eepro: Read buffer overflow Dynamic debug: fix typo: -/-> USB: xhci: fix less- and greater than confusion ALSA: hda: fix out-of-bound hdmi_eld.sad[] write sound: aedsp16: Buffer overflow sound: mpu401.c: Buffer overflow i2c: strncpy does not null terminate string Roland Dreier (1): lib: export generic atomic64_t functions Russell Lang (1): USB: aten uc2324 is really a moschip 7840 Rusty Russell (4): lguest: fix descriptor corruption in example launcher lguest: fix comment style lguest: update commentry lguest and virtio: cleanup struct definitions to Linux style. Ryan Mallon (1): Add ds2782 battery gas gauge driver Sage Weil (1): Btrfs: make flushoncommit mount option correctly wait on ordered_extents Sam Ravnborg (1): microblaze: Makefile cleanup Sarah Sharp (15): USB: xhci: Set TD size in transfer TRB. USB: xhci: Deal with stalled endpoints. USB: xhci: Use GFP_ATOMIC while holding spinlocks. USB: xhci: Represent 64-bit addresses with one u64. USB: xhci: Handle short control packets correctly. USB: xhci: Correct Event Handler Busy flag usage. USB: xhci: Make debugging more verbose. USB: xhci: Don't oops if the host doesn't halt. USB: xhci: Check if the host controller died in IRQ handler. USB: xhci: Setup HW retries correctly. USB: xhci: Handle babble errors on transfers. USB: xhci: Fail gracefully if there's no SS ep companion descriptor. USB: Fix parsing of SuperSpeed Endpoint Companion descriptor. USB: xhci: Always align output device contexts to 64 bytes. USB: xhci: Stall handling bug fixes. Sebastian Andrzej Siewior (3): lib/scatterlist: add a flags to signalize mapping direction sdhci: use SG_MITER_TO_SG/SG_MITER_FROM_SG cb710: use SG_MITER_TO_SG/SG_MITER_FROM_SG Sebastian Heutling (1): eeprom/at25: bugfix "not ready" timeout after write Sergei Shtylyov (1): USB: musb_gadget_ep0: fix typo in service_zero_data_request() Sergey Matyukevich (1): libata: Updates and fixes for pata_at91 driver Simon Kagstrom (1): USB: ehci-orion: Call ehci_reset before ehci_halt Sonasath, Moiz (3): i2c-omap: Bug in reading the RXSTAT/TXSTAT values from the I2C_BUFFSTAT register i2c-omap: In case of a NACK|ARDY|AL return from the ISR i2c-omap: OMAP3430 Silicon Errata 1.153 Stefan Bader (1): jfs: Fix early release of acl in jfs_get_acl Steve Conklin (2): ata_piix: Add new laptop short cable IDs ata_piix: Add new short cable ID Steve French (1): [CIFS] fix sparse warning Steven Whitehouse (2): GFS2: Shrink the shrinker GFS2: Don't try and dealloc own inode Takashi Iwai (19): ALSA: pcm - Fix regressions with VMware ALSA: hda - Use snprintf() to be safer ALSA: ctxfi - Fix uninitialized error checks ALSA: hda - Restore GPIO1 properly at resume with AD1984A ALSA: pcm - Add logging of hwptr updates and interrupt updates ALSA: pcm - Fix warnings in debug loggings ALSA: pcm - Fix hwptr buffer-size overlap bug ALSA: hda - Fix mute control with some ALC262 models Merge branch 'fix/asoc' into for-linus Merge branch 'fix/caiaq' into for-linus Merge branch 'fix/ctxfi' into for-linus Merge branch 'fix/hda' into for-linus Merge branch 'fix/pcm-hwptr' into for-linus Merge branch 'fix/usb-audio' into for-linus ALSA: hda - Add quirk for Dell Studio 1555 ALSA: hda - Increase PCM stream name buf in patch_realtek.c Merge branch 'fix/hda' into for-linus Merge branch 'fix/misc' into for-linus Merge branch 'fix/oss' into for-linus Tejun Heo (1): libata: accept late unlocking of HPA Thadeu Lima de Souza Cascardo (1): rtc: mark if rtc-cmos drivers were successfully registered Thomas Gleixner (1): x86: geode: Mark mfgpt irq IRQF_TIMER to prevent resume failure Thomas Hellstrom (6): ttm: Make messages more readable. ttm: Fix caching mode selection. drm/ttm: Fix an oops and sync object leak. drm/ttm: Fix ttm in-kernel copying of pages with non-standard caching attributes. x86: Export kmap_atomic_prot() needed for TTM. drm/ttm: powerpc: Fix Highmem cache flushing. Tim Gardner (1): USB: option: Add USB ID for Novatel MC727/U727/USB727 refresh Trent Piepho (1): V4L/DVB (12291): b2c2: fix frontends compiled into kernel Tyler Hicks (1): eCryptfs: Check Tag 11 literal data buffer size Uros Bizjak (1): x86: Fix movq immediate operand constraints in uaccess_64.h Uwe Kleine-König (1): register at91_ether using platform_driver_probe Ville Sundberg (1): USB: ftdi_sio: Add support for GN Otometrics Aurical USB Audiometer Wan Wei (1): amd64_edac: read the right F2 maskoffset reg Wolfram Sang (1): pata_pcmcia: add CNF-CDROM-ID Xiaotian Feng (3): net/bridge: use kobject_put to release kobject in br_add_if error path block: fix improper kobject release in blk_integrity_unregister driver core: sysdev: do not send KOBJ_ADD uevent if kobject_init_and_add fails Yan Zheng (10): Btrfs: fix definition of struct btrfs_extent_inline_ref Btrfs: properly update space information after shrinking device. Btrfs: fix double increment of path->slots[0] in btrfs_next_leaf Btrfs: fix locking issue in btrfs_find_next_key Btrfs: make sure all dirty blocks are written at commit time Btrfs: find_free_dev_extent doesn't handle holes at the start of the device Btrfs: Fix ordering of key field checks in btrfs_previous_item Btrfs: Avoid delayed reference update looping Btrfs: Fix async caching interaction with unmount Btrfs: preserve commit_root for async caching Yi Zou (1): ixgbe: Enable FCoE offload when DCB is enabled for 82599 Zhu Yi (1): iwmc3200wifi: fix NULL pointer dereference in iwm_if_free dingdinghua (1): jbd: fix race between write_metadata_buffer and get_write_access françois romieu (1): r8169: WakeOnLan fix for the 8168 roel kluin (3): fealnx: Write outside array bounds at1700: Read buffer overflow tokenring: Read buffer overflow unsik Kim (3): mg_disk: remove prohibited sleep operation mg_disk: fix reading invalid status when use polling driver mg_disk: Add missing ready status check on mg_write() ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLQga143438 for ; Fri, 22 Jan 2010 16:21:26 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLPax143405; Fri, 22 Jan 2010 16:21:25 -0600 Date: Fri, 22 Jan 2010 16:21:25 -0600 Message-Id: <201001222221.o0MMLPax143405@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.31-rc7, created. v2.6.31-rc7 X-Git-Refname: refs/tags/v2.6.31-rc7 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: dcd5e628b7dc7f393dd728999fb0fb73a96d5e1b This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.31-rc7 has been created at dcd5e628b7dc7f393dd728999fb0fb73a96d5e1b (tag) tagging 422bef879e84104fee6dc68ded0e371dbeb5f88e (commit) replaces v2.6.31-rc6 tagged by Linus Torvalds on Fri Aug 21 18:00:58 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.31-rc7 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkqPQ04ACgkQF3YsRnbiHLueEACfYdMhUrN56WJfJavKnWQX6R32 P70An0E2WzhePcyqrVwSY1MjmZmV/0vC =Jfvo -----END PGP SIGNATURE----- Alex Deucher (1): drm/radeon: add GET_PARAM/INFO support for Z pipes Amerigo Wang (1): percpu: use the right flag for get_vm_area() Amit Kumar Salecha (1): netxen: remove netxen workqueue Andreas Schwab (1): security: Fix prompt for LSM_MMAP_MIN_ADDR Andrew Morton (1): mmc: add the new linux-mmc mailing list to MAINTAINERS Andy Walls (1): V4L/DVB (12338): cx18: Read buffer overflow Anton Blanchard (1): AFS: Documentation updates Antonio Ospite (1): V4L/DVB (12330): pxa_camera: Fix Oops in pxa_camera_probe Arnaldo Carvalho de Melo (1): perf record: Fix typo in pid_synthesize_comm_event Atsushi Nemoto (1): MIPS: Fix HPAGE_SIZE redefinition Bartlomiej Zolnierkiewicz (1): x86, mce: don't log boot MCEs on Pentium M (model == 13) CPUs Ben Dooks (2): spi_s3c24xx: fix clock rate calculation spi_s3c24xx: fix transfer setup code Bo Liu (1): mm: build_zonelists(): move clear node_load[] to __build_all_zonelists() Bob Dunlop (1): libertas: correct packing of rxpd structure Brian Johnson (1): V4L/DVB (12373a): Add gspca sn9c20x subdriver entry to MAINTAINERS file Bruce Allan (3): e1000e: fix acquisition of SW/FW/HW semaphore for ICHx parts e1000e: fix potential NVM corruption on ICH9 with 8K bank size e1000e: WoL does not work on 82577/82578 with manageability enabled Carlos R. Mafra (1): perf: Rename perf-examples.txt to examples.txt Chris Snook (1): MAINTAINERS: update atlx contact info Christian Lamparter (1): ar9170usb: fix spurious firmware related message Christoph Hellwig (2): xfs: fix locking in xfs_iget_cache_hit microblaze: use the generic ack_bad_irq implementation Cliff Wickman (1): x86: Fix UV BAU destination subnode id Dan Carpenter (1): ar9170: fix read & write outside array bounds Dave Airlie (10): drm/edid: fixup detailed timings like the X server. drm/radeon/kms: add rv530 R300_SU_REG_DEST + reloc for ZPASS_ADDR drm/radeon/kms: cut down indirects in register accesses. drm/radeon/kms: implement bo busy check + current domain drm/radeon/kms: although LVDS might be possible on crtc 1 don't do it. drm/radeon/kms: memset the allocated framebuffer before using it. drm/kms/radeon: cleanup combios TV table like DDX. drm/kms: teardown crtc correctly when fb is destroyed. drm/radeon/kms: implement the bo busy ioctl properly. drm/radeon/kms: add r100/r200 OQ support. Dave Jones (1): security: Make LSM_MMAP_MIN_ADDR default match its help text. David S. Miller (5): Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Revert "libertas: Read buffer overflow" Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Davide Rizzo (1): ARM: S3C24XX: Fix clkout mpx error Devin Heitmueller (3): V4L/DVB (12393): cx88: fix regression in tuning for Geniatech X8000 MT V4L/DVB (12394): cx88: Disable xc3028 power management for Geniatech x8000 V4L/DVB (12432): em28xx: fix regression in Empire DualTV digital tuning Dhananjay Phadke (2): netxen: fix dma mask update calculation netxen: free napi resources during detach Dmitry Eremin-Solenikov (2): af_ieee802154: fix ioctl processing af_ieee802154: provide dummy get/setsockopt Don Skidmore (1): ixgbe: fix issues setting rx-usecs with legacy interrupts Dongdong Deng (1): drivers/net: fixed drivers that support netpoll use ndo_start_xmit() Eero Nurkkala (1): OMAP: PM: CPUfreq: obey min/max settings of policy Eric Dumazet (8): phonet: phonet_device_get() fix rose: Fix rose_getname() leak econet: Fix econet_getname() leak netrom: Fix nr_getname() leak appletalk: fix atalk_getname() leak irda: Fix irda_getname() leak can: Fix raw_getname() leak net: restore gnet_stats_basic to previous definition Eric Paris (7): Capabilities: move cap_file_mmap to commoncap.c SELinux: call cap_file_mmap in selinux_file_mmap Security/SELinux: seperate lsm specific mmap_min_addr security: define round_hint_to_min in !CONFIG_SECURITY notify: unused event private race inotify: tail drop inotify q_overflow events inotify: start watch descriptor count at 1 Francois Romieu (1): 8139cp: balance dma_map_single vs dma_unmap_single pair From: Nick Piggin (1): btrfs: fix inode rbtree corruption Graff Yang (1): nommu: check fd read permission in validate_mmap_request() Greg Ungerer (1): fec: fix FEC driver packet transmission breakage Guennadi Liakhovetski (2): mx3: Fix double pin allocation in pcm037_eet.c V4L/DVB (12424): soc-camera: fix recursive locking in .buf_queue() Guillaume Knispel (1): poll/select: initialize triggered field of struct poll_wqueues Hans Verkuil (2): V4L/DVB (12428): hdpvr: add missing initialization of current_norm V4L/DVB (12429): v4l2-ioctl: fix G_STD and G_PARM default handlers Herbert Xu (1): tun: Extend RTNL lock coverage over whole ioctl Hugh Dickins (1): x86, mce: therm_throt: Don't log redundant normality Ingo Molnar (3): x86, mce: Don't initialize MCEs on unknown CPUs perf_counter: Fix the PARISC build perf annotate: Fix segmentation fault Jan Nikitenko (1): V4L/DVB (12341): zl10353 and qt1010: fix stack corruption bug Janboe Ye (1): OMAP3: Fix omap3 sram virtual addres overlap vmalloc space after increasing vmalloc size Jean Pihet (2): OMAP3 SDRC: add support for 2 SDRAM chip selects OMAP3: Setup MUX settings for SDRC CKE signals Jeff Layton (1): vfs: make get_sb_pseudo set s_maxbytes to value that can be cast to signed Jerome Glisse (1): drm/radeon/kms: Add specific rs690 authorized register table Joe Perches (3): MAINTAINERS: additional NETWORKING [GENERAL] and NETWORKING DRIVERS patterns MAINTAINERS: OSD LIBRARY and FILESYSTEM pattern fix REPORTING-BUGS: add get_maintainer.pl blurb John Williams (1): microblaze: Sane handling of missing timer/intc in device tree Jouni Hogander (1): OMAP3: PM: Fix wrong sequence in suspend. Jussi Mäki (1): Fix xfrm hash collisions by changing __xfrm4_daddr_saddr_hash to hash addresses with addition KOSAKI Motohiro (1): mm: revert "oom: move oom_adj value" Kevin Hilman (11): OMAP2/3: PM: make PM __init calls static OMAP3: PM: CM_REGADDR macros using wrong name OMAP3: PM: Ensure PRCM interrupts are cleared at boot OMAP3: PM: Clear pending PRCM reset flags on init OMAP3: PM: prevent module wakeups from waking IVA2 OMAP3: PM: Do not build suspend code if SUSPEND is not enabled OMAP4: UART: cleanup special case IRQ handling OMAP2/3/4: UART: Allow per-UART disabling wakeup for serial ports OMAP2/3/4: UART: allow in-order port traversal OMAP: GPIO: clear/restore level/edge detect settings on mask/unmask OMAP3: Overo: add missing pen-down GPIO definition Kyle McMartin (1): perf tools: Make 'make html' work Laurent Pinchart (2): V4L/DVB (12328): uvcvideo: Don't apply the FIX_BANDWIDTH quirk to all ViMicro devices V4L/DVB (12380): uvcvideo: Avoid flooding the kernel log with "unknown event type" messages Lennert Buytenhek (5): mwl8k: fix NULL pointer dereference on receive out-of-memory mwl8k: add various missing GET_HW_SPEC endian conversions mwl8k: call pci_unmap_single() before accessing command structure again mwl8k: prevent crash in ->configure_filter() if no interface was added mwl8k: prevent module unload hang Leonardo Potenza (1): x86: Annotate section mismatch warnings in kernel/apic/x2apic_uv_x.c Linus Torvalds (26): Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'sh/for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'perfcounters-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'fix/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'i2c-fixes-rc6' of git://aeryn.fluff.org.uk/bjdooks/linux x86: don't send an IPI to the empty set of CPU's Make bitmask 'and' operators return a result code x86: don't call '->send_IPI_mask()' with an empty mask Merge branch 'btrfs' of git://git.kernel.dk/linux-2.6-block Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Re-introduce page mapping check in mark_buffer_dirty() Linux 2.6.31-rc7 Linus Walleij (2): ARM: 5673/1: U300 fix initsection compile warning i2c-stu300: I2C STU300 stability updates Lucy Liu (1): ixgbe: Fix receive on real device when VLANs are configured Luis R. Rodriguez (1): mac80211: fix panic when splicing unprepared TIDs Magnus Damm (4): sh: skip disabled LCDC channels sh: CMT suspend/resume sh: use in-soc KEYSC on se7724 sh: sh7724 ddr self-refresh changes Matthias Schwarzott (1): V4L/DVB (12440): Use kzalloc for frontend states to have struct dvb_frontend properly Mauro Carvalho Chehab (12): V4L/DVB (12340): mtv9v011: Add a missing chip version to the driver V4L/DVB (12344): em28xx: fix support for Plextor ConvertX PX-TV100U V4L/DVB (12399): mt9v011: Add support for controlling frame rates V4L/DVB (12400): em28xx: Allow changing fps on webcams V4L/DVB (12401): m9v011: add vflip/hflip controls to control mirror/upside down V4L/DVB (12402): em28xx: fix: some em2710 chips use a different vendor ID V4L/DVB (12403): em28xx: properly reports some em2710 chips V4L/DVB (12406): em28xx: fix: don't do image interlacing on webcams V4L/DVB (12407): em28xx: Adjust Silvercrest xtal frequency V4L/DVB (12410): em28xx: Move the non-board dependent part to be outside em28xx_pre_card_setup() V4L/DVB (12411): em28xx: Fix artifacts with Silvercrest webcam V4L/DVB (12405): em28xx-cards: move register 0x13 setting to the proper place Michael Chan (5): cnic: Fix symbol_put_addr() panic on ia64. cnic: Refine registration with bnx2. bnx2: Use mutex on slow path cnic calls. cnic: Fix locking in start/stop calls. cnic: Fix locking in init/exit calls. Michael Krufky (5): V4L/DVB (12362): cx23885-417: fix manipulation of tvnorms V4L/DVB (12374): sms1xxx: fix broken Hauppauge devices V4L/DVB (12386): sms1xxx: fix build warning: unused variable 'board' V4L/DVB (12390): saa7134: Use correct product name for Hauppauge WinTV-HVR1150 ATSC/QAM-Hybrid V4L/DVB (12391): saa7134: Use correct product name for Hauppauge WinTV-HVR1120 DVB-T/Hybrid Michal Simek (3): microblaze: Enable ppoll syscall microblaze: Use klimit instead of _end for memory init microblaze: Update Microblaze defconfigs Michel Dänzer (1): drm/radeon/kms: Fix up vertical blank interrupt support. Mikael Pettersson (1): IXP4xx: Fix IO_SPACE_LIMIT for 2.6.31-rc core PCI changes Moiz Sonasath (2): i2c-omap: ACK pending [R/X]DR and [R/X]RDY interrupts i2c-omap: Enable workaround for Errata 1.153 based on NeilBrown (1): Fix new incorrect error return from do_md_stop. Nils Kassube (1): V4L/DVB (12371): af9015: Fix for crash in dvb-usb-af9015 Nishanth Menon (1): i2c-omap: Fix I2C status ACK Oliver Hartkopp (1): can: fix oops caused by wrong rtnl newlink usage Pascal Terjan (1): Add IDs for 3C905B-TX Fast Etherlink XL PCI Paul Mackerras (1): perf_counter: Check task on counter read IPI Paul Walmsley (4): OMAP2/3 SDRC: don't set SDRC_POWER.PWDENA on boot OMAP2/3 clock: split, rename omap2_wait_clock_ready() OMAP2 clock: 2430 I2CHS uses non-standard CM_IDLEST register OMAP3 clock: correct module IDLEST bits: SSI; DSS; USBHOST; HSOTGUSB Pavel Roskin (1): rt2x00: fix memory corruption in rf cache, add a sanity check Petko Manolov (1): pegasus: Add new device ID. Rafael Laufer (1): sctp: fix missing destroy of percpu counter variable in sctp_proc_exit() Rajendra Nayak (2): OMAP3 SDRC: Fix freeze when scaling CORE dpll to < 83Mhz OMAP3 SDRC: Move the clk stabilization delay to the right place Ralf Baechle (1): NETROM: Fix use of static buffer Ramax Lo (1): ARM: S3C64XX: serial: Fix a typo in Kconfig Randy Dunlap (3): V4L/DVB (12422): media/zr364xx: fix build errors V4L/DVB (12437): dvb: siano uses/depends on INPUT dm-log-userspace: fix printk format warning Roel Kluin (6): irda: fix read buffer overflow atlx: strncpy does not null terminate string V4L/DVB (12337): ivtv: Read buffer overflow V4L/DVB (12436): stk-webcam: read buffer overflow V4L/DVB (12438): Read buffer overflow V4L/DVB (12441): siano: read buffer overflow Roger Quadros (4): OMAP: GPIO: Fix incorrect gpio_get logic for output GPIOs OMAP3: RX51: Define TWL4030 USB transceiver in board file OMAP2/3: mmc-twl4030: Free up MMC regulators while cleaning up OMAP3: RX51: Updated rx51_defconfig Russell King (7): Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'omap_fixes_31' of git://git.pwsan.com/linux-2.6 Merge branch 'pm-upstream/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm Merge branch 'ixp4xx-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 ARM: Fix broken highmem support Merge branch 'for-rmk-rc' of git://git.pengutronix.de/git/imx/linux-2.6 Merge branch 's3c-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux Ryusuke Konishi (1): nilfs2: fix oopses with doubly mounted snapshots Sergio Aguirre (1): OMAP3: Overo: Fix smsc911x platform device resource value Sohail Syyed (1): V4L/DVB (12349): cx88: HVR1300 ensure switching from Encoder to DVB-T and back is reliable Steven Whitehouse (1): GFS2: Fix permissions on "recover" file Takashi Iwai (1): ALSA: hda - Fix probe of Toshiba laptops with ALC268 codec Tejun Heo (2): init: set nr_cpu_ids before setup_per_cpu_areas() percpu, sparc64: fix sparse possible cpu map handling Tero Kristo (1): OMAP3: Fixed crash bug with serial + suspend Thomas Gleixner (1): genirq: Wake up irq thread after action has been installed Thomas Hellstrom (1): drm: Fix sysfs device confusion. Tom Goff (1): gre: Fix MTU calculation for bound GRE tunnels Tony Lindgren (1): OMAP: Fix testing of cpu defines for mach-omap1 Valentin Longchamp (1): mx31moboard: invert sdhc ro signal sense Vikram Pandita (1): OMAP2/3: DMA errata correction Wei Yongjun (1): dccp: missing destroy of percpu counter variable while unload module Wu Fengguang (2): ALSA: hda: enable speaker output for Compaq 6530s/6531s ALSA: hda: add model for Intel DG45ID/DG45FC boards Xiaotian Feng (1): e1000e: fix use of pci_enable_pcie_error_reporting Yi Zou (3): ixgbe: Pass rx_ring directly in ixgbe_configure_srrctl() ixgbe: Disable packet split only on FCoE queues in 82599 ixgbe: Do not return 0 in ixgbe_fcoe_ddp() upon FCP_RSP in DDP completion Yong Zhang (1): gianfar: keep vlan related state when restart Zhang Qiang (1): nilfs2: missing a read lock for segment writer in nilfs_attach_checkpoint() Zhu Yi (1): ipw2x00: Write outside array bounds roel kluin (4): pcnet32: Read buffer overflow zorro8390: Fix read buffer overflow in zorro8390_init_one() mlx4_en: Fix read buffer overflow in mlx4_en_complete_rx_desc() via-velocity: Fix test of mii_status bit VELOCITY_DUPLEX_FULL ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_12,J_CHICKENPOX_13,J_CHICKENPOX_43, J_CHICKENPOX_44,J_CHICKENPOX_63 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLOhL143400 for ; Fri, 22 Jan 2010 16:21:24 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLMja143368; Fri, 22 Jan 2010 16:21:22 -0600 Date: Fri, 22 Jan 2010 16:21:22 -0600 Message-Id: <201001222221.o0MMLMja143368@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.31-rc6, created. v2.6.31-rc6 X-Git-Refname: refs/tags/v2.6.31-rc6 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 73e5ade3a45e2096db80f0e87d6d838d0499f0fe This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.31-rc6 has been created at 73e5ade3a45e2096db80f0e87d6d838d0499f0fe (tag) tagging 64f1607ffbbc772685733ea63e6f7f4183df1b16 (commit) replaces v2.6.31-rc5 tagged by Linus Torvalds on Thu Aug 13 15:43:45 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.31-rc6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkqElyYACgkQF3YsRnbiHLtsHACffhkcNl3Q5mdvMwPY+rKkfpCX eGAAnAtPRuz+1Yj6vQAe5q3OArPkGa/6 =CpL7 -----END PGP SIGNATURE----- Adrian Hunter (2): UBI: fix double free on error path UBI: compatible fallback in absense of sequence numbers Akinobu Mita (1): MIPS: Drop mmap_sem in pagefault oom path Alan D. Brunelle (1): Remove double removal of blktrace directory Alan Jenkins (1): eeepc-laptop: fix hot-unplug on resume Alan Stern (3): USB: usbfs: fix -ENOENT error code to be -ENODEV USB: EHCI: fix two new bugs related to Clear-TT-Buffer USB: EHCI: fix counting of transaction error retries Albin Tonnerre (1): lib/decompress_*: only include if STATIC is not defined Alex Deucher (2): drm/radeon: add some new r7xx pci ids drm/radeon: Add support for RS880 chips Alexander Clouter (1): MIPS: Fix compile for !CONFIG_SMP Alexander Duyck (1): igbvf: Allow VF driver to correctly recognize failure to set mac Alok Kataria (1): x86: Fix VMI && stack protector Anders Grafström (1): jffs2: Fix return value from jffs2_do_readpage_nolock() Andre Noll (1): md: Push down data integrity code to personalities. Andreas Eversberg (1): mISDN: Fix handling of receive buffer size in L1oIP Andrew Victor (1): ARM: 5637/1: [KS8695] Don't reference CLOCK_TICK_RATE in drivers Arnaldo Carvalho de Melo (10): perf top: Add mwait_idle_with_hints to skip_symbols[] perf report: Add missing command line options to man page perf symbol: Fix symbol parsing in certain cases: use the build-id as a symlink perf report: Add debug help for the finding of symbol bugs - show the symtab origin (DSO, build-id, kernel, etc) perf record: Fix .tid and .pid fill-in when synthesizing events perf report: Show the tid too in -D perf tools: Fix fallback to cplus_demangle() when bfd_demangle() is not available perf tools: Fix dso__new handle() to handle deleted DSOs perf list: Fix large list output by using the pager perf report: Don't show unresolved DSOs and symbols when -S/-d is used Artem Bityutskiy (1): mtd: blkdevs: do not forget to get MTD devices Atsushi Nemoto (1): MIPS: RBTX4939: Fix IOC pin-enable register updating Avi Kivity (1): KVM: ia64: fix build failures due to ia64/unsigned long mismatches Bartlomiej Zolnierkiewicz (2): Btrfs: remove superfluous NULL pointer check in btrfs_rename() pata_atiixp: fix second channel support Ben McKeegan (1): ppp: fix lost fragments in ppp_mp_explode() (resubmit) Benjamin Herrenschmidt (2): perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it powerpc/dma: pci_set_dma_mask() shouldn't fail if mask fits in RAM Bjorn Helgaas (1): ACPI: bind workqueues to CPU 0 to avoid SMI corruption Borislav Petkov (1): x86, msr: execute on the correct CPU subset Brice Goglin (1): perf stat: Fix tool option consistency: rename -S/--scale to -c/--scale Carlos R. Mafra (1): perf: "Longum est iter per praecepta, breve et efficax per exempla" Chengu Wang (1): ALSA: hda: Correct EAPD for Dell Inspiron 1525 Chris Mason (1): Btrfs: make sure the async caching thread advances the key Christian Borntraeger (1): KVM: s390: fix wait_queue handling Christof Schmitt (10): [SCSI] zfcp: Acquire qdio_stat_lock when reading the queue utilization [SCSI] zfcp: Return -ENOMEM for allocation failures in zfcp_fsf [SCSI] zfcp: Use correct flags for zfcp_erp_notify [SCSI] zfcp: Use unchained mode for small ct and els requests [SCSI] zfcp: Use -EIO for SBAL allocation failures [SCSI] zfcp: Fix logic for physical port close [SCSI] zfcp: Fix erp escalation procedure [SCSI] zfcp: Recover from stalled outbound queue [SCSI] zfcp: Add port only once to FC transport class [SCSI] zfcp: Fix tracing of request id for abort requests Christoph Hellwig (14): vfs: fix inode_init_always calling convention vfs: add __destroy_inode xfs: fix freeing of inodes not yet added to the inode cache xfs: avoid memory allocation under m_peraglock in growfs code xfs: switch to NOFS allocation under i_lock in xfs_getbmap xfs: switch to NOFS allocation under i_lock in xfs_da_state_alloc xfs: switch to NOFS allocation under i_lock in xfs_da_buf_make xfs: switch to NOFS allocation under i_lock in xfs_dir_cilookup_result xfs: switch to NOFS allocation under i_lock in xfs_buf_associate_memory xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_set xfs: switch to NOFS allocation under i_lock in xfs_readlink_bmap xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_get xfs: check for dinode realtime flag corruption xfs: fix spin_is_locked assert on uni-processor builds Dan Carpenter (1): wireless: ERR_PTR vs null Dan Williams (1): md/raid6: release spare page at ->stop() Darren Hart (3): rtmutex: Avoid deadlock in rt_mutex_start_proxy_lock() futex: Update futex_q lock_ptr on requeue proxy lock futex: Fix handling of bad requeue syscall pairing Dave Airlie (3): drm/radeon/kms: fix rv515 VRAM initialisation. drm/radeon/kms: fix nomodeset. drm/radeon/kms: setup MC/VRAM the same way for suspend/resume Dave Jones (1): [CPUFREQ] Make cpufreq suspend code conditional on powerpc. Dave Young (1): bluetooth: rfcomm_init bug fix David Daney (3): MIPS: Avoid clobbering struct pt_regs in kthreads MIPS: Octeon PCIe: Make hardware and software bus numbers match. MIPS: Octeon: Run IPI code with interrupts disabled. David S. Miller (2): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Dhananjay Phadke (1): netxen: fix coherent dma mask setting Dhaval Vasa (1): USB: ftdi_sio: add product_id for Marvell OpenRD Base, Client Dinakar Guniguntala (1): futex: Fix compat_futex to be same as futex for REQUEUE_PI Dmitry Torokhov (1): x86, mce: therm_throt - change when we print messages Don Fry (2): pcnet32: remove superfluous NULL pointer check in pcnet32_probe1() pcnet32: VLB support fixes Doug Thompson (2): amd64_edac: fix ECC checking amd64_edac: print debug statements only on error Eric Anholt (1): drm/i915: Use our own workqueue to avoid wedging the system along with the GPU. Eric Dumazet (5): pppoe: fix /proc/net/pppoe pppol2tp: calls unregister_pernet_gen_device() at unload time net: net_assign_generic() fix ring-buffer: Fix memleak in ring_buffer_free() execve: must clear current->clear_child_tid Eric Miao (1): Input: matrix_keypad - make matrix keymap size dynamic Eric Sandeen (2): compat_ioctl: hook up compat handler for FIEMAP ioctl use XFS_CORRUPTION_ERROR in xfs_btree_check_sblock Fenghua Yu (5): intel-iommu: Correct sglist size calculation. intel-iommu: Mask physical address to correct page size in intel_map_single() Bug Fix arch/ia64/kernel/pci-dma.c: fix recursive dma_supported() call in iommu_dma_supported() arch/ia64/Makefile: Remove -mtune=merced in IA64 kernel build ia64/topology.c: exit cache_add_dev when kobject_init_and_add fails Figo.zhang (1): mempool.c: clean up type-casting Florian Fainelli (8): MIPS: MSP71xx: fix build failures on msp_irq_slp.c MIPS: MSPxxxx: define MIPS34K_MISSED_ITLB_WAR for other PMC-Sierra SoC MIPS: AR7: Fix build warning on memory.c MIPS: AR7: Fix build failures when CONFIG_SERIAL_8250 is not enabled MIPS: AR7: Use DMA_BIT_MASK(nn) instead of deprecated DMA_nnBIT_MASK MIPS: AR7: Remove unused tnetd7200_get_clock function MIPS: AR7: Override CFLAGS with -Werror MIPS: MTX-1: Request button GPIO before setting its direction Florian Mickler (1): drm/i915: Set lvds dual channel according to register from vbios Florian Tobias Schandinat (1): viafb: fix rmmod bug Frans Pop (2): hp-wmi: check that an input device exists in resume handler drm/i915: silence vblank warnings Frederic Weisbecker (12): perf_counter: Fix/complete ftrace event records sampling perf tools: Fix call-chain cumul hit based sub-total (fractal mode) perf tools: callchain: Fix spurious 'perf report' warnings: ignore empty callchains perf tools: callchain: Fix 'perf report' display to be callchain by default perf tools: callchain: Fix sum of percentages to be 100% by displaying amount of ignored chains in fractal mode perf_counter: Work around gcc warning by initializing tracepoint record unconditionally perf_counter: Fix tracepoint sampling to be part of generic sampling perf tools: callchain: Fix bad rounding of minimum rate perf_counter: Subtract the buffer size field from the event record size perf_counter: Zero dead bytes from ftrace raw samples size alignment perf tools: Add a per tracepoint counter attribute to get raw sample perf tools: Add a general option to enable raw sample records Gabor Juhos (1): MIPS: Fix loading of modules with unresolved weak symbols Gleb Natapov (1): KVM: Avoid redelivery of edge interrupt before next edge Goldwyn Rodrigues (2): ocfs2: Initialize count in aio_write before generic_write_checks ocfs2: Remove redundant BUG_ON in __dlm_queue_ast() Greg Kroah-Hartman (2): TTY: Maintainer change Staging: rtl8192su: fix build error Gregory Haskins (1): sched: Fix race in cpupri introduced by cpumask_var changes Guennadi Liakhovetski (1): i.MX31: fix framebuffer locking regressions Gupta, Ajay Kumar (1): USB: musb: fix the nop registration for OMAP3EVM H. Peter Anvin (2): x86: Fix assert syntax in vmlinux.lds.S x86: fix assembly constraints in native_save_fl() Hannes Hering (1): ehea: Fix napi list corruption on ifconfig down Haojian Zhuang (1): [ARM] pxa: fix gpio issue in zylonite Hartley Sweeten (3): [ARM] 5611/1: ep93xx: update ts72xx nor flash support ARM: 5638/1: arch/arm/kernel/signal.c: use correct address space for CRUNCH ARM: 5639/1: arm: clkdev.c should include Helge Deller (5): parisc: hp_sdc_mlc.c - check return value of down_trylock() parisc: dino.c - check return value of pci_assign_resource() parisc: sticore.c - check return values parisc: parisc-agp.c - use correct page_mask function parisc: hppb.c - fix printk format strings Hendrik Brueckner (1): [S390] kernel: Storing machine flags early in lowcore Henrique de Moraes Holschuh (3): thinkpad-acpi: disable broken bay and dock subdrivers thinkpad-acpi: remove dock and bay subdrivers thinkpad-acpi: fix incorrect use of TPACPI_BRGHT_MODE_ECNVRAM Hiroshi Shimamoto (1): posix-timers: Fix oops in clock_nanosleep() with CLOCK_MONOTONIC_RAW Huang Weiyi (1): MIPS: AR7: Remove unused inclusions of . Ingo Molnar (9): perf_counter tools: Fix link errors with older toolchains Merge branch 'tracing/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/urgent perf_counter: Set the CONFIG_PERF_COUNTERS default to y if CONFIG_PROFILING=y net: Fix spinlock use in alloc_netdev_mq() Merge branch 'linus' into tracing/urgent perf_counter, x86: Fix lapic printk message perf_counter, x86: Fix generic cache events on P6-mobile CPUs perf_counter, x86: Fix/improve apic fallback perf_counter: Provide hw_perf_counter_setup_online() APIs Jack Steiner (5): x86, UV: Handle missing blade-local memory correctly x86, UV: Delete mapping of MMR rangs mapped by BIOS x86, UV: Fix macros for accessing large node numbers x86, UV: Fix UV apic mode x86, UV: Complete IRQ interrupt migration in arch_enable_uv_irq() Jakob Bornecrantz (2): drm: Small logic fix in drm_mode_setcrtc drm: Catch stop possible NULL pointer reference Jakob Gruber (1): Staging: rt2870: Add USB ID for Linksys, Planex Communications, Belkin James Morris (1): SELinux: fix memory leakage in /security/selinux/hooks.c Jan Beulich (1): x86, 32-bit: Fix double accounting in reserve_top_address() Jan Kara (9): ocfs2: Fix deadlock on umount ocfs2: Make global quota files blocksize aligned ocfs2: Mark buffer uptodate before calling ocfs2_journal_access_dq() ocfs2: Initialize blocks allocated to local quota file ocfs2: Zero out padding of on disk dquot structure ocfs2: Fix initialization of blockcheck stats ocfs2: Remove syncjiff field from quota info ocfs2: Define credit counts for quota operations ocfs2: Fix possible deadlock when extending quota file Jan Kiszka (3): KVM: Fix KVM_GET_MSR_INDEX_LIST KVM: VMX: Fix locking order in handle_invalid_guest_state KVM: VMX: Fix locking imbalance on emulation failure Jaswinder Singh Rajput (15): ARM: includecheck fix: misc.c ARM: includecheck fix: atomic.h ARM: includecheck fix: board-dm355-evm.c ARM: includecheck fix: board-dm355-leopard.c ARM: includecheck fix: board-dm644x-evm.c ARM: includecheck fix: board-dm646x-evm.c ARM: includecheck fix: board-sffsdr.c ARM: includecheck fix: mach-omap1/mcbsp.c ARM: includecheck fix: mach-omap2/mcbsp.c ARM: includecheck fix: plat-s3c64xx/pm.c ARM: includecheck fix: plat-stmp3xxx/pinmux.c parisc: includecheck fix for ccio-dma.c MN10300: includecheck fix: mn10300, pci.h IA64: includecheck fix: ia64, ia64_ksyms.c IA64: includecheck fix: ia64, pgtable.h Jean Delvare (1): 3c59x: Fix build failure with gcc 3.2 Jeff Garzik (1): Remove zero-length file drivers/mtd/maps/sbc8240.c Jeff Layton (3): cifs: fix error handling in mount-time DFS referral chasing code cifs: reinstate original behavior when uid=/gid= options are specified cifs: show noforceuid/noforcegid mount options (try #2) Jeff Liu (1): ocfs2: trivial fix for s/migrate/migration/ in dlmrecovery.c logging Jeff Mahoney (2): ocfs2: Fixup orphan scan cleanup after failed mount staging: add dependencies on PCI for drivers that require it Jens Axboe (1): perf record: Add missing -C option support for specifying profile cpu Jerome Glisse (1): drm/radeon/kms: Fix caching mode selection for GTT object Jesse Barnes (5): drm/i915: refactor error detection & collection drm/i915: FIFO watermark calculation fixes drm/i915: handle FIFO oversubsription correctly drm/i915: correct self-refresh calculation in "everything off" case drm/i915: fix 845G FIFO size & burst length Jiajun Wu (1): gianfar: fix coalescing setup in ethtool support Jiri Pirko (1): net: restore the original spinlock to protect unicast list Johannes Berg (3): iwlwifi: fix TX queue race mac80211: fix suspend cfg80211: add two missing NULL pointer checks Johannes Weiner (2): fbcon: don't use vc_resize() on initialization ia64: boolean __test_and_clear_bit John David Anglin (2): parisc: Fix GOT overflow during module load on 64bit kernel parisc: Set correct bit in protection flags John Stoffel (1): Make SCSI SG v4 driver enabled by default and remove EXPERIMENTAL dependency, since udev depends on BSG Jonathan Corbet (1): flex_array: remove unneeded index calculation Jory A. Pratt (1): Input: i8042 - add Asus G1S to noloop exception list Josef Bacik (1): Btrfs: fix btrfs_remove_from_free_space corner case Julia Lawall (6): net/netlabel: Add kmalloc NULL tests MIPS: Use DIV_ROUND_CLOSEST drivers/net/wireless/iwlwifi: introduce missing kfree drivers/net/wireless: introduce missing kfree drivers/mmc: correct error-handling code Btrfs: correct error-handling zlib error handling KAMEZAWA Hiroyuki (1): mm: make set_mempolicy(MPOL_INTERLEAV) N_HIGH_MEMORY aware Karen Higgins (4): [SCSI] qla4xxx: Correct Extended Sense Data Errors [SCSI] qla4xxx: Fix Driver Fault Recovery Completion [SCSI] qla4xxx: Fix srb lookup in qla4xxx_eh_device_reset [SCSI] qla4xxx: Remove hiwat code so scsi eh does not get escalated when we can make progress Keith Packard (2): drm/i915: Allow frame buffers up to 4096x4096 on 915/945 class hardware drm: When adding probed modes, preserve duplicate mode types Kenji Kaneshige (2): PCI hotplug: SGI hotplug: fix build failure PCI hotplug: SGI hotplug: do not use hotplug_slot_attr Kevin Winchester (1): x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag Khanh-Dang Nguyen Thu Lam (1): USB: pl2303: New vendor and product id Kurt Martin (1): MIPS: SMTC: Move cross VPE writes to after a TC is assigned to VPE. Lai Jiangshan (2): tracing: Fix invalid function_graph entry tracing: Fix missing function_graph events when we splice_read from trace_pipe Lars-Peter Clausen (1): S3C24XX: GPIO: Fix pin range check in s3c_gpiolib_getchip Len Brown (9): Revert "ACPICA: Remove obsolete acpi_os_validate_address interface" ACPI: root-only read protection on /sys/firmware/acpi/tables/* Merge branch 'bugzilla-13620-revert' into release Merge branch 'bugzilla-13865' into release Merge branch 'thinkpad' into release Merge branch 'bugzilla-13751' into release Merge branch 'memhotplug-crash' into release Merge branch 'bugzilla-13825' into release Merge branch 'misc-2.6.31' into release Li Zefan (2): lockdep: Fix file mode of lock_stat lockdep: Fix typos in documentation Linus Torvalds (72): do_sigaltstack: avoid copying 'stack_t' as a structure to user space do_sigaltstack: small cleanups Make pci_claim_resource() use request_resource() rather than insert_resource() Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'for-linus' of git://neil.brown.name/md tty-ldisc: make refcount be atomic_t 'users' count tty-ldisc: turn ldisc user count into a proper refcount tty-ldisc: be more careful in 'put_ldisc' locking Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-2.6 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 Merge branch 'fix/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus flat: fix uninitialized ptr with shared libs Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge git://git.infradead.org/mtd-2.6 Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.infradead.org/~dwmw2/iommu-2.6.31 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/hch/xfs-icache-races Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'core-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'kvm-updates/2.6.31' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'for-linus' of git://git.infradead.org/ubi-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 x86: Fix serialization in pit_expect_msb() Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip pty: fix data loss when stopped (^S/^Q) Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/fyu/linux-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'zerolen' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Make sock_sendpage() use kernel_sendpage() Merge branch 'sh/for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip genirq: prevent wakeup of freed irq thread Linux 2.6.31-rc6 Linus Walleij (2): ARM: 5624/1: Document cache aliasing region [WATCHDOG] Fix COH 901 327 watchdog enablement Luis R. Rodriguez (2): mac80211: do not queue work after suspend in the dynamic ps timer cfg80211: fix regression on beacon world roaming feature Magnus Damm (4): PM / Driver Core: Kill dev_pm_ops platform warning for now sh: convert processor device setup functions to arch_initcall() sh: fix i2c init order on Migo-R V2 sh: fix i2c init order on ap325rxa V2 Mallikarjuna R Chilakala (1): ixgbe: Patch to modify 82598 PCIe completion timeout values Marcelo Tosatti (5): KVM: PIT: fix kpit_elapsed division by zero KVM: x86: verify MTRR/PAT validity KVM: SVM: force new asid on vcpu migration KVM: MMU: handle n_free_mmu_pages > n_alloc_mmu_pages in kvm_mmu_change_mmu_pages KVM: MMU: limit rmap chain length Marek Vasut (1): [ARM] pxa: add STUART MFP config for PalmTX,T5,LD Mark Brown (2): S3C64XX: Fix get_rate() for ARMCLK S3C64XX: Fix ARMCLK configuration Marko Hänninen (1): USB: ftdi_sio: add vendor and product id for Bayer glucose meter serial converter cable Martin K. Petersen (5): [SCSI] sd: Avoid sending extended inquiry to legacy devices block: Make blk_queue_stack_limits use the new stacking interface block: Add a wrapper for setting minimum request size without a queue block: Stack optimal I/O size block: Update topology documentation Matt Fleming (2): ftrace: Fix the conditional that updates $ref_func ftrace: Only update $offset when we update $ref_func Matthias Kaehlcke (1): mtd: mtdblock: introduce mtdblks_lock Michael Buesch (3): thinkpad-acpi: restrict procfs count value to sane upper limit parisc: isa-eeprom - Fix loff_t usage USB: devio: Properly do access_ok() checks Michael Chan (1): iscsi: Use GFP_ATOMIC in iscsi_offload_mesg(). Michael Prokop (1): Documentation/kernel-parameters.txt: document libata's ignore_hpa option Michael S. Tsirkin (1): KVM: fix ack not being delivered when msi present Mika Korhonen (2): mtd: OneNAND: fix incorrect bufferram offset mtd: OneNAND: OMAP2/3: free GPMC CS on module removal Mike Christie (2): [SCSI] libiscsi: disable bh in and abort handler. [SCSI] qla4xxx: add timeout handler Mike Galbraith (6): Staging: rt2870: Revert d44ca7 Removal of kernel_thread() API perf_counter tools: Fix/resurrect perf top annotation in a simple interactive form perf_counter tools: Allow perf top top users to switch between weighted and individual counter display perf top: Improve interactive key handling perf top: Update man page perf_counter tools: Fix libbfd detection for systems with libz dependency Mike McCormack (1): sky2: Avoid transmits during sky2_down() Mike Rapoport (1): [ARM] pxa/em-x270: fix compile failure when CONFIG_APM_EMULATION=n NeilBrown (12): md: when a level change reduces the number of devices, remove the excess. md: avoid array overflow with bad v1.x metadata md: Handle growth of v1.x metadata correctly. md/raid5: set reshape_position correctly when reshape starts. md: allow raid5_quiesce to work properly when reshape is happening. md: Use revalidate_disk to effect changes in size of device. Remove deadlock potential in md_open md: never advance 'events' counter by more than 1. md/raid5: allow new reshape modes to be restarted in the middle. md/raid5: make sure a reshape restarts at the correct address. md/raid5: Properly remove excess drives after shrinking a raid5/6 md: allow upper limit for resync/reshape to be set when array is read-only Nicolas Pitre (1): mtd: let include/linux/mtd/partitions.h stand on its own OGAWA Hirofumi (1): vfs: mnt_want_write_file(): fix special file handling Oleg Nesterov (3): mm_for_maps: simplify, use ptrace_may_access() mm_for_maps: shift down_read(mmap_sem) to the caller mm_for_maps: take ->cred_guard_mutex to fix the race with exec Oliver Neukum (1): USB: fix oops on disconnect in cdc-acm Ondrej Zary (1): x86: Fix oops in identify_cpu() on CPUs without CPUID Ozan ÇaÄźlayan (1): x86: Add quirk to make Apple MacBookPro5,1 use reboot=pci Pallipadi, Venkatesh (2): x86, pat: Fix set_memory_wc related corruption [CPUFREQ] Fix NULL pointer dereference regression in conservative governor Patrick Simmons (1): zd1211rw: fix unaligned access in zd_mac_rx Paul Mackerras (3): x86: Add quirk to make Apple MacBook5,2 use reboot=pci x86: Make 64-bit efi_ioremap use ioremap on MMIO regions perf_counter/powerpc: Fix oops on cpus without perf_counter hardware support Paul Rolland (1): drm: silence pointless vblank warning. Pekka Enberg (1): perf report: Make --sort comm,dso,symbol the default Peter Korsgaard (1): ARM: S3C: PWM fix for low duty cycle Peter P Waskiewicz Jr (3): ixgbe: Fix netpoll to be properly multiqueue aware ixgbe: Fix usage of second flags bitmap when using LRO/RSC ixgbe: Fix RSC completion delay causing Rx interrupts to stop Peter Zijlstra (22): tracing, perf_counter: Add help text to CONFIG_EVENT_PROFILE perf_counter: Collapse inherit on read() perf_counter: Full task tracing perf report: Update for the new FORK/EXIT events sched: Fix latencytop and sleep profiling vs group scheduling perf: Auto-detect libbfd ftrace: Fix perf-tracepoint OOPS perf: Auto-detect libelf perf_counter: Fix double list iteration in per task precise stats perf_counter, ftrace: Fix perf_counter integration perf_counter: Fix software counters for fast moving event sources perf tools: Fix multi-counter stat bug caused by incorrect reading of perf.data file header perf report: Fix per task mult-counter stat reporting perf list: Fix the output to not include tracepoints without an id perf_counter: Fix a race on perf_counter_ctx perf_counter: Correct PERF_SAMPLE_RAW output perf_counter: Require CAP_SYS_ADMIN for raw tracepoint data locking, sched: Give waitqueue spinlocks their own lockdep classes perf_counter: Fix swcounter context invariance perf: Rework/fix the whole read vs group stuff perf_counter: Fix an ipi-deadlock perf_counter: Report the cloning task as parent on perf_counter_fork() Phillip Lougher (2): bzip2/lzma/gzip: fix comments describing decompressor API bzip2/lzma: remove nasty uncompressed size hack in pre-boot environment Pierre Habouzit (2): perf util: Fix do_read() to fail on EOF instead of busy-looping perf record: Fix the -A UI for empty or non-existent perf.data Prarit Bhargava (1): [CPUFREQ] Do not set policy for offline cpus Raghu Gandham (2): MIPS: SMTC: Fix compile error MIPS: VPE: Fix compiler warning. Ralf Baechle (8): MIPS: Cavium: Move swapped comments to their rightful place. MIPS: Eleminate filenames from comments MIPS: Module: Make error messages unique. MIPS: VPE: Free relocation chain on error. MIPS: VPE: Make various functions static. MIPS: VPE: Fix bogus indentation. MIPS: VPE: Delete unused function get_tc_unused(). MIPS: Wire up accept4 syscall. Ramax Lo (2): ARM: S3C24XX: serial: Fix section mismatch warnings ARM: S3C64XX: serial: Fix section mismatch warning Reinette Chatre (1): iwlagn: do not send key clear commands when rfkill enabled Robert Richter (2): x86: fix section mismatch for i386 init code ring-buffer: Fix advance of reader in rb_buffer_peek() Roel Kluin (20): airo: Buffer overflow ath9k: Read outside array bounds iwlwifi: Read outside array bounds libertas: Read outside array bounds libertas: Read buffer overflow parisc: Fix read buffer overflow in pdc_stable driver ALSA: hda - Read buffer overflow MIPS: Fix read buffer overflow MIPS: Jazz: Fix read buffer overflow libertas: Read buffer overflow cifs: Read buffer overflow drm/radeon: Read buffer overflow drm/ttm: Read buffer overflow perf: Fix read buffer overflow drm/i915: Fix read outside array bounds in restoring the SWF10 range. [S390] KVM: Read buffer overflow ocfs2: keep index within status_map[] Staging: rspiusb: Fix buffer overflow x86: fix buffer overflow in efi_init() arch/ia64/kernel/iosapic: missing test after ioremap() Rogerio Brito (1): USB: storage: include Prolific Technology USB drive in unusual_devs list Russell King (5): Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'mxc-defconfig-updates' of git://git.pengutronix.de/git/imx/linux-2.6 Merge branch 's3c-fixes-rc4' of git://aeryn.fluff.org.uk/bjdooks/linux Merge branch 's3c-fixes-rc4-2' of git://aeryn.fluff.org.uk/bjdooks/linux mfd: twl4030 irq fixes Ryusuke Konishi (3): nilfs2: fix oops due to inconsistent state in page with discrete b-tree nodes nilfs2: fix missing unlock in error path of nilfs_mdt_write_page documentation: register ioctl entry of nilfs2 Saeed Bishara (1): mtd: fix the conversion from dev to mtd_info Sascha Hauer (2): mx27 defconfig update mx3 defconfig update Shane Huang (1): ahci: Soften up the dmesg on SB600 PMP softreset failure recovery Shane McDonald (1): MIPS: Simplify and correct interrupt handling for MSP4200 Sheng Yang (1): intel-iommu: Fix enabling snooping feature by mistake Shunichi Fuji (1): x86: Add reboot quirk for every 5 series MacBook/Pro Stanislaw Gruszka (1): posix_cpu_timers_exit_group(): Do not use thread_group_cputimer() Stefani Seibold (1): fbcon: fix rotate upside down crash Stephen Hemminger (1): ip: fix logic of reverse path filter sysctl Stephen Rothwell (1): KVM: Make KVM_HPAGES_PER_HPAGE unsigned long to avoid build error on powerpc Steve French (2): [CIFS] Updates fs/cifs/CHANGES [CIFS] Update readme to reflect forceuid mount parms Steven Rostedt (6): tracing: show proper address for trace-printk format tracing: only truncate ftrace files when O_TRUNC is set ring-buffer: fix check of try_to_discard result ring-buffer: do not disable ring buffer on oops_in_progress tracing: do not use functions starting with .L in recordmcount.pl tracing: Fix recordmcount.pl to handle sections with only weak functions Stoyan Gaydarov (3): parisc: fixed faulty check in lba_pci perf tools: Fix faulty check drivers/w1/masters/omap_hdq.c: fix missing mutex unlock Subrata Modak (3): ocfs2: Fix compilation warning for fs/ocfs2/xattr.c mtd: remove 'SBC8240 Wind River' Device Driver Code x86: Work around compilation warning in arch/x86/kernel/apm_32.c Sunil Mushran (1): ocfs2: Initialize the cluster we're writing to in a non-sparse extend Swen Schillig (3): [SCSI] zfcp: Fix invalid command order [SCSI] zfcp: avoid double notify in lowmem scenario [SCSI] zfcp: Fix wka port processing TJ (1): Input: wistron_btns - support Prestigio Wifi RF kill button Takashi Iwai (6): ALSA: hda - Fix quirk for Toshiba Satellite A135-S4527 ASoC: Add missing DRV_NAME definitions for fsl/* drivers ALSA: hda - Add missing vmaster initialization for ALC269 ALSA: hda - Don't override ADC definitions for ALC codecs Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus Tao Ma (3): ocfs2: Add extra credits and access the modified bh in update_edge_lengths. ocfs2: Use ocfs2_rec_clusters in ocfs2_adjust_adjacent_records. ocfs2/quota: Release lock for error in ocfs2_quota_write. Tejun Heo (3): pata_at91: fix resource release libata: OCZ Vertex can't do HPA ahci: add workaround for on-board 5723s on some gigabyte boards Thomas Gleixner (1): trace: stop tracer in oops_enter() Thomas Hellstrom (3): x86: Fix CPA memtype reserving in the set_pages_array*() cases drm/ttm: Fix a potential comparison of structs. drm/ttm: Fix a sync object leak. Thomas Renninger (1): [CPUFREQ] Fix a kobject reference bug related to managed CPUs Tobias Klauser (1): docbook: fix printk of ip address Tom Peng (2): [SCSI] libsas: reuse the original port when hotplugging phys in wide ports [SCSI] libsas: fix wide port hotplug issues Tom Zanussi (2): tracing/filters: Don't use pred on alloc failure tracing/filters: Always free pred on filter_add_subsystem_pred() failure Tomas Cech (1): ARM: 5623/1: Treo680: ir shutdown typo fix Tony Vroon (1): sata_nv: MSI support, disabled by default Tormod Volden (1): drm/i915: ignore lvds on AOpen Mini PC MP-915 Trond Myklebust (1): NFS: Fix an O_DIRECT Oops... Uwe Kleine-König (1): ARM: 5627/1: Fix restoring of lr at the end of mcount Vasu Dev (1): [SCSI] libfc: fix a circular locking warning during sending RRQ Wengang Wang (3): ocfs2: log the actual return value of ocfs2_file_aio_write() ocfs2: Fix error return in ocfs2_write_cluster() ocfs2: Fail ocfs2_get_block() immediately when a block needs allocation Wu Fengguang (6): ALSA: hda: track CIRB/CORB command/response states for each codec ALSA: hda: take cmd_mutex in probe_codec() ALSA: hda: take reg_lock in azx_init_cmd_io/azx_free_cmd_io ALSA: hda: read CORBWP inside reg_lock ALSA: hda: remember last command for each codec ALSA: hda: warn on spurious response Xiao Guangrong (1): generic-ipi: fix hotplug_cfd() Xiaotian Feng (1): drm/radeon/kms: fix memory leak in radeon_driver_load_kms Yan Zheng (1): Btrfs: fix balancing oops when invalidate_inode_pages2 returns EBUSY Yegor Yefremov (1): ARM: 5597/1: [PCI] reset all internal hardware prior PCI initialization Yevgeny Petrilin (1): mlx4_en: Fix double pci unmapping. Yinghai Lu (3): x86: Don't use current_cpu_data in x2apic phys_pkg_id x86: Fix MSI-X initialization by using online_mask for x2apic target_cpus x86/irq: Fix move_irq_desc() for nodes without ram Yoichi Yuasa (1): MIPS: MIPSsim: Fix unbalance brace in mipssim get_c0_compare_int() Zhao Yakui (3): drm/I915: Fix offset to DVO timings in LVDS data ACPI: Don't treat generic error as ACPI error code in acpi memory hotplug driver ACPI: Ingore the memory block with zero block size in course of memory hotplug Zhenyu Wang (6): drm/i915: disable VGA plane reliably drm/i915: fix issue in display pipe setup on IGDNG drm/i915: Fix channel ending action for DP aux transaction drm/i915: enable DisplayPort support on IGDNG drm/i915: Add eDP support on IGDNG mobile chip drm/i915: fix VGA detect on IGDNG ling.ma@intel.com (5): drm/i915: hdmi detection according by reading edid drm/i915: Set preferred mode for integrated TV according to TV format drm/i915: Choose real sdvo output according to result from detection drm/i915: Return disconnected for SDVO DVI when there's no digital EDID. drm/i915: Add support for dual-channel LVDS on 8xx. reinette chatre (1): iwlagn: fix minimum number of queues setting roel kluin (6): 3c515: Write outside array bounds ipv4: ARP neigh procfs buffer overflow eexpress: Read buffer overflow tulip: Read buffer overflow s6gmac: Read buffer overflow mISDN: Read buffer overflow ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_21,J_CHICKENPOX_44,J_CHICKENPOX_73 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLTFc143480 for ; Fri, 22 Jan 2010 16:21:29 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLQIW143444; Fri, 22 Jan 2010 16:21:26 -0600 Date: Fri, 22 Jan 2010 16:21:26 -0600 Message-Id: <201001222221.o0MMLQIW143444@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.31-rc8, created. v2.6.31-rc8 X-Git-Refname: refs/tags/v2.6.31-rc8 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: da1ee8b71154887fe5298ae683c089050f2c49a5 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.31-rc8 has been created at da1ee8b71154887fe5298ae683c089050f2c49a5 (tag) tagging 326ba5010a5429a5a528b268b36a5900d4ab0eba (commit) replaces v2.6.31-rc7 tagged by Linus Torvalds on Thu Aug 27 17:59:15 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.31-rc8 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkqXK+YACgkQF3YsRnbiHLsm9gCfZyxaVy44Q72pkjLkBlA9QcQf CUcAoIRr6pjXA89Vju0uZn3x7SHI/5nj =o6jm -----END PGP SIGNATURE----- Abhishek Kulkarni (10): 9p: Check for error in return value of v9fs_fid_add 9p: Fix possible inode leak in v9fs_get_inode. 9p: minor comment fixes 9p: Fix possible memleak in v9fs_inode_from fid. 9p: Fix v9fs show_options 9p: Fix possible regressions when ->get_sb fails. 9p: Remove redundant inode uid/gid assignment 9p: Add missing cast for the error return value in v9fs_get_inode net/9p: insulate the client against an invalid error code sent by a 9p server 9p: remove unnecessary v9fses->options which duplicates the mount string Alek Du (1): PCI: check saved state before restore Alexander Beregalov (2): irda/au1k_ir: fix broken netdev_ops conversion irda/sa1100_ir: fix broken netdev_ops conversion Alexey Dobriyan (2): smc91x: fix compilation on SMP m68k: Fix redefinition of pgprot_noncached Amerigo Wang (2): timers: Drop write permission on /proc/timer_list x86: Fix an incorrect argument of reserve_bootmem() Andreas Mohr (1): net: Fix Micrel KSZ8842 Kconfig description Andrew Morton (1): arch/m68k/include/asm/motorola_pgalloc.h: fix kunmap arg Bartlomiej Zolnierkiewicz (1): ALSA: ali5451: fix timeout handling in snd_ali_{codecs,timer}_ready() Ben Nizette (1): favr32: improve touchscreen response Benjamin Herrenschmidt (1): lmb: Remove __init from lmb_end_of_DRAM() Bruno PrĂ©mont (1): ipv6: Fix commit 63d9950b08184e6531adceb65f64b429909cc101 (ipv6: Make v4-mapped bindings consistent with IPv4) Clemens Ladisch (2): sound: vx222: fix input level control range check sound: pcm_lib: fix unsorted list constraint handling Costantino Leandro (1): wmi: fix kernel panic when stack protection enabled. David Howells (1): AFS: Stop readlink() on AFS crashing due to NULL 'file' ptr David Rientjes (4): flex_array: fix get function for elements in base starting at non-zero flex_array: fix flex_array_free_parts comment flex_array: declare parts member to have incomplete type flex_array: convert element_nr formals to unsigned David S. Miller (12): sparc: Fix cleanup crash in bbc_envctrl_cleanup() sparc64: Sign extend length arg to truncate syscalls when compat. sparc: Use page_fault_out_of_memory() for VM_FAULT_OOM. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 sparc32: Kill trap table freeing code. sparc32: Update defconfig. sparc64: Update defconfig. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 pkt_sched: Convert qdisc_watchdog to tasklet_hrtimer pkt_sched: Convert CBQ to tasklet_hrtimer. pkt_sched: Fix bogon in tasklet_hrtimer changes. sparc64: Validate linear D-TLB misses. Dmitry Torokhov (1): Input: wacom - don't use on-stack memory for report buffers Dongdong Deng (3): netpoll: warning for ndo_start_xmit returns with interrupts enabled drivers/net: fixed drivers that support netpoll use ndo_start_xmit() smc91x: let smc91x work well under netpoll Eric Paris (4): IMA: iint put in ima_counts_get and put inotify: seperate new watch creation updating existing watches inotify: do not BUG on idr entries at inotify destruction inotify: fix locking around inotify watching in the idr Eric Van Hensbergen (1): 9p: update documentation pointers Eric W. Biederman (1): inotify: Ensure we alwasy write the terminating NULL. Florian Fainelli (1): [WATCHDOG] ar7_wdt: fix path to ar7-specific headers Frans Pop (2): ACPI processor: force throttling state when BIOS returns incorrect value acpi processor: remove superfluous warning message Geert Uytterhoeven (2): m68k,m68knommu: Wire up rt_tgsigqueueinfo and perf_counter_open powerpc/ps3: Add missing check for PS3 to rtc-ps3 platform device registration Geoff Levand (1): powerpc/ps3: Update ps3_defconfig Goldwyn Rodrigues (1): ocfs2/dlm: Wait on lockres instead of erroring cancel requests Hendrik Brueckner (1): [S390] set preferred console based on conmode Herton Ronaldo Krzesinski (1): rtl8187: always set MSR_LINK_ENEDCA flag with RTL8187B Hugh Dickins (1): mm: fix hugetlb bug due to user_shm_unlock call Ingo Molnar (2): Merge branch 'bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen into x86/urgent tracing: Fix too large stack usage in do_one_initcall() James Bottomley (1): module: workaround duplicate section names Jan Beulich (3): i386: Fix section mismatches for init code with !HOTPLUG_CPU x86: add vmlinux.lds to targets in arch/x86/boot/compressed/Makefile x86: Fix build with older binutils and consolidate linker script Jan Kara (4): ocfs2: Handle quota file corruption more gracefully ocfs2: Don't oops in ocfs2_kill_sb on a failed mount ocfs2: Add missing lock name ext3: Improve error message that changing journaling mode on remount is not possible Jeremy Fitzhardinge (3): x86: make sure load_percpu_segment has no stackprotector xen: rearrange things to fix stackprotector xenfb: connect to backend before registering fb Jiri Kosina (1): Input: iforce - support new revision of ACT LABS Force RS Jiri Olsa (1): tracing: handle broken names in ftrace filter Jiri Slaby (1): NET: llc, zero sockaddr_llc struct Johannes Berg (1): mac80211: fix todo lock John Holland (1): [ARM] Kirkwood: enable eSATA on QNAP TS-219P John W. Linville (1): orinoco: correct key bounds check in orinoco_hw_get_tkip_iv Joonwoo Park (1): pps: fix incorrect verdict check Julia Lawall (1): [S390] drivers/s390: put NULL test before dereference Julien TINNES (1): ipv4: make ip_append_data() handle NULL routing table Kashyap, Desai (9): [SCSI] mpt2sas: Introduced check for enclosure_handle to avoid crash [SCSI] mpt2sas: Expander fix oops saying "Already part of another port" [SCSI] mpt2sas: Raid 10 Value is showing as Raid 1E in /va/log/messages [SCSI] mpt2sas: Excessive log info causes sas iounit page time out [SCSI] mpt2sas: fix infinite loop inside config request [SCSI] mpt2sas: fix crash due to Watchdog is active while OS in standby mode [SCSI] mpt2sas: fix oops because drv data points to NULL on resume from hibernate [SCSI] mpt2sas: Bump driver version 01.100.04.00 [SCSI] mpt2sas: fix config request and diag reset deadlock Krzysztof HaĹ‚asa (1): E100: fix interaction with swiotlb on X86. Kyle McMartin (1): dma-debug: Fix check_unmap null pointer dereference Linus Torvalds (27): Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'fixes' of git://git.marvell.com/orion Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 tty: make sure to flush any pending work when halting the ldisc Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'fix/misc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify Linux 2.6.31-rc8 Marek Vasut (2): Input: ucb1400_ts - enable ADC Filter pxaficp-ir: remove incorrect net_device_ops Martin Michlmayr (1): [ARM] Kirkwood: __init requires linux/init.h Mathieu Desnoyers (1): sparc: sys32.S incorrect compat-layer splice() system call Michael Brunner (1): thermal_sys: check get_temp return value Michel Dänzer (1): drm/radeon/kms: Fix radeon_gem_busy_ioctl harder. Mimi Zohar (2): kernel_read: redefine offset type ima: hashing large files bug fix Minchan Kim (1): mm: fix for infinite churning of mlocked pages Oleg Nesterov (1): clone(): fix race between copy_process() and de_thread() Patrick McHardy (1): netfilter: xt_quota: fix wrong return value (error case) Pavel Revak (1): Input: ucb1400_ts - enable interrupt unconditionally Peter Zijlstra (2): perf tools: Check perf.data owner perf_counter: Fix typo in read() output generation Petri Gynther (1): ibm_newemac: emac_close() needs to call netif_carrier_off() Randy Dunlap (1): net: fix ks8851 build errors Roel Kluin (3): yellowfin: Fix buffer underrun after dev_alloc_skb() failure m68k: count can reach 51, not 50 m68k: cnt reaches -1, not 0 Rusty Russell (2): virtio: net refill on out-of-memory module: fix BUG_ON() for powerpc (and other function descriptor archs) Sebastian Andrzej Siewior (2): avr32/lib: fix unaligned memcpy() avr32/lib: fix unaligned memcpy where len < 4 Sebastian Ott (1): [S390] cio: fix double free after failed device initialization Simon Kagstrom (1): [ARM] Orion NAND: Make asm volatile avoid GCC pushing ldrd out of the loop Stephen Kitt (1): Input: joydev - decouple axis and button map ioctls from input constants Suresh Siddha (2): x86, pat: Allow ISA memory range uncacheable mapping requests clockevent: Prevent dead lock on clockevents_lock Tao Ma (1): ocfs2: release the buffer head in ocfs2_do_truncate. Thadeu Lima de Souza Cascardo (2): leds: fix multiple requests and releases of IRQ for GPIO LED Trigger leds: after setting inverted attribute, we must update the LED Theodore Ts'o (1): ext3: Update Kconfig description of EXT3_DEFAULTS_TO_ORDERED Trond Myklebust (1): NFSv4: Fix an infinite looping problem with the nfs4_state_manager Wan ZongShun (1): net: Rename MAC platform driver for w90p910 platform Yinghai Lu (1): acpi: don't call acpi_processor_init if acpi is disabled Zhaolei (1): ftrace: Unify effect of writing to trace_options and option/* ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=1.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLVDJ143528 for ; Fri, 22 Jan 2010 16:21:31 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLUk7143485; Fri, 22 Jan 2010 16:21:30 -0600 Date: Fri, 22 Jan 2010 16:21:30 -0600 Message-Id: <201001222221.o0MMLUk7143485@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.31-rc9, created. v2.6.31-rc9 X-Git-Refname: refs/tags/v2.6.31-rc9 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 0827eb5df631ed1756653faf74248a9524f202cd This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.31-rc9 has been created at 0827eb5df631ed1756653faf74248a9524f202cd (tag) tagging e07cccf4046978df10f2e13fe2b99b2f9b3a65db (commit) replaces v2.6.31-rc8 tagged by Linus Torvalds on Sat Sep 5 16:38:24 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.31-rc9 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkqi9nUACgkQF3YsRnbiHLtSjACfdPLZfv4D3poZEmRn0rGJaPpK vBAAn2WPrVJ2H6UWh5e86uN/CNklnL0K =OeuC -----END PGP SIGNATURE----- Anton Vorontsov (1): mtd: m25p80: fix null pointer dereference bug Bartlomiej Zolnierkiewicz (1): ata_piix: parallel scanning on PATA needs an extra locking Benjamin Herrenschmidt (1): lmb: Also remove __init from lmb_end_of_RAM() declaration in lmb.h Brian Rogers (1): inotify: do not send a block of zeros when no pathname is available Bruno PrĂ©mont (1): drm/i915: Check if BIOS enabled dual-channel LVDS on 8xx, not only on 9xx Chris Wright (1): PCI SR-IOV: correct broken resource alignment calculations Christoph Hellwig (1): xfs: actually enable the swapext compat handler Clemens Ladisch (2): sound: oxygen: fix MCLK rate for 192 kHz playback sound: oxygen: handle cards with missing EEPROM Dave Andrews (1): Input: atkbd - add Compaq Presario R4000-series repeat quirk David Howells (1): nommu: fix error handling in do_mmap_pgoff() David MĂĽller (ELSOFT AG) (1): drm/i915: Improve CRTDDC mapping by using VBT info David S. Miller (4): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 pkt_sched: Revert tasklet_hrtimer changes. sparc64: Kill spurious NMI watchdog triggers by increasing limit to 30 seconds. sparc64: Fix bootup with mcount in some configs. Dimitri Gorokhovik (2): mtd: nftl: write support is broken mtd: nftl: fix offset alignments Dmitry Torokhov (1): Input: i8042 - add Acer Aspire 5536 to the nomux list Dominik Brodowski (1): [CPUFREQ] Re-enable cpufreq suspend and resume code Eric Anholt (1): drm/i915: Fix CPU-spinning hangs related to fence usage by using an LRU. Eric Dumazet (2): tc: Fix unitialized kernel memory leak slub: Fix kmem_cache_destroy() with SLAB_DESTROY_BY_RCU Eric Paris (2): inotify: fix length reporting and size checking inotify: update the group mask on mark addition Grant Grundler (1): parisc: fix warning in traps.c H. Peter Anvin (1): x86, xen: Initialize cx to suppress warning Herbert Xu (1): crypto: skcipher - Fix skcipher_dequeue_givcrypt NULL test Ian Kent (1): autofs4 - fix missed case when changing to use struct path Ingo Molnar (2): perf_counters: Increase paranoia level modules: Fix build error in the !CONFIG_KALLSYMS case Jarek Poplawski (1): net: sk_free() should be allowed right after sk_alloc() Jeremy Fitzhardinge (1): x86, xen: Suppress WP test on Xen Jiri Bohac (1): [IA64] fix csum_ipv6_magic() Jiri Slaby (1): toshiba_acpi: return on a fail path Joe Perches (1): V4L/DVB (12564a): MAINTAINERS: Update gspca sn9c20x name style Jonathan Brassow (4): dm log: fix userspace status output dm log: remove incorrect field from userspace table output dm raid1: do not allow log_failure variable to unset after being set dm log: userspace add luid to distinguish between concurrent log instances Keith Packard (1): ACPI: don't free non-existent backlight in acpi video module Kiyoshi Ueda (1): dm multipath: fix oops when request based io fails when no paths Lin Ming (1): ACPICA: Windows compatibility fix: same buffer/string store Linus Torvalds (27): Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'fix/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 n_tty: do O_ONLCR translation as a single write pty: don't limit the writes to 'pty_space()' inside 'pty_write()' Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Merge branch 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'fix/oxygen' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge git://git.infradead.org/~dwmw2/mtd-2.6.31 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Linux 2.6.31-rc9 Luck, Tony (1): [IA64] Fix warning in dma-mapping.c Ma Ling (2): drm/i915: Always use SDVO_B detect bit for SDVO output detection. drm/i915: Set crtc/clone mask in different output devices Massimo Cirillo (1): JFFS2: add missing verify buffer allocation/deallocation Mauro Carvalho Chehab (1): V4L/DVB (12449): adds webcam for Micron device MT9M111 0x143A to em28xx Mel Gorman (1): page-allocator: always change pageblock ownership when anti-fragmentation is disabled Michael Krufky (1): V4L/DVB (12446): sms1xxx: restore GPIO functionality for all Hauppauge devices Mike Snitzer (3): dm snapshot: implement iterate devices dm table: add more context to terse warning messages dm stripe: expose correct io hints Mikulas Patocka (5): dm table: fix queue_limit checking device iterator dm snapshot: refactor zero_disk_area to use chunk_io dm snapshot: fix header corruption race on invalidation dm exception store: split set_chunk_size dm snapshot: fix on disk chunk size validation Nicolas Pitre (1): ext2: fix unbalanced kmap()/kunmap() Nikanth Karthikesan (1): block: Allow changing max_sectors_kb above the default 512 Oleg Nesterov (2): workqueues: introduce __cancel_delayed_work() exec: do not sleep in TASK_TRACED under ->cred_guard_mutex Paul Mackerras (1): perf_counter/powerpc: Fix cache event codes for POWER7 Peter Zijlstra (1): perf_counter: Fix /0 bug in swcounters Randy Dunlap (1): V4L/DVB (12502): gspca - sn9c20x: Fix gscpa sn9c20x build errors. Roderick Colenbrander (1): powerpc: Fix i8259 interrupt driver kernel crash on ML510 Roel Kluin (2): drm/i915: Fix typo that broke SVID1 in intel_sdvo_multifunc_encoder() V4L/DVB (12457): zr364: wrong indexes Ryusuke Konishi (1): nilfs2: fix preempt count underflow in nilfs_btnode_prepare_change_key Sean Young (1): drm/i915: Set the multiplier for SDVO on G33 platform Shine Liu (1): V4L/DVB (12495): em28xx: Don't call em28xx_ir_init when disable_ir is true Stefan Richter (4): firewire: core: fix crash in iso resource management firewire: ohci: fix Agere FW643 and multiple cameras firewire: ohci: fix Ricoh R5C832, video reception firewire: sbp2: fix freeing of unallocated memory Sunil Mushran (1): ocfs2: ocfs2_write_begin_nolock() should handle len=0 Takashi Iwai (2): ALSA: hda - Add missing mux check for VT1708 ALSA: hda - Fix MacBookPro 3,1/4,1 quirk with ALC889A Tao Ma (1): ocfs2: invalidate dentry if its dentry_lock isn't initialized. Tejun Heo (1): percpu: don't assume existence of cpu0 Toru UCHIYAMA (1): gianfar: gfar_remove needs to call unregister_netdev() Trond Myklebust (1): SUNRPC: Fix rpc_task_force_reencode Udi Atar (2): V4L/DVB (12450): Siano: Fixed SDIO compilation bugs V4L/DVB (12451): Update KConfig File to enable SDIO and USB interfaces Yinghai Lu (1): x86: Fix vSMP boot crash Zhu Yi (1): ipw2200: firmware DMA loading rework ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLX7x143562 for ; Fri, 22 Jan 2010 16:21:33 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLVlN143535; Fri, 22 Jan 2010 16:21:31 -0600 Date: Fri, 22 Jan 2010 16:21:31 -0600 Message-Id: <201001222221.o0MMLVlN143535@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.32, created. v2.6.32 X-Git-Refname: refs/tags/v2.6.32 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 459b3d520991ec1b8e5ba68fbc4b206d602fee6e This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.32 has been created at 459b3d520991ec1b8e5ba68fbc4b206d602fee6e (tag) tagging 22763c5cf3690a681551162c15d34d935308c8d7 (commit) replaces v2.6.32-rc8 tagged by Linus Torvalds on Wed Dec 2 19:51:29 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.32 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEABECAAYFAksXNcQACgkQF3YsRnbiHLtF0QCfSZqVGBlhtH5XDTsLkbaydglW Lk0An05MMp3OPNwIEc9GLda/wcSml/rW =zdzT -----END PGP SIGNATURE----- Ajay Kumar Gupta (2): USB: musb: Remove unwanted message in boot log USB: musb: fix ISOC Tx programming for CPPI DMAs Alan Cox (2): V4L/DVB (13530): Fix wrong parameter order in memset tty_port: handle the nonblocking open of a dead port corner case Alan Stern (2): PM: fix irq enable/disable in runtime PM code USB: EHCI: don't send Clear-TT-Buffer following a STALL Alek Du (1): gpio: Langwell GPIO driver bugfixes Alex Chiang (1): cciss: make device attrs static Alexander Beregalov (1): Au1x00: fix crash when trying register_netdev() Alexey Kuznetsov (1): [SCSI] fix crash when disconnecting usb storage Alexey Starikovskiy (1): ACPICA: Silence the warning about _BIF returning the buffer Amit Kumar Salecha (1): netxen: fix memory initialization Andrei Pelinescu-Onciul (1): sctp: on T3_RTX retransmit all the in-flight chunks Andrew Morton (1): drivers/media/dvb/dvb-core/dvb_frontend.c: needs semaphore.h AndrĂ© Goddard Rosa (1): Blackfin: fix cache Kconfig typo Anisse Astier (1): Input: i8042 - add Dell Vostro 1320, 1520 and 1720 to the reset list Antti Kaijanmäki (2): hso: fix debug routines hso: fix soft-lockup Antti Palosaari (1): V4L/DVB (13366): em28xx: fix Reddo DVB-C USB TV Box GPIO Anuj Aggarwal (1): ASoC: AIC23: Fixing infinite loop in resume path Atsushi Nemoto (1): SPI: spi_txx9: Fix bit rate calculation Bartlomiej Zolnierkiewicz (1): Staging: update TODO files Becky Bruce (1): powerpc: Fix DEBUG_HIGHMEM build break from d4515646699 Bruce Allan (7): e1000e: partial revert of 3ec2a2b8 plus FC workraround for 82577/8 e1000e: read of PHY register may access wrong page on 82578 e1000e: set flow control thresholds properly after enabling/disabling pause e1000e: add Tx timeout factor for 100Mbps e1000e: flow control thresholds not correct when changing mtu e1000e: remove unnecessary 82577 workaround causing link issues e1000e: do not initiate autonegotiation during OEM configuration Chris Wilson (2): drm/i915: Avoid potential sleep whilst holding spinlock drm/i915: Select CONFIG_SHMEM Chuck Ebbert (1): crypto: padlock-aes - Use the correct mask when checking whether copying is required Clemens Ladisch (1): drm/fb: fix FBIOGET/PUT_VSCREENINFO pixel clock handling Coly Li (1): ocfs2: return f_fsid info in ocfs2_statfs() Csaba Henk (1): fuse: reject O_DIRECT flag also in fuse_create Dan Carpenter (2): wan: cosa: drop chan->wsem on error path drivers/rtc/rtc-pcf50633.c: fix use after free in pcf50633_rtc_probe() Dan Williams (9): ioat: silence "dca disabled" messages ioat3: dca and raid operations are incompatible ioat2,3: disable asynchronous error notifications ioat3: specify valid address for disabled-Q or disabled-P ioat2,3: report all uncorrectable errors dmaengine: include xor/pq validate in device_has_all_tx_types() async_tx: build-time toggling of async_{syndrome,xor}_val dma support ioat3: fix pq completion versus channel deallocation race shdma: fix initialization error handling Daniel Glöckner (2): USB: musb: respect usb_request->zero in control requests USB: musb: Fix CPPI IRQs not being signaled Daniel Mack (2): [ARM] pxa/cpufreq: fix index assignments for end marker [ARM] pxamci: call mmc_remove_host() before freeing resources Dave Airlie (3): drm/radeon/kms: resume AGP by calling init. drm/radeon/kms: fix handling of d1/d2 vga drm/radeon/kms: read back register before writing in IIO. Dave Jones (1): Staging: hv: Fix argument order in incorrect memset invocations in hyperv driver. David Daney (3): MIPS: Octeon: Fix compile error in drivers/staging/octeon/ethernet-mdio.c Staging: Octeon: Use symbolic values for irq numbers. Staging: octeon-ethernet: Assign proper MAC addresses. David Ford (1): ipv4: additional update of dev_net(dev) to struct *net in ip_fragment.c, NULL ptr OOPS David Howells (31): SLOW_WORK: Wait for outstanding work items belonging to a module to clear SLOW_WORK: Allow the work items to be viewed through a /proc file SLOW_WORK: Allow the owner of a work item to determine if it is queued or not SLOW_WORK: Allow a requeueable work item to sleep till the thread is needed FS-Cache: Annotate slow-work runqueue proc lines for FS-Cache work items FS-Cache: Allow the current state of all objects to be dumped FS-Cache: Add counters for entry/exit to/from cache operation functions FS-Cache: Clear netfs pointers in cookie after detaching object, not before FS-Cache: Use radix tree preload correctly in tracking of pages to be stored FS-Cache: Permit cache retrieval ops to be interrupted in the initial wait phase FS-Cache: The object-available state can't rely on the cookie to be available FS-Cache: Fix lock misorder in fscache_write_op() FS-Cache: Don't delete pending pages from the page-store tracking tree FS-Cache: Handle read request vs lookup, creation or other cache failure FS-Cache: Handle pages pending storage that get evicted under OOM conditions FS-Cache: Add a retirement stat counter FS-Cache: Make sure FSCACHE_COOKIE_LOOKING_UP cleared on lookup failure FS-Cache: Start processing an object's operations on that object's death FS-Cache: Actually requeue an object when requested CacheFiles: Don't write a full page if there's only a partial page to cache CacheFiles: Handle truncate unlocking the page we're reading CacheFiles: Mark parent directory locks as I_MUTEX_PARENT to keep lockdep happy CacheFiles: Better showing of debugging information in active object problems CacheFiles: Catch an overly long wait for an old active object CacheFiles: Don't log lookup/create failing with ENOBUFS SLOW_WORK: Fix CIFS to pass THIS_MODULE to slow_work_register_user() SLOW_WORK: Fix GFS2 to #include before using THIS_MODULE FS-Cache: Provide nop fscache_stat_d() if CONFIG_FSCACHE_STATS=n 9p: fix build breakage introduced by FS-Cache SLOW_WORK: Fix the CONFIG_MODULES=n case SLOW_WORK: Move slow_work's proc file to debugfs David J. Choi (1): drivers/net: ks8851_mll ethernet network driver -resubmit David S. Miller (10): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 sparc64: Fix definition of VMEMMAP_SIZE. sunsab: Do not set sunsab_reg.cons right before registering minors. sunsu: Fix detection of SU ports which are RSC console or control. serial: suncore: Add 'ignore_line' argument to sunserial_console_match(). serial: suncore: Fix RSC/LOM handling in sunserial_console_termios(). sunsu: Pass true 'ignore_line' to console match when RSC or LOM console. sunsu: Use sunserial_console_termios() in sunsu_console_setup(). b44: Fix wedge when using netconsole. David Woodhouse (1): jffs2: Fix memory corruption in jffs2_read_inode_range() Eric Dumazet (4): ieee802154: dont leak skbs in ieee802154_fake_xmit() veth: Fix veth_get_stats() pktgen: Fix device name compares pktgen: Fix netdevice unregister Eric W. Biederman (1): USB: ftdi_sio: Keep going when write errors are encountered. Florian Fainelli (3): ep93xx-eth: check for zero MAC address on probe, not on device open rc32434_wdt: fix compilation failure MIPS: RB532: Fix devices.c compilation. Geert Uytterhoeven (3): net: ETHOC should depend on HAS_DMA V4L/DVB (13412): SMS_SIANO_MDTV should depend on HAS_DMA fbdev: Migrate mailing lists to vger Gernot Hillier (1): USB: Add support for Mobilcom Debitel USB UMTS Surf-Stick to option driver Gertjan van Wingerde (1): .gitignore: Add bzip2 compressed files Giuseppe CAVALLARO (2): stmmac: fixed a compilation error when use the external timer stmmac: do not fail when the timer cannot be used. Graf Yang (1): Blackfin: fix SMP build error in start_thread() Guennadi Liakhovetski (2): V4L/DVB (13343): v4l: add more missing linux/sched.h includes V4L/DVB (13344): soc-camera: properly initialise the device object when reusing H Hartley Sweeten (1): [WATCHDOG] rc32434_wdt.c: use resource_size() Haiyang Zhang (2): Staging: hv: Fix vmbus event handler bug Staging: hv: Fix some missing author names Hans Verkuil (3): V4L/DVB (13321): radio-gemtek-pci: fix double mutex_lock V4L/DVB (13371): davinci: remove stray duplicate config pointer V4L/DVB (13481): sh_mobile_ceu_camera: fix compile warning Harald Welte (1): [CPUFREQ] Enable ACPI PDC handshake for VIA/Centaur CPUs Helge Deller (2): parisc: fix unwind with recent gcc versions modules: don't export section names of empty sections via sysfs Hemant Pedanekar (1): ide: fix ioctl to pass requested transfer mode to ide_find_dma_mode instead of UDMA6 Henrique de Moraes Holschuh (1): thinkpad-acpi: fix detection of old ThinkPads Huang Ying (1): crypto: gcm - fix another complete call in complete fuction Ivan Vecera (1): r8169: restore mac addr in rtl8169_remove_one and rtl_shutdown James Bottomley (1): [SCSI] fix async scan add/remove race resulting in an oops Jaswinder Singh Rajput (1): ixgbe: move tc variable to CONFIG_IXGBE_DCB Jay Fenlason (2): firewire: ohci: Make cycleMatch ISO transmission work firewire: ohci: pass correct iso xmit timestamps to core Jean Delvare (2): MAINTAINERS: Add missing i2c files i2c: Fix userspace_device list corruption Jean PIHET (1): ARM: 5793/1: ARM: Check put_user fail in do_signal when enable OABI_COMPAT Jens Axboe (3): SLOW_WORK: Make slow_work_ops ->get_ref/->put_ref optional SLOW_WORK: Add support for cancellation of slow work SLOW_WORK: Add delayed_slow_work support Jeremy Fitzhardinge (1): drm: make sure page protections are updated after changing vm_flags Jerome Glisse (3): drm/radeon/kms: Disable TV load detect on RS400,RC410,RS480 drm: mm always protect change to unused_nodes with unused_lock spinlock drm/radeon/kms: Report vga connector is connected according to ddc_probe Jerone Young (1): ACPI: Add Thinkpad T400, T500 to OSI(Linux) white-list Jesse Barnes (1): drm: work around EDIDs with bad htotal/vtotal values Jiang Yutang (1): sata_fsl: Split hard and soft reset Jie Zhang (1): Blackfin: fix typo in ptrace poking Joel Becker (1): ocfs2: Return -EINVAL when a device is not ocfs2. Johannes Berg (5): mac80211: fix addba timer (again...) mac80211: fix resume rfkill: fix miscdev ops mac80211: fix two remote exploits mac80211: fix spurious delBA handling Johannes Weiner (2): rtc-x1205: fix rtc_time to y2k register value conversion rtc-x1205: reset clock to sane state after power failure John W. Linville (1): ath9k: set ps_default as false Julia Lawall (3): arch/alpha/kernel/sys_ruffian.c: Use DIV_ROUND_CLOSEST arch/alpha/kernel: Add kmalloc NULL tests VIDEO: Correct use of request_region/request_mem_region Kevin Wells (3): i2c: i2c-pnx: Limit minimum jiffie timeout to 2 i2c: i2c-pnx: Made buf type unsigned to prevent sign extension i2c: i2c-pnx: Added missing mach/i2c.h and linux/io.h header file includes Kuninori Morimoto (1): V4L/DVB (13345): soc-camera: sh_mobile_ceu_camera: call pm_runtime_disable Len Brown (4): ACPI: DMI init_set_sci_en_on_resume for HP-Compaq C700 Merge branch 'bugzilla-14379' into release Merge branch 'thinkpad-2.6.32' into release Merge branch 'misc-2.6.32' into release Linus Torvalds (41): Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge branch 'i2c-pnx-fixes' of git://git.fluff.org/bjdooks/linux Merge git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-fscache Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-kconfig Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'security' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Linux 2.6.32 Marc Dionne (1): CacheFiles: Update IMA counters when using dentry_open Mark Brown (3): ASoC: Fix suspend with active audio streams mfd: Correct WM831X_MAX_ISEL_VALUE regulator: Initialise wm831x structure pointor for ISINK driver Martin K. Petersen (1): [SCSI] sd: Return correct error code for DIF Martin Michlmayr (1): MIPS: IP22/IP28 Disable early printk to fix boot problems on some systems. Mauro Carvalho Chehab (1): staging/go7007: Fix compilation by re-adding the missing s2250-loader.h Maxime Bizon (1): bcm63xx_uart: Fix serial driver compile breakage. Michael Cree (1): Alpha: Rearrange thread info flags fixing two regressions Michael Hennerich (1): Blackfin: fix suspend/resume failure with some on-chip ROMs Michal Simek (1): tty/of_serial: add missing ns16550a id Michele Jr De Candia (1): i2c/tsl2550: Fix lux value in extended mode Mike Frysinger (3): Blackfin: update anomaly lists Blackfin: work around testset anomaly 05000477 Blackfin: check for anomaly 05000475 Narender Kumar (2): netxen: fix promisc for NX2031. netxen : fix BOND_MODE_TLB/ALB mode. NeilBrown (1): md: revert incorrect fix for read error handling in raid1. Oliver Neukum (1): USB: work around for EHCI with quirky periodic schedules Olivier Lorin (1): V4L/DVB (13372a): MAINTAINERS: addition of gspca_gl860 driver Patrick McHardy (4): netfilter: xt_osf: fix xt_osf_remove_callback() return value netfilter: nf_log: fix sleeping function called from invalid context in seq_show() netfilter: xt_limit: fix invalid return code in limit_mt_check() macvlan: fix gso_max_size setting Pavel Machek (1): [ARM] pxa/spitz: fix compile regression on spitz Pete Eberlein (1): V4L/DVB (13372): staging/go7007: fix mutex function usage for s2250 Peter Feuerer (1): acerhdf: return temperature in milidegree instead of degree Peter Horton (1): aoe: prevent cache aliases Ralf Baechle (3): MIPS: Fix build error if __xchg() is not getting inlined. MIPS: Add missing definition for MADV_HWPOISON. MIPS: Fix MIPS I build. Randy Dunlap (1): sysfs: fix SYSFS_DEPRECATED_V2 prompt Robert Lowery (1): V4L/DVB (13436): cxusb: Fix hang on DViCO FusionHDTV DVB-T Dual Digital 4 (rev 1) Roel Kluin (3): netfilter: xt_osf: fix xt_osf_remove_callback() return value thinkpad-acpi: fix sign of ERESTARTSYS return Blackfin: fix memset in smp_send_reschedule() and -stop() Roger Oksanen (1): e100: Use pci pool to work around GFP_ATOMIC order 5 memory allocation failure Romit Dasgupta (1): Thaw refrigerated bdi flusher threads before invoking kthread_stop on them Russell King (9): [ARM] kmap: fix build errors with DEBUG_HIGHMEM enabled ARM: PNX4008: fix watchdog device driver name ARM: PNX4008: i2c-pnx: use the same dev_id for request_irq and free_irq Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 MAINTAINERS: add maintainer information for AMBA primecell drivers [ARM] Update mach-types Merge branch 'mach-types' ALSA: AACI: fix AC97 multiple-open bug ALSA: AACI: fix recording bug Russell King - ARM Linux (1): NET: smc91x: Fix irq flags Rusty Russell (1): param: don't complain about unused module parameters. Sam Ravnborg (1): kbuild: stepping down as maintainer Samuel Thibault (1): Input: keyboard - fix braille keyboard keysym generation Sergei Shtylyov (1): USB: musb_gadget: fix STALL handling Steve French (3): [CIFS] fix oops in cifs_lookup during net boot [CIFS] Duplicate data on appending to some Samba servers [CIFS] Fix sparse warning Steve Glendinning (1): smsc9420: prevent BUG() if ethtool is called with interface down Steven Rostedt (1): kconfig: Fix make O= local{mod,yes}config Sudhakar Rajashekhara (1): davinci: fb: fix frame buffer driver issues Sunil Mushran (2): ocfs2: Refresh documentation ocfs2: Trivial cleanup of jbd compatibility layer removal Takashi Iwai (1): Merge branch 'fix/asoc' into fix/misc Tao Ma (2): ocfs2: Move ocfs2_complete_reflink to the right place. ocfs2: duplicate inline data properly during reflink. Thomas Dahlmann (1): usb: amd5536udc: fixed shared interrupt bug and warning oops Thomas Gleixner (1): alpha: Fixup last users of irq_chip->typename Wolfram Sang (1): at24: Use timeout also for read Wu Fengguang (1): netfilter: nf_log: fix sleeping function called from invalid context in seq_show() Wu Zhangjin (2): MIPS: Loongson: Disallow 4kB pages MIPS: Loongson: Switch from flatmem to sparsemem Zhenyu Wang (5): drm/i915: Fix and cleanup DPLL calculation for Ironlake drm/i915: HDMI hardware workaround for Ironlake drm/i915: Add more registers save/restore for Ironlake suspend agp/intel: new host bridge support drm/i915: Fix CRT hotplug detect by checking really no channels attached Zou, Nanhai (1): drm/i915: Fix IRQ stall issue on Ironlake chaithrika@ti.com (1): TI DaVinci EMAC: Minor macro related updates ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:38 2010 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLbR8143626 for ; Fri, 22 Jan 2010 16:21:37 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLXRb143575; Fri, 22 Jan 2010 16:21:33 -0600 Date: Fri, 22 Jan 2010 16:21:33 -0600 Message-Id: <201001222221.o0MMLXRb143575@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.32-rc1, created. v2.6.32-rc1 X-Git-Refname: refs/tags/v2.6.32-rc1 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 1016bf08944977a33d3a48edc15ee34b425f6d8a This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.32-rc1 has been created at 1016bf08944977a33d3a48edc15ee34b425f6d8a (tag) tagging 17d857be649a21ca90008c6dc425d849fa83db5c (commit) replaces v2.6.31 tagged by Linus Torvalds on Sun Sep 27 14:57:59 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.32-rc1 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkq/3+0ACgkQF3YsRnbiHLsS/QCgoL2XSYdbPstvY6hv/7SqAyCI ACsAnRdt0aMSMduj7OK8PxAZe95XuPlF =hKDz -----END PGP SIGNATURE----- Aaro Koskinen (2): SLUB: fix ARCH_KMALLOC_MINALIGN cases 64 and 256 sisfb: change SiS_DDC_Port type to SISIOADDRESS Abhijeet Kolekar (1): iwlwifi: fix remove key error Abhishek Kulkarni (4): 9p: Use the i_size_[read, write]() macros instead of using inode->i_size directly. 9p: Fix the incorrect update of inode size in v9fs_file_write() 9p: Add fscache support to 9p 9p: Update documentation to add fscache related bits Abylay Ospan (4): V4L/DVB (12311): Change clocking configuration and frequency for NetUP card. V4L/DVB (12312): stv0900: fix i2c repeater configuration must be set to manual V4L/DVB (12956): Fix gpio mutex in NetUP Dual DVB-S2 CI card. V4L/DVB (12957): Fix MAC address reading from EEPROM in NetUP Dual DVB-S2 CI card. AceLan Kao (1): V4L/DVB (12352): gspca - vc032x: Fix mi1310_soc preview and LED Adam Jackson (2): drm: shut the EDID warnings up. drm: prune modes when output is disconnected. Adrian Hunter (18): mmc: add 'enable' and 'disable' methods to mmc host mmc: allow host claim / release nesting mmc: add MMC_CAP_NONREMOVABLE host capability mmc: add ability to save power by powering off cards mmc: check status after MMC SWITCH command omap_hsmmc: make use of new enable/disable interface omap_hsmmc: keep track of power mode omap_hsmmc: ensure workqueues are empty before suspend omap_hsmmc: make use of new MMC_CAP_NONREMOVABLE host capability ARM: OMAP: mmc-twl4030: add regulator sleep / wake function omap_hsmmc: put MMC regulator to sleep omap_hsmmc: clear interrupt status after init sequence omap_hsmmc: cater for weird CMD6 behaviour omap_hsmmc: prevent races with irq handler omap_hsmmc: protect the card when the cover is open omap_hsmmc: ensure all clock enables and disables are paired omap_hsmmc: set a large data timeout for commands with busy signal ARM: OMAP: RX51: set MMC capabilities and power-saving flag Ajay Kumar Gupta (1): USB: musb: fix put_device() call sequence Ajit Khaparde (4): be2net: Add GRO support to the be2net driver. LRO is not supported anymore. net/ethtool: Add support for the ethtool feature to flash firmware image from a specified file. be2net: Changes to support flashing of the be2 network adapter be2net: Code changes in Tx path to use skb_dma_map/skb_dma_unmap Akihiro Tsukada (1): V4L/DVB (13000): add driver for 774 Friio White USB ISDB-T receiver Akinobu Mita (9): x86: Clean up dump_pagetable() x86: Use get_desc_base() x86: Remove unused patch_espfix_desc() x86: Introduce set_desc_base() and set_desc_limit() x86: Introduce GDT_ENTRY_INIT() x86: Introduce GDT_ENTRY_INIT(), initialize bad_bios_desc statically KVM: x86: use get_desc_base() and get_desc_limit() KVM: x86: use kvm_get_gdt() and kvm_read_ldt() mm: add gfp mask checking for __get_free_pages() Akira Fujita (9): ext4: Fix compile warnings with MB_DEBUG ext4: Fix wrong comparisons in mext_check_arguments() ext4: Remove unneeded BUG_ON() in ext4_move_extents() ext4: Return exchanged blocks count to user space in failure ext4: Fix small typo for move_extent_per_page() ext4: Replace get_ext_path macro with an inline funciton ext4: Replace BUG_ON() with ext4_error() in move_extents.c ext4: Add null extent check to ext_get_path ext4: Fix different block exchange issue in EXT4_IOC_MOVE_EXT Al Viro (1): nfs[23] tcp breakage in mount with binary options Alan Cox (117): x86/cpu: Clean up various files a bit [libata] Add pata_rdc driver for RDC ATA devices Staging: et1310: Fix the coding style Staging: sep: Move the RAR support into staging where it is supposed to be Staging: rar: fix some initial type problems Staging: rar/sep: Don't use random VENDOR_ID macros but the proper names Staging: sep: Fix rar build Staging: rar/sep: Remove C++isms from the headers Staging: sep: Create a structure to hold all the current crap spewed about as globals Staging: sep: rework write_register/read_register Staging: sep: We have two different repeats of the same logic Staging: sep: do something about all the printk macros Staging: sep: indent pass Staging: sep: first pass after indent Staging: sep: priceless ... Staging: sep: Put all the ARM bits together Staging: sep: function shuffle Staging: sep: statically initialize the fops like other drivers Staging: sep: kill lock wrapper Staging: sep: merge the two files Staging: sep: make everything static Staging: sep: kill off unused code Staging: sep: squish some of the wrapper functions Staging: sep: forward declaration removal time Staging: sep: fix time handler Staging: sep: use O_NDELAY instead of magic APIs Staging: sep: rename some fields Staging: sep: Fix PCI irq usage Staging: sep: Use filp->private_data to create proper device instances Staging: sep: clean up after switching to passing sep Staging: sep: fix flow API Staging: sep: load_rom is remarkably verbose and repetetive Staging: sep: remove module int macro Staging: sep: Try and get kernel address and user address types right Staging: sep: remove extra CFLAGS we don't use Staging: sep: Use the proper allocators for the shared area Staging: sep: fix a conversion thinko Staging: sep: various minor tidyups Staging: sep: tidy firmware load Staging: sep: Implement some proper open/close methods Staging: sep: kick out various fields we can prove are not needed Staging: sep: flow ioctl cleanup Staging: sep: clean up command sending Staging: sep: clean up time Staging: sep: untangle the register_fs code Staging: sep: use ioremap helpers Staging: iio: Fix type warnings Staging: altpciechdma: 64bit type warning fix Staging: pohmelfs: fix atomic type spew Staging: pohmelfs: fix type errors Staging: et1310: kill pAdapter in favour of a sane name Staging: et131x: spinlocks Staging: et131x: power state Staging: et131x: kill unused RCV_REF macros Staging et131x: kill refcount Staging: et131x: MPSend macros Staging: et131x: kill copied PCI fields Staging: et131x: Take a kref for the PCI pointer we cache Staging: et131x: CSRAddress to regs Staging: et131x: Eliminate RegistryDMA Cache Staging: et131x: eliminate write only registry fields Staging: et131x: clean up constant rx/tx registry fields Staging: et131x: attack the config stuff Staging: et131x: config is already zeroed Staging: et131x: fold the diet config into the other code Staging: et131x: de-hungarianise a bit Staging: et131x: continue pruning unused fields Staging: et131x: remove unused PCI identifiers Staging: et131x: eeprom remove features Staging: et131x: sort out the mmc enable routine Staging: et131x: clean up MMC_SRAM_ Staging: et131x: quick tidy of the debug code Staging: et131x: kill the Q_ADDR struct Staging: et131x: clean up PM_CSR_t Staging: et131x: clean up DMA10/DMA4 types Staging: et131x: clean up MP_FLAG macros Staging: et131x: kill the interrupt magic define and types Staging: et131x: put the jagcore routines in with their users Staging: et131x: kill MSI type Staging: et131x: kill the loopback type Staging: et131x: prune all the debug code Staging: et131x: re-order the initpci code to match usual Linux style Staging: et131x: kill off the TXDMA error type Staging: et131x: kill off the TXDMA CSR type slip: Clean up create and destroy kfifo: Use "const" definitions tty: Fix a typo noted in passing mos7840: remove old dead modem logic tty: Add a full port_close function riscom8: split open and close methods up mxser: Split close ready for a standard tty_port_close method isicom: Split the close hardware bits out tty: riscom8 kref and tty_port_close cyclades: use the full port_close function tty: make the kref destructor occur asynchronously cdc_acm: Fix to use modern speed interfaces tty: USB hangup is racy tty: remove dtr/rts use from the driver open methods tty: USB can now use the shutdown method for kref based freeing of ports vt: add an event interface vt: remove power stuff from kernel/power vt: move kernel stuff out of vt.h vt: add an activate and lock tty: USB does not need the filp argument in the drivers isicom: split the open method for the isicom device serial: kill off uart_info serial: Fold closing_* fields into the tty_port ones serial: use tty_port pointers in the core code serial: move count into the tty_port version serial: move the flags into the tty_port field serial: kill off uif_t serial: replace the state mutex with the tty port mutex serial: move delta_msr_wait into the tty_port serial: move port users helper serial: kill USF_CLOSING_* definitions serial: introduce tty krefs tty: USB serial termios bits Alan Jenkins (12): eeepc-laptop: don't touch the pci slot if it was claimed by a different driver eeepc-laptop: use a mutex to serialize pci hotplug (resume vs. notify) eeepc-laptop: fix pci hotplug race on load and unload eeepc-laptop: fix ordering of init and exit functions eeepc-laptop: make input device a child of the platform device eeepc-laptop: remove redundant rfkill_set_sw_state in resume handler eeepc-laptop: check the 3G rfkill state on resume eeepc-laptop: correct the description of the hibernation abort bug eeepc-laptop: switch to dev_pm_ops eeepc-laptop: fix rfkill memory leak on unload eeepc-laptop: allow rfkill hotplug to work on the 900A model 8139cp: fix duplicate loglevel in module load message Alan Stern (21): Driver core: add new device to bus's list before probing TTY: fix typos usb-serial: change referencing of port and serial structures usb-serial: put subroutines in logical order usb-serial: change logic of serial lookups usb-serial: acquire references when a new tty is installed usb-serial: fix termios initialization logic usb-serial: rename subroutines usb-serial: add missing tests and debug lines usb-serial: straighten out serial_open USB serial: update the console driver USB: add API for userspace drivers to "claim" ports USB: make intf.pm_usage an atomic_t USB: make the "usbfs_snoop" log more pertinent USB: check for hub driver not bound to root hub device USB: don't lose mode switch events on suspended devices USB: dummy-hcd: accept mismatch between wLength and transfer length USB: s3c2410: unregister should call unbind, not disconnect USB: EHCI: rescan the queue after an unlink USB: EHCI: change deschedule logic for interrupt QHs USB: usbfs: add USBDEVFS_URB_BULK_CONTINUATION flag Albert Herranz (3): ssb: Implement SDIO host bus support b43: Add Soft-MAC SDIO device support b43: fix build error if !CONFIG_B43_LEDS Albin Tonnerre (3): tracing: Remove mentioning of legacy latency_trace file from documentation PM: Add convenience macro to make switching to dev_pm_ops less error-prone include/linux/unaligned/{l,b}e_byteshift.h: fix usage for compressed kernels Alek Du (5): USB: EHCI: add need_io_watchdog flag to ehci_hcd USB: EHCI: split ehci_qh into hw and sw parts USB: EHCI: Add Intel Moorestown EHCI controller HOSTPCx extensions and support phy low power mode gpio: add Intel Moorestown Platform Langwell chip gpio driver gpio: pca953x: add support for MAX7315 Aleksandr V. Piskunov (1): V4L/DVB (12485): zl10353: correct implementation of FE_READ_UNCORRECTED_BLOCKS Alessandro Guido (1): HID: Remove duplicate Kconfig entry Alessandro Rubini (10): [ARM] 5582/1: VIC: support ST-modified version with a split init [ARM] 5583/1: VIC: acknowledge software interrupts [ARM] 5590/1: Add basic support for ST Nomadik 8815 SoC and evaluation board [ARM] 5584/1: nomadik: add gpio driver and devices [ARM] 5585/1: nomadik: add gpio-i2c devices [ARM] 5586/1: nomadik board: added ethernet [ARM] 5587/1: nomadik: add l2cc [ARM] 5588/1: nomadik: add defconfig for nhk8815 mtd: nand: driver for Nomadik 8815 SoC (on NHK8815 board) mtd: OneNand support for Nomadik 8815 SoC (on NHK8815 board) Alessandro Zummo (3): rtc: rtc-ds1302 fixes rtc: rtc-sh fixes rtc: reorder Makefile Alex Chiang (6): ACPI: pci_slot.ko wants a 64-bit _SUN PCI: remove pcibios_scan_all_fns() ACPI: export acpi_pci_root and friends PCI Hotplug: acpiphp: get pci_bus from acpi handle correctly PCI Hotplug: acpiphp: find bridges the easy way PCI Hotplug: convert acpi_pci_detect_ejectable() to take an acpi_handle Alex Deucher (13): drm/radeon/kms: re-apply 2007d633d639c896396e4c4b53b38068f3831307 drm/radeon/r600: use fence->timeout directly drm/radeon/r600: fix legacy blit code drm/radeon/kms/r600: fix blit support drm/radeon/kms/r600: use blit for BO moves drm/radeon/kms: pull in latest quirks and fixes from ddx drm/radeon/kms: add common scaled modes for TV and LVDS drm/radeon/kms: add common lvds modes in the ddc case drm/radeon/kms/r600: fix blit dword count for non r6xx drm/radeon/kms: fix typo in quirks drm/radeon/r600: don't do interrupts drm/radeon/r600/kms: rv670 is not DCE3 drm/radeon: some r420s have a CP race with the DMA engine. Alex Elder (4): xfs: xfs_showargs() reports group *and* project quotas enabled Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 xfs: Record new maintainer information Merge branch 'master' of git://oss.sgi.com/xfs/xfs into for-linus Alex Roman (1): [ARM] pxa/colibri: add UART MFP configuration for the PXA320 module Alex Williamson (2): iommu=pt is a valid early param PCI iommu: iommu=pt is a valid early param Alexander Beregalov (13): ar9170: fix build error when !CONFIG_AR9170_LEDS Staging: vt6655: fix build when !CONFIG_WIRELESS_EXT Staging: vt6655: remove dependency on WIRELESS_EXT version Staging: otus: remove dependency on WIRELESS_EXT version Staging: vt6656: remove dependency on kernel version Staging: vt6656: remove dependency on WIRELESS_EXT version Staging: vt665x: depend on WIRELESS_EXT Staging: at76_usb: fix !CONFIG_WIRELESS_EXT build Staging: at76_usb: replace mac2str() with %pM Staging: wlan-ng: remove dependency on WIRELESS_EXT version Staging: rt2860: remove dependency on WIRELESS_EXT version Staging: agnx: remove flush_workqueue() Staging: vt665x: fix built-in compiling Alexander Duyck (21): igb: remove media type fiber as it is misleading igb: make serdes power down available for 82575 in addition to 82576 parts igb: change configure_pcs_link to void since it always returns 0 igb: do not overwrite EEPROM LED settings igb: add completion timeout workaround for 82575/82576 igb: move all multicast addresses into multicast table array igb: cleanup receive address register initialization igb: remove unused switch statement from igb_set_wol igb: add support for 82576 mezzanine card igb: use buffer_info->dma instead of shinfo->nr_frags to determine unmap igb: cleanup flow control configuration to make requested/current more clear igb: initialize mailbox function pointers prior to phy init igbvf: resolve "frees DMA memory with different size" warnings igb/ixgbe: add IPV6_CSUM support to vlan_features igb: add support for set_rx_mode netdevice operation igb: only disable/enable interrupt bits for igb physical function igb: set vf rlpml wasn't taking vlan tag into account PCI quirk: update 82576 device ids in SR-IOV quirks list igb: reset sgmii phy at start of init igb: do not allow phy sw reset code to make calls to null pointers igb: resolve namespacecheck warning for igb_hash_mc_addr Alexander Graf (4): x86: Add definition for IGNNE MSR KVM: Implement MSRs used by Hyper-V KVM: SVM: Implement INVLPGA KVM: SVM: Improve nested interrupt injection Alexander Schmidt (1): IB/ehca: Make port autodetect mode the default Alexander Strakh (1): [CIFS] Memory leak in ntlmv2 hash calculation Alexandros Batsakis (3): nfsd41: sunrpc: svc_tcp_recv_record() nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel nfsd41: modify nfsd4.1 backchannel to use new xprt class Alexey Dobriyan (38): sparc64: cheaper asm/uaccess.h inclusion x86: uv: Clean up uv_ptc_init(), use proc_create() pktgen: use proc_create_data() can: switch to seq_file drm: use proc_create_data() netfilter: nf_conntrack: netns fix re reliable conntrack event delivery netns: embed ip6_dst_ops directly ide: convert to ->proc_fops sparc: convert /proc/io_map, /proc/dvma_map to seq_file sctp: use proc_create() headers: net/ipv[46]/protocol.c header trim net: constify struct net_protocol net: constify struct inet6_protocol net: constify remaining proto_ops xfs: switch to seq_file MIPS: Lasat: Fix compilation headers: taskstats_kern.h trim Fix "W" macro in arch/arm/include/asm/unified.h acpi: switch /proc/acpi/{debug_layer,debug_level} to seq_file kernel/profile.c: Switch /proc/irq/prof_cpu_mask to seq_file const: make struct super_block::dq_op const const: make struct super_block::s_qcop const const: mark remaining super_operations const const: mark remaining export_operations const const: mark remaining address_space_operations const const: mark remaining inode_operations as const const: make file_lock_operations const const: make lock_manager_operations const const: make block_device_operations const oom: move oom_killer_enable()/oom_killer_disable to where they belong pcmcia: switch /proc/bus/pccard/drivers to seq_file viafb: switch to seq_file headers: utsname.h redux sysctl: remove "struct file *" argument of ->proc_handler aio: ifdef fields in mm_struct gru: use proc_create() headers: kref.h redux const: mark struct vm_struct_operations Alexey Starikovskiy (4): ACPICA: Don't switch task then not allowed ACPI: EC: Merge IRQ and POLL modes ACPI: EC: use BURST mode only for MSI notebooks ACPI: EC: Drop orphan comment Alistair John Strachan (1): hwmon: (abituguru3) Support multiple DMI strings per chip ID Alok Kataria (1): x86: Print the hypervisor returned tsc_khz during boot Amerigo Wang (7): x86, 32-bit: Use generic sys_pipe() SLUB: Fix some coding style issues selinux: adjust rules for ATTR_FORCE vfs: allow file truncations when both suid and write permissions set x86: Fix an incorrect argument of reserve_bootmem() kcore: fix /proc/kcore's stat.st_size elf: clean up fill_note_info() Amit Kucheria (3): mfd: Add support for TWL4030/5030 dynamic power switching mfd: Print warning for twl4030 out-of-order script loading mfd: OMAP: Board-specifc twl4030 DPS scripts for RX51 board Amit Kumar Salecha (8): netxen: support for ethtool set ringparam netxen: implement pci driver shutdown netxen: fix ip addr hashing after firmware reset netxen: pre calculate register addresses netxen: fix check for ip addr hashing support netxen: fix tx descriptor structure netxen: change firmware write size netxen: fix tx timeout recovery Amit Shah (3): KVM: ignore reads to perfctr msrs Documentation: Update KVM list email address virtio_net: Check for room in the vq before adding buffer Anand Gadiyar (7): MUSB: Remove usb_musb_pm_init() call trivial: OHCI: Fix typo in a comment trivial: fix typo "for for" in multiple files trivial: fix typo "to to" in multiple files USB: EHCI: OHCI: Remove unnecessary includes of reboot.h USB: OMAP: ISP1301: Compile fix OMAP: HSMMC: do not enable buffer ready interrupt if using DMA Anders Kaseorg (1): x86: fix fragile computation of vsyscall address Andi Kleen (38): x86: mce: Make CONFIG_X86_ANCIENT_MCE dependent on CONFIG_X86_MCE x86: mce: Update X86_MCE description in x86/Kconfig x86: mce: Remove old i386 machine check code x86: mce: Rename CONFIG_X86_NEW_MCE to CONFIG_X86_MCE x86: mce: Move code in mce.c x86: mce: Move per bank data in a single datastructure x86: mce: macros to compute banks MSRs x86: mce: Lower maximum number of banks to architecture limit TCP: Add comments to (near) all functions in tcp_output.c v3 PCI: disable pci_find_device warnings when deprecated pci functions are enabled x86, mce: Fix compilation with !CONFIG_DEBUG_FS in mce-severity.c HWPOISON: Add page flag for poisoned pages HWPOISON: Export some rmap vma locking to outside world HWPOISON: Add support for poison swap entries v2 HWPOISON: Add new SIGBUS error codes for hardware poison signals HWPOISON: Add basic support for poisoned pages in fault handler v3 HWPOISON: Add poison check to page fault handling HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2 HWPOISON: Use bitmask/action code for try_to_unmap behaviour HWPOISON: Handle hardware poisoned pages in try_to_unmap HWPOISON: Define a new error_remove_page address space op for async truncation HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process HWPOISON: The high level memory error handler in the VM v7 HWPOISON: Enable .remove_error_page for migration aware file systems HWPOISON: Enable error_remove_page for NFS HWPOISON: Add madvise() based injector for hardware poisoned pages v4 HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs HWPOISON: Enable error_remove_page on btrfs PCI: Disable AER with pci=nomsi x86: Remove final bits of CONFIG_X86_OLD_MCE kbuild: Check if linker supports the -X option kbuild: echo the record_mcount command kbuild: set -fconserve-stack option for gcc 4.5 kbuild: fail build if recordmcount.pl fails Documentation/memory.txt: remove some very outdated recommendations kmap_types.h: rename D macro vfs: optimization for touch_atime() vfs: optimize touch_time() too Andiry Brienza (1): ALSA: hda - Add support for new AMD HD audio devices Andre Draszik (3): sh: ratelimit unaligned fixups sh: Allow user control over misaligned fixup handling sh: cleanup of do_address_error() Andre Maasikas (1): drm/radeon/r600: set correct pitch for 4 byte copy Andre Prendel (2): hwmon: Add driver for Texas Instruments TMP421/422/423 sensor chips hwmon: (tmp421) Add documentation Andre Przywara (15): KVM: SVM: use explicit 64bit storage for sysenter values KVM: Move performance counter MSR access interception to generic x86 path KVM: Allow emulation of syscalls instructions on #UD KVM: x86 emulator: Add missing EFLAGS bit definitions KVM: x86 emulator: Prepare for emulation of syscall instructions KVM: x86 emulator: add syscall emulation KVM: x86 emulator: Add sysenter emulation KVM: x86 emulator: Add sysexit emulation KVM: ignore AMDs HWCR register access to set the FFDIS bit KVM: ignore reads from AMDs C1E enabled MSR KVM: introduce module parameter for ignoring unknown MSRs accesses KVM: Ignore PCI ECS I/O enablement KVM: handle AMD microcode MSR KVM: fix MMIO_CONF_BASE MSR access KVM: add module parameters documentation Andrea Arcangeli (1): ksm: fix deadlock with munlock in exit_mmap Andreas Dilger (2): jbd2: round commit timer up to avoid uncommitted transaction JBD: round commit timer up to avoid uncommitted transaction Andreas Herrmann (18): sched: Use structure to store local data in __build_sched_domains sched: Separate out allocation/free/goto-hell from __build_sched_domains sched: Separate out build of NUMA sched domain from __build_sched_domains sched: Separate out build of CPU sched domain from __build_sched_domains sched: Separate out build of MC sched domain from __build_sched_domains sched: Separate out build of SMT sched domain from __build_sched_domains sched: Separate out build of SMT sched groups from __build_sched_domains sched: Separate out build of MC sched groups from __build_sched_domains sched: Separate out build of CPU sched groups from __build_sched_domains sched: Separate out build of ALLNODES sched groups from __build_sched_domains sched: Separate out build of NUMA sched groups from __build_sched_domains sched: Consolidate definition of variable sd in __build_sched_domains x86: Fix CPU llc_shared_map information for AMD Magny-Cours x86, cacheinfo: Fixup L3 cache information for AMD multi-node processors x86, mcheck: Use correct cpumask for shared bank4 x86, sched: Workaround broken sched domain creation for AMD Magny-Cours x86, EDAC: Provide function to return NodeId of a CPU x86, mce: Fix compile warning in case of CONFIG_SMP=n Andreas Mohr (4): ALSA: azt3328: fix Kconfig entry ALSA: azt3328: large codec cleanup, add I2S port etc. ALSA: azt3328: fix previous breakage, improve suspend, cleanups V4L/DVB (13003): Correct dangerous and inefficient msecs_to_jiffies() calculation in some V4L2 drivers Andreas Oberritter (2): V4L/DVB (12275): Add two new ioctls: DMX_ADD_PID and DMX_REMOVE_PID V4L/DVB (12276): Remove a useless check from dvb_dmx_swfilter_packet() Andreas Schlick (1): ext4: Always set dx_node's fake_dirent explicitly. Andres Salomon (3): Revert "power: remove POWER_SUPPLY_PROP_CAPACITY_LEVEL" olpc_battery: Add an 'error' sysfs device that displays raw errors power_supply: Add a charge_type property, and use it for olpc driver Andrew Morton (13): arch/x86/oprofile/op_model_amd.c: fix op_amd_handle_ibs() return type driver core: platform_device_add_data(): use kmemdup() sched: Fix raciness in runqueue_is_locked() drivers/dma/ioat/dma_v2.c: fix warnings net: fix CONFIG_NET=n build on sparc64 drivers/media/dvb/pt1/pt1.c needs vmalloc.h drivers/mfd/ab3100-core.c: fix powerpc build error include/linux/kmemcheck.h: fix a trillion warnings drivers/video/tmiofb.c: fix uninitialised return value include/linux/cred.h: fix build drivers/usb/serial/sierra.c: fix CONFIG_PM=n build procfs: disable per-task stack usage on NOMMU hugetlb_file_setup(): use C, not cpp Andrew Price (1): rt2x00: fix the definition of rt2x00crypto_rx_insert_iv Andrew Vasquez (8): [SCSI] qla2xxx: Correctly handle 'global port-unavailable' AEN. [SCSI] qla2xxx: ISP21xx/22xx do not support FDMI registrations. [SCSI] qla2xxx: Correct display of vp_count in debug printk. [SCSI] qla2xxx: Generalize srb structure usage. [SCSI] qla2xxx: Add asynchronous-login support. [SCSI] qla2xxx: Further limit device-table (qla_devtbl) lookup to non-24xx. [SCSI] qla2xxx: Correct various NPIV issues. [SCSI] qla2xxx: Properly delete rports attached to a vport. Andrew Victor (1): ARM: 5719/1: [AT91] Fix AC97 breakage Andrey Yurovsky (7): libertas: remove ps_supported flag, use fwcapinfo libertas: copy WPA keys to priv when associating libertas: correct card cleanup order in SPI driver libertas: fix card cleanup order in SDIO driver libertas: check valid bits in SPI bus mode reg mac80211: Use correct sign for mesh active path refresh. libertas: don't use dynamic-sized array Andrzej Hajda (1): V4L/DVB (12465): cx88: High resolution timer for Remote Controls Andy Adamson (16): nfsd41: use globals for DRC limits nfsd41: reclaim DRC memory on session free nfsd41: minor set_forechannel_maxreqs cleanup nfsd41: reserve less memory for DRC nfsd41: hange from page to memory based drc limits nfsd41: remove redundant forechannel max requests check nfsd41: change check_slot_seqid parameters nfsd41: Use separate DRC for setclientid nfsd41: rename nfsd4_enc_uncached_replay nfsd41: encode replay sequence from the slot values nfsd41: expand solo sequence check nfsd41: bound forechannel drc size by memory usage nfsd41: use session maxreqs for sequence target and highest slotid nfsd41: replace nfserr_resource in pure nfs41 responses nfsd41: replace page based DRC with buffer based DRC nfsd41: Backchannel: callback infrastructure Andy Grover (20): RDS: Set retry_count to 2 and make modifiable via modparam RDS/IB: Improve RDS protocol version checking RDS/IB: Handle connections using RDS 3.0 wire protocol RDS/IB: Fix printk to indicate remote IP, not local RDS/RDMA: Fix cut-n-paste errors in printks in rdma_transport.c RDS/IB: Rename byte_len to data_len to enhance readability RDS: Don't set c_version in __rds_conn_create() RDS/IB: Move tx/rx ring init and refill to later RDS/IB: Disable flow control in sysctl and explain why RDS/IB: Drop connection when a fatal QP event is received RDS: Fix completion notifications on blocking sockets RDS/IB: Always use PAGE_SIZE for FMR page size RDS/IW: Remove page_shift variable from iwarp transport RDS/IW: Remove dead code RDS: Refactor end of __conn_create for readability RDS: Add TCP transport to RDS RDS: Export symbols from core RDS RDS: Modularize RDMA and TCP transports RDS: Track transports via an array, not a list RDS: Add a debug message suggesting to load transport modules Andy Walls (11): V4L/DVB (12207): cx18: Add an EEPROM dump routine for the Yuan MPC718 and future cards V4L/DVB (12209): ivtv: Add card entry for AVerMedia UltraTV 1500 MCE (M113 variant) V4L/DVB (12210): ivtv: Fix automatic detection of AVerMedia UltraTV 1500MCE. V4L/DVB (12334): tuner-simple: Add an entry for the Partsnic PTI-5NF05 NTSC tuner V4L/DVB (12335): ivtv: Fix errors in AVerTV M113 card definitions and add a new M113 card V4L/DVB (12336): ivtv: Fix improper GPIO audio mux input switch on video standard change V4L/DVB (12366): ir-kbd-i2c: Allow use of ir-kdb-i2c internal get_key funcs and set ir_type V4L/DVB (12367): cx18: Add i2c initialization for Z8F0811/Hauppage IR transceivers V4L/DVB (12368): ir-kbd-i2c: Add support for Z8F0811/Hauppage IR transceivers V4L/DVB (12699): cx18: ir-kbd-i2c initialization data should point to a persistent object V4L/DVB (12884): cx18: Eliminate warning about discarding 'const' is assignment for IR init Andy Whitcroft (5): checkpatch: possible types -- else cannot start a type checkpatch: indent checks -- stop when we run out of continuation lines checkpatch: format strings should not have brackets in macros checkpatch: limit sN/uN matches to actual bit sizes checkpatch: version 0.29 Aneesh Kumar K.V (7): ext4: Fix memory leak fix when mounting an ext4 filesystem ext4: Add missing unlock_new_inode() call in extent migration code ext4: Allow rename to create more than EXT4_LINK_MAX subdirectories ext4: Take page lock before looking at attached buffer_heads flags ext4: move ext4_mb_init_group() function earlier in the mballoc.c ext4: check for need init flag in ext4_mb_load_buddy ext4: Clarify the locking details in mballoc Anil Ravindranath (1): [SCSI] pmcraid: PMC-Sierra MaxRAID driver to support 6Gb/s SAS RAID controller Anil Veerabhadrappa (6): [SCSI] bnx2i: remove global variable bnx2i_reg_devices [SCSI] bnx2i: bug fixes in bnx2i_init_one to handle error conditions [SCSI] bnx2i: convert bnx2i_dev_lock to mutex [SCSI] bnx2i: register given device with cnic if shost != NULL in ep_connect() [SCSI] bnx2i : Fix command session number jump issue seen during cable pull test [SCSI] bnx2i : Fix "cid #n not valid" issue Anirban Chakraborty (2): [SCSI] qla2xxx: Fix a bug that clears the interrupt status register for the base queue [SCSI] qla2xxx: Fix to ensure driver works in sinlge queue mode if multiqueue fails Anirban Sinha (4): tracing: Eliminate code duplication in kernel/tracepoint.c sched: Rename init_cfs_rq => init_tg_cfs_rq cleanup console_print() Fix ia64 build breakage in head.S Anthony Liguori (1): KVM: When switching to a vm8086 task, load segments as 16-bit Anton Blanchard (9): powerpc: Move 64bit VDSO to improve context switch performance powerpc: Rearrange SLB preload code powerpc: Preload application text segment instead of TASK_UNMAPPED_BASE perf_event: Update PERF_EVENT_FORK header definition tracing/workqueue: Use %pf in workqueue trace events powerpc: Move 64bit heap above 1TB on machines with 1TB segments powerpc/perf_counter: Fix vdso detection powerpc: Increase NODES_SHIFT on 64bit from 4 to 8 powerpc: Fix ibm,client-architecture-support printout Anton Vorontsov (33): ucc_geth: Add support for skb recycling netpoll: Introduce netpoll_carrier_timeout kernel option powerpc/83xx: Add support for MPC8377E-WLAN boards powerpc/85xx: Add support for I2C EEPROMs on MPC8548CDS boards powerpc/83xx: Add eSDHC support for MPC837xE-RDB/WLAN boards powerpc/85xx: Add eSDHC support for MPC8536DS boards powerpc/82xx: Fix BCSR bits for MPC8272ADS boards powerpc/82xx: Add CPM USB Gadget support for MPC8272ADS boards powerpc/85xx: Add QE USB support for MPC8569E-MDS boards ucc_geth: Fix NULL pointer dereference in uec_get_ethtool_stats() powerpc/qe: Implement qe_alive_during_sleep() helper function ucc_geth: Factor out MAC initialization steps into a call ucc_geth: Remove UGETH_MAGIC_PACKET Kconfig symbol and code ucc_geth: Implement suspend/resume and Wake-On-LAN support phy/marvell: Make non-aneg speed/duplex forcing work for 88E1111 PHYs ucc_geth: Rearrange some code to avoid forward declarations ucc_geth: Fix hangs after switching from full to half duplex 8250: Now honours baud rate lower bounds Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 USB: fsl_qe_udc: Add fsl,mpc8323-qe-usb compatible entry sdhci: be more strict with get_min_clock() usage sdhci-of: fix SD clock calculation sdhci-of: avoid writing reserved bits into host control register sdhci-of: fix high-speed cards recognition powerpc: introduce and document sdhci,wp-inverted property for eSDHC sdhci-of: don't hard-code inverted write-protect quirk sdhci-of: cleanup eSDHC's set_clock() a little bit spi: add support for device table matching of: remove "stm,m25p40" alias hwmon: adxx: convert to device table matching hwmon: lm70: convert to device table matching spi: prefix modalias with "spi:" 3c59x: Get rid of "Trying to free already-free IRQ" Antonio Ospite (5): leds: Fix indentation in LEDS_LP3944 Kconfig entry mfd: register ezx-pcap earlier regulator: register pcap earlier regulator: get pcap data from the parent device pxa2xx_spi: register earlier Antti Palosaari (9): V4L/DVB (12752): get_dvb_firmware: add af9015 firmware V4L/DVB (12754): af9015: [2/2] fix USB TS configuration V4L/DVB (12755): af9015: improve usb control message function slightly V4L/DVB (12756): af9015: fix typo in register compare V4L/DVB (12950): tuner-simple: add Philips CU1216L V4L/DVB (12951): em28xx: add Reddo DVB-C USB TV Box V4L/DVB (12959): anysee: increase BULK transfer size from 512 to 8192 V4L/DVB (12960): anysee: coding style fix V4L/DVB (12962): ce6230: increase BULK transfer size from 512 to 8192 Anuj Aggarwal (3): Regulator: Add TPS65023 regulator driver Regulator: Add TPS6507x regulator driver Regulator: Adding TPS65023 and TPS6507x in Kconfig and Makefile Ari Kauppi (2): wl12xx: Fix incorrect warning message. wl12xx: Fix CMD_TEST regression via netlink. Aric Blumer (1): USB: ohci-pxa27x: Allow NOCP and OCPM to be cleared Aric D. Blumer (1): USB: ohci-pxa27x: Reconfigure power settings on resume Arjan van de Ven (18): sched: Provide iowait counters perf: Add a timestamp to fork events perf: Store trace event name/id pairs in perf.data perf: Allow perf utilities to have "callback" options without arguments perf: Add a sample_event type to the event_union tracing, perf: Convert the power tracer into an event tracer perf: Add a SVG helper library file perf: Add the timechart tool perf timechart: Add "perf timechart record" perf utils: Be consistent about minimum text size in the svghelper tracing, x86, cpuidle: Move the end point of a C state in the power tracer perf: Add timechart help text and add timechart to "perf help" perf utils: Use a define for the maximum length of a trace event perf timechart: Show the name of the waker/wakee in timechart perf timechart: Show the duration of scheduler delays in the SVG perf util: Make the timechart SVG width dynamic perf util: SVG performance improvements cpuidle: fix the menu governor to boost IO performance Arnaldo Carvalho de Melo (3): x86, intel_txt: Fix typos in Kconfig help perf top: Show RIP only in verbose mode Subject: [PATCH] appletalk: Fix skb leak when ipddp interface is not loaded Arnd Bergmann (22): x86: add copies of some headers to convert to asm-generic x86: convert trivial headers to asm-generic version x86: convert almost generic headers to asm-generic version x86: convert termios.h to the asm-generic version x86: remove all now-duplicate header files score: unset __ARCH_WANT_IPC_PARSE_VERSION score: remove __{put,get}_user_unknown score: add generic sys_call_table score: remove init_mm score: add prototypes for wrapped syscalls score: add missing #includes score: add address space annotations score: fix function prototypes score: cleanups: dead code, 0 as pointer, shadowed variables score: make irq.h definitions local score: clean up mm/init.c sched: Add default defines for PREEMPT_ACTIVE dma-ops: Remove flush_write_buffers() in dma-mapping-common.h CRIS: add pgprot_noncached tty: handle VT specific compat ioctls in vt driver mm: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions mm: remove duplicate asm/mman.h files Arnd Hannemann (2): mac80211: Remove unnused throughput field from minstrel_rate. mac80211: Fix output of minstrels rc_stats Arputham Benjamin (2): mlx4_core: Distinguish multiple devices in /proc/interrupts IB/mthca: Distinguish multiple devices in /proc/interrupts Artem Bityutskiy (18): UBIFS: kill BKL UBIFS: remove unneeded call from ubifs_sync_fs UBI: print a message if ECH is corrupted and VIDH is ok UBI: amend NOR flash pre-erase quirk UBI: print a warning if too many PEBs are corrupted UBI: introduce flash dump helper UBI: improve NOR flash erasure quirk UBIFS: constify file and inode operations UBIFS: add inode size debugging check UBIFS: do not print scary error messages needlessly UBIFS: check ubifs_scan error codes better UBIFS: amend commentaries UBIFS: define journal head numbers in ubifs-media.h UBIFS: improve journal head debugging prints UBIFS: various minor commentary fixes UBIFS: improve lprops dump UBIFS: fix debugging dump Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into linux-next Arve HjønnevĂĄg (2): Staging: HTC Dream: touchscreen driver for staging Staging: dream: add support for input on GPIO pins Ashish Kalra (1): sata_fsl: Defer non-ncq commands when ncq commands active Ashwin Chaugule (1): hrtimer: Eliminate needless reprogramming of clock events device Atsushi Nemoto (11): ASoC: txx9aclc: dynamically allocate dmaengine devname tc35815: Disable StripCRC tc35815: Improve BLEx / FDAEx handling tc35815: Increase timeout for mdio tc35815: Fix rx_missed_errors count tc35815: Use 0 RxFragSize.MinFrag value for non-packing mode dmaengine: Move all map_sg/unmap_sg for slave channel to its client MIPS: TXx9: Disable PM capability of TX493[89] internal ether mtd: nand: add __nand_correct_data helper function mtd: nand: fix tmio_nand ecc correction mtd: nand: txx9ndfmc: transfer 512 byte at a time if possible Atsushi Tsuji (1): tracing: Fix minor bugs for __unregister_ftrace_function_probe Avi Kivity (37): KVM: x86 emulator: Implement zero-extended immediate decoding KVM: x86 emulator: fix jmp far decoding (opcode 0xea) KVM: Move common KVM Kconfig items to new file virt/kvm/Kconfig KVM: SVM: Fold kvm_svm.h info svm.c KVM: VMX: Avoid duplicate ept tlb flush when setting cr3 KVM: VMX: Simplify pdptr and cr3 management KVM: Cache pdptrs KVM: VMX: Fix reporting of unhandled EPT violations KVM: Calculate available entries in coalesced mmio ring KVM: Reorder ioctls in kvm.h KVM: VMX: Move rmode structure to vmx-specific code KVM: MMU: Fix is_dirty_pte() KVM: MMU: Adjust pte accessors to explicitly indicate guest or shadow pte KVM: MMU: s/shadow_pte/spte/ KVM: Return to userspace on emulation failure KVM: VMX: Only reload guest cr2 if different from host cr2 KVM: SVM: Don't save/restore host cr2 KVM: Trace irq level and source id KVM: Trace mmio KVM: Trace apic registers using their symbolic names KVM: MMU: Trace guest pagetable walker KVM: Document basic API KVM: Trace shadow page lifecycle KVM: VMX: Optimize vmx_get_cpl() x86: Export kmap_atomic_to_page() KVM: SVM: Drop tlb flush workaround in npt KVM: Move #endif KVM_CAP_IRQ_ROUTING to correct place KVM: VMX: Adjust rflags if in real mode emulation KVM: Rename x86_emulate.c to emulate.c KVM: Add __KERNEL__ guards to exported headers KVM: Add missing #include KVM: Protect update_cr8_intercept() when running without an apic KVM: Document KVM_CAP_IRQCHIP KVM: Optimize kvm_mmu_unprotect_page_virt() for tdp KVM: Use thread debug register storage instead of kvm specific data KVM: VMX: Conditionally reload debug register 6 KVM: VMX: Check cpl before emulating debug register access Axel K (6): Staging: rt3090: add device id 1462:891a Staging: rt2860: add new device ids Staging: rt2860/rt2870/rt3070/rt3090: fix compiler warning on x86_64 Staging: rt3090: remove possible conflict with rt2860 Staging: rt3090: rename device from raX to wlanX Staging: rt3090: port changes in WPA_MIX_PAIR_CIPHER to rt3090 Balaji Rao (1): mmc: in mmc_power_up(), use previously selected ocr if available Balbir Singh (7): memcg: remove the overhead associated with the root cgroup memory controller: soft limit documentation memory controller: soft limit interface memory controller: soft limit organize cgroups memory controller: soft limit refactor reclaim flags memory controller: soft limit reclaim on contention memcg: improve resource counter scalability Barry Song (21): ASoC: Blackfin: convert internal names from bf52x to bf5xx ASoC: new ad1938 codec driver based on asoc ASoC: blackfin I2S(TDM mode) CPU DAI driver ASoC: board driver to connect bf5xx with ad1938 ASoC: Fix checkpatch issues and typos of ad1938 codec and bf5xx-tdm dai ASoC: add output/input widgets in ad1938 to make dac/adc dynamic PM work new ad1836 codec driver based on asoc ASoC: delete -spi suffix in ad1938 and free private data while registers fail ASoC: new board driver to connect bfin-5xx with ad1836 codec Blackfin: bf537-stamp: add resources for AD1938 audio card Blackfin: bf538: add bfin_clear_PPI_STATUS() helper Blackfin: bf537-stamp: update AD714x resources Blackfin: bf537-stamp: drop ATA interrupt probe workaround Blackfin: cm-bf527/bf537-stamp: fix dm9000 resources Blackfin: bf538-ezkit: add resources for parallel flash Blackfin: bf537-stamp: update ad1836 resources Blackfin: delete '-spi' suffix in ad1836/ad1938 driver name Blackfin: bf538-ezkit: add SPI IRQ resources ASoC: fix typos in Blackfin headers ASoC: Blackfin I2S: add lost platform_device parameter to resume function ASoC: some minor changes for AD1836 and AD1938 codec drivers Bart Van Assche (2): workqueues: Improve schedule_work() documentation [SCSI] libsrp: fix memory leak in srp_ring_free() Bartlomiej Zolnierkiewicz (157): x86, mce: don't log boot MCEs on Pentium M (model == 13) CPUs x86, mce: fix "mce" boot option handling for CONFIG_X86_NEW_MCE x86, mce: add missing __cpuinit tags x86, mce: remove never executed code x86, mce: fix reporting of Thermal Monitoring mechanism enabled x86: Remove superfluous NULL pointer check in destroy_irq() ide: allow ide_dev_read_id() to be called from the IRQ context ide: fix races in handling of user-space SET XFER commands irq: Remove superfluous NULL pointer check in check_irq_resend() nfs: remove superfluous BUG_ON()s ALSA: ali5451: remove dead code fujitsu-laptop: remove superfluous NULL pointer checks fujitsu-laptop: driver [un]registration fixes KVM: remove superfluous NULL pointer check in kvm_inject_pit_timer_irqs() Staging: rt28[67]0: remove unused md4.h Staging: rtl8187se/ieee80211: remove unused files Staging: rtl8192su/ieee80211: remove unused files Staging: rtl8187se: remove duplicate dot11d.h and ieee80211.h includes Staging: rtl8192su: remove duplicate dot11d.h and ieee80211.h includes Staging: rtl8187se: remove unused ieee80211_crypt.h Staging: rtl8192su: remove unused ieee80211_crypt.h Staging: rtl8187se: remove kernel version compatibility wrappers Staging: rtl8187se: remove support for older wireless extensions Staging: rtl8187se/ieee80211: remove dead _RTL8187_EXT_PATCH_ code Staging: rtl8187se/ieee80211: remove superfluous ieee80211_* defines Staging: rtl8187se/ieee80211: remove unused dump_chnl_map() Staging: rtl8187se/ieee80211: remove superfluous JOHN_* ifdefs Staging: rtl8192su: remove kernel version compatibility wrappers Staging: rtl8192su: remove support for older wireless extensions Staging: rtl8192su/ieee80211: remove unused _ReasonCode enums Staging: rtl8192su/ieee80211: switch to use Staging: rtl8192su: add TODO Staging: rtl8187se: add TODO Staging: rtl8187se: remove ENABLE_DOT11D ifdefs Staging: rtl8187se: remove CONFIG_RTL8180_PM ifdefs Staging: rtl8187se: remove THOMAS_TURBO ifdefs Staging: rtl8187se: remove CONFIG_RTL818x_S ifdefs Staging: rtl8187se: remove CONFIG_RTL8185B ifdefs Staging: rtl8187se: remove CONFIG_RTL8180_IO_MAP ifdefs Staging: rtl8187se: remove dead code Staging: rtl8187se: remove unused radio frontends Staging: rtl8187se: remove debugging code from r8180_core.c Staging: rtl8187se: remove unused rtl8225_rf_* functions Staging: rtl8187se: cleanup r8180_rtl8225.c Staging: rtl8187se: merge r8180_rtl8225.c with r8180_rtl8225z2.c Staging: rtl8187se: cleanup r8180_pm.c Staging: rtl8187se: merge r8180_pm.c with r8180_core.c Staging: rtl8187se: remove unused definitions from r8180_hw.h Staging: rtl8187se: remove unused definitions from r8180.h Staging: rtl8187se: cleanup r8180_rtl8225z2.c Staging: rtl8187se: cleanup r8180_core.c Staging: add rt3090 wireless driver Staging: rtl8192su: remove ENABLE_DOT11D ifdefs Staging: rtl8192su: remove CONFIG_RTL8192_PM ifdefs Staging: rtl8192su: remove THOMAS_TURBO ifdefs Staging: rtl8192su: remove USE_ONE_PIPE ifdefs Staging: rtl8192su: remove EEPROM_OLD_FORMAT_SUPPORT ifdefs Staging: rtl8192su: remove USB_RX_AGGREGATION_SUPPORT ifdefs Staging: rtl8192su: remove USB_TX_DRIVER_AGGREGATION_ENABLE ifdefs Staging: rtl8192su: remove RTL8192SU_DISABLE_CCK_RATE ifdefs Staging: rtl8192su: remove RTL8192S_DISABLE_FW_DM ifdefs Staging: rtl8192su: remove DISABLE_BB_RF ifdefs Staging: rtl8192su: remove RTL8192SU_USE_PARAM_TXPWR ifdefs Staging: rtl8192su: remove RTL8192SU_FPGA_UNSPECIFIED_NETWORK ifdefs Staging: rtl8192su: remove RTL8192SU_FPGA_2MAC_VERIFICATION ifdefs Staging: rtl8192su: remove RTL8192SU_ASIC_VERIFICATION ifdefs Staging: rtl8192su: remove RTL8192SU_USB_PHY_TEST ifdefs Staging: rtl8192su: remove RTL8190_Download_Firmware_From_Header ifdefs Staging: rtl8192su: remove RTL8192S_PREPARE_FOR_NORMAL_RELEASE ifdefs Staging: rtl8192su: remove RTL8192SU_DISABLE_IQK ifdefs Staging: rtl8192su: remove RTL8192SE ifdefs Staging: rtl8192su: remove RTL8192SU ifdefs Staging: rtl8192su: remove unused files Staging: rtl8192su: remove dead code Staging: vt6655: remove PRIVATE_OBJ ifdefs Staging: vt6655: remove unused Makefile.{arm,x86} files Staging: rtl8187se/ieee80211: remove OPENSUSE_SLED ifdefs Staging: rtl8187se/ieee80211: remove FEDORACORE_9 ifdef Staging: rtl8187se/ieee80211: remove NOT_YET ifdefs Staging: rtl8187se: remove ENABLE_IPS ifdefs Staging: rtl8187se: rename struct ieee80211_hdr to struct ieee80211_hdr_4addr Staging: rtl8187se: rename struct ieee80211_hdr_3addr_qos to struct ieee80211_hdr_3addrqos Staging: rtl8187se: rename struct ieee80211_hdr_QOS to struct ieee80211_hdr_4addrqos Staging: rtl8187se/ieee80211: switch to use Staging: rtl8187se/ieee80211: ieee80211.h reorderings Staging: rtl8187se/ieee80211: convert MMIE_TYPE_* defines to enums Staging: rtl8192su: remove more unused files Staging: rtl8192su: make private ieee80211 stack really private Staging: rtl8192su: remove JOHN_DUMP[_TXDESC] ifdefs Staging: rtl8192su/ieee80211: remove OPENSUSE_SLED ifdefs Staging: rtl8192su/ieee80211: remove superfluous container_of definition Staging: rtl8192su: remove NOT_YET ifdefs Staging: rtl8192su/ieee80211: remove unused IEEE80211_PRINT_STR() Staging: rtl8192su/ieee80211: remove unused ieee80211_wx_get_encode_ext() Staging: rtl8192su/ieee80211: ieee80211.h cleanups Staging: rtl8192su/ieee80211: move rtl8192su specific code out from ieee80211.h Staging: vt6655: add TODO Staging: vt6656: add TODO Staging: rt2870: duplicated code is executed twice in AsicEvaluateRxAnt() Staging: rt3070: fix build warnings Staging: rtxxx0: remove support for older wireless extensions Staging: rtxxx0: remove dead platform specific code Staging: rtxxx0: kill RT8270_USB_DEVICES() macro Staging: rtxxx0: PID checking fixes Staging: rt3070: kill TimerQThr thread first in RT28xxThreadTerminate() Staging: rtxxx0: kill PID macros Staging: rtxxx0: remove unused defines Staging: rtxxx0: unify different RT30xx{Read,Write}RFRegister() flavors Staging: rtxxx0: remove superfluous RT30xx ifdefs Staging: rtxxx0: unify RT{USB,MP}FilterCalibration() Staging: rtxxx0: unify MlmeCheckPsmChange() Staging: rtxxx0: unify AsicEvaluateRxAnt() Staging: rtxxx0: remove dead DBG_DIAGNOSE code Staging: rtxxx0: remove dead virtual adapter support Staging: rtxxx0: debug messages fixes Staging: rtxxx0: remove unused link_list.h Staging: rtxxx0: remove superfluous function prototypes Staging: rtxxx0: remove private debugging ioctls Staging: rtxxx0: remove private ioctls Staging: rtxxx0: remove unused code Staging: rtxxxx: unify AsicRxAntEvalTimeout() Staging: rtxxxx: unify AsicSwitchChannel() Staging: rtxx70: unify NICInitRT30xxRFRegisters() Staging: rtxxxx: RTMPGetRalinkAuthModeStr() fixes Staging: rt3070: update allowed channels list for Japan Staging: rt3070: fix PID checking in RTUSBEnqueueCmdFromNdis() Staging: rt3070: WEP fixes Staging: rt3070: AsicSetSlotTime() fix Staging: rt3070: remove needless EFUSE_TAG register read Staging: rt3070: add remaining rt2870 device ids Staging: rt2870: use internal command for AsicUpdateProtect() Staging: rt2870: add fRTUSB_BULK_OUT_DATA_NORMAL_5 quirk Staging: rt28x0: add SIOCGIWNAME support to rt_ioctl_giwscan() Staging: rt28x0: fix GTK length check in ParseKeyData() Staging: rt28x0: fix BPP_R66 register handling Staging: rt28x0: fix fOP_STATUS_DOZE flag handling Staging: rt28x0 fix BACapability policy handling Staging: rt28x0: AsicSwitchChannel() fix Staging: rt28x0: BssTableSetEntry() fix Staging: rt28x0: MlmeSelectTxRateTable() fix Staging: rt28x0: MlmeCheckPsmChange() fix Staging: rt28x0: MlmeAssocReqAction() fixes for wpa_supplicant support Staging: rt28x0: rt_ioctl_siwencode() fixes Staging: rt28x0: LinkUp() fixes Staging: rt3070: remove unused MiniportDataMMRequest() Staging: rt3070: remove unused RT_CMD_SET_* internal commands Staging: rt2870: remove SHOW_ADHOC_ENTRY_INFO support Staging: rtxxxx: remove unused AsicAntenna{Select,Setting}() Staging: rt2870: add eFuse support Staging: rt2870: add Antenna Diversity support Staging: rtxx70: merge rt3070 with rt2870 Staging: rt2870: remove old firmware Staging: remove no longer needed rt3070 driver Staging: rt3090: enable NATIVE_WPA_SUPPLICANT_SUPPORT option MAINTAINERS: remove dead ncpfs list ncpfs: remove dead URL from documentation ncpfs: fix wrong check in __ncp_ioctl() Bastian Blank (1): powerpc: Remove SMP warning from PowerMac cpufreq Becky Bruce (3): powerpc: Name xpn & x fields in HW Hash PTE format powerpc: Rename get_dma_direct_offset get_dma_offset powerpc: Change archdata dma_data to a union Beholder Intl. Ltd. Dmitry Belimov (1): V4L/DVB (12419): Fix incorrect type of tuner for the BeholdTV H6 card Ben Blum (5): cgroups: add a read-only "procs" file similar to "tasks" that shows only unique tgids cgroups: ensure correct concurrent opening/reading of pidlists across pid namespaces cgroups: use vmalloc for large cgroups pidlist allocations cgroups: change css_set freeing mechanism to be under RCU cgroups: let ss->can_attach and ss->attach do whole threadgroups at a time Ben Dooks (49): ARM: S3C: Update hwmon device definition and name ARM: BAST: Add hwmon device information ARM: S3C: Add ADC synchronous read call. ARM: HWMON: S3C24XX series ADC driver ARM: S3C24XX: Add BWSCON per-bank information. ARM: S3C24XX: CPUFREQ: Add core support. ARM: S3C: CPUFREQ: Documentation for cpufreq header ARM: S3C: CPUFREQ: Move struct s3c_cpufreq_config to cpu-freq-core.h ARM: Add ARCH_HAS_CPUFREQ for presence of CPUFREQ driver ARM: Add S3C24XX to CPUFreq KConfig ARM: S3C2410: CPUFREQ: Add io-timing support. ARM: S3C2410: CPUFREQ: Add core support. ARM: S3C2410: CPUFREQ: Add PLL table ARM: S3C2440: CPUFREQ: Add core support. ARM: S3C2440: CPUFREQ: Add PLL tables ARM: S3C2440: CPUFREQ: Add crystal frequency Kconfig entries. ARM: OSIRIS: CPUFREQ: Add CPU frequency scaling support ARM: S3C2412: CPUFREQ: Add core support. ARM: PL093: Header file for PL093 SSMC PrimeCell ARM: S3C: Update CPU register mapping practices. ARM: S3C2412: Update memory register mapping and definitions ARM: S3C24XX: CPUFREQ: S3C2412/S3C2443 IO timing support ARM: S3C2410: Add S3C2410A sysdev. ARM: BAST: CPUFREQ: Add board support ARM: S3C2410: Add armclk for cpufreq support ARM: S3C: CPUFREQ: Add documentation for system ARM: S3C: CPUFREQ: Add debugfs support for cpufreq ARM: S3C24XX: Add FIQ IRQ routing support ARM: S3C24XX: Add SPI bus 1 on GPD8 through GPD10 Merge branch 'next-s3c-hwmon' into next-s3c Merge branch 'next-s3c-machines' into next-s3c Merge branch 'next-s3c24xx' into next-s3c Merge branch 'next-s3c24xx-cpufreq' into next-s3c Merge branch 'next-s3c64xx' into next-s3c Merge branch 'next-s3c64xx-moves' into next-s3c ARM: S3C: Add S3C_DEV_NAND Kconfig entry ARM: Show FIQ in /proc/interrupts on CONFIG_FIQ ASoC: S3C24XX: Add audio core and tlv320aic23 for Simtec boards ASoC: tlv320aic3x: Change to use device model ASoC: tlv320aic3x: fixup board device changes ASoC: S3C24XX: Support for Simtec Hermes boards ARM: S3C: Add missing selection of S3C_DEV_NAND in machine Kconfigs. Merge branch 'next-s3c64xx-fixes' into next-s3c-fixes spi: fix spelling of `automatically' in documentation spi_s3c24xx: fix header includes spi_s3c24xx: use resource_size() to get resource size spi_s3c24xx: use dev_pm_ops spi_s3c24xx: cache device setup data s3c2410fb: fix clockrate calculation Ben Gamari (9): drm/i915: Move i915_gem_debugfs.c to i915_debugfs.c drm/i915: Add i915 register dumping debugfs file drm/i915: Check whether chip is wedged in i915_wait_request() drm/i915: Refactor save/restore code drm/i915: make i915_seqno_passed non-static drm/i915: Add hangcheck timer drm/i915: Implement GPU reset on i965 drm/i915: Hookup chip reset in error handler drm/i915: Make dev_priv->mm.wedged an atomic_t Ben Greear (1): veth: Zero timestamp in xmit path. Ben Hutchings (16): mdio: mdio_if_info::mmds should not be __bitwise sfc: Fix ordering of device registration and initial netif_carrier_off() sfc: Do not reinitialise XAUI serdes before it has completed reset mdio: Check MDIO_STAT1_FAULT in mdio45_links_ok() sfc: QT2025C: Use hard reset only sfc: Work around XMAC bug causing packet loss with some peers sfc: Improve reliability of RX queue flushing drm/mga: Use request_firmware() to load microcode drm/r128: Use request_firmware() to load CCE microcode radeon: Use request_firmware() drm/r128: Add test for initialisation to all ioctls that require it netdev: Remove SIOCDEVPRIVATE aliases for MDIO ioctls netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations netdev: Convert MDIO ioctl implementation to use struct mii_ioctl_data x86: Fix code patching for paravirt-alternatives on 486 Staging: rt{2860,2870,3070}sta: Remove unused CRC code Ben Skeggs (1): drm: update crtc x/y when only fb changes Benjamin Herrenschmidt (42): powerpc: Rename exception.h to exception-64s.h powerpc: Use names rather than numbers for SPRGs (v2) powerpc: Remove use of a second scratch SPRG in STAB code powerpc/mm: Fix definitions of FORCE_MAX_ZONEORDER in Kconfig powerpc/pmac: Fix PowerSurge SMP IPI allocation powerpc: Change PACA from SPRG3 to SPRG1 powerpc: Add compat_sys_truncate powerpc/mm: Fix misplaced #endif in pgtable-ppc64-64k.h powerpc/of: Remove useless register save/restore when calling OF back powerpc/mm: Add HW threads support to no_hash TLB management powerpc/mm: Add opcode definitions for tlbivax and tlbsrx. powerpc/mm: Add more bit definitions for Book3E MMU registers powerpc/mm: Add support for early ioremap on non-hash 64-bit processors powerpc: Modify some ppc_asm.h macros to accomodate 64-bits Book3E powerpc/mm: Make low level TLB flush ops on BookE take additional args powerpc/mm: Call mmu_context_init() from ppc64 powerpc: Clean ifdef usage in copy_thread() powerpc: Move definitions of secondary CPU spinloop to header file powerpc/mm: Rework & cleanup page table freeing code path powerpc: Add SPR definitions for new 64-bit BookE powerpc: Add memory management headers for new 64-bit BookE powerpc: Add definitions used by exception handling on 64-bit Book3E powerpc: Add PACA fields specific to 64-bit Book3E processors powerpc/mm: Move around mmu_gathers definition on 64-bit powerpc: Add TLB management code for 64-bit Book3E powerpc/mm: Add support for SPARSEMEM_VMEMMAP on 64-bit Book3E powerpc: Remaining 64-bit Book3E support powerpc/mm: Fix encoding of page table cache numbers Merge commit 'paulus-perf/master' into next Merge commit 'origin/master' into next powerpc/mm: Cleanup handling of execute permission Merge commit 'kumar/next' into next Merge commit 'tip/iommu-for-powerpc' into next powerpc: Properly start decrementer on BookE secondary CPUs powerpc: Fix some late PowerMac G5 with PCIe ATI graphics PCI/GPU: implement VGA arbitration on Linux powerpc/booke: Don't set DABR on 64-bit BookE, use DAC1 instead powerpc/iseries: Fix oops reading from /proc/iSeries/mf/*/cmdline mm: kmem_cache_create(): make it easier to catch NULL cache names powerpc/pmc: Don't access lppaca on Book3E powerpc/mm: Fix 40x and 8xx vs. _PAGE_SPECIAL Fix build of cpm_uart due to core changes Benjamin Krill (2): powerpc/prom_init: Evaluate mem kernel parameter for early allocation mtd: ofpart: Check availability of reg property instead of name property Benjamin LaHaise (7): vxge: don't drop frame on tx queue full vxge: fix pktgen hangs (don't abuse skb->cb[]) vxge: improve tx performance by using mmiowb() instead of wmb() vxge: prefetch RxD descriptors vxge: prefetch skb->data vxge: Version update intel-iommu: Fix integer wrap on 32 bit kernels Benny Halevy (27): nfsd41: gather and report statistics also for v4.1 ops sunrpc: hton -> cpu_to_be* sunrpc: ntoh -> be*_to_cpu nfs: nfs4xdr: get rid of WRITE32 nfs: nfs4xdr: get rid of WRITE64 nfs: nfs4xdr: get rid of WRITEMEM nfs: nfs4xdr: optimize RESERVE_SPACE in encode_create_session and encode_sequence nfs: nfs4xdr: encode_compound_hdr does not have to round up reserved bytes nfs: nfs4xdr: change RESERVE_SPACE macro into a static helper nfs: nfs4xdr: optimize low level encoding nfs: nfs4xdr: merge xdr_encode_int+xdr_encode_opaque_fixed into xdr_encode_opaque nfs: nfs4xdr: get rid of READ32 nfs: nfs4xdr: get rid of READ64 nfs: nfs4xdr: get rid of READTIME nfs: nfs4xdr: introduce print_overflow_msg nfs: nfs4xdr: introduce decode_opaque_fixed and decode_stateid helpers nfs: nfs4xdr: introduce decode_verifier helper nfs: nfs4xdr: introduce decode_sessionid helper nfs: nfs4xdr: get rid of COPYMEM nfs: nfs4xdr: simplify decode_exchange_id by reusing decode_opaque_inline nfs: nfs4xdr: get rid of READ_BUF nfs: nfs4xdr: optimize low level decoding nfsd41: renew_client must be called under the state lock nfsd41: sunrpc: move struct rpc_buffer def into sunrpc.h nfsd4: fix whitespace in NFSPROC4_CLNT_CB_NULL definition nfsd41: Backchannel: cb_sequence callback sunrpc: xdr_xcode_hyper helpers cannot presume 64-bit alignment Benoit PAPILLAULT (1): rt2x00: Add support for retry rates Bernd Schmidt (2): Blackfin: add ICPLB coverage for async banks nommu: add support for Memory Protection Units (MPU) Beth Kon (1): KVM: PIT support for HPET legacy mode Bhaskar Dutta (1): sctp: Sysctl configuration for IPv4 Address Scoping Bill Pemberton (39): Staging: hv: Use %ld instead of %d for a long ints Staging: hv: Remove C99 comments Staging: hv: StorVsc.c: fix print formatting Staging: hv: blkvsc_drv.c: fix print formatting Staging: hv: fix blkvsc_open() parameters Staging: hv: fix blkvsc_release() parameters Staging: hv: fix blkvsc_ioctl() parameters Staging: hv: Remove X2V_LINUX check Staging: hv: NetVsc.c: fix print formatting Staging: hv: RndisFilter.c: fix print formatting Staging: hv: storvsc_drv.c: fix print formatting Staging: hv: vmbus_drv.c: fix print formatting Staging: hv: check return value of bus_register() Staging: hv: check return value of device_register() Staging: hv: vmbus_drv.c: remove unused structs Staging: hv: Hv.c: remove unused physAddr Staging: hv: remove VMBUS_CHANNEL_PACKET_PAGE_BUFFER typedef Staging: hv: remove VMBUS_CHANNEL_PACKET_MULITPAGE_BUFFER typedef Staging: hv: remove VMBUS_CONNECT_STATE typedef Staging: hv: remove VMBUS_CONNECTION typedef Staging: hv: remove VMBUS_MSGINFO typedef Staging: hv: remove NETVSC_DEVICE typedef Staging: hv: Remove WORKQUEUE typedef Staging: hv: check return value of driver_for_each_device() Staging: hv: comment out blkdev variable in blkvsc_ioctl Staging: hv: remove WAITEVENT typedef Staging: hv remove TIMER typedef Staging: hv: remove HANDLE typedef Staging: hv: rework use of workqueues in osd Staging: hv: remove WaitEventClose() Staging: hv: remove wrapper functions for bit operations Staging: hv: remove wrapper functions for atomic operations Staging: hv: remove wrapper function VirtualFree Staging: hv: remove wrapper functions around kmap_ Staging: hv: remove use of internal list routines in NetVsc Staging: hv: remove more usages of internal list routines Staging: hv: remove use of internal list routines in RndisFilter Staging: hv: Remove List.h Staging: serqt_usb2: fix qt_open parameters Bing Zhao (5): Bluetooth: Add btmrvl driver for Marvell Bluetooth devices Bluetooth: Add Marvell BT-over-SDIO driver Bluetooth: Add debugfs support to btmrvl driver Bluetooth: Add documentation for Marvell Bluetooth driver Bluetooth: Fix incorrect alignment in Marvell BT-over-SDIO driver Bjorn Helgaas (48): ACPI: processor: remove KOBJ_ONLINE/KOBJ_OFFLINE events ACPI: processor: clean up in acpi_processor_start() error exits ACPI: processor: move acpi_processor_start() after acpi_processor_add() ACPI: processor: remove .start() method ACPI: memory hotplug: remove .start() method ACPI: EC: move acpi_ec_start() after acpi_ec_add() ACPI: EC: remove .start() method ACPI: EC: remove .stop() method ACPI: remove unused acpi_device_ops .stop method PCI: use dev_printk in quirk messages PCI hotplug: acpiphp: remove superfluous _HPP/_HPX evaluation PCI hotplug: acpiphp: don't cache hotplug_params in acpiphp_bridge PCI hotplug: clean up acpi_get_hp_params_from_firmware() interface PCI hotplug: add pci_configure_slot() PCI hotplug: pciehp: use generic pci_configure_slot() PCI hotplug: shpchp: use generic pci_configure_slot() PCI hotplug: acpiphp: use generic pci_configure_slot() PCI hotplug: clean up acpi_run_hpp() ACPI: simplify deferred execution path ACPI: remove null pointer checks in deferred execution path ACPI: don't pass handle for fixed hardware notifications ACPI: remove cpumask_t usage ACPICA: fixup after acpi_get_object_info() change ACPI: add debug for device addition ACPI: remove unused acpi_bus_scan_fixed() argument ACPI: remove redundant "handle" and "parent" arguments ACPI: save device_type in acpi_device ACPI: use device_type rather than comparing HID ACPI: remove acpi_device_set_context() "type" argument ACPI: remove redundant "type" arguments ACPI: remove unnecessary argument checking ACPI: add acpi_bus_get_parent() and remove "parent" arguments ACPI: convert acpi_bus_scan() to operate on an acpi_handle ACPI: enumerate namespace before adding functional fixed hardware devices ACPI: identify device tree root by null parent pointer, not ACPI_BUS_TYPE ACPI: use acpi_walk_namespace() to enumerate devices ACPI: add acpi_bus_get_status_handle() ACPI: factor out device type and status checking ACPI: handle re-enumeration, when acpi_devices might already exist ACPI: fix synthetic HID for \_SB_ ACPI: use acpi_device_hid() when possible ACPI: make sure every acpi_device has an ID ACPI: maintain a single list of _HID and _CID IDs ACPI: remove acpi_device.flags.compatible_ids ACPI: remove acpi_device.flags.hardware_id ACPI: remove acpi_device_uid() and related stuff ACPI: simplify building device HID/CID list ACPI: i2c-scmi: don't use acpi_device_uid() Boaz Harrosh (1): exofs: remove BKL from super operations Bob Copeland (25): ath5k: cleanup ath5k_hw struct ath5k: enable hardware LEDs ath5k: send buffered frames after the beacon ath5k: rework beacon configuration ath: remove unnecessary return in ath_regd_get_band_ctl ath5k: do not release irq across suspend/resume ath5k: write PCU registers on initial reset mac80211: disable beacons before removing the associated interface ath5k: update PCU opmode whenever a new interface is added ath5k: fix CAB queue operation wl1251: separate bus i/o code into io.c wl1251: use wiphy_dev instead of wl->spi->dev wl1251: introduce wl1251_if_operations struct wl1251: make wl1251_set_partition bus agnostic wl1251: move module probe methods into spi.c wl1251: split spi interface into separate module wl1251: add sdio support wl1251: make irq handling interface specific wl1251: correct definitions for 0th bit defines wl1251: halt the embedded CPU before loading firmware ath5k: clean up filter flags setting ath5k: use the skb->cb directly for RX status ath5k: add hardware CCMP encyption support ath5k: clarify srev comparison for CCMP check cfg80211: fix looping soft lockup in find_ie() Bob Liu (1): USB: uhci: rm repeatedly evaluation for urbp->qh Bob Moore (29): ACPICA: Fix several pointer casts to avoid possible compile warnings ACPICA: Remove duplicate extern declarations for public globals ACPICA: Add 64-bit support to acpi_read and acpi_write ACPICA: Remove duplicate prototypes from header ACPICA: Major update for acpi_get_object_info external interface ACPICA: Fix possible memory leak in nspredef ACPICA: Fix several acpi_attach_data problems ACPICA: Dump table header - suppress output of non-printable characters ACPICA: Fix: Predefined object repair executed only once ACPICA: Clarify common suffix for error/warning messages ACPICA: ACPI 4.0: Changes for existing ACPI tables. ACPICA: Update version to 20090625 ACPICA: Move predefined repair code to new file, no functional change ACPICA: Add repair for predefined methods that return nested packages ACPICA: ACPI 4.0 : Add new return package type, restructure module. ACPICA: Fix fault if acpi_terminate is called twice ACPICA: Split large ACPI table header ACPICA: ACPI 4: Update headers for new and changed ACPI tables. ACPICA: ACPI 4: Add validation for new predefined names. ACPICA: Update definitions for HEST table ACPICA: Fix typo for HEST ACPI table ACPICA: acpi_reset: Bypass port validation mechanism ACPICA: Update version to 20090730 ACPICA: Fix extraneous warning if _DSM returns a package ACPICA: Remove error message for Store(Localx,Localx) ACPICA: Fix memory leak for ill-formed Package objects ACPICA: Update _OSI with new Windows OS strings ACPICA: Windows compatibility: autoexecute root _INI method ACPICA: Update version to 20090903. Bob Peterson (1): GFS2: Add "-o errors=panic|withdraw" mount options Borislav Petkov (25): x86, mce: fix typo in comment in asm/mce.h x86, mce: use atomic_inc_return() instead of add by 1 ide-tape: convert to ide_debug_log macro ide-tape: fix handling of postponed rqs x86, msr: Add rd/wrmsr interfaces with preset registers x86, msr: Rewrite AMD rd/wrmsr variants x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit EDAC: move MCE error descriptions to EDAC core EDAC: beef up ErrorCodeExt error signatures amd64_edac: cleanup amd64_process_error_info amd64_edac: cleanup/complete NB MCE decoding amd64_edac: remove memory and GART TLB error decoders amd64_edac: cleanup amd64_decode_bus_error x86, mce: pass mce info to EDAC for decoding EDAC, AMD: carve out MCi_STATUS decoding EDAC, AMD: carve out decoding of MCi_STATUS ErrorCode EDAC, AMD: decode data cache MCEs EDAC, AMD: decode instruction cache MCEs EDAC, AMD: decode bus unit MCEs EDAC, AMD: decode load store MCEs EDAC, AMD: decode FR MCEs x86, mce: do not compile mcelog message on AMD amd64_edac: cleanup amd64_check_ecc_enabled amd64_edac: check NB MCE bank enable on the current node properly acerhdf: convert to dev_pm_ops Brian G. Merrell (1): Staging: USB-IP code cleanup Brian Haley (2): netlink: silence compiler warning ipv6: Add IFA_F_DADFAILED flag Brian Johnson (5): V4L/DVB (12351): gspca - sn9c20x: Misc fixes V4L/DVB (12704): gspca - sn9c20x: Fix exposure on SOI968 sensors V4L/DVB (12705): gspca - sn9c20x: Add SXGA support to SOI968 V4L/DVB (12706): gspca - sn9c20x: disable exposure/gain controls for MT9M111 sensors. V4L/DVB (12707): gspca - sn9c20x: Add SXGA support to MT9M111 Brian King (2): [SCSI] ipr: fix buffer overflow powerpc/pseries: Fix to handle slb resize across migration Brian Kloppenborg (1): V4L/DVB (12878): gspca - m5602-s5k4aa: Add vflip quirk for the GX700 Brian Niebuhr (2): USB: Fix CDC EEM host driver 'sentinel' CRC validation USB: gadget: Add EEM gadget driver Brian Swetland (3): Staging: HTC Dream: add smd code Staging: HTC Dream: add rpcrouter driver Staging: HTC Dream: add camera support Brice Goglin (3): perf report: Fix and improve the displaying of per-thread event counters perf report: Add raw displaying of per-thread counters myri10ge: improve parity error detection and recovery Bruno Premont (1): HID: driver for Twinhan USB 6253:0100 remote control Byungho Min (8): ARM: S5PC100: Memory map ARM: S5PC100: UART and Serial ARM: S5PC100: CPU initialization ARM: S5PC100: GPIO and I2C ARM: S5PC100: IRQ and timer ARM: S5PC100: Clock and PLL support ARM: S5PC100: Kconfigs and Makefiles ARM: S5PC100: Board and configuration file Candelaria Villareal, Jorge (4): ASoC: TWL4030: Add EXTMUTE to reduce pop-noise effect ASoC: Zoom2: Update twl4030_setup_data parameters ASoC: SDP3430: Add support for EXTMUTE using TWL GPIO6 ASoC: SDP3430: Fix TWL GPIO6 pin mux request Carl Shaw (1): sh: Improve unwind info for signals Carsten Emde (3): tracing: prevent NULL pointer dereference in ftrace_raw_event_block_bio_bounce tracing: remove unused local variables in tracer probe functions tracing: do not update tracing_max_latency when tracer is stopped Casey Dahlin (2): dlm: fix double-release of socket in error exit path lib/swiotlb.c: Fix strange panic message selection logic when swiotlb fills up Catalin Marinas (35): Thumb-2: Add some .align statements to the .S files Thumb-2: Add macros for the unified assembler syntax Thumb-2: Implementation of the unified start-up and exceptions code Thumb-2: Implement the unified arch/arm/mm support Thumb-2: Implement the unified arch/arm/lib functions Thumb-2: Implement the unified VFP support Thumb-2: Implement the unified boot code Thumb-2: Add support for loadable modules Thumb-2: Pass a Thumb-2 address to the secondary CPUs to jump to Thumb-2: Make the uImage entry an odd number Thumb-2: Add Thumb-2 support to the build files nommu: Fix the fault processing for the MMU-less case nommu: Remove the context.id from asm-offsets.c when !MMU nommu: Add MMU-less support for Integrator platforms nommu: Add MMU-less support for the RealView boards nommu: Do not override the CP15 control reg value returned from initfunc nommu: Remove the memory_start/end variables from ARM page-nommu.h nommu: Add noMMU support to the DMA API nommu: Include asm/setup.h in arch/arm/mm/nommu.c nommu: Add #ifdef CONFIG_MMU around the PTE sanity checks nommu: Do not allow REALVIEW_HIGH_PHYS_OFFSET if !MMU nommu: Fix compressed/head.S to not perform MMU specific operations nommu: Do not set PRRR and NMRR in proc-v7.S if !MMU Include linux/sched.h in arch/arm/mm/fault.c kmemleak: Allow rescheduling during an object scanning kmemleak: Dump object information on request kmemleak: Mark the early log buffer as __initdata kmemleak: Save the stack trace for early allocations kmemleak: Do not report alloc_bootmem blocks as leaks kmemleak: Ignore the aperture memory hole on x86_64 kmemleak: Scan all thread stacks kmemleak: Do no create the clean-up thread during kmemleak_disable() kmemleak: Improve the "Early log buffer exceeded" error message Clear the exclusive monitor when returning from an exception Thumb-2: Correctly handle undefined instructions in the kernel Chaithrika U S (20): ASoC: Introduce platform driver model for dm644x, dm355 ASoC: Add mcasp support for DM646x ASoC: Add machine driver support for DM646x ASoC: Minor fixes to DaVinci I2S probe function ASoC: DaVinci: Support Audio on DA830 EVM ASoC: DaVinci: McASP driver enhacements ASoC: DaVinci: Add a DAI format to McASP driver ASoC: DaVinci: Add audio support fot DA850/OMAP-L138 EVM davinci: dm646x: Adds McASP clock davinci: ASoC: Add the platform devices for ASP davinci: Audio support for DA830 EVM davinci: Audio support for DA850/OMAP-L138 EVM davinci: audio: move tlv320aic33 i2c setup into board files ASoC: davinci: i2c device creation moved into board files ASoC: DaVinci: Fixes to McASP configuration V4L/DVB (12175): davinci/vpif: Add Video Port Interface (VPIF) driver V4L/DVB (12176): davinci/vpif_display: Add VPIF display driver V4L/DVB (12177): dm646x: Add an entry for dm646x EVM card at building system V4L/DVB (12178): vpif_display: Fix compile time warnings for mutex locking V4L/DVB (12453a): DaVinci: DM646x: Update the structure name as per header file changes Chandra Seetharaman (5): [SCSI] scsi_dh: Reference count scsi_dh_attach [SCSI] scsi_dh: add the interface scsi_dh_set_params() [SCSI] scsi_dh: Provide set_params interface in emc device handler [SCSI] scsi_dh: Use scsi_dh_set_params() in multipath. [SCSI] scsi_dh: add two SUN devices to the list of devices supported by default Changli Gao (1): net: remove redundant sched/ in net/Makefile Charlie Brady (1): [SCSI] scsi_dh_rdac: Add support for Sun StorageTek ST2500, ST2510 and ST2530 Chen Liqin (13): score: Add support for Sunplus S+core architecture score: add maintainers for score architecture score: update files according to review comments score: move save arg5 and arg6 instruction in front of enable_irq Merge branch 'score' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic into for-linus score: remove unused code, add include files in .c score: update inconsistent declare after .c was changed score: add MEMORY_START and MEMORY_SIZE define, to make the code clear score: add old syscall support score: update files according to review comments. score: make init_thread_union align to THREAD_SIZE score: add TIF_NOTIFY_RESUME define in asm/thread_info.h score: update email address in MAINTAINERS. Cheng Renquan (6): kconfig: add symbol value to help find the real depend kconfig: add menu_get_ext_help function to display more information kconfig: make use of menu_get_ext_help in menuconfig kconfig: make use of menu_get_ext_help in qconfig kconfig: make use of menu_get_ext_help in "make config" kconfig: make use of menu_get_ext_help in gconfig Chien Tung (1): RDMA/nes: Map MTU to IB_MTU_* and correctly report link state Chris Ball (2): sdhci: add no-card-no-reset quirk for Ricoh R5C822/Sony Z11 sdhci: increase timeout for internal clock stabilization. Chris Friesen (1): [WATCHDOG] fix book E watchdog to take WDIOC_SETTIMEOUT arg in seconds Chris Leech (15): [SCSI] libfcoe: fcoe_ctlr_destroy use cancel_work_sync instead of flush_work [SCSI] fcoe: fix missing error check in call to fcoe_if_init [SCSI] fcoe: interface changes to fcoe_if_create and fcoe_if_destroy [SCSI] fcoe: Introduce and allocate fcoe_interface structure, 1:1 with net_device [SCSI] fcoe: move netdev to fcoe_interface [SCSI] fcoe: move packet handlers from fcoe_port to fcoe_interface [SCSI] fcoe: move FIP controller from fcoe_port to fcoe_interface [SCSI] fcoe: move offload exchange manager pointer from fcoe_port to fcoe_interface [SCSI] fcoe: remove fcoe_interface->priv pointer [SCSI] fcoe: fcoe_interface create, destroy and refcounting [SCSI] fcoe: split out per interface setup [SCSI] fcoe: add mutex to protect create and destroy [SCSI] fcoe: move the host-list add/remove to keep out VN_Ports [SCSI] fcoe: Fix module ref count bug by adding NETDEV UNREGISTER handling [SCSI] fcoe: use rtnl mutex in place of hostlist lock Chris Mason (29): Btrfs: Allow worker threads to exit when idle Btrfs: optimize set extent bit Btrfs: keep irqs on more often in the worker threads Btrfs: reduce worker thread spin_lock_irq hold times Btrfs: use larger nr_to_write for larger extents Btrfs: tweak congestion backoff Btrfs: switch extent_map to a rw lock Btrfs: Fix new state initialization order Btrfs: reduce CPU usage in the extent_state tree Btrfs: cache values for locking extents Btrfs: don't lock bits in the extent tree during writepage Btrfs: use a cached state for extent state operations during delalloc Btrfs: Use PagePrivate2 to track pages in the data=ordered code. Btrfs: Fix extent replacment race Btrfs: fix btrfs page_mkwrite to return locked page Btrfs: zero page past end of inline file items Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Btrfs: fix async worker startup race Btrfs: fix worker thread double spin_lock_irq Btrfs: Fix async thread shutdown race ext3: Add locking to ext3_do_update_inode Btrfs: properly honor wbc->nr_to_write changes Btrfs: search for an allocation hint while filling file COW Btrfs: deal with NULL space info Btrfs: fix early enospc during balancing Btrfs: fix errors handling cached state in set/clear_extent_bit Btrfs: Fix test_range_bit for whole file extents Btrfs: fix releasepage to avoid unlocking extents we haven't locked Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable into for-linus Chris Verges (2): rtc: Philips PCF2123 RTC SPI driver rtc-philips-pcf2123-rtc-spi-driver-updates Chris Wilson (21): drm/i915: Pad ringbuffer with NOOPs before wrapping drm/i915: Only destroy a constructed mmap offset drm/i915: Add buffer to inactive list immediately during fault drm/i915: Remove stored gtt_alignment drm/i915: Include buffer size and dirty state in debugfs lists drm/i915: Register a shrinker to free inactive lists under memory pressure drm/i915: Add ioctl to set 'purgeability' of objects drm/i915: Improve behaviour under memory pressure drm/i915: Check that the relocation points to within the target drm/i915: Skip the sanity checks if the current relocation is valid drm/i915: Add tracepoints drm/i915: Clean up evict from list. drm/i915: Search harder for a reusable object drm/i915: BUG_ON page refleak during unbind drm/i915: Whitespace correction for madv drm/i915: Do not mis-classify clean objects as purgeable drm/i915: Immediately discard any backing storage for uneeded objects drm/i915: Remove eviction debug spam drm/i915: Track purged state. drm/i915: Warn before mmaping a purgeable buffer. drm/i915: Handle ERESTARTSYS during page fault Christian Borntraeger (3): KVM: s390: Fix memslot initialization for userspace_addr != 0 oprofile: fix oprofile regression: select RING_BUFFER_ALLOW_SWAP [S390] ptrace: use common code for simple peek/poke operations Christian Ehrhardt (4): KVM: s390: infrastructure to kick vcpus out of guest state KVM: s390: fix signal handling KVM: s390: streamline memslot handling KVM: remove redundant declarations Christian Kujau (1): crypto: rng - Fix typo Christian Lamparter (31): ar9170usb: module link in sysfs p54: redo rx_status into skb->cb p54: Move eeprom code p54: Move eeprom header p54: Move firmware code p54: Move LED code p54: Move LMAC interface definitions p54: Move mac80211 glue code p54: Move TX/RX code p54: Modify p54 files for new organization p54: two endian fixes p54spi: remove dead code and definitions p54usb: fix stalls caused by urb allocation failures p54: fix queue stall due to underrun p54: re-enable power save feature p54: generate channel list dynamically ar9170: implement transmit aggregation p54: remove useless code p54: fix beaconing related firmware crash p54: fix a fw crash caused by statistic feedback mac80211: do not monitor the connection while scanning mac80211: fix spare warnings in driver-trace.h p54: Write outside array bounds p54: implement rfkill p54: disable PS by default ar9170: refactor configure_filter p54: fix broadcast buffering in AP mode ar9170: implement frequency calibration for one-stage/openfw p54usb: add Zcomax XG-705A usbid p54usb: add Zcomax XG-705A usbid ar9170usb: add usbid for TP-Link TL-WN821N v2 Christian Thaeter (1): trivial: doc: hpfall: reduce risk that hpfall can do harm Christof Schmitt (13): [SCSI] zfcp: Move debug data from zfcp_data to own data structure [SCSI] zfcp: Only collect SCSI debug data for matching trace levels [SCSI] zfcp: Only collect FSF/HBA debug data for matching trace levels [SCSI] zfcp: Remove useless assignment [SCSI] zfcp: Only issue one test link command per port [SCSI] zfcp: Implicitly close all wka ports [SCSI] zfcp: Decouple gid_pn requests from erp [SCSI] zfcp: Use kthread API for zfcp erp thread [SCSI] zfcp: Simplify and update ct/gs and els timeout handling [SCSI] zfcp: Defer resource allocation to first ccw_set_online call [SCSI] zfcp: Replace config semaphore with mutex [SCSI] zfcp: Handle failures during device allocation correctly [SCSI] zfcp: Remove duplicated code for debug timestamps Christoph Hellwig (46): sh: convert to asm-generic/hardirq.h xfs: avoid memory allocation under m_peraglock in growfs code xfs: switch to NOFS allocation under i_lock in xfs_getbmap xfs: switch to NOFS allocation under i_lock in xfs_da_state_alloc xfs: switch to NOFS allocation under i_lock in xfs_da_buf_make xfs: switch to NOFS allocation under i_lock in xfs_dir_cilookup_result xfs: switch to NOFS allocation under i_lock in xfs_buf_associate_memory xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_set xfs: switch to NOFS allocation under i_lock in xfs_readlink_bmap xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_get xfs: check for dinode realtime flag corruption xfs: fix spin_is_locked assert on uni-processor builds xfs: fix locking in xfs_iget_cache_hit powerpc/sputrace: Use the generic event tracer powerpc: Switch to asm-generic/hardirq.h CRIS: convert to asm-generic/hardirq.h xfs: improve xfs_inobt_get_rec prototype xfs: improve xfs_inobt_update prototype xfs: untangle xfs_dialloc xfs: rationalize xfs_inobt_lookup* xfs: merge fsync and O_SYNC handling xfs: simplify xfs_trans_iget xfs: actually enable the swapext compat handler xfs: un-static xfs_inobt_lookup ext4: fix cache flush in ext4_sync_file xfs: use correct log reservation when handling ENOSPC in xfs_create KVM: cleanup arch/x86/kvm/Makefile [S390] remove unused irq_cpustat_t defintion block: use blkdev_issue_discard in blk_ioctl_discard vfs: Rename generic_file_aio_write_nolock fsync: wait for data writeout completion before calling ->fsync m68knommu: convert to asm-generic/hardirq.h writeback: merely wakeup flusher thread if work allocation fails for WB_SYNC_NONE MIPS: Convert to asm-generic/hardirq.h tracing: Remove markers h8300: convert to asm-generic/hardirq.h alpha: convert to asm-generic/hardirq.h m32r: convert to asm-generic/hardirq.h m68k: convert to asm-generic/hardirq.h um: convert to asm-generic/hardirq.h virtio_blk: add support for cache flush ntfs: remove ntfs_file_write qnx4: remove write support FRV: Use asm/generic-hardirq.h freeze_bdev: kill bd_mount_sem freeze_bdev: grab active reference to frozen superblocks Chuck Ebbert (1): [CIFS] Re-enable Lanman security Chuck Lever (31): SUNRPC: handle IPv6 PKTINFO when extracting destination address NFS: Fix up new minorversion= option NFS: Add ability to send MOUNTPROC_UMNT to the kernel's mountd client NFS: Fix auth flavor len accounting NFS: Use the authentication flavor list returned by mountd SUNRPC: Clean up RPCBIND_MAXUADDRLEN definitions SUNRPC: Move XDR data type size macros SUNRPC: Provide functions for managing universal addresses SUNRPC: Remove duplicate universal address generation SUNRPC: Use rpc_ntop() for constructing transport address strings NFS: Replace nfs_parse_ip_address() with rpc_pton() NFS: Replace nfs_set_port() with rpc_set_port() lockd: Replace nlm_clear_port() lockd: Replace nsm_display_address() with rpc_ntop() NFSD: Support IPv6 addresses in write_failover_ip() SUNRPC: Introduce new xdr_stream-based encoders to rpcb_clnt.c SUNRPC: Clean up: Remove unused XDR encoder functions from rpcb_clnt.c SUNRPC: Introduce xdr_stream-based decoders for RPCB_UNSET SUNRPC: Introduce new xdr_stream-based decoders to rpcb_clnt.c SUNRPC: Clean up: Remove unused XDR decoder functions from rpcb_clnt.c SUNRPC: Eliminate PROC macro from rpcb_clnt SUNRPC: Rename sock_xprt.addr as sock_xprt.srcaddr SUNRPC: Kill RPC_DISPLAY_ALL SUNRPC: Update xprt address strings after an rpcbind completes SUNRPC: Add documenting comments in net/sunrpc/timer.c NFS: Handle a zero-length auth flavor list NFS: Mount option parser should detect missing "port=" NFS: Refactor NFSv4 text-based mount option validation NFS: Move details of nfs4_get_sb() to a helper NFS: Allow the "nfs" file system type to support NFSv4 NFS: Add nfs_alloc_parsed_mount_data Clemens Ladisch (16): sound: usb-audio: Xonar U1 digital output support seq-midi: always log message on output overrun sound: usb-audio: use multiple input URBs sound: usb-audio: use multiple output URBs sound: usb-audio: add MIDI drain callback sound: seq_midi: do not send MIDI reset when closing sound: seq_oss_midi: remove magic numbers sound: rawmidi: disable active-sensing-on-close by default sound: usb-audio: do not make URBs longer than sync packet interval sound: ymfpci: increase timer resolution to 96 kHz sound: fix OSS MIDI output data loss sound: snd_ctl_elem_add: fix value count check sound: snd_ctl_remove_unlocked_id: simplify error paths sound: snd_ctl_remove_unlocked_id: simplify user control counting sound: snd_ctl_remove_user_ctl: prevent removal of kernel controls sound: oxygen: work around MCE when changing volume Cliff Cai (5): ASoC: Blackfin AC97: fix resume handling ASoC: Blackfin I2S: fix resume handling Blackfin: bf533-stamp: fix typo in SPI frequency for ad1836 codec ASoC: Blackfin AC97: add a few missing multichannel define handling ASoC: Blackfin I2S: fix resuming when device hasn't been used Coly Li (1): dlmglue.c: add missed mlog lines Corbin Simpson (1): Input: xpad - add USB ID for the drumkit controller from Rock Band Corentin Chary (18): eeepc-laptop: add rfkill support for the Wimax in ASUS Eee PC 1000HG eeepc-laptop: document sysfs interface video/backlight: document sysfs interface video/lcd: document sysfs interface led: document sysfs interface asus-laptop: Show HRWS in infos and fix output format asus-laptop: Add *_led_get() functions asus-laptop: Map X50R hotkeys asus-laptop: set maximum led brightness asus-laptop: Add support for Keyboard backlight asus-laptop: handle keyboard backlight keys asus-laptop: Add suport for another "Media" key asus-laptop: Add "calculator" hotkey asus-laptop: document the module asus-laptop: document sysfs interface asus-laptop: Fix coding style for comments thinkpad_acpi: fix rfkill memory leak on unload hp-wmi: fix rfkill memory leak on unload Corrado Zoccolo (1): cpuidle: menu governor: reduce latency on exit Cosmin Ratiu (1): ipv6: Fix tcp_v6_send_response(): it didn't set skb transport header Crane Cai (2): i2c-piix4: Add AMD SB900 SMBus device ID i2c: Add driver for SMBus Control Method Interface Csaba Henk (4): fuse: make the number of max background requests and congestion threshold tunable fuse: use drop_nlink() instead of direct nlink manipulation fuse: limit user-specified values of max background requests fuse: add fusectl interface to max_background Curt Wohlgemuth (1): ext4: More buffer head reference leaks Cyrill Gorcunov (14): net, bridge: align br_nf_ops assignment net, netns_xt: shrink netns_xt members x86: Clean up idt_descr and idt_tableby using NR_VECTORS instead of hardcoded number x86, ipi: Clean up safe_smp_processor_id() by using the cpu_has_apic() macro helper x86, ioapic: Introduce for_each_irq_pin() helper x86, ioapic: Throw BUG instead of NULL dereference x86, apic: Drop redundant bit assignment x86, ioapic: Panic on irq-pin binding only if needed net,pppoe: fixup module init/exit subsequent calls x86, ioapic: Define IO_APIC_DEFAULT_PHYS_BASE constant x86, ioapic: Get rid of needless check and simplify ioapic_setup_resources() x86, e820: Guard against array overflowed in __e820_add_region() x86, apic: Slim down stack usage in early_init_lapic_mapping() x86, apic: Fix missed handling of discrete apics Daisuke Nishimura (3): mm: add_to_swap_cache() must not sleep mm: add_to_swap_cache() does not return -EEXIST memcg: show swap usage in stat file Damian Lukowski (5): Revert Backoff [v3]: Rename skb to icmp_skb in tcp_v4_err() Revert Backoff [v3]: Revert RTO on ICMP destination unreachable Revert Backoff [v3]: Calculate TCP's connection close threshold as a time value. RTO connection timeout: coding style fixes and comments RTO connection timeout: sysctl documentation update Dan Carpenter (2): intel-iommu: double kfree() drivers/char/rio/rioctrl.c: off by one error in rioctrl.c Dan Williams (85): Merge branch 'dmaengine' into async-tx-raid6 async_tx: rename zero_sum to val async_tx: kill ASYNC_TX_DEP_ACK flag async_tx: structify submission arguments, add scribble async_xor: permit callers to pass in a 'dma/page scribble' region md/raid6: release spare page at ->stop() ioat: move to drivers/dma/ioat/ libertas: clean up and clarify get_common_rates md/raid6: move the spare page to a percpu allocation md/raid5,6: add percpu scribble region for buffer lists async_tx: add sum check flags async_tx: kill needless module_{init|exit} async_tx: remove walk of tx->parent chain in dma_wait_for_async_tx async_tx: add support for asynchronous GF multiplication async_tx: add support for asynchronous RAID6 recovery operations dmatest: add pq support async_tx: raid6 recovery self test iop-adma: cleanup iop_adma_run_tx_complete_actions iop-adma: fix lockdep false positive iop-adma: P+Q support for iop13xx adma engines iop-adma: P+Q self test md/raid5: factor out mark_uptodate from ops_complete_compute5 md/raid6: asynchronous raid6 operations md/raid6: asynchronous handle_parity_check6 md/raid456: distribute raid processing over multiple cores Merge commit 'v2.6.31-rc1' into dmaengine ioat: move definitions to dma.h ioat: convert ioat_probe to pcim/devm ioat: cleanup some long deref chains and 80 column collisions ioat: kill function prototype ifdef guards ioat: split ioat_dma_probe into core/version-specific routines ioat: fix type mismatch for ->dmacount ioat: define descriptor control bit-field ioat1: move descriptor allocation from submit to prep ioat: fix self test interrupts ioat: prepare the code for ioat[12]_dma_chan split ioat2,3: convert to a true ring buffer ioat1: kill unused unmap parameters ioat: add some dev_dbg() calls ioat: cleanup completion status reads ioat: ignore reserved bits for chancnt and xfercap ioat: preserve chanctrl bits when re-arming interrupts ioat: ___devinit annotate the initialization paths ioat1: trim ioat_dma_desc_sw ioat: switch watchdog and reset handler from workqueue to timer ioat2,3: dynamically resize descriptor ring net_dma: poll for a descriptor after allocation failure Merge branch 'md-raid6-accel' into ioat3.2 dmaengine: add fence support dmaengine, async_tx: add a "no channel switch" allocator dmaengine: cleanup unused transaction types dmaengine, async_tx: support alignment checks ioat2+: add fence support ioat3: hardware version 3.2 register / descriptor definitions ioat3: split ioat3 support to its own file, add memset ioat: add 'ioat' sysfs attributes ioat3: enable dca for completion writes ioat3: xor support ioat3: xor self test ioat3: pq support ioat3: support xor via pq descriptors ioat3: interrupt descriptor support ioat3: segregate raid engines Merge branch 'ioat' into dmaengine dw_dmac: implement a private tx_list fsldma: implement a private tx_list iop-adma: implement a private tx_list ioat: implement a private tx_list mv_xor: implement a private tx_list at_hdmac: implement a private tx_list txx9dmac: implement a private tx_list dmaengine: kill tx_list ioat2,3: cacheline align software descriptor allocations Merge branch 'iop-raid6' into async-tx-next Merge branch 'dmaengine' into async-tx-next Merge commit 'md/for-linus' into async-tx-next async_tx: remove HIGHMEM64G restriction ioat: driver version 4.0 at_hdmac: Rework suspend_late()/resume_early() md/raid6: eliminate BUG_ON with side effect md/raid6: cleanup ops_run_compute6_2 ioat2: clarify ring size limits raid6test: fix stack overflow ioat3: fix uninitialized var warnings async_tx/raid6: add missing dma_unmap calls to the async fail case Daniel C Halperin (15): iwlwifi: clear iwl_cmd_meta structure before use iwlwifi: remove unused HT configuration entry tx_chan_width iwlwifi: include HT configuration when adding stations through rs_rate_init iwlwifi: refactor packet reception code iwlwifi: configure HT40 channels in iwl_mac_config iwlwifi: check short GI support per-station rather than globally iwlwifi: use station HT capabilities and BSS operating mode for Green-field iwlwifi: fix erroneous use of iwl_rx_packet.len as a length iwlwifi: clear rate control flags on non-HT packet iwlwifi: set HT flags in ieee80211_rx_status for received packets iwlwifi: remove 60 Mbps from sband bitrates table iwlwifi: remove incorrect uses of ieee80211_get_tx_rate to prevent TX stall iwlwifi: use iwl_hwrate_get_mac80211_idx where appropriate iwlwifi: fix HT operation in 2.4 GHz band iwlwifi: fix HT operation in 2.4 GHz band Daniel Drake (1): ALSA: hda - Add CX20582 and OLPC XO-1.5 support Daniel Glöckner (1): gpiolib: allow poll() on value Daniel Mack (29): ds2760_battery: delay power supply registration ds2760_battery: export more features ds2760_battery: add rated_capacity module parameter ds2760_battery: handle full_active_uAh == 0 case correctly ds2760_battery: add current_accum module parameter power_supply: EXPORT_SYMBOL cleanups power_supply: get_by_name and set_charged functionality ds2760_battery: implement set_charged() feature ALSA: ASoC: cs4270: move power management hooks to snd_soc_codec_device net: smsc911x: switch to new dev_pm_ops MX3: Add USB platform devices and resources MX3: add additional USB pins to iomux Input: eeti_ts - allow active high irq lines ARM: MX3: add ckil clock libertas: name the network device wlan%d ds2760_battery: Fix integer overflow for time_to_empty_now [ARM] pxa: add MFP_PULL_FLOAT [ARM] pxa: add clock definition for graphics controller [ARM] pxa: add device definition for graphics controller [ARM] pxa: rename GCU IRQ for consistency [ARM] pxafb: use resource_size() function [ARM] pxa/colibri: add NAND config for Colibri PXA3xx boards [ARM] pxafb: add accelerator ID for PXA3xx GCU UIO: remove 'default n' from Kconfig lis3: fix typo lis3: add free-fall/wakeup function via platform_data lis3: add power management functions lis3_spi: code cleanups rtc: add driver for MXC's internal RTC module Daniel Ribeiro (13): ASoC: Allow 32 bit registers for DAPM ASoC: remove duplicated code on pxa-ssp.c ASoC: change set_tdm_slot api to allow slot_width override. [ARM] pxa/ezx: set IRQ_BOARD_END for EZX mfd: Introduce irq_to_pcap() mfd: add set_ts_bits for pcap mfd: fix pcap irq bottom handler mfd: add ezx_pcap_setbits regulator: add pcap driver mfd: Remove VIB defines from pcap header file input: PCAP2 based touchscreen driver input: PCAP2 misc input driver rtc: driver for PCAP2 PMIC Daniel Silverstone (1): IEEE80154: Add documentation to the IEEE80154 netlink and fakehard driver Daniel Stone (1): omapfb: dispc: allow multiple external IRQ handlers Daniel Vetter (2): drm/i915: remove open-coded drm_mode_object_find drm/i915: modeset: always set intel_crtc->dpms_mode by moving the assignment up. Daniel Walker (12): mac80211: New stat counters for multicast and unicast forwarded frames staging: android: binder: move debugging mask into a macro staging: android: binder: remove a predefine staging: android: binder: add enum usage in function arguments staging: android: binder: global variable cleanup. staging: android: binder: clean up for all the stat statments Staging: android: binder: cleanup some long lines Staging: android: lowmemorykiller: remove a predefine Staging: android: lowmemorykiller: delete the decription file Staging: android: binder: partial checkpatch cleanup x86: apic: Convert BUG() to BUG_ON() checkpatch: handle C99 comments correctly (performance issue) Daniele Napolitano (1): Staging: rt2870: new USB ID for Belkin N+ F5D8055 Darren Hart (8): futex: Correct futex_wait_requeue_pi() commentary futex: Detect mismatched requeue targets futex: Correct futex_wait_requeue_pi() commentary futex: Correct queue_me and unqueue_me commentary futex: Make function kernel-doc commentary consistent futex: Correct futex_q woken state commentary futex: Fix wakeup race by setting TASK_INTERRUPTIBLE before queue_me() futex: Add memory barrier commentary to futex_wait_queue_me() Darrick J. Wong (1): hwmon driver for ACPI 4.0 power meters Dave Airlie (47): Merge git://git.infradead.org/~dwmw2/iommu-agp into agp-next Merge git://git.infradead.org/~dwmw2/iommu-agp into agp-next drm: fixup include file in drm_encoder_slave drm: fixup includes in encoder slave header files. Merge Linus master to drm-next drm/radeon/kms: generate the safe register tables. drm/ttm: consolidate cache flushing code in one place. drm/rs600/690: use autogenerated safe register tables. drm/radeon: cleanup mkregtable.c drm/kms: move driver specific fb common code to helper functions (v2) drm: fix two issues with fb consolidation. drm/mm: add ability to dump mm lists via debugfs drm: fix drm_cache.c for arch with no support. drm/kms: add explicit encoder disable function and detach harder. drm/crtc: fix mismerge of last patch. drm/radeon/kms: block depthxy offset from use from userspace. drm/radeon/kms: add updated registers from drm-fixes. drm: split crtc/fb helpers into a separate module drm/kms: remove old std mode fallback code. Merge intel drm-intel-next branch drm/radeon/kms: add rn50/r100/r200 CS tracker. drm/radeon/kms: add initial radeon tv-out support. drm/kms: fix kms helper license + Kconfig drm/kms/radeon: make kms default a runtime option drm/radeon/kms: lower debugging on dpms events. drm: include seq_file.h for debugfs builds. drm/i915: get the bridge device once. drm/radeon/kms: don't allow ERESTART to hit userspace. Merge remote branch 'origin/master' of ../linux-2.6 into drm-next PCI/vgaarb: cleanup some warnings + cleanup some comments. drm/radeon/kms: set fbdev_info for suspend/resume drm/radeon/kms: add 32/64 ioctl support. drm/radeon/kms: we should return 0 when we have no modes not -1. drm/radeon/kms: IB locking dumps out a lockdep ordering issue drm/radeon: avivo chips have no separate int bit for display drm/radeon/kms: reprogram format in set base. drm/r600/kms: fixup number of loops per blit calculation. drm/radeon/kms: add initial connector properties drm/radeon/kms: disable VGA rendering engine before taking over VRAM drm/radeon/r600: fix some issues with suspend/resume. drm/radeon/kms: move around new init path code to avoid posting at init drm/radeon/kms: rv770 blit init called too late. drm/radeon/kms: more alignment for rv770.c with r600.c drm/radeon/kms: more fixes to rv770 suspend/resume path. drm/radeon/kms: r420 idle after programming GA_ENHANCE drm/vgaarb: add VGA arbitration support to the drm and kms. drm/radeon: consolidate family flags used in pciids. Dave Chinner (3): xfs: factor out inode initialisation xfs: factor out debug checks from xfs_dialloc and xfs_difree xfs: speed up free inode search Dave Hansen (1): ecryptfs: improved dependency checking and reporting Dave Jones (11): Remove unused zero-copy code from velocity NIC driver. Fix up CodingStyle problems in via-velocity.c Remove unnecessary forward declarations from velocity NIC driver. Fix typos in comments in via-velocity header. [SCSI] qla2xxx: Fix __LITTLE_ENDIAN definition warnings [CPUFREQ] Reduce scope of cpu_sys_dev in cpufreq_add_dev [CPUFREQ] cleanup up -ENOMEM handling in cpufreq_add_dev [CPUFREQ] Factor out symlink creation from cpufreq_add_dev [CPUFREQ] Factor out interface creation from cpufreq_add_dev [CPUFREQ] Factor out policy setting from cpufreq_add_dev PCI: Document pci_ids.h addition policy. Dave Kleikamp (1): cifs: Replace wrtPending with a real reference count Dave Young (3): printk boot_delay: rename printk_delay_msec to loops_per_msec printk: add printk_delay to make messages readable for some scenarios tty: Fix regressions caused by commit b50989dc David Altobelli (3): hpilo: staging for interrupt handling hpilo: add interrupt handler hpilo: add poll f_op David Brownell (8): Input: dm355evm_keys - use threaded IRQs davinci: sram warning fix davinci: dm365 evm cpld support: leds, card detect, other setup davinci: dm365 gpio irq support Input: add twl4030_keypad driver driver model: constify attribute groups spi: handle TX-only/RX-only rtc: at91rm9200 fixes David Daney (7): MIPS: Octeon: Check all CCAs in cvmx_write_csr. MIPS: Allow kernel use of LL/SC to be separate from the presence of LL/SC. MIPS: Octeon: Set kernel_uses_llsc to false on non-SMP builds. MIPS: Octeon: Add hardware RNG platform device. MIPS: hw_random: Add hardware RNG for Octeon SOCs. MIPS: Don't corrupt page tables on vmalloc fault. MIPS: Octeon: Move some platform device registration to its own file. David Griego (1): davinci: Fix watchdog reset code David Howells (26): CRED: Add some configurable debugging [try #6] KEYS: Deal with dead-type keys appropriately [try #6] KEYS: Allow keyctl_revoke() on keys that have SETATTR but not WRITE perm [try #6] KEYS: Flag dead keys to induce EKEYREVOKED [try #6] KEYS: Add garbage collection for dead, revoked and expired keys. [try #6] KEYS: Do some whitespace cleanups [try #6] KEYS: Extend TIF_NOTIFY_RESUME to (almost) all architectures [try #6] KEYS: Add a keyctl to install a process's session keyring on its parent [try #6] KEYS: security_cred_alloc_blank() should return int under all circumstances KEYS: Fix default security_session_to_parent() KEYS: Add missing linux/tracehook.h #inclusions CRED: Allow put_cred() to cope with a NULL groups list KEYS: Fix garbage collector RxRPC: Declare the security index constants symbolically RxRPC: Allow key payloads to be passed in XDR form RxRPC: Allow RxRPC keys to be read RxRPC: Parse security index 5 keys (Kerberos 5) RxRPC: Use uX/sX rather than uintX_t/intX_t types MN10300: Handle removal of struct uart_info KEYS: Have the garbage collector set its timer for live expired keys NFS: Propagate 'fsc' mount option through automounts fdpic: ignore the loader's PT_GNU_STACK when calculating the stack size FRV: Flash mappings for the MB93090-MB00 motherboard NOMMU: Fix MAP_PRIVATE mmap() of objects where the data can be mapped directly NOMMU: Fallback for is_vmalloc_or_module_addr() should be inline NOMMU: Ignore mmap() address param as it is a hint David Härdeman (2): pnp: add a shutdown method to pnp drivers input: add a driver for the Winbond WPCD376I Consumer IR hardware David Kilroy (32): cfg80211: add wrapper function to get wiphy from priv pointer cfg80211: Advertise ciphers via WE according to driver capability cfg80211: allow drivers that can't scan for specific ssids cfg80211: set WE encoding size based on available ciphers cfg80211: infer WPA and WPA2 support from TKIP and CCMP orinoco: Move firmware capability determination into hw.c orinoco: Move card reading code into hw.c orinoco: Move FID allocation to hw.c orinoco: use dev_err in early initialisation routines orinoco: firmware helpers should use dev_err and friends orinoco: Replace net_device with orinoco_private in driver interfaces orinoco: initialise independently of netdev orinoco: Change set_tkip to use orinoco_private instead of hermes_t orinoco: initiate cfg80211 conversion orinoco: make firmware download less verbose orinoco: move netdev interface creation to main driver airport: store irq in card private structure orinoco: Handle suspend/restore in core driver orinoco: provide generic commit function orinoco: convert mode setting to cfg80211 orinoco: convert scanning to cfg80211 orinoco: convert giwrange to cfg80211 orinoco: remove WE nickname support orinoco: fix printk format specifier for size_t arguments orinoco: prefer_port3 can be a single bit orinoco: use local types for auth alg and sequence length orinoco: pass orinoco_set_tkip_key the sequence lengths orinoco: move disassociation to hw.c orinoco: add function to retrieve current bssid orinoco: consolidate storage of WEP and TKIP keys cfg80211: fix leaks of wdev->conn->ie orinoco: remove spare whitespace David McKay (1): sh: Allow use of GENERIC_IOMAP David P. Quigley (3): VFS: Factor out part of vfs_setxattr so it can be called from the SELinux hook for inode_setsecctx. LSM/SELinux: inode_{get,set,notify}secctx hooks to access LSM security context information. sysfs: Add labeling support for sysfs David Rientjes (10): slub: add option to disable higher order debugging slabs slub: use size and objsize orders to disable debug flags x86/PCI: default pcibus cpumask to all cpus if it lacks affinity mm: remove obsoleted alloc_pages cpuset comment mm: update alloc_flags after oom killer has been called flex_array: add flex_array_clear function flex_array: poison free elements flex_array: add flex_array_shrink function flex_array: introduce DEFINE_FLEX_ARRAY flex_array: add missing kerneldoc annotations David Rowe (1): Staging: echo: top bit patch David S. Miller (55): Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for_david' of git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/ISDN-2.6-net-next Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 phonet: Fix build. Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 xfrm6: Fix xfrm6_policy.c build when SYSCTL disabled. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 ide: Fix annoying warning in ide_pio_bytes(). Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 ppp_generic: Help GCC see that 'flen' is always initialized. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan net: Temporarily backout SKB sources tracer. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 xilinx_emaclite: Fix permissions on driver sources. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 WAN: dscc4: Fix warning pointing out a bug. Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ net_sched: add classful multiqueue dummy scheduler r8169: Fix warning in rtl8169_start_xmit(). sparc64: Manage NMI watchdog enabling like x86. sparc64: Kill unnecessary cast in profile_timer_exceptions_notify(). sparc64: Make touch_nmi_watchdog() actually work. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 sparc64: Provide extern decls for sparc_??u_type strings. sparc64: Use nmi_enter() and nmi_exit(), as needed. sparc64: Implement a real set_perf_counter_pending(). sparc64: Initial hw perf counter support. sparc64: Provide hypervisor tracing bit support for perf counters. sparc64: Provide a way to specify a perf counter overflow IRQ enable bit. sparc64: Perf counter 'nop' event is not constant. sparc64: Initial niagara2 perf counter support. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ sparc: Kill PROM console driver. sparc: Update defconfigs. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan wl12xx: Fix print_mac() conversion. sparc64: vio: Kill BUILD_BUG_ON() in vio_dring_avail(). Merge branch 'master' of git://git.infradead.org/users/dwmw2/solos-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-davem at91_can: Forgotten git 'add' of at91_can.c David T.L. Wong (1): V4L/DVB (12423): cxusb, d680 dmbth use unified lgs8gxx code instead of lgs8gl5 David VomLehn (1): USB: use kfifo to buffer usb-generic serial writes David Vrabel (4): uwb: handle radio controller events with out-of-range IDs correctly uwb: stop uwbd thread if rc->start() fails uwb: avoid radio controller reset loops USB: whci-hcd: make endpoint_reset method async David Ward (1): ipv6: Update Neighbor Cache when IPv6 RA is received on a router David Wong (2): V4L/DVB (12271): lgs8gxx: add lgs8g75 support V4L/DVB (12272): cx23885: add card Magic-Pro ProHDTV Extreme 2 David Woo (2): mac80211: Mark a destination sequence number as valid when a PREQ is received. mac80211: Fix invalid length passed to IE parser for PLINK CONFIRM frames David Woodhouse (29): solos: Add some margin-related parameters intel-iommu: Speed up map routines by using cached domain ASAP intel-iommu: Remove superfluous iova_alloc_lock from IOVA code intel-iommu: Defer the iotlb flush and iova free for intel_unmap_sg() too. intel-iommu: Kill pointless intel_unmap_single() function agp: Switch mask_memory() method to take address argument again, not page agp: tidy up handling of scratch pages w.r.t. DMA API agp: Switch agp_{un,}map_page() to take struct page * argument intel-agp: Move repeated sglist free into separate function intel-agp: fix sglist allocation to avoid vmalloc() agp: kill phys_to_gart() and gart_to_phys() intel-iommu: Cope with broken HP DC7900 BIOS intel-iommu: Unify hardware and software passthrough support intel-agp: Set dma mask for i915 agp: fix uninorth build Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6 intel-iommu: make domain_add_dev_info() call domain_context_mapping() ia64: IOMMU passthrough mode shouldn't trigger swiotlb init USB: Work around BIOS bugs by quiescing USB controllers earlier intel-iommu: Cope with yet another BIOS screwup causing crashes Make DISCARD_BARRIER and DISCARD_NOBARRIER writes instead of reads intel-iommu: Limit DOMAIN_MAX_PFN to fit in an 'unsigned long' intel-iommu: Fix integer overflow in dma_pte_{clear_range,free_pagetable}() intel-iommu: Kill DMAR_BROKEN_GFX_WA option. intel-iommu: Disable PMRs after we enable translation, not before mtd: sh_flctl: register sh_flctl using platform_driver_probe() jffs2: Use SLAB_HWCACHE_ALIGN for jffs2_raw_{dirent,inode} slabs Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 USB: Work around BIOS bugs by quiescing USB controllers earlier Davide Libenzi (1): anonfd: split interface into file creation and install Davidlohr Bueso A (1): [SCSI] ch: Check NULL for kmalloc() return Dean Nelson (9): atl1c: return PCI_ERS_RESULT_DISCONNECT on permanent failure atl1e: return PCI_ERS_RESULT_DISCONNECT on permanent failure bnx2: return PCI_ERS_RESULT_DISCONNECT on permanent failure bnx2x: return PCI_ERS_RESULT_DISCONNECT on permanent failure igbvf: return PCI_ERS_RESULT_DISCONNECT on permanent failure ixgb: return PCI_ERS_RESULT_DISCONNECT on permanent failure qlge: return PCI_ERS_RESULT_DISCONNECT on permanent failure s2io: return PCI_ERS_RESULT_DISCONNECT on permanent failure vxge: return PCI_ERS_RESULT_DISCONNECT on permanent failure Deepak Saxena (1): Set proper console speed on resume if console suspend is disabled Denis Karpov (8): mmc: power off once at removal omap_hsmmc: add debugfs entry (host registers) ARM: OMAP: mmc-twl4030: add context loss counter support omap_hsmmc: context save/restore support omap_hsmmc: set open drain bit correctly omap_hsmmc: support for deeper power saving states omap_hsmmc: cleanup macro usage omap_hsmmc: code refactoring Denis Kuplyakov (1): ALSA: hda - Add full audio support on Acer Aspire 7730G notebook Denis Loginov (1): V4L/DVB (12356): gspca - sonixj: Webcam 0c45:6148 added Denis Turischev (1): [WATCHDOG] add SBC-FITPC2 watchdog driver Devin Heitmueller (15): V4L/DVB (12444): em28xx: add support for Terratec Cinergy Hybrid T USB XS remote control V4L/DVB (12740): em28xx: better describe vinctrl registers V4L/DVB (12741): em28xx: make video isoc stream work when VBI is enabled V4L/DVB (12742): em28xx: add raw VBI support for NTSC V4L/DVB (12743): em28xx: fix mmap_mapper with vbi V4L/DVB (12744): em28xx: restructure fh/dev locking to handle both video and vbi V4L/DVB (12745): em28xx: remove unreferenced variable V4L/DVB (12746): em28xx: do not create /dev/vbiX device if VBI not supported V4L/DVB (12747): em28xx: only advertise VBI capability if supported V4L/DVB (12748): em28xx: implement g_std v4l call V4L/DVB (12749): em28xx: remove unneeded code that set VINCTRL register V4L/DVB (12750): em28xx: fix unused variable warning V4L/DVB (12880): em28xx: fix codingstyle issues introduced with VBI support V4L/DVB (12881): em28xx: fix codingstyle issues in em28xx-video.c V4L/DVB (12882): em28xx: remove text editor tags from em28xx-vbi.c Dhananjay Phadke (33): netxen: refresh firmware info after reset netxen: enable ip addr hashing netxen: configure interrupt coalesce defaults netxen: annotate dma watchdog setup netxen: refactor tso code netxen: Add default and limit macros for ring sizes. netxen: clean up firmware version checks netxen: refactor net_device setup code netxen: fix skb alloc size for legacy firmware netxen: add vlan tx acceleration support netxen: update version to 4.0.41 netxen: fix CONFIG_INET=n build netxen: fix vlan tso case netxen: remove unnecessary structures netxen: add hardware LRO support netxen: fix firmware reset logic netxen: refactor tx dma mapping code netxen: remove netxen_nic_phan_reg.h netxen: remove unused code netxen: implement generic pcie semaphore functions netxen: remove netxen_nic_niu.c netxen: fix lro buffer allocation netxen: remove duplicate napi_add netxen: fix infinite loop on dma mapping failure netxen: handle firmware load errors netxen: firmware hang detection netxen: refactor firmware info code netxen: update version to 4.0.50 netxen: improve pci memory access netxen: fix file firmware leak netxen: update copyright netxen: fix minor tx timeout bug netxen: fix firmware init after resume Dhaval Vasa (1): [ARM] Kirkwood: Marvell OpenRD-Base board support Dick Hollenbeck (1): ARM: 5688/1: ks8695_serial: disable_irq() lockup Diego Elio 'Flameeyes' Pettenò (1): gconfig: disable "typeahead find" search in treeviews Dimitri Sivanich (1): drivers/char/uv_mmtimer.c: add memory mapped RTC driver for UV Divy Le Ray (11): cxgb3: AQ100X phy support update cxgb3: fix phy power down cxgb3: Fix T3C MAC max packet size access cxgb3: AEL2020 phy support update cxgb3: use request_firmware() for the EDC registers setup cxgb3: Fix mss table initialization cxgb3: fix mac index mapping cxgb3: Drain Mac Tx fifo when the port goes down. cxgb3: fix EDC filename string cxgb3: fix Gen2 pci default settings cxgb3: fix 2 ports 1G regression Dmitri Belimov (5): V4L/DVB (12487): Fix control AC-3 of the 6752HS V4L/DVB (12488): Add RDS config for BeholdTV cards V4L/DVB (12573): FM1216MK5 FM radio V4L/DVB (12587): Add support BeholdTV X7 card V4L/DVB (13001): Key filter for BeholdTV cards. Dmitri Vorobiev (1): Change "useing" -> "using". Dmitriy Taychenachev (2): MXC: add basic MXC91231 support MXC: add iomux pins configuration support for MXC91231 Dmitry Artamonow (1): ARM: 5712/1: SA1100: initialise spinlock in DMA code Dmitry Baryshkov (8): af_ieee802154: drop IEEE802154_SIOC_ADD_SLAVE declaration nl802154: make ieee802154_policy constant documentation: fix wrt. headers rename nl802154: add support for dumping WPAN interface information af_ieee802154: minor cleanup in dgram_bind af_ieee802154: add support for WANT_ACK socket option nl802154: support START-CONFIRM primitive fakehard: use START-CONFIRM primitive to report START failure Dmitry Belimov (1): V4L/DVB (13011): Change tuner type of BeholdTV cards Dmitry Eremin-Solenikov (8): ieee802154: move headers out of extra directory ieee802154: document the skb->cb usage clearly. ieee802154: add a sysfs representation of WPAN master devices fakehard: add binding to wpan-phy device ieee802154: add support for channel pages from IEEE 802.15.4-2006 Drop ARPHRD_IEEE802154_PHY af_ieee802154: setsockopt optlen arg isn't __user ieee802154: add locking for seq numbers Dmitry Monakhov (1): md: raid-1/10: fix RW bits manipulation Dmitry Torokhov (39): Input: sh_keysc - allow modifying keymap from userspace Merge commit 'v2.6.31-rc4' into next Input: pxa27x_keypad - remove extra clk_disable Driver Core: Make PM operations a const pointer Driver Core: Make PM operations a const pointer Input: i8042 - switch to using dev_pm_ops Input: serio - switch to using dev_pm_ops Input: pxa27x_keypad - switch to using dev_pm_ops Input: tsc2007 - properly shut off interrupts/delayed work Input: tsc2007 - make get_pendown_state platform callback optional Input: serio - don't use serio->write() directly Input: wistron_btns - switch to using dev_pm_ops Input: hil_kbd - switch to use completion instead of semaphore Input: hil_kbd - prepare for merging with hil_ptr Input: combine hil_kbd and hil_ptr drivers Input: w90p910_keypad - adjust to use definitions from matrix_keypad.h Input: psmouse - allow defining read-only attributes Merge commit 'v2.6.31-rc8' into next Input: matrix-keypad - add function to build device keymap ACPI: video - fix potential crash when unloading ACPI: video - rename cdev to cooling_dev -- syntax only Input: atkbd - allow setting force-release bitmap via sysfs Input: wacom_w8001 - simplify querying logic Input: i8042 - bypass AUX IRQ delivery test on laptops Input: sunkbd - fix formatting Input: pxa27x_keypad - allow modifying keymap from userspace Input: i8042 - try disabling and re-enabling AUX port at close Input: i8042 - use boolean type where it makes sense Input: i8042 - use platform_driver_probe Input: psmouse - use boolean type V4L/DVB (12489): pwc - fix few use-after-free and memory leaks Input: wistron_btns - add keymap for AOpen 1557 Merge branch 'next' into for-linus Input: libps2 - additional locking for i8042 ports Input: add generic suspend and resume for input devices Input: atkbd - rely on input core to restore state on resume Input: synaptics_i2c - switch to using __cancel_delayed_work() Input: dm355evm_keys - remove dm355evm_keys_hardirq Input: max7359 - use threaded IRQs Don Skidmore (2): ixgbe: cleanup functions that should have been defined static ixgbe: fix sfp_timer clean up in ixgbe_down Don Wood (10): RDMA/nes: Update refcnt during disconnect RDMA/nes: Allocate work item for disconnect event handling RDMA/nes: Change memory allocation for cqp request to GFP_ATOMIC RDMA/nes: Clean out CQ completions when QP is destroyed RDMA/nes: Add CQ error handling RDMA/nes: Implement Terminate Packet RDMA/nes: Use flush mechanism to set status for wqe in error RDMA/nes: Make poll_cq return correct number of wqes during flush RDMA/nes: Use the flush code to fill in cqe error RDMA/nes: Rework the disconn routine for terminate and flushing Donald Dutile (1): intel-iommu: iommu init error path bug fixes Dongdong Deng (1): b44: the poll handler b44_poll must not enable IRQ unconditionally Doug Graham (2): sctp: Fix piggybacked ACKs V3 minixfs: add missing directory type checking Douglas Gilbert (1): [SCSI] update scsi/constants.c Douglas Schilling Landgraf (2): V4L/DVB (12434): em28xx: fix empire auto-detect V4L/DVB (12720): em28xx-cards: Add vendor/product id for Kworld DVD Maker 2 Eberhard Mattes (1): V4L/DVB (12388): dvb-usb: fix tuning with Cinergy T2 Ed Cashin (1): aoe: end barrier bios with EOPNOTSUPP Ed Lin (1): [SCSI] stex: Add reset code for st_yel (v2) Eduardo Valentin (17): OMAP: McBSP: Add IRQEN, IRQSTATUS, THRESHOLD2 and THRESHOLD1 registers. OMAP: McBSP: Use appropriate value for startup delay OMAP: McBSP: Add transmit/receive threshold handler OMAP: McBSP: Create and export max_(r|t)x_thres property OMAP: McBSP: Rename thres sysfs symbols OMAP: McBSP: Change wakeup signals OMAP: McBSP: Configure NO IDLE mode for DMA mode different of threshold ASoC: OMAP: Enable DMA burst mode ASoC: OMAP: Make DMA 64 aligned ASoC: OMAP: Use McBSP threshold to playback and capture ASoC: OMAP: Use DMA operating mode of McBSP V4L/DVB (12547): v4l2-subdev.h: Add g/s_modulator callbacks to subdev api V4L/DVB (12548): v4l2: video device: Add V4L2_CTRL_CLASS_FM_TX controls V4L/DVB (12549): v4l2: video device: Add FM TX controls default configurations V4L/DVB (12551): FM TX: si4713: Add files to add radio interface for si4713 V4L/DVB (12552): FM TX: si4713: Add files to handle si4713 i2c device V4L/DVB (12554): FM TX: si4713: Add document file Eero Nurkkala (8): OMAP: McBSP: Provide functions for ASoC frame syncronization OMAP: McBSP: Wakeups utilized OMAP: McBSP: Retain McBSP FCLK clockactivity OMAP: McBSP: Do not enable wakeups for no-idle mode OMAP: McBSP: Let element DMA mode hit retention also ASoC: Add runtime check for RFIG and XFIG ASoC: Always syncronize audio transfers on frames OMAP: GPIO: Avoid generating extra IRQs Eilon Greenstein (50): bnx2x: Stop management traffic in loopback test bnx2x: Fan failure bnx2x: Fan failure early detection bnx2x: Adding some mmiowb bnx2x: SMP-safe inter_sem bnx2x: Update vlan_features bnx2x: Supporting BCM8727 PHY bnx2x: Set LED in loopback test bnx2x: Missing parenthesis might result with wrong casting bnx2x: Version 1.48.113-1 bnx2x: Receive traffic that maches management filtering rules bnx2x: Self-test kills management traffic bnx2x: WoL only with current MAC address bnx2x: Version 1.48.114-1 bnx2x: New FW files bnx2x: Using the new FW bnx2x: Removing old FW files bnx2x: Supporting Device Control Channel bnx2x: Advertize flow control normally in MF mode bnx2x: BCM8481 LED4 instead of LASI bnx2x: Reading the FW version of the BCM8481 PHY bnx2x: get_ext_phy_fw_version returns NULL if not applicable bnx2x: BCM8727 FW load bnx2x: Adding XAUI CL73 autoneg support bnx2x: MDC/MDIO CL45 IOCTLs bnx2x: Supporting PHY FW upgrade bnx2x: Removing old PHY FW upgrade code bnx2x: Reporting host statistics to management FW bnx2x: Prefetch the page containing the BD descriptor bnx2x: Adding Likely directive bnx2x: Configurable pause scheme bnx2x: Calling pci_set_drvdata earlier bnx2x: Stop loading if error condition detected bnx2x: Combine get_pcie_width and get_pcie_speed bnx2x: Move printing of version from probe to the init bnx2x: Updating regdump_len at drvinfo bnx2x: Remove the init_dmae field from bp bnx2x: Check unzip return code bnx2x: Keep only one HW path active bnx2x: Remove SGMII configuration when not required bnx2x: Missing smp_wmb for statistics state machine bnx2x: Re-arrange the link structures for better alignment bnx2x: Using macro for phy address bnx2x: Adding explicit casting bnx2x: Using PCI_DEVICE macro bnx2x: Re-factor the initialization code bnx2x: Beautify bnx2x_dump.h bnx2x: Removing unused definitions bnx2x: Whitespaces and comments bnx2x: update version to 1.52.1 Eli Cohen (1): mlx4_core: Pass cache line size to device FW Emilio G. Cota (1): Staging: vme: fix {master,slave}_get check bug Eric Anholt (4): drm/i915: Make the downclocking debug code be under DRM_DEBUG not DRM_ERROR. drm/i915: Put the idle reclocking work on our private workqueue as well. drm/i915: Zap mmaps of objects before unbinding them from the GTT. agp/intel: Fix the pre-9xx chipset flush. Eric B Munson (3): hugetlbfs: allow the creation of files suitable for MAP_PRIVATE on the vfs internal mount hugetlb: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions hugetlb: add MAP_HUGETLB example Eric Benard (3): Add support for Eukrea's CPUIMX27 Add support for Eukrea's MBIMX27 mtd: mxc_nand: fix 2KiB pagesize NAND on i.MX27 Eric BĂ©nard (2): ARM: 5629/1: Add support for Eukrea's CPU9260 & CPU9G20 ARM: 5630/1: Add support for Eukrea's CPUAT91 Eric Dumazet (30): udp: cleanups af_packet: style cleanups bnx2x: Dont update vlan_features in bnx2x_set_tso() bnx2: Update vlan_features phonet: phonet_device_get() fix net: ethtool_op_get_rx_csum() should be public and exported neigh: Convert garbage collection from softirq to workqueue netfilter: bridge: refcount fix ipv4: af_inet.c cleanups tcp: keepalive cleanups net: ip_rt_send_redirect() optimization macvlan: Use compare_ether_addr_64bits() bonding: use compare_ether_addr_64bits() in ALB ipv6: ip6_push_pending_frames() should increment IPSTATS_MIB_OUTDISCARDS vlan: multiqueue vlan device ip: Report qdisc packet drops drivers: Kill now superfluous ->last_rx stores net: net/core/dev.c cleanups vlan: enable multiqueue xmits net: Remove debugging code macvlan: add multiqueue capability vlan: adds drops accounting cciss: memory leak in cciss_init_one() slub: fix slab_pad_check() net: kmemcheck annotation in struct socket proc: document `guest' column in /proc/stat ax25: Fix SIOCAX25GETINFO ioctl perf tools: Fix buffer allocation perf tools: Dont use openat() tunnel: eliminate recursion field Eric Miao (3): [ARM] pxa/littleton: update littleton to use the new gpio_card_detect for mmc [ARM] pxa/corgi: make use of GPIO based matrix keypad driver [ARM] pxa/spitz: make use of GPIO based matrix keypad driver Eric Paris (15): Capabilities: move cap_file_mmap to commoncap.c SELinux: call cap_file_mmap in selinux_file_mmap Security/SELinux: seperate lsm specific mmap_min_addr security: define round_hint_to_min in !CONFIG_SECURITY Networking: use CAP_NET_ADMIN when deciding to call request_module security: introducing security_request_module SELinux: add selinux_kernel_module_request Creds: creds->security can be NULL is selinux is disabled SELinux: seperate avc_cache flushing SELinux: flush the avc before disabling SELinux SELinux: inline selinux_is_enabled in !CONFIG_SECURITY_SELINUX SELinux: do not destroy the avc_cache_nodep Audit: reorganize struct audit_watch to save 8 bytes Audit: rearrange audit_context to save 16 bytes per struct Audit: send signal info if selinux is disabled Eric Sandeen (17): xfs: add more statics & drop some unused functions un-static xfs_read_agf xfs: remove XFS_INO64_OFFSET xfs: reduce bmv_count in xfs_vn_fiemap xfs: bump up nr_to_write in xfs_vm_writepage use XFS_CORRUPTION_ERROR in xfs_btree_check_sblock ext4: reject too-large filesystems on 32-bit kernels ext4: open-code ext4_mb_update_group_info simplify some logic in ext4_mb_normalize_request ext4: Add feature set check helper for mount & remount paths ext4: use variables not types in sizeofs() for allocations ext4: use ext4_grpblk_t more extensively xfs: add more statics & drop some unused functions un-static xfs_read_agf xfs: remove XFS_INO64_OFFSET ext4: limit block allocations for indirect-block files to < 2^32 ext4: replace MAX_DEFRAG_SIZE with EXT_MAX_BLOCK Eric Sesterhenn (1): Fix memory leak in write_pool_threads Eric W. Biederman (2): PCI: Simplify hotplug mch quirk. PCI: pcie: Ensure hotplug ports have a minimum number of resources Erik AndrĂ©n (21): V4L/DVB (12877): gspca - m5602-s5k4aa: Add vflip quirk for the Amilo Pa 2548 V4L/DVB (12977): gspca - m5602-ov7660: Create blue gain control V4L/DVB (12978): gspca - m5602-ov7660: Add red gain control V4L/DVB (12979): gspca - m5602-ov7660: Ensure that the default exposure is set V4L/DVB (12980): gspca - m5602-ov7660: Create auto white balance ctrl V4L/DVB (12981): gspca - m5602-ov7660: Set blue and red gain at init V4L/DVB (12982): gspca - m5602-ov7660: Add auto gain ctrl V4L/DVB (12983): gspca - m5602-ov7660: Add auto exposure ctrl V4L/DVB (12984): gspca - m5602-ov7660: Use a new raw init V4L/DVB (12985): gspca - m5602-ov7660: Replace magic constants with defines V4L/DVB (12986): gspca - m5602-ov7660: Add hflip, vflip controls V4L/DVB (12987): gspca - m5602-ov7660: Set the hsync correctly V4L/DVB (12988): gspca - m5602-ov7660: Remove old init V4L/DVB (12989): gspca - m5602-ov7660: Don't set gain during init V4L/DVB (12990): gspca - m5602-ov7660: Don't set blue and red gain during init V4L/DVB (12991): gspca - m5602-ov7660: Remove redundant init writes V4L/DVB (12992): gspca - m5602-ov7660: Disable red and blue gain for now V4L/DVB (13004): gspca - stv06xx: Harmonize the debug macros when tracing writes and reads V4L/DVB (13005): gspca - stv06xx: Translate swedish comments to english V4L/DVB (13006): gspca - stv06xx: Fix a misindentation V4L/DVB (13007): gspca - stv06xx-hdcs: Add exposure and gain ctrls to hdcs_1020 Eugene Yudin (1): V4L/DVB (12589): Add support for RoverMedia TV Link Pro FM Evgeniy Polyakov (1): Staging: pohmelfs: sync with the development tree FUJITA Tomonori (29): swiotlb: remove unused swiotlb_alloc_boot() swiotlb: remove unused swiotlb_alloc() swiotlb: remove swiotlb_arch_range_needs_mapping swiotlb: remove unnecessary swiotlb_bus_to_virt x86: add dma_capable() to replace is_buffer_dma_capable() x86: replace is_buffer_dma_capable() with dma_capable ia64: add dma_capable() to replace is_buffer_dma_capable() powerpc: add dma_capable() to replace is_buffer_dma_capable() swiotlb: use dma_capable() powerpc: remove unncesary swiotlb_arch_address_needs_mapping remove is_buffer_dma_capable() x86, IA64, powerpc: add phys_to_dma() and dma_to_phys() swiotlb: use phys_to_dma and dma_to_phys powerpc: remove unused swiotlb_phys_to_bus() and swiotlb_bus_to_phys() x86: remove unused swiotlb_phys_to_bus() and swiotlb_bus_to_phys() IA64: Remove NULL flush_write_buffers sparc: Use dma_map_ops struct sparc: Use asm-generic/dma-mapping-common.h sparc: Remove no-op dma_4v_sync_single_for_cpu and dma_4v_sync_sg_for_cpu sparc: Replace sbus_map_single and sbus_unmap_single with sbus_map_page and sbus_unmap_page sparc: Use asm-generic/pci-dma-compat sparc: Add CONFIG_DMA_API_DEBUG support powerpc: Remove addr_needs_map in struct dma_mapping_ops powerpc: Remove swiotlb_pci_dma_ops dma: Add set_dma_mask hook to struct dma_map_ops powerpc: use dma_map_ops struct powerpc: Use asm-generic/dma-mapping-common.h powerpc: Handle SWIOTLB mapping error properly powerpc: Add CONFIG_DMA_API_DEBUG support Fabian Henze (2): agp/intel: Add B43 chipset support drm/i915: add B43 chipset support Fabio Estevam (1): fec: Add FEC support for MX25 processor Felipe Balbi (7): OMAP3: beagle: add missing twl4030 usb platform_data Staging: cpc-usb: convert comment style in cpc.h Staging: cpc-usb: convert comment style in cpc_int.h Staging: cpc-usb: convert comment style in cpcusb.h Staging: cpc-usb: add one todo entry mfd: Add twl4030-pwrbutton as a twl4030 child regulator: userspace: use sysfs_create_group Felipe Contreras (3): x86: Trivial whitespace cleanups MAINTAINERS: acpi: add 'include/acpi' MAINTAINERS: omap: fix regex Felix Beck (3): [S390] zcrypt: Use spin_lock_bh in suspend callback [S390] zcrypt: Free ap_device if dev_set_name fails. [S390] zcrypt: Do not add/remove devices in s/r callbacks Felix Blyakher (1): Merge branch 'master' of ssh+git://oss.sgi.com/oss/git/xfs/xfs Feng Kan (1): mtd: nand: fix ECC Correction bug for SMC ordering for NDFC driver Feng Tang (9): ACPI, x86: expose some IO-APIC routines when CONFIG_ACPI=n ACPI: Handle CONFIG_ACPI=n better from linux/acpi.h SFI: create linux/sfi.h SFI: add platform-independent core support SFI: add capability to parse ACPI tables x86: add arch-specific SFI support SFI: Hook PCI MMCONFIG SFI: remove unneeded includes x86: Move get/set_wallclock to x86_platform_ops Fenghua Yu (1): ia64: Fix setup_per_cpu_areas() compilation error Fernando Luis Vazquez Cao (2): virtio: get rid of redundant VIRTIO_ID_9P definition virtio: add virtio IDs file Figo.zhang (5): x86, pgtable.h: Clean up types x86, highmem_32.c: Clean up comment Staging: comedi: no need for checking vfree call vmalloc.c: fix double error checking USB: ehci-dbg.c: no need for checking it before call vfree Fischer, Anna (1): net/bridge: Add 'hairpin' port forwarding mode Florian Echtler (1): Input: usbtouchscreen - add support for e2i touchscreen controller Florian Fainelli (10): cpmac: fix wrong MDIO bus identifier ar7: add fixed PHY support for the two on-board cpmac cpmac: add support for fixed PHY cpmac: wait longer after MDIO reset cpmac: bump version to 0.5.1 cpmac: unmark as broken r6040: bump to version 0.25 and 20 August 2009 release date MIPS: AR7: Make board code register ar7_wdt as a platform device [WATCHDOG] ar7_wdt: convert to become a platform driver cpmac: fix compilation errors against undeclared BUS_ID_SIZE Florian Tobias Schandinat (21): viafb: remove duplicated CX700 register init viafb: remove temporary start address setting viafb: merge viafb_update_viafb_par in viafb_update_fix viafb: split viafb_set_start_addr up viafb: fix ioremap_nocache error handling viafb: clean up viamode.h viafb: remove duplicated mode information viafb: clean up duoview viafb: clean up virtual memory handling viafb: remove unused video device stuff viafb: remove LVDS initialization viafb: another small cleanup of viafb_par viafb: improve viafb_par viafb: 2D engine rewrite viafb: cleanup viafb_cursor viafb: improve pitch handling viafb: hardware acceleration initialization cleanup viafb: use read-only mode parsing viafb: choose acceleration engine for VX855 fb: fix fb_pan_display range check fb: do not ignore fb_set_par errors Florian Westphal (1): net: remove NET_RX_BAD and NET_RX_CN* defines Forest Bond (8): Staging: Add pristine upstream vt6656 driver sources to drivers/staging/vt6656. Staging: vt6656: Add includes to drivers/staging/vt6656. Staging: vt6656: Build vt6656.ko, not vntwusb.ko. Staging: vt6656: main_usb.c: Drop obsolete fsuid/fsgid accesses. Staging: vt6656: Replace net_device->priv accesses with netdev_priv calls. Staging: vt6656: use net_device_ops for management functions Staging: vt6656: replace call to info with printk call. Staging: vt6656: Integrate vt6656 into build system. Francisco Jerez (7): drm/kms: slave encoder interface. drm: Define DRM_MODE_CONNECTOR_TV drm: Define DRM_MODE_SUBCONNECTOR_SCART drm: Define some new standard TV properties. drm: Fix drm_cvt_mode() for interlaced modes. drm: Add more standard TV properties. vgacon: prevent vgacon_deinit from touching the hardware for inactive consoles. Frank Blaschka (1): qeth: scheduling while atomic during ifconfig online sequence Frank Filz (2): nfsd: Fix unnecessary deny bits in NFSv4 ACL nfsd4: remove ACE4_IDENTIFIER_GROUP flag from GROUP@ entry Frank Mayhar (1): ext4: Make non-journal fsync work properly Frank Munzert (1): [S390] tape: use init_timer_on_stack() rather than init_timer() Frank Schaefer (3): USB-serial: pl2303: fix baud rate handling in case of unsupported values USB-serial: pl2303: add space/mark parity USB-serial: pl2303: use 1.5 instead of 2 stop bits with 5 data bits Frans Pop (8): printk: Restore previous console_loglevel when re-enabling logging x86: Simplify the Makefile in a minor way through use of cc-ifversion powerpc: Makefile simplification through use of cc-ifversion floppy: Switch driver to dev_pm_ops hp-wmi: Switch driver to dev_pm_ops trivial: cleanup hpfall example code (checkpatch) trivial: doc: hpfall: accept disk device to unload as argument trivial: improve help text for mm debug config options Frederic Riss (1): ARM: 5715/1: Make kprobes unregistration SMP safe Frederic Weisbecker (57): tracing/function-graph-tracer: Use the %pf format tracing/kmemtrace: Use the %pf format sched: Drop the need_resched() loop from cond_resched() sched: Remove obsolete comment in __cond_resched() sched: Cover the CONFIG_DEBUG_SPINLOCK_SLEEP off-case for __might_sleep() sched: Add a preempt count base offset to __might_sleep() sched: Remove the CONFIG_PREEMPT_BKL case definition of cond_resched() sched: Pull up the might_sleep() check into cond_resched() sched: Convert the only user of cond_resched_bkl to use cond_resched() sched: Fix cond_resched_lock() in !CONFIG_PREEMPT tracing/function-graph-tracer: Drop the useless nmi protection tracing/core: Turn ftrace_cpu_disabled into a global var tracing/core: Make the stack entry helpers global tracing: Move sched event insertion helpers in the sched switch tracer file tracing/function-graph-tracer: Move graph event insertion helpers in the graph tracer file tracing/events: Only define remove_subsystem_dir() if CONFIG_MODULES tracing: Add ftrace event call parameter to its field descriptor handler tracing: Add fields format definition for syscall events tracing: Support for syscall events raw records in perfcounters perf tools: Factorize high level dso helpers perf tools: Factorize the event structure definitions in a single file perf tools: Factorize the map helpers perf tools: Factorize the thread code in a dedicated file perf tools: Substract -Wformat-nonliteral from Wformat=2 in extra flags perf tools: Factorize the dprintf definition perf tools: Put the show mode into the event headers files perf tools: Librarize sample type and attr finding from headers perf tools: Librarize trace_event() helper perf tools: Add perf trace perf tools: Fix spelling mistake in callchain error perf tools: Warn while running perf trace without sample perf tools: Record events info also when :record suffix is used. perf tools: Make trace event format parser aware of cast to pointers perf tools: Fix comm column adjusting perf tools: Save partial non-overlapping map tracing: Undef TRACE_EVENT_FN between trace events headers inclusion perf tools: Only save the event formats we need perf tools: Fix missing string field printing in perf trace tracing: Fix double CPP substitution in TRACE_EVENT_FN perf tools: Add missing parameters documentation perf tools: Librarize idle thread registration perf tools: Resolve idle thread cmdline for perf trace perf tools: Unify swapper tasks naming perf tools: Complete support for dynamic strings perf tools: Allow the specification of all tracepoints at once perf sched: Fix bad event alignment perf sched: Make it easier to plug in new sub profilers perf sched: Add sched latency profiling perf sched: Rename struct lat_snapshot to struct work atoms perf sched: Add involuntarily sleeping task in work atoms perf sched: Export the total, max latency and total runtime to thread atoms list perf sched: Fix nsec to msec conversion perf sched: Implement multidimensional sorting perf tools: Add an option to multiplex counters in a single channel perf tools: Fix processing of randomly serialized sched traces tracing: Factorize the events profile accounting tracing: Allocate the ftrace event profile buffer dynamically Frederik Deweerdt (2): Staging: line6: pod.c: style cleanups Staging: line6: ffzb returns an unsigned integer From: Mel Gorman (1): hugetlbfs: do not call user_shm_lock() for MAP_HUGETLB fix Gabor Juhos (9): ath9k: remove unnecessary clearing of SC_OP_WAIT_{BEACON,CAB} flags ath9k: remove ath_rx_ps_back_to_sleep helper ath9k: serialize ath9k_hw_setpower calls ath9k: uninline ath9k_ps_{wakeup,restore} functions ath9k: serialize ath9k_ps_{wakeup,restore} calls ath9k: wake up the chip for TSF reset ath9k: make use ath9k_hw_wait int ath9k_hw_reset_tsf ath9k: fix race with IEEE80211_CONF_PS checks ath9k: get rid of unnecessary setpower calls Gautham R Shenoy (2): powerpc/pseries: Reduce the polling interval in __cpu_up() sched: Try to deal with low capacity, fix update_sd_power_savings_stats() Geert Uytterhoeven (3): powerpc/cell: Move CBE_IOPTE_* to md: Fix "strchr" [drivers/md/dm-log-userspace.ko] undefined! arches: drop superfluous casts in nr_free_pages() callers Geoff Levand (1): powerpc/ps3: Workaround for flash memory I/O error Geoff Thorpe (1): powerpc: expose the multi-bit ops that underlie single-bit ops. Geoffrey Thomas (2): sparc: Clean up linker script using new linker script macros. alpha: Clean up linker script using new linker script macros. George Spelvin (1): USB: Clean up root hub string descriptors Gerald Schaefer (1): PM / Hibernate / Memory hotplug: Always use for_each_populated_zone() Gerard Lledo (1): jffs2: move jffs2_gcd_mtd threads to the new kthread API Gergely Imreh (1): USB: fix USBTMC get_capabilities success handling Gerhard Pircher (1): powerpc/amigaone: Convert amigaone_init() to a machine_device_initcall() Gerrit Renker (5): mcastv6: Local variable shadows function argument inet6: functions shadow global variable inet6: Conversion from u8 to int inet6: Set default traffic class net-next-2.6 [PATCH 1/1] dccp: ccids whitespace-cleanup / CodingStyle GeunSik Lim (6): debugfs: Fix mount directory of debugfs by default in events.txt debugfs: Change debuhgfs directory of trace-events-sample.h debugfs: Change debugfs directory of IWMC3200 debugfs: Modified default dir of debugfs for debugging UHCI. debugfs: Modify default debugfs directory for debugging pktcdvd. trivial: change address of the libcap source. Giridhar Malavali (2): [SCSI] qla2xxx: Update version number to 8.03.01-k5 [SCSI] qla2xxx: Update version number to 8.03.01-k6. Giuseppe Cavallaro (2): sh: kgdb: do not reload VBR while handling debugger breackpoint sh: fix sys_cacheflush error checking Glauber Costa (1): KVM guest: fix bogus wallclock physical address calculation Gleb Natapov (29): x86/apic: Enable x2APIC without interrupt remapping under KVM KVM: VMX: Properly handle software interrupt re-injection in real mode KVM: Drop interrupt shadow when single stepping should be done only on VMX KVM: Introduce kvm_vcpu_is_bsp() function. KVM: Use pointer to vcpu instead of vcpu_id in timer code. KVM: Break dependency between vcpu index in vcpus array and vcpu_id. KVM: Use macro to iterate over vcpus. KVM: Replace pending exception by PF if it happens serially KVM: Optimize searching for highest IRR KVM: Add Directed EOI support to APIC emulation KVM: x2apic interface to lapic KVM: Use temporary variable to shorten lines. KVM: Add trace points in irqchip code KVM: No need to kick cpu if not in a guest mode KVM: Always report x2apic as supported feature KVM: Move exception handling to the same place as other events KVM: Move kvm_cpu_get_interrupt() declaration to x86 code KVM: Reduce runnability interface with arch support code KVM: silence lapic kernel messages that can be triggered by a guest KVM: s390: remove unused structs KVM: PIT: Unregister ack notifier callback when freeing KVM: Call kvm_vcpu_kick() inside pic spinlock KVM: Call ack notifiers from PIC when guest OS acks an IRQ. KVM: Replace pic_lock()/pic_unlock() with direct call to spinlock functions KVM: Update cr8 intercept when APIC TPR is changed by userspace KVM: VMX: Fix cr8 exiting control clobbering by EPT KVM: Fix coalesced interrupt reporting in IOAPIC KVM: VMX: call vmx_load_host_state() only if msr is cached KVM: fix misreporting of coalesced interrupts by kvm tracer Graf Yang (7): Blackfin: fix MPU handling of invalid memory accesses Blackfin: improve double fault debug handling Blackfin: SMP port does not yet support cpu frequency scaling Blackfin: handle the core timer interrupt with handle_percpu_irq on SMP Blackfin: swap clocksource ratings for gptimer/cycles mtd: m25p80: add support for AAI programming with SST SPI flashes mtd: m25p80: add SST WF SPI flash device information Graham, David (2): e1000: Remove unused function e1000_mta_set. e1000: Fix for e1000 kills IPMI on a tagged vlan. Grant Likely (3): powerpc/pci: Remove dead checks for CONFIG_PPC_OF powerpc/pci: move pci_64.c device tree scanning code into pci-common.c powerpc/pci: Merge ppc32 and ppc64 versions of phb_scan() Greg Kroah-Hartman (191): Driver core: move dev_get/set_drvdata to drivers/base/dd.c Staging: hv: add a TODO file Staging: hv: make the Hyper-V virtual bus code build Staging: hv: use the correct #ifdef for x86-64 Staging: hv: add the Hyper-V virtual bus to the build Staging: hv: make the Hyper-V virtual storage driver build Staging: hv: add the Hyper-V virtual scsi driver to the build Staging: hv: storvsc: fix up driver_data usage Staging: hv: make the Hyper-V virtual block driver build Staging: hv: add the Hyper-V virtual block driver to the build Staging: hv: blkvsc: fix up driver_data usage Staging: hv: make the Hyper-V virtual network driver build Staging: hv: add the Hyper-V virtual network driver to the build Staging: hv: netvsc: fix up driver_data usage Staging: hv: remove INTERNAL typedef Staging: hv: remove PVOID typedef Staging: hv: remove VOID typedef Staging: hv: remove UINT8 and INT8 typedefs Staging: hv: remove UINT16 and INT16 typedefs Staging: hv: remove UINT32 and INT32 typedefs Staging: hv: remove UINT64 and INT64 and UCHAR typedefs Staging: hv: remove USHORT typedef Staging: hv: remove ULONGLONG and LONGLONG typedefs Staging: hv: remove ULONG_PTR typedef Staging: hv: remove ULONG and LONG typedefs Staging: hv: remove SIZE_T typedef Staging: hv: remove DWORD and BYTE typedefs Staging: hv: remove BOOL and BOOLEAN typedefs Staging: hv: remove #defines from osd.c Staging: hv: remove MIN and MAX usages Staging: hv: remove PAGE_SIZE and PAGE_SHIFT and __builtin functions Staging: hv: remove STRUCT_PACKED and STRUCT_ALIGNED defines Staging: hv: remove UNUSED_VAR usage Staging: hv: remove FIELD_OFFSET usage Staging: hv: remove TRUE, FALSE, and NULL usage Staging: hv: osd: remove MemAlloc wrapper Staging: hv: osd: remove MemAllocZeroed wrapper Staging: hv: osd: remove MemAllocAtomic wrapper Staging: hv: osd: remove MemFree wrapper Staging: hv: make Channel->InboundLock a real spinlock Staging: hv: make RingInfo->RingLock a real spinlock Staging: hv: make Device->RequestLock a real spinlock Staging: hv: make netDevice->ReceivePacketListLock a real spinlock Staging: hv: make gVmbusConnection.ChannelMsgLock a real spinlock Staging: hv: make gVmbusConnection.ChannelLock a real spinlock Staging: hv: osd: remove spinlock wrapper functions Staging: hv: osd: remove Sleep wrapper Staging: hv: osd: remove MemoryFence wrapper Staging: hv: osd: remove LogMsg wrapper Staging: hv: osd: remove PrintBytes wrapper Staging: hv: fix up printk warnings Staging: hv: osd: remove GetTickCount and GetTimestamp wrappers Staging: hv: force hyper-v drivers to be built as a module Staging: hv: remove more printk() warnings Staging: hv: properly fix the printk() warnings Staging: hv: fix sparse static warnings Staging: hv: fix sparse function warnings Staging: hv: fix sparse NULL pointer warnings Staging: hv: remove custom cpuid function Staging: hv: remove custom rdmsrl and wrmsrl functions Staging: hv: osd: remove physical address wrapper functions Staging: hv: osd: add osd_ prefix to global functions Staging: hv: remove timer wrapper functions Staging: hv: remove duplicated osd.o inclusions Staging: hv: remove ReadMsr and WriteMsr functions from Hv.h Staging: hv: cleanup coding style issues in Hv.h Staging: hv: cleanup coding style issues in Channel.h Staging: hv: cleanup coding style issues in VersionInfo.h Staging: hv: cleanup coding style issues in ChannelInterface.h Staging: hv: cleanup coding style issues in ChannelMgmt.h Staging: hv: cleanup coding style issues in VmbusPrivate.h Staging: hv: cleanup coding style issues in RingBuffer.h Staging: hv: remove Sources.c Staging: hv: clean up NetVsc.h Staging: hv: clean up RndisFilter.h Staging: hv: clean up typedefs in Hv.h Staging: hv: clean up typedefs in ChannelMgmt.h Staging: hv: clean up vstorage.h Staging: hv: move osd.h Staging: hv: osd.h: codingstyle cleanups Staging: hv: osd.h: remove GUID typedef Staging: hv: osd.h: fix GUID reference problem Staging: hv: osd.c: coding style fixes Staging: hv: remove include/HvTypes.h Staging: hv: remove include/HvHalApi.h Staging: hv: coding style cleanup of include/HvHcApi.h Staging: hv: coding style cleanup of include/HvVpApi.h Staging: hv: move vmbus.h Staging: hv: vmbus.h coding style cleanups Staging: hv: move rndis.h Staging: hv: rndis.h: remove pointless typedefs Staging: hv: rndis.h: codingstyle fixes Staging: hv: rndis.h: typedef removal, part 1 Staging: hv: rndis.h: typedef removal, part 2 Staging: hv: coding style cleanups for HvPtApi.h Staging: hv: coding style cleanups for HvSynicApi.h Staging: hv: typdef fixes for HvSynicApi.h Staging: hv: remove volatile usage from HvSynicApi.h Staging: hv: create hv_api.h Staging: hv: coding style cleanups for HvStatus.h Staging: hv: move HvStatus.h into hv_api.h Staging: hv: coding style cleanups for VmbusChannelInterface.h Staging: hv: typedef removal from VmbusChannelInterface.h Staging: hv: coding style cleanups for VmbusApi.h Staging: hv: typedef removal for VmbusApi.h Staging: hv: codingsyle cleanups for ChannelMessages.h Staging: hv: typedef removal for ChannelMessages.h Staging: hv: fix up some coding style issues in logging.h Staging: hv: fix up coding style issues in NetVscApi.h Staging: hv: fix up typedefs in NetVscApi.h Staging: hv: move vstorage.h to hv dir Staging: hv: fix remaining style issue in ChannelInterface.h Staging: hv: fix typedefs in vstorage.h Staging: hv: fix coding style issues in VmbusPacketFormat.h Staging: hv: remove typedefs from VmbusPacketFormat.h Staging: hv: fix coding style issues in StorVscApi.h Staging: hv: fix typedefs in StorVscApi.h Staging: hv: fix coding style issues in nvspprotocol.h Staging: hv: fix typedefs in nvspprotocol.h Staging: hv: move nvspprotocol.h Staging: hv: remove ChannelMessages.h Staging: hv: move List.h Staging: hv: move logging.h Staging: hv: move NetVscApi.h Staging: hv: move StorVscApi.h Staging: hv: move VmbusApi.h Staging: hv: move VmbusChannelInterface.h Staging: hv: move VmbusPacketFormat.h Staging: hv: coding style cleanups of BlkVsc.c Staging: hv: coding style cleanups of ChannelInterface.c Staging: hv: remove typedefs from ChannelMgmt.c Staging: hv: remove typedefs from RndisFilter.c Staging: hv: remove typedefs from StorVsc.c Staging: hv: coding style cleanups for Connection.c Staging: hv: coding style cleanups on Vmbus.c Staging: hv: code reduction from Vmbus.c Staging: hv: fix coding style issues in Hv.c Staging: hv: coding style cleanups for netvsc_drv.c Staging: hv: reorganize netvsc_drv.c Staging: hv: coding style cleanups for ChannelMgmt.c Staging: hv: reorg ChannelMgmt a bit Staging: hv: TODO: add some more items Staging: hv: coding style cleanups for StorVsc.c Staging: hv: reorg StorVsc.c Staging: hv: coding style fixes for blkvsc_drv.c Staging: hv: coding style cleanup for Channel.c Staging: hv: warn the world of a bug in the release function Staging: hv: coding style cleanups for vmbus_drv.c Staging: hv: coding style cleanup for storvsc_drv.c Staging: hv: coding style cleanup for RndisFilter.c Staging: hv: coding style cleanup for NetVsc.c Staging: hv: rename struct NETVSC_DEVICE Staging: hv: remove function pointer typedefs from VmbusApi.h Staging: hv: remove function pointer typedefs from NetVscApi.h Staging: hv: remove function pointer typedefs from StorVscApi.h Staging: hv: remove PFN_CHANNEL_CALLBACK Staging: hv: remove function pointer typedefs from vmbus.h Staging: hv: update the TODO file Staging: vme: change to VME_BUS Staging: remove epl driver Staging: pata_rdc: remove the driver from the staging tree Staging: echo: fix up remaining checkpatch.pl issues Staging: echo: remove TODO item Staging: echo: remove bit_operations.h Staging: echo: remove unneeded USE_MMX defines Staging: echo: remove unneeded USE_SSE2 defines Staging: echo: coding style cleanups Staging: add Realtek 8192 PCI wireless driver Staging: rtl8192e: fix lots of sparse warnings Staging: rtl8192e: remove unused functions Staging: rtl8192e: remove #if 0 sections Staging: rtl8192e: remove kernel version checks Staging: rtl8192e: remove firmware header file not being used Staging: rtl8192e: remove another firmware header file not being used Staging: rtl8192e: coding style cleanups on r819xE_firmware.c Staging: rtl8192e: remove unneeded ieee80211 files Staging: rtl8192e: remove annoying printk() Staging: rtl8192e: fix for stack bug Staging: rtl8192e: fix timeouts on firmware download Staging: get cowloop to build properly Staging: cowloop: add TODO file Staging: add cowloop to the build Staging: cowloop: remove kernel version checks Staging: vt665x: rename the module binary Staging: remove me4000 driver. Staging: meilhaus: remove the drivers Staging: rspiusb: remove the driver Staging: remove at76_usb wireless driver. Staging: remove heci driver Staging: remove sxg driver USB: skeleton: fix coding style issues. Greg Ungerer (36): m68k: remove unused elia.h include file m68k: merge mmu and non-mmu versions of processor.h m68k: merge mmu and non-mmu versions of irq.h m68k: merge the mmu and non-mmu versions of checksum.h m68k: merge mmu and non-mmu versions of dma.h m68k: clean up comment delimiters in dma.h m68knommu: use general interrupt controller for ColdFire 520x family m68knommu: remove per device interrupt mask setting for ColdFire 520x m68knommu: general interrupt controller for ColdFire many 52xx parts m68knommu: clean up ColdFire 527x interrupt setup m68knommu: clean up ColdFire 528x interrupt setup m68knommu: clean up ColdFire 523x interrupt setup m68knommu: general interrupt controller for ColdFire 532x parts m68knommu: clean up ColdFire 532x interrupt setup m68knommu: use common interrupt controller code for older ColdFire CPU's m68knommu: complete interrupt controller code for the 68328 CPU's m68knommu: complete interrupt controller code for the 68360 CPU m68knommu: remove the common interrupt controller structure m68knommu: remove unecessary interrupt level setting in ColdFire 520x setup m68knommu: remove interrupt masking from ColdFire pit timer m68knommu: remove timer device interrupt setup for ColdFire 532x m68knommu: mask off all interrupts in ColdFire intc-simr controller m68knommu: move ColdFire INTC definitions to new include file m68knommu: remove duplicate ColdFire mcf_autovector() code m68knommu: merge old ColdFire interrupt controller masking macros m68knommu: support code to mask external interrupts on old ColdFire CPU's m68knommu: simplify ColdFire "timers" clock initialization m68knommu: clean up ColdFire 532x CPU timer setup m68knommu: map ColdFire interrupts to correct masking bits m68knommu: clean up old ColdFire timer irq setup m68knommu: add support for second interrupt controller of ColdFire 5249 m68knommu: create a speciailized ColdFire 5272 interrupt controller m68knommu: remove ColdFire direct interrupt register access m68knommu: relax IO_SPACE_LIMIT setting m68knommu: remove special interrupt handling code for ne2k support m68knommu: set multi-function pins for ethernet when enabled Gregory Haskins (8): sched: Enhance the pre/post scheduling logic sched: Fully integrate cpus_active_map and root-domain code KVM: irqfd KVM: Clean up coalesced_mmio destruction KVM: cleanup io_device code KVM: do not register i8254 PIO regions until we are initialized KVM: make io_bus interface more robust KVM: add ioeventfd support Guennadi Liakhovetski (39): [ARM] pxa/pcm990: convert pcm990 to soc-camera as platform-device [ARM] pxa/mioa701: convert mioa701 to the new platform-device soc-camera interface [ARM] pxa/em-x270: convert em-x270 to soc-camera as platform-device V4L/DVB (12158): v4l: add cropping prototypes to struct v4l2_subdev_video_ops V4L/DVB (12504): soc-camera: prepare soc_camera_platform.c and its users for conversion V4L/DVB (12505): soc_camera_platform: pass device pointer from soc-camera core on .add_device() V4L/DVB (12506): soc-camera: convert to platform device V4L/DVB (12507): sh: soc-camera updates V4L/DVB (12508): soc-camera: remove unused .iface from struct soc_camera_platform_info V4L/DVB (12509): sh: prepare board-ap325rxa.c for v4l2-subdev conversion V4L/DVB (12510): soc-camera: (partially) convert to v4l2-(sub)dev API V4L/DVB (12511): V4L2: add a new V4L2_CID_BAND_STOP_FILTER integer control V4L/DVB (12512): ov772x: implement a band-stop filter support V4L/DVB (12513): soc-camera: add support for camera-host controls V4L/DVB (12514): sh_mobile_ceu_camera: add a control for the camera low-pass filter V4L/DVB (12515): soc-camera: use struct v4l2_rect in struct soc_camera_device V4L/DVB (12516): ov772x: successful S_FMT and S_CROP must update user-provided rectangle V4L/DVB (12517): mt9t031: improve rectangle placement in invalid S_CROP V4L/DVB (12518): ov772x: S_CROP must return actually configured geometry V4L/DVB (12519): soc-camera: put pixel format initialisation back in probe, add .put_formats() V4L/DVB (12520): sh-mobile-ceu-camera: do not wait for interrupt when releasing buffers V4L/DVB (12521): soc-camera: use .s_std() from struct v4l2_subdev_core_ops V4L/DVB (12522): sh-mobile-ceu-camera: implement host-side cropping V4L/DVB (12523): tw9910: return updated geometry on successful S_FMT and S_CROP V4L/DVB (12524): soc-camera: S_CROP V4L2 API compliance fix V4L/DVB (12525): soc-camera: prohibit geometry change with initialised buffers V4L/DVB (12526): ov772x: do not use scaling for cropping V4L/DVB (12527): tw9910: do not lie about cropping abilities V4L/DVB (12528): sh_mobile_ceu_camera: implement host-side image scaling V4L/DVB (12529): soc-camera: switch to s_crop v4l2-subdev video operation V4L/DVB (12530): soc-camera: switch to using v4l2_subdev_call() V4L/DVB (12531): soc-camera: Use I2C device for dev_{dbg,info,...} output in all clients V4L/DVB (12532): soc-camera: Use camera device object for core output V4L/DVB (12533): soc-camera: Use video device object for output in host drivers V4L/DVB (12534): soc-camera: V4L2 API compliant scaling (S_FMT) and cropping (S_CROP) V4L/DVB (12535): soc-camera: remove .init() and .release() methods from struct soc_camera_ops V4L/DVB (12536): soc-camera: remove .gain and .exposure struct soc_camera_device members V4L/DVB (12580): soc-camera: remove now unneeded subdevice group ID assignments sh_mobile_ceu_camera: fix compile breakage, caused by a bad merge Guillaume Knispel (1): poll/select: avoid arithmetic overflow in __estimate_accuracy() Guo-Fu Tseng (7): jme: Some minor coding style consistency modifications jme: Fix unmatched tasklet_{enable|disable} pair jme: Fix typo jme: Change bufinf memory location jme: Remove shadow register support jme: Tuning rxsum function jme: Advance driver version number Gustavo F. Padovan (15): Bluetooth: Add configuration support for ERTM and Streaming mode Bluetooth: Create separate l2cap_send_disconn_req() function Bluetooth: Add initial support for ERTM packets transfers Bluetooth: Add support for Segmentation and Reassembly of SDUs Bluetooth: Initial support for retransmission of packets with REJ frames Bluetooth: Add support for Retransmission and Monitor Timers Bluetooth: Enable Streaming Mode for L2CAP Bluetooth: Add support for FCS option to L2CAP Bluetooth: Add support for L2CAP SREJ exception Bluetooth: Full support for receiving L2CAP SREJ frames Bluetooth: Add locking scheme to L2CAP timeout callbacks Bluetooth: Use proper *_unaligned_le{16,32} helpers for L2CAP Bluetooth: Acknowledge L2CAP packets when receiving RR-frames (F-bit=1) Bluetooth: Handle L2CAP case when the remote receiver is busy Bluetooth: Add support for L2CAP 'Send RRorRNR' action Guus Sliepen (1): USB: usbtmc: sanity checks for DEV_DEP_MSG_IN urbs Gábor Stefanik (47): cfg80211: fix disabling WPA via wext (SIOCSIWAUTH) b43: implement baseband init for LP-PHY <= rev1 b43: Add LP 2063 radio init b43: Typo fixes & minor cleanup b43: Fix fallout from the IEEE80211_IF_TYPE to NL80211_IFTYPE change. b43: LP-PHY: Implement STX synchronization b43: Implement LP-PHY baseband table initialization b43: Update LP-PHY rev2+ baseband init to match the specs ssb: Implement the remaining rev.8 SPROM vars needed for LP-PHY b43: Fix a typo in the sync_stx routine b43: LP-PHY: Implement reading band SPROM b43: Implement RC calibration for rev.2+ LP PHYs b43: LP-PHY: Refactor TX gain table I/O b43: Implement RC calibration for rev.0/1 LP-PHYs b43: Update dummy transmission to match V4 specs b43: LP-PHY: Initialize TX power control b43: LP-PHY: Implement channel switching for rev2+/B2063 radio b43: LP-PHY: Implement channel switching for rev0/1/B2062 radio ssb: Fix typo in the rev8 SPROM extraction routine b43: Add LP-PHY firmware loading support b43: Make LP-PHY testable b43: LP-PHY: Don't adjust gain table for rev2+ when setting channel b43: LP-PHY: Update TX gain override for a spec typo fix b43: LP-PHY: Fix another TX power control abuse b43: Handle B43_PHYTYPE_LP in RX path b43: LP-PHY: Update baseband init for recent spec changes b43: LP-PHY: Fix a spec error in the B2062 channel switch routine b43: LP-PHY: Update code for spec fixes, and fix a few typos b43: LP-PHY: Fix a bug in the B2062 channel tune path b43: LP-PHY: Update B2062 radio init with recent spec changes b43: LP-PHY: Remove BROKEN from B43_PHY_LP b43: LP-PHY: Fix reading old mode in the set TX power control routine b43: LP-PHY: Fix setting TX power control mode during RC calibration b43: LP-PHY: Two small spec updates b43: LP-PHY: Implement spec updates and remove resolved FIXMEs iwlwifi: Make injection of non-broadcast frames work again b43: LP-PHY: Fix a few typos in the RC calibration code b43: LP-PHY: Fix and simplify Qdiv roundup b43: Fix and update LP-PHY code ssb: Implement PMU LDO control and use it in b43 b43: LP-PHY: Revert to the original PHY register write routine b43: Enable LP-PHY support by default and remove Kconfig warning b43: Implement antenna diversity support for LP-PHY b43: Refactor and update antenna diversity for A/G-PHY b43: Add myself to module authors & to LP-PHY file copyright notices b43: Fix typo in modparam_btcoex description b43: LP-PHY: Fix TX gain tables H Hartley Sweeten (10): jbd2: bitfields should be unsigned HID: local function should be static mtd: ep93xx: cleanup includes in ts7250 nand driver mtd: make few symbols static hwmon: Include instead of USB: ohci-ep93xx.c: remove unused variable fs/buffer.c: clean up EXPORT* macros aio.c: move EXPORT* macros to line after function gpio: include not jbd.h: bitfields should be unsigned H. Peter Anvin (18): x86, setup: remove obsolete pre-Kconfig CONFIG_VIDEO_ variables x86, intel_txt: tboot.c needs x86, intel_txt: Factor out the code for S3 setup x86, intel_txt: Handle ACPI_SLEEP without X86_TRAMPOLINE x86, mtrr: make mtrr_aps_delayed_init static bool Merge commit 'origin/x86/urgent' into x86/asm x86: allow "=rm" in native_save_fl() Merge branch 'x86/urgent' into x86/pat mm: remove !NUMA condition from PAGEFLAGS_EXTENDED condition set x86, asm: Add 32-bit versions of the combined CFI macros x86, asm: Make _ASM_EXTABLE() usable from assembly code x86, msr: CFI annotations, cleanups for msr-reg.S x86, msr: Have the _safe MSR functions return -EIO, not -EFAULT x86, msr: Create _on_cpu helpers for {rw,wr}msr_safe_regs() x86, msr: Export the register-setting MSR functions via /dev/*/msr x86, msr: fix msr-reg.S compilation with gas 2.16.1 x86, msr: change msr-reg.o to obj-y, and export its symbols Merge branch 'x86/pat' into x86/urgent H.J. Thomassen (1): Staging: add cowloop driver HIRANO Takahito (1): V4L/DVB (12997): Add the DTV_ISDB_TS_ID property for ISDB_S Haiyang Zhang (1): Staging: hv: Add Haiyang's email to the TODO file Hal Rosenstock (1): IB/mad: Allow tuning of QP0 and QP1 sizes Hank Janssen (6): Staging: hv: add the Hyper-V api header files Staging: hv: add the Hyper-V driver header files Staging: hv: add the Hyper-V virtual bus Staging: hv: add the Hyper-V virtual block driver Staging: hv: add the Hyper-V virtual network driver Staging: hv: add the Hyper-V virtual storage driver Hannes Eder (4): IPVS: use pr_fmt IPVS: use pr_err and friends instead of IP_VS_ERR and friends MAINTAINERS: add IPVS include files checkpatch: make -f alias --file, add --help, more verbose help message Hannes Reinecke (2): [SCSI] iscsi_tcp: Evaluate socket state in data_ready() Send uevents for write_protect changes Hans J. Koch (1): Input: ucb1400_ts - fix a misleading function name Hans Verkuil (21): V4L/DVB (12212): v4l2: add RDS API to videodev2.h V4L/DVB (12214): bttv: set RDS capability if applicable. V4L/DVB (12215): saa6588: conform to the final RDS spec. V4L/DVB (12216): saa7134: set RDS capability if applicable. V4L/DVB (12217): radio-cadet: conform to the RDS spec. V4L/DVB (12218): radio-si470x: conform to the RDS spec. V4L/DVB (12316): v4l: add V4L2_CAP_RDS_OUTPUT and V4L2_CAP_MODULATOR caps V4L/DVB (12426): pvrusb2: fix compile warning V4L/DVB (12427): cx24113: fix mips compiler warning V4L/DVB (12455): radio-typhoon: remove obsolete RADIO_TYPHOON_PROC_FS config option V4L/DVB (12543): v4l: introduce string control support. V4L/DVB (12553): FM TX: si4713: Add Kconfig and Makefile entries V4L/DVB (12612): si4713: simplify the code to remove a compiler warning. V4L/DVB (12613): cx25840: fix determining the firmware name V4L/DVB (12948): v4l1-compat: fix VIDIOC_G_STD handling V4L/DVB (12540): v4l: simplify v4l2_i2c_new_subdev and friends V4L/DVB (12541): v4l: remove video_register_device_index V4L/DVB (12722): v4l2-dev: replace 'kernel number' by 'device node number'. V4L/DVB (12723): ivtv/cx18: replace 'kernel number' with 'device node number'. V4L/DVB (12724): v4l2-dev: add simple wrapper functions around the devnode numbers V4L/DVB (12725): v4l: warn when desired devnodenr is in use & add _no_warn function Hans de Goede (12): V4L/DVB (12357): gspca - tv8532: Bad ISOC packet scan V4L/DVB (12616): gspca_pac207: remove a number of unneeded (repeated) register writes V4L/DVB (12617): gspca_pac207: enable higher framerates / lower exposure settings V4L/DVB (12619): gspca: mr97310a fix detection of sensortype for vivicam with id byte of 0x53 V4L/DVB (12620): gspca_mr97310a: cleanup/fixup control handling V4L/DVB (12621): gspca_mr97310a: Move detection of CIF sensor type to probe() function V4L/DVB (12622): gspca_mr97310a: make the probing a bit less chatty V4L/DVB (12623): gspca_mr97310a: Add controls for CIF type 0 sensor cams V4L/DVB (12624): gspca_mr97310a: Use correct register for CIF type 1 sensor gain settings V4L/DVB (12625): Add new V4L2_FMT_FLAG_EMULATED flag to videodev2.h V4L/DVB (12626): gspca_mr97310a: Allow overriding of detected sensor type V4L/DVB (12627): gspca_mr97310a: Add one more vivitar mini cam to the list of CIF cams Hans-Joachim Picht (1): [S390] add call home support Haojian Zhuang (15): [ARM] pxa: remove duplicate mfp definition in mach [ARM] pxa: support mfp of pxa935 [ARM] pxa: expand irq support for PXA93x and PXA950 [ARM] pxa: update cpu_is_xsc3() to include Marvell CPUID [ARM] pxa: add cpu_is_pxa950() and Kconfig options [ARM] pxa: add more registers in interrupt controller [ARM] pxa: initialize default interrupt priority and use ICHP for IRQ handling [ARM] pxa: update dependancy of pxa i2c module [ARM] pxa: merge {zylonite,littleton}_defconfig into pxa3xx_defconfig [ARM] pxa: update rtc-sa1100.c to use 'struct dev_pm_ops' regulator: add buck3 in da903x driver regulator: support da9030 BUCK in da903x driver regulator: replace ADTV1 register by ADTV2 in da903x regulator: support list voltage in da903x regulator: fix voltage range in da9034 ldo12 Harald Krapfenbauer (2): Blackfin: cm-bf537u: split board from cm-bf537e Blackfin: update cm board resources Harald Welte (5): viafb: make module parameters visible in sysfs viafb: remove unused structure member viafb: add support for the VX855 chipset viafb: make viafb a first-class citizen using pci_driver viafb: pass reference to pci device when calling framebuffer_alloc() Harshula Jayasuriya (1): NFS: out of date comment regarding O_EXCL above nfs3_proc_create() Hartley Sweeten (14): [ARM] 5573/1: ep93xx: ensure typesafe io [ARM] 5574/1: ep93xx: gpio.c: fix header includes and __iomem pointers [ARM] 5575/1: ep93xx: Show gpio interrupt type in debugfs output. [ARM] 5577/2: ep93xx: syscon locked register functions [ARM] 5578/1: ep93xx: add ep93xx-keypad clock [ARM] 5592/1: ep93xx: cleanup platform header includes [ARM] 5593/1: ep93xx: clock.c __iomem pointer [ARM] 5598/1: ep93xx: core.c typesafe vic_init [ARM] 5599/1: MAINTAINERS: update for EP93XX ARM [ARM] 5600/1: ep93xx: core.c remove cast when copying dev_addr [ARM] 5609/1: ep93xx: add register defines for keypad support [ARM] 5612/1: ep93xx: add platform LEDs ARM: 5628/1: ep93xx: Introduce Pulse Width Modulator (PWM) driver ARM: 5711/1: locomo.c: CodingStyle cleanups Hector Martin (1): ACPI battery: work around negative s16 battery current on Acer Heiko Carstens (38): locking, powerpc: Rename __spin_try_lock() and friends locking, sparc: Rename __spin_try_lock() and friends locking, m68k/asm-offsets: Rename pt_regs offset defines locking, m68k: Calculate thread_info offset with asm offset locking: Move spinlock function bodies to header file locking: Allow arch-inlined spinlocks locking: Simplify spinlock inlining locking: Inline spinlock code for all locking variants on s390 locking, m68k/asm-offsets: Rename signal defines [SCSI] zfcp: optimize zfcp_qdio_account KVM: fix compile warnings on s390 [S390] cio: move scsw helper functions to header file [S390] introduce get_clock_monotonic [S390] convert/optimize csum_fold() to C [S390] atomic ops: add effecient atomic64 support for 31 bit [S390] atomic ops: small cleanups [S390] hibernation: remove dead file [S390] hibernation: merge files and move to kernel/ [S390] kernel: always keep machine flags in lowcore [S390] Initialize __LC_THREAD_INFO early. [S390] use generic scatterlist.h [S390] Enable guest page hinting by default. [S390] Limit cpu detection to 256 physical cpus. [S390] Get rid of cpuid.h header file. [S390] Remove smp_cpu_not_running. [S390] Wire up page fault events for software perf counters. nilfs2: fix format string compile warning (ino_t) [S390] Convert sys_clone to function with parameters. [S390] Convert sys_execve to function with parameters. [S390] Get rid of init_module/delete_module compat functions. [S390] hibernation: fix guest page hinting related crash [S390] hibernation: reset system after resume [S390] Change kernel_page_present coding style. [S390] fix disabled_wait inline assembly clobber list [S390] smp: introduce LC_ORDER and simplify lowcore handling [S390] hibernate: make sure pfn_is_nosave handles lowcore pages ext2: fix format string compile warning (ino_t) fs: change sys_truncate length parameter type Heiko Schocher (2): powerpc/82xx: mgcoge - updates for 2.6.32 powerpc/82xx: mgcoge - updated defconfig Helmut Schaa (10): mac80211: shorten the passive dwell time for sw scans cfg80211: update misleading comment mac80211: refactor the scan code mac80211: advance the state machine immediately if no delay is needed mac80211: introduce a new scan state "decision" mac80211: Replace {sw, hw}_scanning variables with a bitfield mac80211: implement basic background scanning mac80211: rename scan_state to next_scan_state cfg80211: increase scan result expire time mac80211: fix an oops in ieee80211_scan_state_set_channel Hemant Pedanekar (4): davinci: dm646x: Add clock info and update mux setup for ATA davinci: Move IO device mapping macros from io.h to hardware.h davinci: dm646x: Add IDE setup davinci: dm646x-evm: Add support for IDE Hemanth V (1): spi: McSPI off-mode support Hendrik Brueckner (15): tracing: Add syscall tracepoints - s390 arch update tracing: Check invalid syscall nr while tracing syscalls tracing: Don't trace kernel thread syscalls [S390] kernel: Append scpdata to kernel boot command line [S390] kernel: Convert upper case scpdata to lower case [S390] move (io|sysc)_restore_trace_psw into .data section [S390] kernel: Print an error message if kernel NSS cannot be defined [S390] kvm: use console_initcall() to initialize s390 virtio console iucv: fix iucv_buffer_cpumask check when calling IUCV functions iucv: use correct output register in iucv_query_maxconn() af_iucv: fix race in __iucv_sock_wait() af_iucv: handle non-accepted sockets after resuming from suspend af_iucv: do not call iucv_sock_kill() twice af_iucv: fix race when queueing skbs on the backlog queue hvc_console: Provide (un)locked version for hvc_resize() Henk Vergonet (3): V4L/DVB (12870): tda18271: update temperature compensation calculatation formula V4L/DVB (12871): tda18271: fix bad data in tda18271_cid_target table V4L/DVB (13002): Adds support for Zolid Hybrid PCI card: Hennerich, Michael (1): USB: sl811-hcd: Fix device disconnect: Henning Glawe (1): HID: ignore Philips IEEE802.15.4 RF Dongle Henrik Kurelid (2): V4L/DVB (12482): firedtv: add PID filtering for SW zigzag retune V4L/DVB (12582): The current AVC debugging can clog the log down a lot since many Henrik Rydberg (3): backlight: mbp_nvidia_bl: add support for MacBookAir 1,1 Input: bcm5974 - silence uninitialized variables warnings hwmon: applesmc: restore accelerometer and keyboard backlight on resume Henrique de Moraes Holschuh (16): thinkpad-acpi: don't ask about brightness_mode for fw. 1V and 1R thinkpad-acpi: firmware version checks thinkpad-acpi: be more strict when detecting a ThinkPad thinkpad-acpi: hotkey poll fixes thinkpad-acpi: deprecate hotkey_bios_mask thinkpad-acpi: Fix procfs hotkey reset command thinkpad-acpi: don't poll by default any of the reserved hotkeys thinkpad-acpi: report brightness events when required thinkpad-acpi: don't leave ERR_PTR() pointers around thinkpad-acpi: remove uneeded tp_features.hotkey tests in hotkey_exit thinkpad-acpi: drop HKEY event 0x5010 thinkpad-acpi: hotkey event driver update thinkpad-acpi: add internal hotkey event API thinkpad-acpi: name event constants backlight: extend event support to also support poll() thinkpad-acpi: fix CONFIG_THINKPAD_ACPI_HOTKEY_POLL build problem Herbert Xu (76): crypto: ansi_cprng - Do not select FIPS crypto: tcrypt - Fix module return code when testing by name crypto: testmgr - Remove hash size check crypto: skcipher - Fix request for sync algorithms crypto: skcipher - Change default sync geniv on SMP to eseqiv crypto: testmgr - Allow implementation-specific tests crypto: api - Add new template create function crypto: api - Add crypto_alloc_instance2 crypto: shash - Add shash_instance crypto: api - Add new style spawn support crypto: shash - Add spawn support crypto: api - Add crypto_attr_alg2 helper crypto: shash - Add shash_attr_alg2 helper crypto: shash - Add shash_register_instance crypto: shash - Add crypto_shash_ctx_aligned crypto: shash - Add __crypto_shash_cast crypto: shash - Use finup in default digest crypto: shash - Propagate reinit return value crypto: shash - Add shash_instance_ctx crypto: api - Fix crypto_drop_spawn crash on blank spawns crypto: shash - Export/import hash state only crypto: shash - Move finup/digest null checks to registration time crypto: sha1_generic - Add export/import support crypto: sha256_generic - Use 64-bit counter like sha1 crypto: sha256_generic - Add export/import support crypto: sha1-s390 - Add export/import support crypto: sha256-s390 - Add export/import support crypto: padlock - Use shash fallback for sha crypto: shash - Move null setkey check to registration time crypto: async - Use kzfree for requests crypto: shash - Make descsize a run-time attribute crypto: padlock - Switch sha to shash crypto: hmac - Switch to shash crypto: xcbc - Switch to shash crypto: authenc - Remove reference to crypto_hash crypto: hash - Remove legacy hash/digest implementaion crypto: shash - Export async functions crypto: cryptd - Use shash algorithms crypto: ahash - Add crypto_ahash_set_reqsize crypto: cryptd - Use crypto_ahash_set_reqsize crypto: crypto4xx - Use crypto_ahash_set_reqsize crypto: api - Remove frontend argument from extsize/init_tfm crypto: ahash - Convert to new style algorithms crypto: ahash - Add instance/spawn support crypto: tcrypt - Add mask parameter crypto: hash - Add helpers to free spawns crypto: cryptd - Switch to template create API crypto: cryptd - Switch to new style ahash crypto: crypto4xx - Switch to new style ahash crypto: ahash - Remove old_ahash_alg crypto: hash - Zap unaligned buffers crypto: shash - Fix alignment in unaligned operations crypto: ahash - Use GFP_KERNEL in unaligned setkey crypto: ahash - Add unaligned handling and default operations crypto: crypto4xx - Disable SHA implementation crypto: hmac - Fix incorrect error value when creating instance crypto: xcbc - Fix incorrect error value when creating instance crypto: padlock - Fix compile error on i386 crypto: ahash - Fix setkey crash crypto: shash - Fix digest size offset crypto: shash - Fix async finup handling of null digest crypto: padlock - Fix hashing of partial blocks vlan: Propagate physical MTU changes crypto: cryptd - Add finup/export/import for hash crypto: xcbc - Use crypto_xor crypto: xcbc - Fix shash conversion crypto: sha512 - Export struct sha512_state crypto: sha512_generic - Use 64-bit counters crypto: sha512-s390 - Add export/import support crypto: shash - Require all algorithms to support export/import crypto: hmac - Prehash ipad/opad crypto: api - Fix aligned ctx helper Revert crypto: fips - Select CPRNG crypto: ctr - Use chainiv on raw counter mode crypto: blkcipher - Do not use eseqiv on stream ciphers crypto: api - Do not displace newly registered algorithms Herton Ronaldo Krzesinski (4): ALSA: hda - fix noise issue when recording from digital mic with alc268 rtl8187: fix circular locking (rtl8187_stop/rtl8187_work) rtl8187: Implement rfkill support topstar-laptop: add new driver for hotkeys support on Topstar N01 Hidetoshi Seto (28): x86, mce: CE in last bank prevents panic by unknown MCE PCI MSI: Remove attribute check from pci_disable_msi() PCI MSI: Use list_first_entry() PCI MSI: Unify msi_free_irqs() and msix_free_all_irqs() PCI MSI: Relocate error path in init_msix_capability() PCI MSI: MSI-X cleanup, msix_map_region() PCI MSI: MSI-X cleanup, msix_program_entries() PCI MSI: MSI-X cleanup, msix_setup_entries() PCI MSI: Style cleanups PCI: pcie, aer: checkpatch style cleanup in pcie/aer/* PCI: pcie, aer: AER_PR for printing in aerdrv_errprint.c PCI: pcie, aer: rework MASK macros in aerdrv_errprint.c PCI: pcie, aer: init struct aer_err_info for reuse PCI: pcie, aer: fix report of multiple errors PCI: pcie, aer: remove spinlock in aerdrv_errprint.c PCI: pcie, aer: refer mask state in mask register properly PCI: pcie, aer: report multiple/first error on a device PCI: pcie, aer: remove unused macros PCI: pcie, aer: flags to bits PCI: pcie, aer: change error print format PCI: pcie, aer: report all error before recovery [IA64] kdump: Mask MCA/INIT on frozen cpus [IA64] kexec: Make INIT safe while transition to [IA64] kexec: Unregister MCA handler before kexec [IA64] kdump: Don't return APs to SAL from kdump [IA64] kdump: Mask INIT first in panic-kdump path [IA64] kdump: Try INIT regardless of [IA64] kdump: Short path to freeze CPUs Hin-Tak Leung (3): zd1211rw: sort vid/pid pairs by numerical value zd1211rw: adding Accton Technology Corp (083a:e501) as a ZD1211B device rtl8187: updating Kconfig with info of branded devices Hiroshi DOYU (3): OMAP: iommu: fix wrong argument in flush_cache_vmap() OMAP: iommu: add initial debugfs support OMAP clock: use debugfs_remove_recursive() for rewinding Hiroshi Ito (1): mtd: jedec_probe: fix NEC uPD29F064115 detection Hiroshi Shimamoto (4): sched, task_struct: stack_canary is not needed without CC_STACKPROTECTOR sched: Use for_each_class macro in move_one_task() timekeeping: Fix invalid getboottime() value task_struct cleanup: move binfmt field to mm_struct Hitoshi Mitake (1): sched: Hide runqueues from direct reference at source code level for __raw_get_cpu_var() Holger Schurig (6): orinoco: enable cfg80211 "set_channel" operation cfg80211: allow scanning on specified frequencies when using wext-compatibility cfg80211: use cfg80211_wext_freq() for freq conversion cfg80211: minimal error handling for wext-compat freq scanning cfg80211: use cfg80211_wext_freq() for freq conversion cfg80211: minimal error handling for wext-compat freq scanning Horst Schirmeier (1): trivial: doc: document missing value 2 for randomize-va-space Huang Shijie (2): mmap: remove unnecessary code mmap: save some cycles for the shared anonymous mapping Huang Weiyi (13): kmemcheck: remove duplicated #include x86: Remove duplicated #include [ARM] remove duplicated #include [ARM] remove duplicated #include dropmon: remove duplicated #include Security/SELinux: remove duplicated #include Staging: cpc-usb: remove unused #include ASoC: remove unused #include V4L/DVB (12201): adv7343: remove unused #include V4L/DVB (13029): radio-si4713: remove #include x86/i386: Remove duplicated #include powerpc/book3e-64: Remove duplicated #include powerpc/mm: Remove duplicated #include Huang Ying (10): crypto: ghash - Add GHASH digest algorithm for GCM crypto: gcm - Use GHASH digest algorithm crypto: cryptd - Add support to access underlaying shash x86, mce: Support specifying context for software mce injection x86, mce: Support specifying raise mode for software MCE injection x86, mce: Move debugfs mce dir creating to mce.c x86, mce: Fake panic support for MCE testing x86: Move kernel_fpu_using to irq_fpu_usable in asm/i387.h KVM: Add MCE support x86: mce, inject: Use real inject-msg in raise_local Huaxu Wan (1): hwmon: (coretemp) Add Lynnfield CPU Hugh Dickins (37): ACPI: fix NULL bug for HID/UID string fix undefined reference to user_shm_unlock ksm: first tidy up madvise_vma() ksm: define MADV_MERGEABLE and MADV_UNMERGEABLE ksm: the mm interface to ksm ksm: no debug in page_dup_rmap() ksm: identify PageKsm pages ksm: prevent mremap move poisoning ksm: rename kernel_pages_allocated ksm: move pages_sharing updates ksm: pages_unshared and pages_volatile ksm: break cow once unshared ksm: keep quiet while list empty ksm: five little cleanups ksm: fix endless loop on oom ksm: distribute remove_mm_from_lists ksm: fix oom deadlock ksm: sysfs and defaults ksm: add some documentation ksm: remove VM_MERGEABLE_FLAGS ksm: clean up obsolete references ksm: unmerge is an origin of OOMs ksm: mremap use err from ksm_madvise mm: munlock use follow_page mm: remove unused GUP flags mm: add get_dump_page mm: FOLL_DUMP replace FOLL_ANON mm: follow_hugetlb_page flags mm: fix anonymous dirtying mm: reinstate ZERO_PAGE mm: FOLL flags for GUP flags mm: m(un)lock avoid ZERO_PAGE mm: hugetlbfs_pagecache_present mm: ZERO_PAGE without PTE_SPECIAL mm: move highest_memmap_pfn tmpfs: depend on shmem nommu: fix two build breakages Hunyue Yau (1): omapfb: add support for the 2430SDP LCD Huzaifa Sidhpurwala (1): USB: option.c Add support for ZTE AC2726 EVDO modem Hyok S. Choi (1): nommu: Enables to select noMMU mode Ian Armstrong (1): fbcon: only unbind from console if successfully registered Ian Schram (1): perf_counter: Fix perf_copy_attr() pointer arithmetic Igor Chernyshev (1): ALSA: ice1724 - Patch for suspend/resume for Audiotrak Prodigy HD2 Igor M. Liplianin (9): V4L/DVB (12309): Add output clock configuration for stv6110 tuner. V4L/DVB (12310): stv6110 tuner: remove unused iq_wiring configuration parameter. V4L/DVB (12313): stv6110: Read registers through one time i2c_transfer calling V4L/DVB (12314): cx23885: add CAM presence checkout V4L/DVB (12332): Create card parameters array in SDMC DM1105 driver V4L/DVB (12461): Add ce5039(zl10039) tuner support. V4L/DVB (12462): Add TeVii S630 USB DVB-S card support. V4L/DVB (12463): Add support for Compro VideoMate S350 DVB-S PCI card. V4L/DVB (12486): cx88: fix TBS 8920 card support Igor Perminov (4): mac80211: FIF_PSPOLL filter flag rt2x00: Fix for race condition while update beacon rt2x00: FIF_PSPOLL filter flag support rt2x00: Fix beacon de-synchronization while update beacon Iliyan Malchev (1): Staging: HTC Dream: add qdsp support Ilpo Järvinen (1): tcp: fix ssthresh u16 leftover Imre Deak (5): omapfb: add support for MIPI-DCS compatible LCDs N770: enable LCD MIPI-DCS in Kconfig omapfb: dispc: various typo fixes omapfb: add FB manual update option to Kconfig omapfb: HWA742: fix pointer to be const Ingo Molnar (110): Merge branch 'auto' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into oprofile security: rename ptrace_may_access => ptrace_access_check Merge branch 'linus' into sched/core Merge branch 'linus' into x86/cleanups x86: Further clean up of mtrr/generic.c Merge branch 'tip/tracing/ring-buffer-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/core Merge branch 'linus' into tracing/core Merge branch 'linus' into sched/core debug lockups: Improve lockup detection Merge branch 'sched/urgent' into sched/core lockdep: Fix BFS build sched: Fix cpupri build on !CONFIG_SMP debug lockups: Improve lockup detection, fix generic arch fallback x86: Introduce GDT_ENTRY_INIT(), fix APM Merge branch 'linus' into tracing/core tracing: Fix syscall tracing on !HAVE_FTRACE_SYSCALLS architectures Merge branch 'perfcounters/urgent' into perfcounters/core Merge commit 'v2.6.31-rc6' into core/rcu perf: Enable more compiler warnings perf: Build with stack-protector and with -D_FORTIFY_SOURCE=2 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/perfcounters into perfcounters/core perf tools: Remove obsolete defines [S390] ftrace: update system call tracer support Merge commit 'v2.6.31-rc7' into x86/cpu Merge branch 'perfcounters/urgent' into perfcounters/core Merge commit 'v2.6.31-rc7' into x86/cleanups Merge commit 'v2.6.31-rc7' into irq/core Merge branch 'tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/core Merge branch 'tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/core Merge branch 'for-ingo' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-sfi-2.6 into x86/apic Merge branch 'tip/tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/core Merge branch 'perfcounters/tracing' into perfcounters/core Merge commit 'v2.6.31-rc8' into core/locking CRIS: fix defconfig build failure Merge branch 'x86/paravirt' into x86/cpu Merge commit 'v2.6.31-rc8' into x86/txt Merge commit 'v2.6.31-rc8' into sched/core perf tools: Clean up warnings list in the Makefile perf tools: Work around strict aliasing related warnings perf trace: Sample the CPU too Merge branch 'perfcounters/urgent' into perfcounters/core perf_counter: Introduce new (non-)paranoia level to allow raw tracepoint access perf trace: Sample timestamps as well perf trace: Fix parsing of perf.data perf tools: Seek to the end of the header area perf trace: Print out in nanoseconds perf trace: Fix read_string() perf_counter: Fix output-sharing error path x86, msr: Fix msr-reg.S compilation with gas 2.16.1, on 32-bit too Merge branch 'linus' into core/rcu Merge branches 'sched/domains' and 'sched/clock' into sched/core sched: Fix dynamic power-balancing crash sched: Clean up topology.h sched: Turn on SD_BALANCE_NEWIDLE Merge branch 'amd-iommu/2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu Merge commit 'v2.6.31-rc9' into tracing/core Merge branch 'tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/core sched: Disable NEW_FAIR_SLEEPERS for now sched: Fix sched::sched_stat_wait tracepoint field perf: Add 'perf sched' tool perf sched: Import schedbench.c perf sched: Implement the scheduling workload replay engine perf sched: Tighten up the code perf sched: Clean up latency and replay sub-commands perf sched: Display time in milliseconds, reorganize output perf sched: Add runtime stats perf sched: Output runtime and context switch totals perf sched: Add 'perf sched latency' and 'perf sched replay' perf sched: Finish latency => atom rename and misc cleanups perf sched: Clean up PID sorting logic perf sched: Implement the 'perf sched record' subcommand perf_counter: Allow mmap if paranoid checks are turned off perf sched: Add 'perf sched trace', improve documentation perf_counter, sched: Add sched_stat_runtime tracepoint perf tools: Implement counter output multiplexing perf sched: Fix 'perf sched latency' output on 32-bit systems MAINTAINERS: Update tracing tree details slub: Fix build error in kmem_cache_open() with !CONFIG_SLUB_DEBUG sched: Implement a gentler fair-sleepers feature amd64_edac: build driver only on AMD hardware perf sched: Account for lost events, increase default buffering perf sched: Sanity check context switch events perf sched: Make idle thread and comm/pid names more consistent perf sched: Add 'perf sched map' scheduling event map printout Merge branch 'tip/tracing/core4' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/core Blackfin: Fix link errors with binutils 2.19 and GCC 4.3 sched: Fix TASK_WAKING & loadaverage breakage Merge branch 'linus' into tracing/core perf sched: Determine the number of CPUs automatically Merge branch 'linus' into perfcounters/core Merge branch 'tracing/core-v3' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/urgent Merge branch 'tip/tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent Merge branch 'linus' into x86/urgent Merge branch 'linus' into perfcounters/rename perf_counter: Rename list_entry -> group_entry, counter_list -> group_list perf_counter: Rename 'event' to event_id/hw_event perf: Do the big rename: Performance Counters -> Performance Events perf: Tidy up after the big rename Driver-Core: fix devnode callbacks for dabusb and industrialio perf stat: Fix zero total printouts x86: mce: Clean up thermal throttling state tracking code x86: mce: Fix thermal throttling message storm media: video: Fix build in saa7164 vgaarb: make client interface config invariant. modules, tracing: Remove stale struct marker signature from module_layout() Merge branch 'bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen into x86/urgent x86: mce: Use safer ways to access MCE registers Merge branch 'linus' into x86/urgent input: fix build failures caused by Kconfig Winbond WPCD376I Consumer IR hardware driver Kconfig entry Merge branch 'x86/asm' into x86/urgent Ira Snyder (3): fsldma: split apart external pause and request count features fsldma: Add DMA_SLAVE support hwmon: (adm1031) Add sysfs files for temperature offsets Ira W. Snyder (3): hwmon: (ltc4215) Clear faults at startup hwmon: (ltc4245) Clear faults at startup edac: mpc85xx add mpc83xx support Ivan Kokshaysky (1): alpha: AGP update (fixes compile failure) Ivo van Doorn (18): rt2x00: use wiphy rfkill interface rt2x00: Remove DEVICE_STATE_DISABLED_RADIO_HW rt2x00: Fix build error when crypto support is disabled rt2x00: Remove usage of deprecated radio_enabled & IEEE80211_CONF_CHANGE_RADIO_ENABLED rt2x00: Use IEEE80211_TX_CTL_MORE_FRAMES flag rt2x00: Align ieee80211 header to 4-byte boundary for PCI devices rt2x00: Fix RFKILL polling rt2x00: Fix for rt2800usb for SHARED_KEY_TABLE initializations rt2x00: Add new RF chip defines rt2x00: Set SKBDESC_L2_PADDED in RX path rt2x00: wireless CLI ID and packet ID must not be 0 rt2x00: Fix MCS register intialization rt2x00: configure_filter() callback is allowed to sleep rt2x00: bss_info_changed() callback is allowed to sleep rt2x00: Cleanup rt2x00mac_bss_info_changed() rt2x00: Fix TX status reporting rt2x00: Reorganize padding & L2 padding rt2x00: Hardcode TX ack timeout and consume time Izik Eidus (6): KVM: MMU: make __kvm_mmu_free_some_pages handle empty list ksm: add mmu_notifier set_pte_at_notify() ksm: Kernel SamePage Merging ksm: change copyright message ksm: change ksm nice level to be 5 ksm: change default values to better fit into mainline kernel J. Bruce Fields (12): nfsd: minor write_pool_threads exit cleanup nfs: fix compile error in rpc_pipefs.h Merge branch 'nfs-for-2.6.32' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 into for-2.6.32-incoming nfsd: move some of fh_compose into helper functions nfsd: move fsid_type choice out of fh_compose nfsd4: filehandle leak or error exit from fh_compose() nfsd: clean up readdirplus encoding nfsd: fix leak on error in nfsv3 readdir nfsd4: fix null dereference creating nfsv4 callback client nfsd4: allow nfs4 state startup to fail nfsd4: use common rpc_cred for all callbacks nfsd: revise 4.1 status documentation Jack Morgenstein (4): IB/uverbs: Return ENOSYS for unimplemented commands (not EINVAL) IB/mlx4: Don't allow userspace open while recovering from catastrophic error IB/mthca: Don't allow userspace open while recovering from catastrophic error IB/mthca: Fix access to freed memory in catastrophic event handling Jack Steiner (4): x86, pat: Fix cacheflush address in change_page_attr_set_clr() x86: SGI UV: Fix IPI macros x86: SGI UV: Add volatile semantics to macros that access chipset registers x86: SGI UV: Map MMIO-High memory range James A Webb (1): V4L/DVB (12584): Support for Kaiser Baas ExpressCard Dual HD Tuner James Blanford (2): V4L/DVB (13008): gspca - stv06xx-hdcs: Fixup exposure V4L/DVB (13009): gspca - stv06xx-hdcs: Reduce exposure range James Bottomley (7): [SCSI] scsi_transport_sas: fix incorrect duplicate setup of max_phys [SCSI] ses: fix hotplug with multiple devices and expanders [SCSI] ses: add support for enclosure component hot removal [SCSI] ses: update enclosure data on hot add [SCSI] fix bugs in scsi_vpd_inquiry() [SCSI] update MAINTAINERS with new email [SCSI] fix oops during scsi scanning James Morris (11): Merge branch 'master' into next keys: annotate seqfile ops with __releases and __acquires Merge branch 'master' into next Revert "SELinux: Convert avc_audit to use lsm_audit.h" Merge branch 'master' into next Merge branch 'master' into next Merge branch 'master' into next security: update documentation for security_request_module Merge branch 'master' into next Merge branch 'next' into for-linus seq_file: constify seq_operations James Smart (9): [SCSI] lpfc 8.3.4: Various SLI4 fixes [SCSI] lpfc 8.3.4: Consistently Implement persistent port disable [SCSI] lpfc 8.3.4: Various SLI3 fixes [SCSI] lpfc 8.3.4: Fix a pair of FCoE issues [SCSI] lpfc 8.3.4: NPIV vport fixes [SCSI] lpfc 8.3.4: Add bsg (SGIOv4) support for ELS/CT support [SCSI] lpfc 8.3.4: Remove spaces before newlines in several log messages [SCSI] lpfc 8.3.4: Update driver version to 8.3.4 [SCSI] fc_transport: Correct max fc_host attribute count Jan Beulich (14): x86: properly annotate alternatives.c x86: Fix earlyprintk=dbgp for machines without NX Staging: hv: adjust Hyper-V Kconfig thermal: add missing Kconfig dependency x86: Increase timeout for EHCI debug port reset completion in early printk x86: cpuinit-annotate SMP boot trampolines properly x86: Correct segment permission flags in 64-bit linker script memory hotplug: fix updating of num_physpages for hot plugged memory mm: replace various uses of num_physpages by totalram_pages mm: don't use alloc_bootmem_low() where not strictly needed mm: also use alloc_large_system_hash() for the PID hash table BUILD_BUG_ON(): fix it and a couple of bogus uses of it module: reduce symbol table for loaded modules (v2) module: reduce string table for loaded modules (v2) Jan Engelhardt (22): net: mark read-only arrays as const net: implement a SO_PROTOCOL getsockoption net: implement a SO_DOMAIN getsockoption netfilter: xtables: remove xt_TOS v0 netfilter: xtables: remove xt_CONNMARK v0 netfilter: xtables: remove xt_MARK v0, v1 netfilter: xtables: remove xt_connmark v0 netfilter: xtables: remove xt_conntrack v0 netfilter: xtables: remove xt_iprange v0 netfilter: xtables: remove xt_mark v0 netfilter: xtables: remove xt_owner v0 netfilter: xtables: remove redirecting header files netfilter: conntrack: switch hook PFs to nfproto netfilter: xtables: switch hook PFs to nfproto netfilter: xtables: switch table AFs to nfproto netfilter: xtables: realign struct xt_target_param netfilter: iptables: remove unused datalen variable netfilter: xtables: use memcmp in unconditional check netfilter: xtables: ignore unassigned hooks in check_entry_size_and_hooks netfilter: xtables: check for unconditionality of policies netfilter: xtables: check for standard verdicts in policies netfilter: xtables: mark initial tables constant Jan Glauber (5): crypto: sha-s390 - Fix warnings in import function [S390] qdio: continue polling if the queue is not finished [S390] qdio: remove limited number of debugfs entries [S390] qdio: reduce per device debug messages [S390] qdio: change state of all primed input buffers Jan Kara (33): jbd2: Fail to load a journal if it is too short jbd2: Annotate transaction start also for jbd2_journal_restart() ext4: Fix possible deadlock between ext4_truncate() and ext4_get_blocks() nfs: Remove reference to generic_osync_inode from a comment vfs: Introduce filemap_fdatawait_range vfs: Export __generic_file_aio_write() and add some comments vfs: Remove syncing from generic_file_direct_write() and generic_file_buffered_write() pohmelfs: Use __generic_file_aio_write instead of generic_file_aio_write_nolock ocfs2: Use __generic_file_aio_write instead of generic_file_aio_write_nolock vfs: Introduce new helpers for syncing after writing to O_SYNC file or IS_SYNC inode ext2: Update comment about generic_osync_inode ext3: Remove syncing logic from ext3_file_write ext4: Remove syncing logic from ext4_file_write ntfs: Use new syncing helpers and update comments ocfs2: Update syncing after splicing to match generic version xfs: Convert sync_page_range() to simple filemap_write_and_wait_range() pohmelfs: Use new syncing helper fat: Opencode sync_page_range_nolock() vfs: Remove generic_osync_inode() and sync_page_range{_nolock}() udf: Remove dead code udf: Remove wrong assignment in udf_symlink udf: Perform preallocation only for regular files udf: Fix possible corruption when close races with write ext3: Update MAINTAINERS for ext3 and JBD jbd: Journal block numbers can ever be only 32-bit use unsigned int for them jbd: Annotate transaction start also for journal_restart() ext3: Fix possible deadlock between ext3_truncate() and ext3_get_blocks() ext3: Flush disk caches on fsync when needed ext4: Update documentation about quota mount options fs: make sure data stored into inode is properly seen before unlocking new inode vm: document that setting vfs_cache_pressure to 0 isn't a good idea vfs: split generic_forget_inode() so that hugetlbfs does not have to copy it fs: Fix busyloop in wb_writeback() Jan Kiszka (8): KVM: Allow PIT emulation without speaker port KVM: Cleanup LAPIC interface KVM: Fix racy event propagation in timer KVM: Drop useless atomic test from timer function Revert "KVM: x86: check for cr3 validity in ioctl_set_sregs" KVM: Drop obsolete cpu_get/put in make_all_cpus_request KVM: VMX: Avoid to return ENOTSUPP to userland KVM: x86: Disallow hypercalls for guest callers in rings > 0 Jan Nikitenko (1): V4L/DVB (12342): af9015: avoid magically sized temporary buffer in eeprom_dump Jan Scholz (1): HID: completely remove apple mightymouse from blacklist Jani Nikula (1): gpiolib: allow exported GPIO nodes to be named using sysfs links Janne Grunau (3): V4L/DVB (12684): DVB: make DVB_MAX_ADAPTERS configurable V4L/DVB (12685): dvb-core: check fe->ops.set_frontend return value V4L/DVB (12686): dvb-core: check supported QAM modulations Janusz Krzysztofik (13): ASoC: Add support for Conexant CX20442-11 voice modem codec ASoC: Jack handling enhancements as suggested by subsystem maintainer ASoC: CX20442: fix issues pointed out by subsystem maintainer TTY: Add definition of a new line discipline required by Amstrad E3 (Delta) ASoC driver ASoC: CX20442: push down machine independent line discipline bits ASoC: add support for Amstrad E3 (Delta) machine ASoC: CX20442: add some debugging ASoC: CX20442: simplify codec controller usage TTY/ASoC: Rename N_AMSDELTA line discipline to N_V253 ASoC: OMAP: Make use of DMA channel self linking on OMAP1510 ASoC: OMAP: Enhance OMAP1510 DMA progress software counter ARM: OMAP: DMA: Add support for DMA channel self linking on OMAP1510 OMAP1: AMS_DELTA: add modem support Jarek Poplawski (8): ipv4: Use synchronize_rcu() during trie_rebalance() ipv4: Fix inflate_threshold_root automatically ipv4: fib_trie: Use tnode_get_child_rcu() and node_parent_rcu() in lookups pkt_sched: Fix qdisc_graft WRT ingress qdisc pkt_sched: Fix tx queue selection in tc_modify_qdisc pkt_sched: Fix qdisc_create on stab error handling pkt_sched: Fix qstats.qlen updating in dump_stats ax25: Fix ax25_cb refcounting in ax25_ctl_ioctl Jarkko Lavinen (4): mmc: add mmc card sleep and awake support omap_hsmmc: fix scatter-gather list sanity checking omap_hsmmc: add mmc card sleep and awake support omap_hsmmc: fix NULL pointer dereference Jarkko Nikula (5): ARM: OMAP: McBSP: Fix ASoC on OMAP1510 by fixing API of omap_mcbsp_start/stop OMAP: McBSP: Use textual values in DMA operating mode sysfs files ASoC: OMAP: Fix setup of XCCR and RCCR registers in McBSP DAI ARM: OMAP: McBSP: Merge two functions into omap_mcbsp_start/_stop ASoC: OMAP: Add functionality to set CLKR and FSR sources in McBSP DAI Jarod Wilson (2): crypto: des_s390 - Permit weak keys unless REQ_WEAK_KEY set HID: ignore all recent SoundGraph iMON devices Jaroslav Kysela (5): ALSA: hda_generic: do not read connections for widged with an unknown type ALSA: hda_generic: use AC_WCAP_CONN_LIST check for widget connections ALSA: hda-intel: Cleanups for widget connection list handling ALSA: hda - Add better Intel IbexPeak platform support ALSA: Release v1.0.21 Jason Baron (16): tracing: Map syscall name to number tracing: Call arch_init_ftrace_syscalls at boot tracing: Add DECLARE_TRACE_WITH_CALLBACK() macro tracing: Add syscall tracepoints tracing: Update FTRACE_SYSCALL_MAX tracing: Raw_init() bailout in trace event register fail case tracing: Add ftrace_event_call void * 'data' field tracing: Add trace events for each syscall entry/exit tracing: Add individual syscalls tracepoint id support tracing: Add perf counter support for syscalls tracing tracing: Add more namespace area to 'perf list' output tracing: Convert x86_64 mmap and uname to use DEFINE_SYSCALL tracing: Define NR_syscalls for x86 (32) tracing: Define NR_syscalls for x86_64 tracing: Convert event tracing code to use NR_syscalls tracing: Remove FTRACE_SYSCALL_MAX definitions Jason Gunthorpe (3): IPoIB: Check multicast address format TPM: Fixup boot probe timeout for tpm_tis driver tpm-fixup-pcrs-sysfs-file-update Jason Uhlenkott (1): edac: i3200 memory controller driver Jason Wessel (12): USB: ehci,dbgp,early_printk: split ehci debug driver from early_printk.c USB: dbgp: insert cr prior to nl as needed USB: ehci-dbgp: Execute early BIOS hand off USB: dbgp: EHCI debug controller initialization delays early_printk: Allow more than one early console USB: ehci-dbgp: stability improvements and external re-init USB: ehci-dbgp,ehci: Allow early or late use of the dbgp device USB: ehci-dbgp: errata for EHCI debug controller initialization USB: ehci-dbgp: errata for EHCI debug/host controller synchronization USB: ehci-dbgp,documentation: Documentation updates for ehci-dbgp USB: ehci-dbgp,ehci: Allow dbpg to work with suspend/resume x86: early_printk: Protect against using the same device twice Jason Yeh (1): oprofile: Implement performance counter multiplexing Jassi (4): ASoC: S3C lrsync function made to work with IRQs disabled. ARM: S3C64XX: DMA: struct s3c64xx_dma_buff lli fix. ARM: S3C64XX: DMA: 'size' argument of dma_pool_create ARM: S3C64XX: DMA: Debugged alloc's with GFP_KERNEL flag in Intr context. Jaswinder Singh Rajput (51): x86, cpu: cpu/proc.c display cache alignment and address sizes for 32 bit x86: oprofile/op_model_amd.c set return values for op_amd_handle_ibs() x86: ds.c fix invalid assignment x86: Clean up mtrr/amd.c: x86: Clean up mtrr/centaur.c x86: Clean up mtrr/cleanup.c x86: Clean up mtrr/cyrix.c x86: Clean up mtrr/generic.c x86: Clean up mtrr/if.c x86: Clean up mtrr/mtrr.h x86: Clean up mtrr/state.c x86: Clean up mtrr/main.c ide: ide-taskfile.c fix style problems net: cs89x0: includecheck fix for cs89x0.c net: pcmcia/axnet_cs: includecheck fix axnet_cs.c net: include/linux/icmpv6: includecheck fix for icmpv6.h net: smc911x: includecheck fix for smc911x.h SPARC: fix duplicate declaration PRISM54: fix compilation warning Security/SELinux: includecheck fix kernel/sysctl.c KVM: Replace MSR_IA32_TIME_STAMP_COUNTER with MSR_IA32_TSC of msr-index.h KVM: Use MSR names in place of address xfs: includecheck fix for fs/xfs/xfs_iops.c Staging: otus: includecheck fix: drivers/staging/otus/usbdrv.h Staging: rt2860: includecheck fix: rt_linux.h drm/i915: intel_display.c handle latency variable efficiently tty: includecheck fix: drivers/char, vt.c includecheck fix: s390, sys_s390.c gitignore usr/initramfs_data.cpio.bz2 and usr/initramfs_data.cpio.lzma includecheck fix: um, helper.c includecheck fix: x86, traps.c includecheck fix: x86, shadow.c includecheck fix: drivers/scsi, libfcoe.c includecheck fix: drivers/scsi, ibmvscsi.c includecheck fix: drivers/video, vgacon.c includecheck fix: drivers/xen, evtchn.c includecheck fix: include/acpi, acpi_bus.h includecheck fix: include/drm, drm_memory.h includecheck fix: include/linux, aio.h includecheck fix: include/linux, page_cgroup.h includecheck fix: include/linux, ftrace.h includecheck fix: kernel/trace, ring_buffer.c includecheck fix: x86, cpu/common.c mm: includecheck fix for mm/shmem.c mm: includecheck fix for mm/nommu.c pcmcia: pcnet_cs.c removing useless condition vlynq: includecheck fix: drivers/vlynq/vlynq.c sh: includecheck fix: dwarf.c includecheck fix: Documentation, cfag12864b-example.c net: fix htmldocs sunrpc, clnt.c net: fix htmldocs sunrpc, clnt.c Javier Cardona (12): mac80211: Assign next hop address to pending mesh frames mac80211: Fix regression in mesh forwarding path. mac80211: Improve dequeing from mpath frame queue. mac80211: Use 3-address format for mesh broadcast frames. mac80211: Update the station failed frames average when minstrel is used. mac80211: Early detection of broken mesh paths when using minstrel. mac80211: Assign a default mesh beaconing interval. mac80211: Move mpath and mpp growth to mesh workqueue. mac80211: Fix unresolved mesh frames queued without valid control.vif mac80211: Decouple fail_avg stats used by mesh from rate control algorithm. mac80211: Update mesh config IE to 11s draft 3.02 ath9k: Add support FIF_OTHER_BSS filtering mode. Javier Herrero (1): Input: add driver for OpenCores Keyboard Controller Jay Sternberg (3): iwlwifi: Handle new firmware file with ucode build number in header iwlwifi: update 1000 series API version to match firmware iwlwifi: remove duplicated version info from sysfs Jay Vosburgh (1): bonding: propogate vlan_features to bonding master Jean Delvare (25): IDE: Save a call to PageHighMem() PCI: Unhide the SMBus on the Compaq Evo D510 USDT V4L/DVB (12343): Stop defining I2C adapter IDs nobody uses V4L/DVB (12365): ir-kbd-i2c: Remove superfulous inlines hwmon-vid: Ignore 6th VID pin of AMD family 0Fh processors hwmon: Clearly mark ACPI drivers as such hwmon: (pcf8591) Documentation clean-ups hwmon: (lm85) Don't bind to Winbond/Nuvoton WPCD377I Driver core: Add support for compatibility classes Blackfin: clean up duplicate I2C device type definitions i2c: Drop unused i2c_driver.id field i2c-taos-evm: Switch echo off to improve performance i2c/tsl2550: Use combined SMBus transactions i2c: Convert i2c clients to a device type i2c: Convert i2c adapters to bus devices i2c: Provide compatibility links for i2c adapters i2c: Clearly mark ACPI drivers as such USB: Fix sysfs paths in documentation matroxfb: make CONFIG_FB_MATROX_MULTIHEAD=y mandatory matroxfb: get rid of unneeded macros ACCESS_FBINFO and MINFO matroxfb: get rid of unneeded macros WPMINFO and friends matroxfb: get rid of unneeded macro MINFO_FROM matroxfb: get rid of CONFIG_FB_MATROX_32MB hwmon: Delete deprecated FSC drivers ACPI: Clarify resource conflict message Jean-Christophe PLAGNIOL-VILLARD (1): wl12xx: switch to %pM to print the mac address Jean-Francois Moine (20): V4L/DVB (12226): gspca - spca508: Extend the write_vector routine. V4L/DVB (12227): gspca - pac7311: Webcam 093a:2629 added. V4L/DVB (12228): gspca - vc032x: Webcam 0ac8:c301 added. V4L/DVB (12229): gspca - main: Change the ISOC initialization mechanism. V4L/DVB (12230): gspca - t613: Change tas5130a init sequences. V4L/DVB (12231): gspca - main: Version change. V4L/DVB (12280): gspca - sonixj: Remove auto gain/wb/expo for the ov7660 sensor. V4L/DVB (12353): gspca - vc032x: Add the 1280x960 resolution for sensor mi1310_soc V4L/DVB (12354): gspca - vc032x: H and V flip controls added for mi13x0_soc sensors V4L/DVB (12355): gspca - vc032x: Cleanup source V4L/DVB (12358): gspca - main: Memorize the current alt before setting it V4L/DVB (12383): gspca - vc032x: Bad h/v flip controls when inverted by default. V4L/DVB (12501): gspca - sonixj: Do the ov7660 sensor work again. V4L/DVB (12691): gspca - sonixj: Don't use mdelay(). V4L/DVB (12692): gspca - sunplus: Optimize code. V4L/DVB (12693): gspca - sunplus: The brightness is signed. V4L/DVB (12694): gspca - vc032x: Change the start exchanges of the sensor hv7131r. V4L/DVB (12695): gspca - vc032x: Do the LED work with the sensor hv7131r. V4L/DVB (12696): gspca - sonixj / sn9c102: Two drivers for 0c45:60fc and 0c45:613e. V4L/DVB (12953): gspca - vc032x: Bad GPIO of the Samsung Q1 on start/stop streaming. Jeff Garzik (2): [libata] EH: freeze port before aborting commands [libata] sata_sil: disable DMA engine in sil_freeze() Jeff Layton (21): sunrpc: add routine for comparing addresses sunrpc: add common routine for copying address portion of a sockaddr nfsd: make nfs4_client->cl_addr a struct sockaddr_storage nfsd: convert nfs4_cb_conn struct to hold address in sockaddr_storage nfsd: add support for NFSv4 callbacks over IPv6 nfsd: populate sin6_scope_id on callback address with scopeid from rq_addr on SETCLIENTID call cifs: send IPv6 addr in upcall with colon delimiters cifs: use tcon pointer in cifs_show_options cifs: protect GlobalOplock_Q with its own spinlock cifs: consolidate reconnect logic in smb_init routines cifs: fix oplock request handling in posix codepath cifs: remove cifsInodeInfo.oplockPending flag cifs: take read lock on GlobalSMBSes_lock in is_valid_oplock_break cifs: have cifsFileInfo hold an extra inode reference vfs: explicitly cast s_maxbytes in fiemap_check_ranges vfs: change sb->s_maxbytes to a loff_t vfs: remove redundant position check in do_sendfile cifs: convert oplock breaks to use slow_work facility (try #4) cifs: eliminate cifs_init_private cifs: fix problems with last two commits cifs: fix locking and list handling code in cifs_open and its helper Jeff Mahoney (6): Staging: rtl8192su: compile fixes Staging: rtl8192su: fix up printk warnings Staging: rtl8192su: fixup size comparison warning Staging: rtl8192su: stop using skb->tail Staging: rtl8192su: add linux/vmalloc.h Staging: rtl8192e: compile fixes Jeff Moyer (1): cfq: choose a new next_req when a request is dispatched Jens Axboe (43): sparc: add basic support for 'perf' writeback: get rid of generic_sync_sb_inodes() export writeback: move dirty inodes from super_block to backing_dev_info writeback: switch to per-bdi threads for flushing data writeback: get rid of pdflush completely writeback: add some debug inode list counters to bdi stats writeback: add name to backing_dev_info writeback: check for registered bdi in flusher add and inode dirty cfq-iosched: drain device queue before switching to a sync queue block: make bio_rw_flagged() return a bool bio: first step in sanitizing the bio->bi_rw flag testing block: improve queue_should_plug() by looking at IO depths block: add blk-iopoll, a NAPI like approach for block devices block: fix long lines in block/blk-iopoll.c block: adjust default budget for blk-iopoll block: fix comment in blk-iopoll.c block: use interrupts disabled version of raise_softirq_irqoff() cfq-iosched: get rid of must_alloc flag block: make blk_iopoll_prep_sched() follow normal 0/1 return convention block: enable rq CPU completion affinity by default block: don't assume device has a request list backing in nr_requests store block: fix linkage problem with blk_iopoll and !CONFIG_BLOCK fs: remove bdev->bd_inode_backing_dev_info writeback: get rid of wbc->for_writepages writeback: make wb_writeback() take an argument structure fs: Assign bdi in super_block writeback: only use bdi_writeback_all() for WB_SYNC_NONE writeout writeback: use RCU to protect bdi_list writeback: inline allocation failure handling in bdi_alloc_queue_work() writeback: separate starting of sync vs opportunistic writeback writeback: splice dirty inode entries to default bdi on bdi_destroy() writeback: add comments to bdi_work structure writeback: use schedule_timeout_interruptible() nfs: nfs_kill_super() should call bdi_unregister() after killing super writeback: don't use schedule_timeout() without setting runstate writeback: make balance_dirty_pages() gradually back more off nfs: initialize the backing_dev_info when creating the server writeback: improve readability of the wb_writeback() continue/break logic writeback: get rid to incorrect references to pdflush in comments writeback: don't resort for a single super_block in move_expired_inodes() writeback: make the super_block pinning more efficient writeback: writeback_inodes_sb() should use bdi_start_writeback() writeback: pass in super_block to bdi_start_writeback() Jens LĂĄĂĄs (1): fib_trie: resize rework Jens Rosenboom (3): ipv6: Log the explicit address that triggered DAD failure ipv6: Ignore route option with ROUTER_PREF_INVALID ipv6: Log the affected address when DAD failure occurs Jeremy Fitzhardinge (24): x86/paravirt: split paravirt definitions into paravirt_types.h x86: split out core __math_state_restore x86-32: make sure clts is batched during context switch x86-64: move unlazy_fpu() into lazy cpu state part of context switch x86-64: move clts into batch cpu state updates when preloading fpu x86/acpi: acpi_parse_madt_ioapic_entries: remove redundant braces x86/ioapic.c: ioapic_modify_irq is too large to inline x86/ioapic.c: unify __mask_IO_APIC_irq() x86/ioapic.c: remove #ifdef for 82093AA workaround x86/ioapic.c: remove redundant declaration of irq_pin_list x86/ioapic.c: move lost comment to what seems like appropriate place x86/ioapic.c: convert io_apic_level_ack_pending loop to normal for() loop x86/ioapic.c: simplify add_pin_to_irq_node() x86/ioapic.c: convert replace_pin_at_irq_node to conventional for() loop x86/ioapic.c: clean up replace_pin_at_irq_node logic and comments x86/ioapic.c: convert __target_IO_APIC_irq to conventional for() loop x86/ioapic.c: unify ioapic_retrigger_irq() x86/i386: Make sure stack-protector segment base is cache aligned x86/i386: Put aligned stack-canary in percpu shared_aligned section xen: make -fstack-protector work under Xen xen: only enable interrupts while actually blocking for spinlock x86: split __phys_addr out into separate file xen: check EFER for NX before setting up GDT mapping x86: split NX setup into separate file to limit unstack-protected code Jerome Glisse (12): drm/radeon/kms: add r600 KMS support drm/radeon/kms: wait for cp idle before stopping it. drm/radeon/kms: call r100_cp_disable rather than duplicating code. drm/radeon/kms: add R4XX mc register access helper. drm/radeon/kms: Don't try to process irq when we are unloading drm/radeon/kms: R3XX/R4XX AGP asic use PCI GART not PCIE GART drm/radeon/kms: move modeset init outside of GPU init drm/radeon/kms: convert r4xx to new init path drm/radeon/kms: move mtrr range add and memory information drm/radeon/kms: cleanup - remove radeon_share.h drm/radeon/kms: clear confusion in GART init/deinit path drm/radeon/kms: don't fail if we fail to init GPU acceleration Jes Sorensen (1): KVM: ia64: Correct itc_offset calculations Jesper Dangaard Brouer (2): Doc: seq_file.txt fix wrong dd command example. edac: core: remove completion-wait for complete with rcu_barrier Jesper Nilsson (3): CRIS: Change DEFINE_PER_CPU of current_pgd to be non volatile. CRISv10: Don't autonegotiate if autonegotiation is off CRIS: Cleanup linker script using new linker script macros. Jesse Barnes (24): drm: remove root requirement from DRM_IOCTL_SET_VERSION (+ DRM_IOCTL_AUTH_MAGIC) drm: clarify scaling property names drm/i915: add dynamic clock frequency control PCI: export pci_claim_resource for driver use x86/PCI: initialize PCI bus node numbers early ACPI button: provide lid status functions drm/i915: force mode set at lid open time drm/i915: use ACPI LID status for LVDS ->detect hook drm/i915: generate a KMS uevent at lid open/close time drm/i915: framebuffer compression for pre-GM45 PCI: pcie portdrv: remove unused variable PCI: fix VGA arbiter header file MAINTAINTERS: remove hotplug driver entries drm/i915: fix typo in compressed buffer setup drm/i915: fix suspend/resume breakage in lid notifier drm/i915: fix startup hang on some non-mobile platforms drm/i915: prevent FIFO calculation overflows on 32 bits with high dotclocks ACPI: make ACPI button funcs no-ops if not built in drm/i915: blacklist Acer AspireOne lid status drm/i915: correct FBC update when pipe base update occurs drm: fix drm_fb_helper handling of kernel crtcs x86/PCI: make 32 bit NUMA node array int, not unsigned char drm/i915: split display functions by chip type drm/i915: framebuffer compression for GM45+ Jesse Brandeburg (3): e1000: allow ethtool coalesece to adjust interrupts per second e1000: implement jumbo receive with partial descriptors e1000: fix flow control thresholds Jianjun Kong (1): mm: Fix problem of parameter in note Jie Yang (1): atl1e: fix 2.6.31-git4 -- ATL1E 0000:03:00.0: DMA-API: device driver frees DMA Jim Lieb (16): Staging: vt665x: 64bit compile fixes Part 1 Staging: vt665x: 64bit compile fixes Part 2 Staging: vt6655 textual cleanup in prep for driver merge Staging: vt665x: Text janitor in prep for driver merge Staging: vt665x: Text janitor in prep for driver merge, part 2 Staging: vt665x: Typedef and macro cleanup Part 1 Staging: vt665x: Typedef and macro cleanup Part 2 Staging: vt665x: Clean up include files, Part 1 Staging: vt665x: Clean up include files, Part 2 Staging: vt665x: Remove umem.h Part 1 Staging: vt665x: Remove umem.h Part 2 Staging: vt665x: remove tpci.h file Staging: vt665x: remove tpci.h file in vt6656 Staging: vt665x: cleanup USB definitions Staging: vt665x: remove tbit.h Staging: vt665x: remove tbit.h part 2 Jim Persson (1): Input: usbtouchscreen - support for JASTEC/DigiTech DTR-02U USB touch controllers Jin Dongming (1): mem_class: fix bug Jiri Kosina (9): HID: use debugfs for report dumping descriptor HID: use debugfs for events/reports dumping HID: fix debugfs build with !CONFIG_DEBUG_FS HID: fix memory leak on error path in debug code HID: add force feedback support for Logitech WingMan Formula Force GP HID: support larger reports than 64 bytes in hiddev Merge branches 'upstream', 'upstream-fixes' and 'debugfs' into for-linus HID: fix non-atomic allocation in hid_input_report HID: consolidate connect and disconnect into core code Jiri Olsa (1): tracing/function-graph: x86_64 stack allocation cleanup Jiri Pirko (3): bonding: wipe out printk's bonding: make ab_arp select active slaves as other modes getrusage: fill ru_maxrss value Jiri Slaby (36): ath5k: remove permissions from debugfs files ath9k: remove permissions from debugfs files wireless: wl12xx, fix lock imbalance irq: Clean up by removing irqfixup MODULE_PARM_DESC() [SCSI] lpfc: don't dereference NULL [SCSI] nsp_cs: fix buf overflow x86/PCI: pci quirks, fix pci refcounting KVM: fix lock imbalance V4L/DVB (12372): saa7134: fix lock imbalance V4L/DVB (12373): hdpvr: fix lock imbalances [IA64] pci_br, fix infinite loop in find_free_ate() Staging: dream, fix buf overflow mtd: sst25l, fix lock imbalance cyclades: add tty refcounting cyclades: remove block_til_ready cyclades: avoid addresses recomputation cyclades: switch to tty_port_hangup cyclades: close cleanup cyclades: overall cleanup cyclades: sleep instead busy-wait cyclades: use dtr_rts helpers cyclades: merge cy_startup tails cyclades: ioctls cleanup cyclades: tiocm cleanup cyclades: introduce cyy_readb/writeb cyclades: remove more duplicated code tty: Power: fix suspend vt regression tty: riscom8, fix shutdown declaration tty: riscom8, fix tty refcnt tty: USB: serial/mct_u232, fix tty refcnt tty: Char: mxser, add support for CP112UL tty: Char: mxser, use THRE for ASPP_OQUEUE ioctl USB: usb-serial, remove unused variables USB: make usb_buffer_map_sg consistent with doc video: console, use DIV_ROUND_UP memstick: move dev_dbg Jiro SEKIBA (6): nilfs2: implement nilfs_show_options to display mount options in /proc/mounts nilfs2: remove redundant super block commit nilfs2: fix disorder of nilfs_write_super in nilfs_sync_fs nilfs2: clean up nilfs_write_super nilfs2: stop using periodic write_super callback nilfs2: shorten freeze period due to GC in write operation v3 Joachim Fenkes (2): IB/ehca: Construct MAD redirect replies from request MAD IB/ehca: Fix CQE flags reporting Joe Eykholt (51): [SCSI] libfc: remove extra semicolons from debug macros [SCSI] libfc: change debug messages to give host number. [SCSI] fcoe: stop delivery of received frames before doing lport_destroy() [SCSI] libfc: rename lport NONE state to DISABLED [SCSI] libfc: stop login after fabric logoff [SCSI] libfc: in fc_lport_destroy, flush rports after turning off link [SCSI] libfc: fix WARNING from fc_seq_start_next on closed exchanges [SCSI] libfc: rename rport state "NONE" to "DELETE". [SCSI] libfc: fc_rport_logoff should not drop the lock [SCSI] libfc: fix: cancel rport retry timer [SCSI] fcoe: libfcoe: extra semicolon in CHECK_LOGGING macros causes compile error [SCSI] fcoe: remove unnecessary list and lock initializations. [SCSI] libfc: prepare to split off struct fc_rport_priv from fc_rport_libfc_priv [SCSI] libfc: change interface for rport_create [SCSI] libfc: fix RPORT_TO_PRIV and PRIV_TO_RPORT() macros. [SCSI] libfc: make fc_rport_priv the primary rport interface. [SCSI] libfc: change elsct to use FC_ID instead of rdata [SCSI] libfc: make rport structure optional [SCSI] libfc: rearrange code in fc_rport_work [SCSI] libfc: rename rport event CREATED to READY [SCSI] libfc: don't create dummy (rogue) remote ports [SCSI] libfc: fix rport event race between READY and LOGO [SCSI] libfc: eliminate disc->event [SCSI] libfc: remove unused disc->delay element [SCSI] libfc: rport debug messages were printing pointer values [SCSI] libfc: simplify fc_lport_rport_callback [SCSI] libfc: make rport module maintain the rport list [SCSI] libfc: have rport_create do a lookup for pre-existing rports first [SCSI] libfc: change to make remote port callback optional [SCSI] libfc: move rport_lookup into fc_rport.c [SCSI] libfc: do not log off rports before or after discovery [SCSI] libfc: discovery restart sequence error fix [SCSI] libfc: rearrange code in fc_disc_gpn_ft_resp() [SCSI] libfc: handle discovery failure more correctly. [SCSI] libfc: fix: empty zone causes endless discovery retries. [SCSI] libfc: discovery retry should clear pending first. [SCSI] libfc: discovery gpn_ft parse bug [SCSI] libfc: clean up point-to-point discovery code. [SCSI] libfc: don't do discovery before callback is set [SCSI] libfc: move remote port lookup for ELS requests into fc_rport.c. [SCSI] libfc: fix: rport_recv_req needs disc_mutex when calling rport_lookup [SCSI] libfc: improve debug messages for ELS response handlers [SCSI] libfc: correctly handle incoming PLOGI request. [SCSI] libfc: fix rport error handling for login-required and invalid ops [SCSI] libfc: re-login to remote ports that send us LOGO [SCSI] libfc: LOGO response code had extraeous enter_rtv [SCSI] libfc: use ADISC to verify rport login state [SCSI] libfc: fix handling of incoming Discover Address (ADISC) requests [SCSI] libfc: send GPN_ID in reaction to single-port RSCNs. [SCSI] libfc: don't swap OX_ID and RX_ID when sending BA_RJT [SCSI] fcoe: flush per-cpu thread work when destroying interface Joe Perches (47): hwrng: Use PCI_VDEVICE ext4: Remove unnecessary semicolons in mballoc.c drivers/net/wireless: Use PCI_VDEVICE drivers/net/wireless/ath/ath9k: Remove unnecessary semicolons MAINTAINERS: Update rtl8180 patterns MAINTAINERS: NETWORKING [WIRELESS] additional patterns MAINTAINERS: update information for sfc network driver lib/vsprintf.c: Add "%pI6c" - print pointer as compressed ipv6 address s2io.c: Use const for strings s2io.c: Shorten code line length by using intermediate pointers s2io.c: Use calculated size in kmallocs s2io.c: use kzalloc s2io.c: Make more conforming to normal kernel style s2io.c: convert printks to pr_ s2io.c: fix spelling explaination s2io.c: Standardize statistics accessors s2io.c: Convert skipped nic->config.tx_cfg[i]. to tx_cfg-> s2io: Generate complete messages using single line DBG_PRINTs drivers/ata: Remove unnecessary semicolons MAINTAINERS: Add Atheros Linux wireless drivers home page V4L/DVB (12196): cx18-fileops.c: Remove unnecessary semicolons V4L/DVB (12197): Remove unnecessary semicolons V4L/DVB (12198): ivtv-driver.c: Remove unnecessary semicolons V4L/DVB (12204): bttv and meye: Use PCI_VDEVICE V4L/DVB (12703): gspca - sn9c20x: Reduces size of object pcmcia: drivers/pcmcia/pcmcia_resource.c: Remove unnecessary semicolons arch/m68knommu/kernel/time.c: Remove unnecessary semicolons mfd: remove unnecessary semicolons from twl4030 x86, mtrr: Convert loop to a while based construct, avoid naked semicolon Use new __init_task_data macro in arch init_task.c files. trivial: remove unnecessary semicolons drivers/regulator/pcf50633-regulator.c: Remove unnecessary semicolons scripts/get_maintainer.pl: add --git-blame scripts/get_maintainer.pl: add sections in pattern match depth order scripts/get_maintainer.pl: add --pattern-depth scripts/get_maintainer.pl: better email routines, use perl not shell where possible scripts/get_maintainer.pl: add .mailmap use, shell and email cleanups scripts/get_maintainer.pl: using --separator implies --nomultiline scripts/get_maintainer.pl: add --remove-duplicates scripts/get_maintainer.pl: add maintainers in order listed in matched section MAINTAINERS: integrate P:/M: lines MAINTAINERS: move ARM lists to infradead lib/vsprintf.c: Avoid possible unaligned accesses in %pI6c msm_sdcc.c: convert printk(KERN_ to pr_( msm_sdcc.c: stylistic cleaning msm_sdcc.c: move overly indented code to separate function MAINTAINERS: add Matt Mackall and Herbert Xu to HARDWARE RANDOM NUMBER GENERATOR Joe Peterson (2): n_tty: honor opost flag for echoes n_tty: move echoctl check and clean up logic Joel Becker (40): ocfs2: Make the ocfs2_caching_info structure self-contained. ocfs2: Change metadata caching locks to an operations structure. ocfs2: Take the inode out of the metadata read/write paths. ocfs2: move ip_last_trans to struct ocfs2_caching_info ocfs2: move ip_created_trans to struct ocfs2_caching_info ocfs2: Pass struct ocfs2_caching_info to the journal functions. ocfs2: Store the ocfs2_caching_info on ocfs2_extent_tree. ocfs2: Pass ocfs2_caching_info to ocfs2_read_extent_block(). ocfs2: ocfs2_find_path() only needs the caching info ocfs2: ocfs2_create_new_meta_bhs() doesn't need struct inode. ocfs2: Pass ocfs2_extent_tree to ocfs2_unlink_path() ocfs2: ocfs2_complete_edge_insert() doesn't need struct inode at all. ocfs2: Get inode out of ocfs2_rotate_subtree_root_right(). ocfs2: Pass ocfs2_extent_tree to ocfs2_get_subtree_root() ocfs2: Drop struct inode from ocfs2_extent_tree_operations. ocfs2: ocfs2_rotate_tree_right() doesn't need struct inode. ocfs2: ocfs2_update_edge_lengths() doesn't need struct inode. ocfs2: ocfs2_rotate_subtree_left() doesn't need struct inode. ocfs2: __ocfs2_rotate_tree_left() doesn't need struct inode. ocfs2: ocfs2_rotate_tree_left() no longer needs struct inode. ocfs2: ocfs2_merge_rec_left/right() no longer need struct inode. ocfs2: ocfs2_try_to_merge_extent() doesn't need struct inode. ocfs2: ocfs2_grow_branch() and ocfs2_append_rec_to_path() lose struct inode. ocfs2: ocfs2_truncate_rec() doesn't need struct inode. ocfs2: Make truncating the extent map an extent_tree_operation. ocfs2: ocfs2_insert_at_leaf() doesn't need struct inode. ocfs2: Give ocfs2_split_record() an extent_tree instead of an inode. ocfs2: ocfs2_do_insert_extent() and ocfs2_insert_path() no longer need an inode. ocfs2: ocfs2_extent_contig() only requires the superblock. ocfs2: Swap inode for extent_tree in ocfs2_figure_merge_contig_type(). ocfs2: Remove inode from ocfs2_figure_extent_contig(). ocfs2: ocfs2_figure_insert_type() no longer needs struct inode. ocfs2: Make extent map insertion an extent_tree_operation. ocfs2: ocfs2_insert_extent() no longer needs struct inode. ocfs2: ocfs2_add_clusters_in_btree() no longer needs struct inode. ocfs2: ocfs2_remove_extent() no longer needs struct inode. ocfs2: ocfs2_split_and_insert() no longer needs struct inode. ocfs2: Teach ocfs2_replace_extent_rec() to use an extent_tree. ocfs2: __ocfs2_mark_extent_written() doesn't need struct inode. ocfs2: Pass ocfs2_caching_info into ocfs_init_*_extent_tree(). Joerg Albert (6): ath5k: fix missing output in monitor mode after ifconfig up ar9170: cleanup of bss_info_changed and beacon config ar9170: remove unnecessary call to ar9170_set_beacon_timers ar9170: added phy register initialisation from eeprom values ath,ar9170: move CTL_ defines into regd.h ath,ar9170: implemented conformance test limit calc. for tx power Joerg Roedel (68): x86/amd-iommu: Dump fault entry on DTE error x86/amd-iommu: Dump illegal command on ILLEGAL_COMMAND_ERROR x86/amd-iommu: Introduce function for iommu-local domain flush x86/amd-iommu: Remove some merge helper code x86/amd-iommu: replace "AMD IOMMU" by "AMD-Vi" x86/amd-iommu: Remove redundant 'IOMMU' string x86/amd-iommu: fix broken check in amd_iommu_flush_all_devices x86/amd-iommu: Add function to flush all DTEs on one IOMMU x86/amd-iommu: Add reset function for command buffers x86/amd-iommu: Reset command buffer on ILLEGAL_COMMAND_ERROR x86/amd-iommu: Panic if IOMMU command buffer reset fails x86/amd-iommu: Reset command buffer if wait loop fails x86/amd-iommu: Make fetch_pte aware of dynamic mapping levels x86/amd-iommu: Use fetch_pte in iommu_unmap_page x86/amd-iommu: Use fetch_pte in amd_iommu_iova_to_phys x86/amd-iommu: Add a gneric version of amd_iommu_flush_all_devices x86/amd-iommu: Introduce set_dte_entry function x86/amd-iommu: Flush domains if address space size was increased x86/amd-iommu: Introduce increase_address_space function x86/amd-iommu: Change alloc_pte to support 64 bit address space x86/amd-iommu: Remove last usages of IOMMU_PTE_L0_INDEX x86/amd-iommu: Remove bus_addr check in iommu_map_page x86/amd-iommu: Use 2-level page tables for dma_ops domains x86/amd-iommu: Remove old page table handling macros x86/amd-iommu: Support higher level PTEs in iommu_page_unmap x86/amd-iommu: Change iommu_map_page to support multiple page sizes x86/dma: Mark iommu_pass_through as __read_mostly x86/amd-iommu: Add core functions for pd allocation/freeing x86/amd-iommu: Add passthrough mode initialization functions x86/amd-iommu: Fix device table write order x86/amd-iommu: Align locking between attach_device and detach_device x86/amd-iommu: Make sure a device is assigned in passthrough mode x86/amd-iommu: Don't detach device from pt domain on driver unbind x86/amd-iommu: Initialize passthrough mode when requested Merge branches 'gart/fixes', 'amd-iommu/fixes+cleanups' and 'amd-iommu/fault-handling' into amd-iommu/2.6.32 Merge branch 'amd-iommu/passthrough' into amd-iommu/2.6.32 Merge branch 'amd-iommu/pagetable' into amd-iommu/2.6.32 hugetlbfs: export vma_kernel_pagsize to modules KVM: Prepare memslot data structures for multiple hugepage sizes KVM: MMU: Fix MMU_DEBUG compile breakage KVM: MMU: make rmap code aware of mapping levels KVM: MMU: rename is_largepage_backed to mapping_level KVM: MMU: make direct mapping paths aware of mapping levels KVM: MMU: make page walker aware of mapping levels KVM: MMU: shadow support for 1gb pages KVM: MMU: enable gbpages by increasing nr of pagesizes KVM: report 1GB page support to userspace KVM: SVM: add helper functions for global interrupt flag KVM: SVM: optimize nested #vmexit KVM: SVM: optimize nested vmrun KVM: SVM: copy only necessary parts of the control area on vmrun/vmexit KVM: SVM: complete interrupts after handling nested exits KVM: SVM: move nested svm state into seperate struct KVM: SVM: cache nested intercepts KVM: SVM: consolidate nested_svm_exit_handled KVM: SVM: do nested vmexit in nested_svm_exit_handled KVM: SVM: simplify nested_svm_check_exception KVM: SVM: get rid of nested_svm_vmexit_real KVM: SVM: clean up nested_svm_exit_handled_msr KVM: SVM: clean up nestec vmload/vmsave paths KVM: SVM: clean up nested vmrun path KVM: SVM: remove nested_svm_do and helper functions KVM: SVM: handle errors in vmrun emulation path appropriatly KVM: SVM: move special nested exit handling to separate function KVM: SVM: remove unnecessary is_nested check from svm_cpu_run KVM: SVM: move nested_svm_intr main logic out of if-clause KVM: SVM: check for nested VINTR flag in svm_interrupt_allowed KVM: SVM: enable nested svm by default Johannes Berg (162): cfg80211: pass netdev to change_virtual_intf cfg80211: issue netlink notification when scan starts rt2x00: remove skb->do_not_encrypt usage mac80211: push rx status into skb->cb mac80211: improve per-sta debugfs cfg80211: prohibit scanning the same channel more than once mac80211_hwsim: clean up the skb before passing it back cfg80211: send wext MLME-MICHAELMICFAILURE.indication wext: allow returning NULL stats mac80211: fix todo lock wext: default to y cfg80211: move break statement to correct place nl80211: clean up function definitions cfg80211: use proper allocation flags cfg80211: remove wireless_dev->bssid mac80211: tell SME about real auth state wext: constify extra argument to wireless_send_event cfg80211: introduce nl80211 testmode command mac80211: remove an unused function declaration wireless: define AKM suites cfg80211: emulate connect with auth/assoc cfg80211: managed mode wext compatibility cfg80211: implement iwpower cfg80211: implement IWAP for WDS cfg80211: implement IWRATE cfg80211: implement get_wireless_stats mac80211: re-add HT disabling mac80211: remove auth algorithm retry mac80211: remove dead code, clean up cfg80211: send events for userspace SME cfg80211: reset auth algorithm cfg80211: assimilate and export ieee80211_bss_get_ie cfg80211: keep track of BSSes cfg80211: refuse authenticating to same BSSID twice nl80211: limit to one pairwise cipher for associate() cfg80211: fix giwrange iwlwifi: make software queue assignment more efficient iwlwifi: scan requested channels only iwlwifi: fix aggregation limit rfkill: prep for rfkill API changes cfg80211: let SME control reassociation vs. association mac80211: remove dead code from mlme mac80211: rework MLME for multiple authentications mac80211: refactor the WEP code to be directly usable cfg80211: fix netdev down problem cfg80211: dont use union for wext cfg80211: mlme API must be able to sleep cfg80211: warn again on spurious deauth cfg80211: properly name driver locking cfg80211: fix MFP bug, sparse warnings cfg80211: fix locking cfg80211: clean up naming once and for all cfg80211: disallow configuring unsupported interfaces hwsim: make testmode_cmd static netlink: remove unused exports netlink: use call_rcu for netlink_change_ngroups net: make namespace iteration possible under RCU genetlink: make netns aware net: move and export get_net_ns_by_pid wireless extensions: make netns aware wext: optimise, comment and fix event sending net/compat/wext: send different messages to compat tasks gianfar: remove unused DECLARE_MAC_BUF net: explain netns notifiers a little better mac80211: fix sparse warning mac80211: driver operation debugging cfg80211: fix race in giwrate cfg80211: fix two buglets nl80211: introduce new key attributes cfg80211: rework key operation mac80211: fix multi-use timer mac80211: monitor the connection cfg80211: fix a locking bug mac80211: mesh: fix two small problems cfg80211: fix wext stats mac80211_hwsim: report fixed signal strength cfg80211: don't look at wdev->ssid for giwessid cfg80211: fix wext setting SSID nl80211: report BSS status cfg80211: fix more bugs in mlme handling mac80211: cancel the connection monitor timers/work cfg80211: fix unregistration iwlwifi: make some logging functions static/unexport wireless: remove print_mac uses cfg80211: don't optimise wext calls too much net: export __dev_addr_sync/__dev_addr_unsync mac80211: remove master netdev net: remove unused skb->do_not_encrypt mac80211: fix ieee80211_xmit call context net: deprecate print_mac mac80211: cooperate more with network namespaces cfg80211: make aware of net namespaces mac80211: allow using network namespaces mac80211: fix mlme timeouts mac80211: fix PS-poll response, race iwlwifi: fix up command sending iwlwifi: remove command callback return value cfg80211: fix circular lock dependency (1) mac80211: fix receiving deauth nl80211: add missing parameter clearing cfg80211: fix disassoc while not associated mac80211: verify info->control.vif is not NULL cfg80211: combine iwfreq implementations cfg80211: combine IWAP handlers cfg80211: combine IWESSID handlers cfg80211: self-contained wext handling where possible mac80211: disable software retry for now cfg80211: keep track of current_bss for userspace SME mac80211: fix sparse warnings/errors iwlwifi: don't export symbols not needed in other modules cfg80211: fix NETDEV_UNREGISTER notifier mac80211: fix powersave cfg80211: lower dynamic PS timeout to 100ms cfg80211: clear SSID on disconnect/no connection mac80211: stay authenticated after disassoc cfg80211: fix nl80211 disconnected events cfg80211: fix SME association after disassociation cfg80211: validate channel settings across interfaces cfg80211: use reassociation when possible nl80211: add generation number to all dumps mac80211: explain TX retry and status mac80211: document TX powersave filter requirements mac80211: allow DMA optimisation cfg80211: fix alignment problem in scan request iwlwifi: refactor some thermal throttle code iwlwifi: automatically adjust sleep level cfg80211: fix locking for SIWFREQ cfg80211: add missing device list locking mac80211: take statistics before encryption mac80211: sequence number micro-optimisation mac80211: small tx code cleanup cfg80211: check for and abort dangling scan requests cfg80211: allow driver to override PS default iwlwifi: remove unused members of iwl_ht_info iwlwifi: disable PS by default cfg80211: fix deadlock cfg80211: report userspace SME connected event properly mac80211: allow configure_filter callback to sleep mac80211: remove deprecated API cfg80211: fix dangling scan request checking mac80211: fix register_hw error path [SCSI] fcoe: convert to %pM mac80211: fix configure_filter invocation after stop cfg80211: check lost scans later, fix bug cfg80211: make spurious warnings less likely, configurable cfg80211: clean up properly on interface type change mac80211: remove tasklet enable/disable mac80211: fix RX skb leaks mac80211: fix scan cancel on ifdown iwlwifi: fix ICT irq table endianness iwlwifi: use sleep interval succession rfkill: relicense header file iwlwifi: disable powersave for 4965 genetlink: fix netns vs. netlink table locking cfg80211: fix SME connect kmemcheck: add missing braces to do-while in kmemcheck_annotate_bitfield iwlwifi: disable powersave for 4965 cfg80211: fix SME connect mac80211: fix DTIM setting cfg80211: don't overwrite privacy setting module: preferred way to use MODULE_AUTHOR genetlink: fix netns vs. netlink table locking (2) Johannes Goerner (1): V4L/DVB (12281): gspca - sunplus: Webcam 052b:1803 added. Johannes Weiner (8): kernel-doc: allow multi-line declaration purpose descriptions mm: make swap token dummies static inlines mm: perform non-atomic test-clear of PG_mlocked on free mm: drop unneeded double negations mm: introduce page_lru_base_type() mm: return boolean from page_is_file_cache() mm: return boolean from page_has_private() mm: document is_page_cache_freeable() John Bonesio (2): ASoC: MPC5200: Increase the delay time between resets ASoC: MPC5200: Support for buffer wrap around John Dykstra (1): tcp: Remove redundant copy of MD5 authentication key John Linn (1): net: add Xilinx emac lite device driver John Reiser (1): ftrace: __start_mcount_loc should be .init.rodata John Stultz (1): timekeeping: Introduce timekeeping_leap_insert John W. Linville (7): mac80211_hwsim: fix-up build damage from removal of skb->dst ray_cs: remove bogus NULL check at head of ray_get_wireless_stats rc80211_pid_algo.c: remove unused variable declaration wl1271: remove print_mac usage libipw: switch from ieee80211_* to libipw_* naming policy mac80211: remove ieee80211_rx namespace hack libipw: initiate cfg80211 API conversion John Williams (7): mtd: Enable Open Firmware initialisation of MTD devices and maps for MicroBlaze microblaze: Use correct kbuild variable KBUILD_CFLAGS microblaze: Ensure CPU usermode is set on new userspace processes microblaze: Clear sticky FSR register after generating exception signals microblaze: Updated CPU version and FPGA family codes in PVR microblaze: Copy ppc asm-compat.h for clean handling of constants in asm and C microblaze: Create the LOAD_OFFSET macro used to compute VMA vs LMA offsets John(Jung-Ik) Lee (1): libata: Add pata_atp867x driver for Artop/Acard ATP867X controllers Jon Frosdick (1): sh: Use internal watchdog timer to perform reset Jon Hunter (1): USB: EHCI: ensure all watchdog timer events are deleted when suspending usb Jonathan Cameron (15): Staging: IIO: core support for device registration and management Staging: IIO: max1363 ADC driver Staging: IIO: tsl2561 digital light sensor core support Staging: IIO: lis3l02dq accelerometer core support Staging: IIO: kxsd9 accelerometer minimal support Staging: IIO: Add generic ring buffer support to the IIO core Staging: IIO: VTI sca3000 series accelerometer driver (spi) Staging: IIO: Trigger support added to core. Staging: IIO: Ring buffer: Initial pass at rarely locked ring buffer Staging: IIO: lis3l02dq ring buffer and data ready trigger support Staging: IIO: max1363 add software ring buffer support using ring_sw Staging: IIO: Periodic timer based trigger Staging: IIO: Proof of concept gpio trigger Staging: IIO: Initial documentation Staging: IIO: Add todo list for staging Jonathan Corbet (1): Document the flex_array library. Jonathan McDowell (2): [ARM] pxa: balloon3 (http://balloonboard.org/) base machine support omapfb: add support for the Amstrad Delta LCD Jonathan Woithe (2): fujitsu-laptop: fix config corner case fujitsu-laptop: increment driver version Joonyoung Shim (11): ASoC: add SOC_DOUBLE_EXT_TLV control type ASoC: add SOC_DOUBLE_R_EXT_TLV control type ASoC: MAX9877: add MAX9877 amp driver ASoC: MAX9877: separate callback functions ASoC: MAX9877: fix write operation for register ASoC: Fix data format configuration for S3C64XX IISv2 V4L/DVB (12413): radio-si470x: separate common and usb code V4L/DVB (12414): radio-si470x: change to dev_* macro from printk V4L/DVB (12415): radio-si470x: add disconnect check function V4L/DVB (12416): radio-si470x: add i2c driver for si470x Input: add touchscreen driver for MELFAS MCS-5000 controller Jory A. Pratt (1): kbuild: fix cc1 options check to ensure we do not use -fPIC when compiling Jose Alberto Reguero (1): V4L/DVB (12753): af9015: [1/2] fix USB TS configuration Josef Bacik (6): Btrfs: make balance code choose more wisely when relocating Btrfs: don't keep retrying a block group if we fail to allocate a cluster Btrfs: fix bitmap size tracking Btrfs: remove dead code Btrfs: fix extent entry threshold calculation Btrfs: account for space used by the super mirrors Joseph Cihula (4): x86, intel_txt: Intel TXT boot support x86, intel_txt: Intel TXT reboot/halt shutdown support x86, intel_txt: Intel TXT Sx shutdown support intel_txt: Force IOMMU on for Intel TXT launch Josh Boyer (2): powerpc: Fix __flush_icache_range on 44x powerpc/4xx: Fix erroneous xmon warning on PowerPC 4xx Josh Stone (4): tracing: Rename FTRACE_SYSCALLS for tracepoints tracing: Make syscall tracepoints conditional tracing: Move tracepoint callbacks from declaration to definition tracing: Create generic syscall TRACE_EVENTs Josh Triplett (4): rcu: Fix typo in rcu_irq_exit() comment header tracing: Add vim script to enable folding for function_graph traces rcutorture: Occasionally delay readers enough to make RCU force_quiescent_state Documentation/vm/.gitignore: add page-types Jouni Hogander (4): spi: omap2_mcspi use BIT(n) omapfb: dispc: disable iface clocks along with func clocks omapfb: dispc: enable wake up capability omapfb: suspend/resume only if FB device is already initialized Jouni Malinen (1): mac80211: Check pending scan request after having processed mgd work Julia Lawall (65): drivers/net/cs89x0.c: Avoid using magic number in set_dma_mode Input: use resource_size when allocating resources drivers/net/bonding: Adjust constant name HID: Drop NULL test on list_entry result drivers/net: Drop unnecessary NULL test drivers/isdn: Drop unnecessary NULL test drivers/net: Correct redundant test net/netlabel: Correct redundant test drivers/atm: Correct redundant test fs/xfs: Correct redundant test drivers/net: Use DIV_ROUND_CLOSEST drivers/atm: Use DIV_ROUND_CLOSEST ARM: 5635/1: Use DIV_ROUND_CLOSEST drivers/net/wireless: Use DIV_ROUND_CLOSEST security/smack: Use AF_INET for sin_family field net/rds: Use AF_INET for sin_family field drivers/ide/ide-cd.c: Use DIV_ROUND_CLOSEST HID: fix memory leak on error patch in debug code drivres/net: Change constant name drivers/net/tokenring: Use status field rather than state field drivers/net: Correct use of request_region/request_mem_region drivers/net/wireless/ath/ath5k: Change constant name powerpc/fsl_rio: Add kmalloc NULL tests powerpc/ipic: introduce missing kfree powerpc/qe: introduce missing kfree hvc_console: Drop unnecessary NULL test powerpc: Use DIV_ROUND_CLOSEST in time init code Bluetooth: Add missing kmalloc NULL tests to Marvell driver fujitsu-laptop: Correct redundant test Input: w90p910_keypad - move a dereference below a NULL test fs/xfs: Correct redundant test KVM: correct error-handling code drivers/ata: use resource_size drivers/net/wan: introduce missing kfree drivers/net/phy: introduce missing kfree ASoC: Clean up error handling in MPC5200 DMA setup V4L/DVB (12421): drivers/media/video/gspca: introduce missing kfree V4L/DVB (12477): Use dst_type field instead of type_flags V4L/DVB (12483): Use DIV_ROUND_CLOSEST hwmon: Use resource_size Staging: otus: Drop an unnecessary NULL test Staging: b3dfg: Drop NULL test on list_entry result Staging: meilhaus: convert nested spin_lock_irqsave to spin_lock Staging: Correct use of ! and & Staging: dst: correct error-handling code staging: Make some structures static Staging: rtl8192e: Drop unnecessary NULL test Staging: dream: introduce missing kfree Staging: iio: introduce missing kfree MIPS: TXx9: Fix error handling. i2c-pnx: Correct use of request_region/request_mem_region V4L/DVB (13012): uvc: introduce missing kfree drivers/net: remove duplicate structure field initialization USB: gadget: Drop NULL test on list_entry result USB: storage: Drop an unneeded a NULL test USB: isp1362: Correct use of ! and & drivers/rtc: correct error-handling code drivers/rtc: introduce missing kfree drivers/video: add kmalloc NULL tests drivers/net/wireless: Use usb_endpoint_dir_out fs/romfs: correct error-handling code edac: fix resource size calculation fs/romfs: correct error-handling code drivers/vlynq/vlynq.c: fix resource size off by 1 error RDMA/nes: Remove duplicate .ndo_set_mac_address field initialization Julian Scheel (1): V4L/DVB (12481): Fix lowband tuning with tda8261 Julie Zhu (1): microblaze: Add architectural support for USB EHCI host controllers Julien Tinnes (1): personality handling: fix PER_CLEAR_ON_SETID for security reasons Julius Volz (1): IPVS: Add handling of incoming ICMPV6 messages Jurij Smakov (1): sparc64: build compressed image (zImage) by default Jussi Kivilinna (39): rndis_wlan: convert get/set frag/rts to cfg80211 usbnet: Add stop function pointer to 'struct rndis_data'. rndis_wlan: convert set/get txpower to cfg80211 usbnet: allow "minidriver" to prevent urb unlinking on usbnet_stop rndis_wlan: stop workers on rndis_wlan_stop() and restore on rndis_wlan_reset() rndis_wlan: clear cfg80211 scan on rndis_wlan_stop() rndis_wlan: reset device and restore multicast list on rndis_wlan_reset() rndis_wlan: set current packet filter to zero on stop rndis_wlan: add rndis_set/query_oid debugging rndis_host: allow rndis_wlan to see all indications rndis_wlan: handle 802.11 indications from device rndis_wlan: add missing padding to struct rndis_80211_remove_key rndis_wlan: rework key handling usbnet: add rx queue pausing cfg80211: export cfg80211_wext_siwfreq rndis_wlan: fix broken logic in add_wep_key() rndis_wlan: set cipher suites for cfg80211 rndis_wlan: ignore OID_802_11_ADD_KEY triggered media connect indications rndis_wlan: get bssid scan list before new scan rndis_wlan: resize bssid list if too small rndis_wlan: increase scan timer delay rndis_wlan: move link up/down work to separate functions rndis_wlan: use is_zero_ether_addr() and is_broadcast_ether_addr() rndis_wlan: set ieee80211_ptr->iftype in rndis_change_virtual_intf rndis_wlan: enable infrastructure before setting random essid rndis_wlan: add cfg80211 connect, disconnect, join_ibss and leave_ibss rndis_wlan: add cfg80211 set_channel rndis_wlan: add cfg80211 key handling rndis_wlan: add cfg80211 get_station rndis_wlan: add cfg80211 dump_station rndis_wlan: rename wireless stats worker to device poller rndis_wlan: remove unneeded SIOCSIWCOMMIT rndis_wlan: convert mic failure wireless event to cfg80211 rndis_wlan: disable IWEVPMKIDCAND wireless event rndis_wlan: use cfg80211_wext_handler rndis_wlan: use bool for on/off switches rndis_wlan: cleanup rndis_wlan: fix sparse endianess warnings rndis_wlan: remove 'select WIRELESS_EXT' in Kconfig Juuso Oikarinen (4): wl12xx: removed chipset interrupt source configuration from fw wakeup wl12xx: Moved wl1251 TX path implementation into chip specific files wl12xx: Add support for block reading from a fixed register address wl12xx: Use chipset specific join commands KAMEZAWA Hiroyuki (15): vmalloc: unmap vmalloc area after hiding it kcore: fix vread/vwrite to be aware of holes kcore: /proc/kcore should use vread kcore: use usual list for kclist kcore: add kclist types kcore: register vmalloc area in generic way kcore: register text area in generic way walk system ram range kcore: use registerd physmem information kcore: register vmemmap range kcore: register module area in generic way kcore: more fixes for init /proc/kcore: fix stat.st_size /proc/kcore: update stat.st_size after memory hotplug memcg: add comments explaining memory barriers KOSAKI Motohiro (17): mm: clean up page_remove_rmap() mm: show_free_areas(): display slab pages in two separate fields mm: oom analysis: add per-zone statistics to show_free_areas() mm: oom analysis: add buffer cache information to show_free_areas() mm: oom analysis: Show kernel stack usage in /proc/meminfo and OOM log output mm: oom analysis: add shmem vmstat mm: rename pgmoved variable in shrink_active_list() mm: shrink_inactive_list() nr_scan accounting fix fix mm: vmstat: add isolate pages mm: remove __{add,sub}_zone_page_state() vmscan: move ClearPageActive from move_active_pages() to shrink_active_list() vmscan: kill unnecessary page flag test vmscan: kill unnecessary prefetch oom: move oom_adj value from task_struct to signal_struct oom: make oom_score to per-process value oom: oom_kill doesn't kill vfork parent (or child) oom: fix oom_adjust_write() input sanity check KaiGai Kohei (2): cleanup in ss/services.c Add audit messages on type boundary violations Kalle Valo (46): wl12xx: cmd and acx interface rework wl12xx: reserver buffer for read32()/write32() in struct wl12xx wl12xx: fix error handling in wl12xx_probe() wl12xx: reserve buffer for partition command in struct wl12xx wl12xx: allocate buffer spi read/write command buffer kzalloc() wl12xx: allocate buffer the spi busy word from struct wl12xx wl12xx: use wl12xx_mem_read32() to read the rx counter wl12xx: fix rx descriptor use wl12xx: protect wl12xx_op_set_rts_threshold() wl12xx: optimise elp wakeup and sleep calls wl12xx: check if elp wakeup failed wl12xx: enable ELP mode wl12xx: rename wl1251.c wl1251_ops.c wl12xx: rename driver to wl1251 wl1251: remove wl1271_setup() wl1251: add wl1251 prefix to all 1251 files wl1251: rename wl12xx.h to wl1251.h wl12xx: remove unused wl12xx_hw_init_mem_config() wl1251: use wl1251 prefix everywhere wl1251: fix a checkpatch warning wl1251: remove accidentally added wl1251_netlink.c wl1251: remove wl1251_plt_start/stop() MAINTAINERS: add wl1251 wireless driver wl1251: remove fixed address support from spi commands wl1251: remove wl1251_ops wl1251: reorder wl1251_cmd_join() arguments wl1251: use beacon interval and dtim period provided by mac80211 wl1251: remove wait parameter from wl1251_cmd_join() wl1251: initialise default channel to zero wl1251: add channel to wl1251_cmd_join() parameters wl1251: create wl1251_join() wl1251: fix channel setting in wl1251_op_config() wl1251: move wl1251_acx_wake_up_conditions() to wl1251_ps_set_mode() wl1251: use workqueue provided by mac80211 wl1251: rename reg.h to wl1251_reg.h wl1251: remove Luciano as maintainer wl1251: add hw scan completed debug message wl1251: hack to disable filters for fixing association iwl3945: fix compilation error in iwl3945_pass_packet_to_mac80211() wl1251: remove wl1251_ops.c wl1251: remove unused definitions from wl1251_reg.h OMAP: remove OMAP_TAG_SERIAL_CONSOLE OMAP: UART: drop OMAP_TAG_UART, enable all UARTs, auto-disabled on idle OMAP2: compile usb-tusb6010.c OMAP2: add board file for Nokia N800 and N810 OMAP2: n8x0: add n8x0_defconfig Kamalesh Babulal (1): Staging: sep: SEP driver build breaks with CONFIG_PCI=n Karl Hiramoto (1): atm/br2684: netif_stop_queue() when atm device busy and netif_wake_queue() when we can send packets again. Karl Relton (1): Staging: wlan-ng: Convert firmware loading to load binary ihex format Karsten Keil (13): ISDN: Make isdnhdlc usable for other ISDN drivers ISDN: Clean up isdnhdlc code ISDN: Add support for none reverse bitstreams to isdnhdc ISDN: Fix isdnhdlc for one byte hdlc packets mISDN: Make clearing B-channel a common function mISDN: Add driver for Infineon ISDN chipset family mISDN: Driver for AVM Fritz!CARD PCI mISDN: Add support for Speedfax+ cards mISDN: Add driver for Winbond cards mISDN: Add support for Traverse Technologies NETJet PCI cards ISDN: ARRAY_SIZE changes mISDN: hfcmulti display real PCI ids for not supported cards mISDN: Fix wrong struct name in macro and clarifications Kashyap, Desai (20): [SCSI] mptsas : Change DEFINED value of can queue for FC and SAS devices. [SCSI] mptsas : Removed mptscsih_timer_expired. [SCSI] mptsas : Handle INSUFFICIENT resources status as similar to IOC BUSY status [SCSI] mptsas : Change config request timeout value to 30 seconds. [SCSI] mptsas : set max_id to infinite value. [SCSI] mptsas : Code cleanup of host page alloc and diag reset. [SCSI] mptsas : Bump version to 3.04.11 [SCSI] mpt2sas : Rescan topology from Interrupt context instead of work thread [SCSI] mpt2sas: Prevent sending command to FW while Host Reset [SCSI] mpt2sas: Removed wrapper funtions _scsih_link_change. [SCSI] mpt2sas: setting SDEV into RUNNING state from Interrupt context [SCSI] mpt2sas: Raid 10 Volume is showing as Raid 1E in dmesg [SCSI] mpt2sas: cleanup interrupt routine and config_request optimization [SCSI] mpt2sas: Bump driver version 01.100.06.00 [SCSI] mptsas : Sanity check for phyinfo is added [SCSI] mptsas : NULL pointer on big endian systems causing Expander not to tear off [SCSI] mptsas : PAE Kernel more than 4 GB kernel panic [SCSI] mptsas : Send DID_NO_CONNECT for pending IOs of removed device [SCSI] mptsas : FW event thread and scsi mid layer deadlock in SYNCHRONIZE CACHE command [SCSI] mptsas : Bump version to 3.04.12 Kay Sievers (3): mem_class: use minor as index instead of searching the array Driver Core: devtmpfs - kernel-maintained tmpfs-based /dev Driver-Core: extend devnode callbacks to provide permissions Kees Cook (1): proc: fix reported unit for RLIMIT_CPU Kees Schoenmakers (2): MOS7720 has no tiocmget method tty: usb_serial_mos7720: Fix get_lsr_info Keith Packard (1): drm/I915: Use the CRT DDC to get the EDID for DVI-connector on Mac Ken Kawasaki (1): pcnet_cs: add cis of Linksys multifunction pcmcia card Ken MacLeod (1): USB: isp1362: fix pulldown register defines and conf logic Kenji Kaneshige (25): PCI ASPM: do not clear enabled field by support field PCI ASPM: remove redundant list check PCI ASPM: fix possible null pointer dereference PCI ASPM: introduce disable flag PCI ASPM: introduce capable flag PCI ASPM: support partial aspm enablement PCI ASPM: support per direction l0s management PCI hotplug: fix typo in pcie link speed info PCI hotplug: add support for 5.0G link speed PCI ASPM: support L1 only PCI: pciehp: remove slot_list field PCI: pciehp: remove num_slots field PCI: pciehp: remove slot_num_inc field PCI: pciehp: remove bus field PCI: pciehp: remove device field PCI: pciehp: remove hp_slot field PCI: pciehp: remove slot_device_offset field PCI: pciehp: remove first_slot field PCI: pciehp: remove slot_bus field PCI: pciehp: remove crit_sect mutex PCI: pciehp: remove pci_dev field PCI: pciehp: remove hpc_ops PCI: pciehp: remove number field PCI: pciehp: remove error message definitions PCI: pciehp: remove slot capabilities definitions Kevin A. Granade (1): Staging: asus_oled: Cleaned up checkpatch issues. Kevin Cernekee (2): m25p80: Add Spansion S25FL129P serial flashes kaweth: Fix memory leak in kaweth_control() Kevin Hilman (14): ASoC: spdif codec: enable use by modules ASoC: spdif: set module licence to GPL ASoC: davinci: don't use clock names IDE: palm_bk3710: convert clock usage after clkdev conversion MAINTAINERS: add entry for TI DaVinci machine support davinci: Kconfig: enable EVMs by default when SoCs are enabled davinci: remove watchdog from soc_info davinci: Kconfig: update default config for 2.6.31-rc davinci: da830: updates for mach-type name change davinci: Kconfig: update default defconfig davinci: audio clocks: use struct device instead of clock names davinci: Kconfig: add dm646x ASoC support [WATCHDOG] davinci: use clock framework for timer frequency omapfb: add support for the 3430SDP LCD Kim Kyuwon (1): Input: add driver for Maxim MAX7359 key switch controller Kim Phillips (3): crypto: talitos - simplify hmac data size calculation crypto: talitos - align locks on cache lines crypto: talitos - add support for 36 bit addressing Kiran Divekar (1): libertas: add NULL check on return value of get_zeroed_page Kirill A. Shutemov (2): ARM: 5700/1: ARM: Introduce ARM_L1_CACHE_SHIFT to define cache line size ARM: 5701/1: ARM: copy_page.S: take into account the size of the cache line Kirill Smelkov (1): perf tools: .gitignore += perf*.html Klaus-Dieter Wacker (3): qeth: HiperSockets SIGA retry support on CC=2. qeth: Cleanup for cast-type determination. qeth: display service_level info only when valid. Koen Kooi (1): omapfb: add support for the OMAP3 Beagle DVI output Konrad Eisele (5): sparc,leon: CONFIG_SPARC_LEON option and leon specific files. sparc,leon: Redefine MMU register access asi if CONFIG_LEON sparc,leon: Introduce the sparc-leon CPU type. sparc,leon: Added support for AMBAPP bus. sparc, leon: sparc-leon specific SRMMU initialization and bootup fixes. Krishna Kumar (5): net: Avoid enqueuing skb for default qdiscs Speed-up pfifo_fast lookup using a private bitmap netdevice: Consolidate to use existing macros where available. net: convert remaining non-symbolic return values in dev_queue_xmit pkt_sched: Fix resource limiting in pfifo_fast Kristoffer Ericson (2): ARM: 5689/1: Update default config of HP Jornada 700-series machines pcmcia: cleanup/fixup patch for sa1100_jornada_pcmcia driver Krzysztof Halasa (4): WAN/LMC: Fix type_trans(). WAN: remove deprecated PCI_DEVICE_ID from PCI200SYN driver. IXP42x HSS support for setting internal clock rate trivial: fix comment typo in drivers/ata/pata_hpt37x.c Krzysztof HaĹ‚asa (1): Add MAINTAINERS entry for ARM/INTEL IXP4xx arch support. Kumar Gala (14): powerpc/mm: Fix switch_mmu_context to iterate of the proper list of cpus powerpc/85xx: Move mpc8536ds.dts to address-cells/size-cells = <2> powerpc/85xx: Added 36-bit physical device tree for mpc8536ds board powerpc/mm: Fix assert_pte_locked to work properly on uniprocessor powerpc/booke: Move MMUCSR definition into mmu-book3e.h powerpc/mm: Add MMU features for TLB reservation & Paired MAS registers powerpc/book3e-64: Move the default cpu table entry powerpc/book3e-64: Wait til generic_calibrate_decr to enable decrementer powerpc/book3e-64: Add helper function to setup IVORs powerpc/book3e-64: Add support to initial_tlb_book3e for non-HES TLB powerpc/pci: Pull ppc32 PCI features into common powerpc/book3e: Add missing page sizes powerpc/fsl-booke: Use HW PTE format if CONFIG_PTE_64BIT powerpc/85xx: Fix SMP compile error and allow NULL for smp_ops Kuninori Morimoto (33): sh: ms7724se: add 1280x720 lcdc output support sh: Add SH7724 DMAC support. sh: mach-kfr2409: add FLLFRQ value for PLL correction. sh: clkfwk: Support additional IFC divisor on SH7724. sh: Prevent heartbeat from scribbling over non-LED bits. sh: USB0 resource area fix for ms7724se sh: Add SH7724 support to NR_ONCHIP_DMA_CHANNELS sh: Add EcoVec (SH7724) board support ASoC: Add SuperH FSI driver support for ALSA ASoC: Add ak4642/ak4643 codec support ASoC: Add FSI-AK4642 sound support for SuperH sh: fix CPU_SH7723/7724 numbering bug sh: modify to enable boot for EcoVec24 sh: Add SH-ETH support for EcoVec24 sh: Add USB support for EcoVec24 sh: Add support LCDC for EcoVec24 sh: Add CEU support for EcoVec24 sh: Add LCDC Panel support for EcoVec24 sh: Add I2C device support for EcoVec24 sh: add romimage-macros.h sh: Add romImage support for EcoVec24 sh: EcoVec24: write MAC address in boot sh: EcoVec24: add HIZA setting for LED sh: USB disable process is needed if romImage boot for EcoVec24 sh: Add EcoVec24 romImage defconfig sh: add kycr2_delay for sh_keysc sh: Add KEYSC support for EcoVec24 sh: mach-ecovec24: deassert usb irq on boot. sh: mach-ecovec24: need asm/clock.h. sh: kfr2r09: document the PLL/FLL <-> RF relationship. sh: mach-ecovec24: Add user debug switch support sh: mach-ecovec24: Add active low setting for sh_eth sh: add FSI driver support for ms7724se Kurt Roeckx (1): [CPUFREQ] Fix NULL ptr regression in powernow-k8 Kusanagi Kouichi (1): tun: Return -EINVAL if neither IFF_TUN nor IFF_TAP is set. Kyle McMartin (1): drm/i915: i915_modeset is signed Kyungmin Park (2): mtd: OneNAND: 4-bit ECC status macros omapfb: add support for the Apollon LCD Ladinu Chandrasinghe (1): Documentation/: fix warnings from -Wmissing-prototypes in HOSTCFLAGS Lai Jiangshan (5): tracing/stat: Add stat_release() callback tracing/workqueues: Add refcnt to struct cpu_workqueue_stats ring_buffer: Fix warning while ignoring cmpxchg return value tracing/events: add missing type info of dynamic arrays tracing: Simplify print_graph_cpu() Lalit Chandivade (2): [SCSI] qla2xxx: Process DPC requests within valid Fabric topologies. [SCSI] qla2xxx: Correct qla2x00_eh_wait_on_command() to wait correctly. Lamarque Vieira Souza (3): V4L/DVB (12278): zr364xx: implement V4L2_CAP_STREAMING V4L/DVB (12325): Implement changing resolution on the fly for zr364xx driver V4L/DVB (12326): zr364xx: error message when buffer is too small and code cleanup Larry Finger (7): hostap_cs: Enable shared interrupts p54: Eliminate unnecessary initialization b43: Work around mac80211 race condition b43legacy: Work around mac80211 race condition ssb: Fix error when V1 SPROM extraction is forced ssb: Fix error when V1 SPROM extraction is forced b43: Implement RFKILL status for LP PHY Lars Ericsson (3): rt2x00: Don't alter rt2x00dev->default_ant rt2x00: Fix quality houskeeping for software diversity rt2x00: Fix rounding errors in RSSI average calculation Lars Marowsky-Bree (1): dlm: fix connection close handling Lars-Peter Clausen (4): ASoC: neo1973_gta02_wm8753: Replace snd_soc_cnew with snd_soc_add_controls. ASoC: neo1973_gta02_wm8753: Replace deprecated s3c_gpio calls with gpiolib ASoC: jack: Fix race in snd_soc_jack_add_gpios Regulator: Implement list_voltage for pcf50633 regulator driver. Laurent Pinchart (12): V4L/DVB (12184): uvcvideo: Use class-specific descriptor types from usb/ch9.h V4L/DVB (12185): uvcvideo: Prefix all UVC constants with UVC_ V4L/DVB (12186): uvcvideo: Remove unused Logitech-specific constants V4L/DVB (12187): uvcvideo: Move UVC definitions to linux/usb/video.h V4L/DVB (12188): uvcvideo: Set PROBE_MINMAX quirk for Aveo Technology webcams V4L/DVB (12327): uvcvideo: Add PROBE_DEF quirk and enable it for the MT6227 device V4L/DVB (12378): uvcvideo: Restructure the driver to support multiple simultaneous streams. V4L/DVB (12379): uvcvideo: Multiple streaming interfaces support USB: Move endpoint sync type definitions from usb/audio.h to usb/ch9.h USB: Move vendor subclass definition from usb/audio.h to usb/ch9.h USB audio gadget: Prefix all macro definitions with UAC_ in linux/usb/audio.h USB audio gadget: Un-inline generic_[gs]et_cmd Lee Schermerhorn (5): hugetlb: balance freeing of huge pages across nodes hugetlb: use free_pool_huge_page() to return unused surplus pages hugetlb: clean up and update huge pages documentation hugetlb: restore interleaving of bootmem huge pages mmap: avoid unnecessary anon_vma lock acquisition in vma_adjust() Len Brown (34): ACPI: fix CONFIG_ACPI_PROCFS=n build warning eeepc-laptop: whitespace for checkpatch.pl ACPI: Move definition of PREFIX from acpi_bus.h to internal..h ACPI, PCI: Change PREFIX to "PCI" from "ACPI" in mmconfig-shared.c ACPI: check acpi_disabled in acpi_table_parse() and acpi_table_parse_entries() SFI: Simple Firmware Interface - MAINTAINERS, Kconfig ACPI: sleep: another HP DMI entry for init_set_sci_en_on_resume Merge branch 'bugzilla-13745' into release Revert "ACPI: Attach the ACPI device to the ACPI handle as early as possible" Merge branch 'bugzilla-13002' into release Merge branch 'linus' into release Merge branch 'linus' into sfi-release Merge branch 'sfi-base' into release Merge branch 'thinkpad' into release Merge branch 'topstar-laptop' into release ACPI: linux/acpi.h should not include linux/dmi.h ACPI: remove unnecessary #ifdef CONFIG_DMI Merge branch 'acpica' into release Merge branch 'acer' into release Merge branch 'asus' into release Merge branch 'battery' into release Merge branch 'bjorn-start-stop-2.6.32' into release Merge branch 'ec' into release Merge branch 'bugzilla-13620' into release Merge branch 'fujitsu' into release Merge branch 'power-meter' into release Merge branch 'preempt' into release Merge branch 'processor-procfs-2.6.32' into release Merge branch 'thinkpad' into release Merge branch 'misc-2.6.32' into release Merge branch 'video' into release Merge branch 'bjorn-HID' into release Merge branch 'thinkpad-2.6.32-part2' into release ACPI: IA64=y ACPI=n build fix Lennart Poettering (1): sched: Introduce SCHED_RESET_ON_FORK scheduling policy flag Lennart Sorensen (1): microblaze: Actually show KiB rather than pages in "Freeing initrd memory:" Lennert Buytenhek (34): ¶ARM] Orion5x: fix cpu window mapping for 88f6183 mwl8k: remove various unused struct members and defines mwl8k: s/IEEE80211_ADDR_LEN/ETH_ALEN/g mwl8k: sort firmware command list by opcode, and trim unused commands mwl8k: various coding style cleanups mwl8k: remove MWL8K_RADIO_* defines mwl8k: remove MWL8K_RADIO_*_PREAMBLE defines mwl8k: remove MWL8K_WMM_* defines mwl8k: remove MWL8K_*_SLOTTIME defines mwl8k: fix mwl8k_configure_filter() parameter lifetime issue mwl8k: ->add_interface() is not called for monitor interfaces mwl8k: dma header manipulations can't fail mwl8k: don't touch 'command done' interrupt during firmware load mwl8k: don't hardcode the number of transmit queues mwl8k: no need to hold ->tx_lock while setting the hardware interrupt mask mwl8k: implement idle mode mwl8k: mwl8k_txq_xmit() rework mwl8k: mwl8k_queue_work() cleanup mwl8k: fix firmware command serialisation mwl8k: get rid of mwl8k_start() workqueue use mwl8k: get rid of mwl8k_stop() workqueue use mwl8k: get rid of mwl8k_config() workqueue use mwl8k: get rid of mwl8k_bss_info_changed() workqueue use mwl8k: get rid of mwl8k_set_rts_threshold() workqueue use mwl8k: get rid of mwl8k_conf_tx() workqueue use mwl8k: get rid of mwl8k_get_stats() workqueue use mwl8k: get rid of mwl8k_configure_filter() workqueue use mwl8k: remove mwl8k_queue_work() mwl8k: update copyright and version number MAINTAINERS: add information for mwl8k wireless driver mwl8k: fix inverted error test in mwl8k_bss_info_changed() mwl8k: fix pci dma mapping leak in mwl8k_post_cmd() error path mwl8k: missing endian conversion when printing firmware command result mwl8k: separate driver and device info reporting during probe Leo Chen (25): ARM: 5643/1: bcmring: arch.c and header files ARM: 5644/1: add bcmring core.c, clock.c, clock.h ARM: 5645/1: bcmring: add bcmring irq.c ARM: 5646/1: bcmring: add mach-bcmring/mm.c and memory headers ARM: 5647/1: bcmring: add bcmring dma.h and dma_device.c ARM: 5648/1: bcmring: add bmcring dma.c ARM: 5649/1: bcmring: add bcmring timer function ARM: 5650/1: bcmring: add io.h, uncompress. h, and entry-macro.S ARM: 5651/1: bcmring: csp capability header files ARM: 5652/1: bcmring: add misc headers for csp code ARM: 5654/1: bcmring: add csp chipc hardware register file ARM: 5655/1: bcmring: add csp chipc hardware definition file ARM: 5656/1: bcmring: add csp chipc inline functions ARM: 5657/1: bcmring: add csp chipc block source code ARM: 5658/1: bcmring: add csp dmac header files ARM: 5659/1: bcmring: add csp dmac source files ARM: 5660/1: bcmring: add csp timer block header and source files ARM: 5661/1: bcmring: add csp security hardware headers ARM: 5653/1: bcmring: add Makefile of csp code ARM: 5642/1: bcmring: add Makefile/Kconfig/Makefile.boot in mach-bcmring ARM: 5641/1: bcmring: add Kconfig and Makefile entries in arch/arm ARM: 5670/1: bcmring: add default configuration for bcmring arch ARM: 5671/1: bcmring: add maintainer entry ARM: 5625/1: fix hard coded 4K resource size in amba bus detection ARM: 5626/1: add suspend/resume functions to amba-pl011 serial driver Li Hong (1): tracing: Fix a comment and a trivial format issue in tracepoint.h Li Peng (2): Add G33 series in VGA hotplug support category drm/i915: fix opregion backlight chip detect and range Li Yang (1): USB: gadget: Update Freescale UDC entry in MAINTAINERS Li Zefan (46): tracing/events: Add trace_event boot option kmemtrace: Print binary output only if 'bin' option is set kmemtrace: Rename some functions tracing/events: record the size of dynamic arrays tracing/filters: improve subsystem filter lockdep: Fix missing entry in /proc/lock_stat lockdep: Fix missing entries in /proc/lock_chains lockdep: Simplify lockdep seqfile code lockdep: Simplify lockdep_chains seqfile code lockdep: Simplify lock_stat seqfile code tracing/events: Add module tracepoints tracing/syscalls: Fix to print parameter types trace_stat: Fix missing entry in stat file trace_stack: Simplify seqfile code ftrace: Simplify seqfile code tracing/syscalls: Fix fields format for enter events tracing/syscalls: Add fields format for exit events tracing/events: Add ftrace_event_call param to define_fields() tracing/events: Add trace_define_common_fields() tracing/syscalls: Add filtering support tracing/syscalls: Fix the output of syscalls with no arguments tracing/filters: Add filter_type to struct ftrace_event_field tracing/filters: Add __field_ext() to TRACE_EVENT tracing/filters: Support filtering for char * strings tracing/filters: Defer pred allocation tracing/filters: Defer pred allocation, fix memory leak tracing: remove dead code tracing: format clean ups tracing: remove stats from struct tracer tracing: move PRED macros to trace_events_filter.c tracing/profile: fix profile_disable vs module_unload tracing: fix F_printk() typos ftrace: add compile-time check on F_printk() tracing: remove some unused macros softirq: add BLOCK_IOPOLL to softirq_to_name perf tools: Fix memory leak in read_ftrace_printk() perf tools: Increase MAX_EVENT_LENGTH perf trace: Sample timestamp and cpu when using record flag function-graph: use ftrace_graph_funcs directly tracing: remove max_tracer_type_len tracing/events: use list_for_entry_continue tracing: Fix off-by-one in trace_get_user() tracing: Check the return value of trace_get_user() tracing: Fix failure path in ftrace_graph_write() tracing: Fix failure path in ftrace_regex_open() cpumask: use zalloc_cpumask_var() where possible Liam Girdwood (1): regulator: tps650xx - build fixes for x86_64 Liang Li (4): powerpc/83xx: Remove second USB node from SBC834x DTS powerpc/83xx: Add localbus node and MTD partitions for SBC834x powerpc/83xx: Fix incorrect PCI interrupt map in SBC834x DTS powerpc/85xx: sbc8560 - Fix warm reboot with board specific reset function Lin Ming (5): ACPICA: ACPI 4.0: iASL/Disassembler - IPMI keyword support. ACPICA: ACPI 4.0: Interpreter support for IPMI. ACPICA: fix leak of acpi_os_validate_address ACPICA: reformat predefined method table, no functional change ACPICA: Add support for module-level executable AML code Linus Torvalds (202): x86, percpu: Add 'percpu_read_stable()' interface for cacheable accesses Do not call 'ima_path_check()' for each path component Simplify exec_permission_lite() logic Simplify exec_permission_lite() further Simplify exec_permission_lite(), part 3 Make 'check_acl()' a first-class filesystem op shmfs: use 'check_acl' instead of 'permission' ext[234]: move over to 'check_acl' permission model jffs2/jfs/xfs: switch over to 'check_acl' rather than 'permission()' Merge branch 'lookup-permissions-cleanup' Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'kmemleak' of git://linux-arm.org/linux-2.6 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'core-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-futexes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-printk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-threaded-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'oprofile-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-kbuild-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-percpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw Merge branch 'osync_cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'kvm-updates/2.6.32' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'docs-next' of git://git.lwn.net/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'for-2.6.32' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-kconfig Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'for-linus3' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'agp-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6 Merge branch 'x86-txt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-pat-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-next-2.6 Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pcmcia-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip pty_write: don't do a tty_wakeup() when the buffers are full Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for-linus' of git://gitserver.sunplusct.com/linux-2.6-score Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip tty-ldisc: make /proc/tty/ldiscs use ldisc_ops instead of ldiscs tty-ldisc: get rid of tty_ldisc_try_get() helper function Merge branch 'perfcounters-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge branch 'next-i2c' of git://aeryn.fluff.org.uk/bjdooks/linux loongson: fix cut-and-paste mis-merge Merge git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/linux-2.6 Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubi-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-rename-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial Merge branch 'for-2.6.32' of git://linux-nfs.org/~bfields/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86/orig_ax' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland Merge branch 'for-linus' of git://gitserver.sunplusct.com/linux-2.6-score Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'sfi-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-sfi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'fix/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'fix/misc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge git://git.infradead.org/iommu-2.6 Merge branch 'vgaarb-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge git://git.infradead.org/mtd-2.6 Merge branch 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge git://git.infradead.org/battery-2.6 Merge branch 'x86/ptrace-syscall-exit' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland Merge branch 'ixp4xx' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://neil.brown.name/md Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'cputime' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://repo.or.cz/cris-mirror Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-backlight Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 x86: Fix hwpoison code related build failure on 32-bit NUMAQ Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip ACPI: kill "unused variable â€i’" warning alpha: Fix duplicate include Linux 2.6.32-rc1 Linus Walleij (27): ARM: 5665/1: U300 syscon register updates ARM: 5666/1: Revamped U300 padmux API ARM: 5667/3: U300 SSP/SPI board setup and test ARM: 5668/2: U300 I2C board setup ARM: 5685/1: Make MMCI driver compile without gpiolib ARM: 5636/1: Move vendor enum to AMBA include ARM: 5696/1: Include device.h in VIC driver ARM: 5580/2: ARM TCM (Tightly-Coupled Memory) support v3 ARM: 5697/1: MMCI Break out clock divider setup ARM: 5698/1: MMCI pass capabilities in platform data mfd: AB3100 accessor function cleanups mfd: AB3100 propagate error mfd: AB3100 alter default setting mfd: AB3100 disable irq nosync mfd: AB3100 OTP readout rtc: AB3100 RTC support regulator: AB3100 support regulator: Voltage count for AB3100 [WATCHDOG] Use DIV_ROUND_UP() macro in the coh901327 WDT ARM: 5704/1: U300 sched_clock implementation v2 ARM: 5678/1: SSP/SPI PL022 polarity terminology fix ARM: 5718/1: Sane busids for RealView board components Fix some regulator documentation REGULATOR Handle positive returncode from enable ARM: 5720/1: Move MMCI header to amba include dir ARM: 5721/1: MMCI enable the use of a regulator rtc: U300 COH 901 331 RTC driver v3 Liu Yu (3): KVM: ppc: e500: Move to Book-3e MMU definitions KVM: ppc: e500: Directly pass pvr to guest KVM: ppc: e500: Add MMUCFG and PVR emulation Lopez Cruz, Misael (7): ASoC: Zoom2: Add machine driver for Zoom2 board ASoC: TWL4030: Fix voice interface clock masters ASoC: TWL4030: Add AVADC Clock Priority ASoC: TWL4030: Correct bypass event for voice sidetone ASoC: Remove word "Switch" from Handsfree switch name ASoC: TWL4030: Add tristate callbacks for HiFi and Voice ASoC: OMAP: Staticise pcm creation function of omap-pcm Lothar Wassmann (1): USB: NXP ISP1362 USB host driver Lothar WaĂźmann (1): i.MX25 iomux definitions (corrected version) Lubomir Rintel (1): ALSA: pcm - Tell user that stream to be rewound is suspended Luca Tettamanti (1): hwmon: (asus_atk0110) Add maintainer information Lucian Adrian Grijincu (1): powerpc: Update boot wrapper script with the new location of dtc Luciano Coelho (10): wl12xx: add wl12xx_spi_reg_read() and wl12xx_spi_reg_write() functions wl12xx: moved firmware version reading routine to chip-specific functions wl12xx: add support for new WL1271 chip revision wl12xx: add support for fixed address in wl12xx_spi_read wl12xx: pass the wake up condition when configuring the wake up event wl1251: change psm enabled/disabled info to debug wl1271: add wl1271 driver files wl1271: add wl1271 to Kconfig and the Makefile MAINTAINERS: add information for wl1271 wireless driver wl1271: fix compiler warnings on 64 bit archs Lucy Liu (1): ixgbe: allow vlan egress priority mapping in DCB mode Luis Correia (1): rt2x00: Comment spellchecking Luis R. Rodriguez (104): ath9k: differentiate quality reporting between legacy and HT configurations mac80211: drop frames for sta with no valid rate ath9k: downgrade assert in rc.c for invalid rate iwlwifi: remove rs_get_rate workaround ath9k: cleanup try count for MRR in rate control ath9k: remove unused min rate calculation code ath9k: remove unused stepdown when looking for the next rate ath9k: remove pointless wrapper ath_rc_rate_getidx() ath9k: rename ath_rc_get_nextlowervalid_txrate() ath9k: remove unused ath_rc_isvalid_txmask() ath9k: remove ATH9K_MODE_11B ath9k: remap ATH9K_MODE_* ath9k: rename ath_rc_ratefind_ht() to ath_rc_get_highest_rix() ath9k: remove unnecessary IEEE80211_TX_CTL_NO_ACK checks mac80211: make minstrel/pid RC use ieee80211_is_data(fc) iwlwifi: use ieee80211_is_data(fc) mac80211: add helper for management / no-ack frame rate decision ath9k: remove rate control wraper ath9k: disable radio when all devices are marked idle cfg80211: treat ieee80211_regdom hints as user hints ath9k: do not stop the queues in driver stop adm8211: remove uneeded code during suspend/resume ath: map TH to FCC3_WORLD mac80211: fix MLME issuing of probe requests while scanning mac80211: fix oops due to missing private data ath9k: remove unused ATH_PCI_VERSION ath9k: re-order cancelling of work on mac80211 workqueue ath9k: move cancel_delayed_work_sync() out of ath_deinit_leds() ath9k: move workqueue cancels to stop callback ar76c50x-usb: cancel promisc work during mac80211 stop at76c50x-usb: cancel scan work at stop callback ar9170: remove unneeded flush_workqueue() wext: remove extra return on wireless_nlevent_init() ath: depend on cfg80211 ath: simplify kconfig dependency and add documentation ath: use menuconfig to put ath stuff in its own page ath5k: remove EXPERIMENTAL marker wireless: use menuconfig for WLAN_PRE80211 and WLAN_80211 rt2x00: move experimental on kconfig only to rt2800usb ar9170: remove EXPERIMENTAL marker at76c50x-usb: remove unneeded flush_workqueue() at usb disconnect mac80211: redefine usage of the mac80211 workqueue cfg80211: use goto out on country IE reg hint failure cfg80211: do not iterate over rdev list on country IE hint cfg80211: decouple regulatory variables from cfg80211_mutex cfg80211: enable country IE support to all cfg80211 drivers iwlwifi: remove usage of orig_flags ath9k: remove usage of AR_SREV_*() wrapper to detect supported hw ath9k: use a switch for revising supported hw mac revisions ath9k: propagate hw initialization errors ath9k: move memory allocation of ath_hw to ath_init() ath9k: move devid cache setting to ath_init() ath9k: move cache setting of softc ah prior to attach ath9k: call hw initializer directly ath9k: pass only one argument to hw attach ath9k: move hw macrevision checker to helper ath9k: rename ath9k_hw_newstate() to ath9k_hw_init_defaults() ath9k: rename ath9k_hw_set_defaults() to ath9k_hw_init_config() ath9k: remove debug message for no memoery on ath_init() ath9k: break up hw initialization into a few more helpers ath9k: describe hw initialization better ath9k: distinguish between device initialization and ath_softc init ath9k: remove !NULL check before kfree() ath9k: use helper macro to kfree and nullify on ath9k_hw_rfdetach() ath9k: rename ath9k_hw_rfdetach() to ath9k_hw_rf_free() ath9k: rename ath9k_hw_ani_detach() to ath9k_hw_ani_disable() ath9k: set ah to null after freeing ath9k: set sc->sc_ah to NULL after freeing it ath9k: call ath9k_hw_detach() once upon hw init failure ath9k: remove dangling error check on keycache reset on hw init ath9k: remove spurious check for channel on keycache reset ath9k: Remove _t postfix for ar9287_eeprom structure ath9k: add ar9271 revision and subrevision ID helpers ath9k: add initvals and registry definitions for AR9271 ath9k: add initial hardware support for ar9271 ath9k: cancel xmit poll work at stop() callback ath9k: fix compile warning on ath9k_hw_AR9287_check_eeprom() ath9k: use new FIF_PSPOLL configure filter zd1211rw: make it clear we don't use leds.h LED stuff mac80211: fix compilation of mesh (although its disabled) ath9k: Fix regression on receiving PS poll frames ath: add common ath_rxbuf_alloc() and make ath9k use it ath5k: use common ath.ko ath_rxbuf_alloc() ath5k: use bit shift operators for cache line size ath9k: update kconfig to indicate support for AR9002 family ath: move regulatory info into shared common structure wireless: update top level wireless driver entry wireless: update reg debug kconfig entry wireless: remove mac80211 rate selection extra menu kmemleak: use bool for true/false questions kmemleak: add clear command support kmemleak: move common painting code together kmemleak: fix sparse warning over overshadowed flags kmemleak: fix sparse warning for static declarations ath9k: propagate ieee80211_alloc_hw() failure ath9k: propagate errors on ath_init_device() and request_irq() ath9k: claim irq for ath9k, not ath for pci wireless: update cfg80211 kconfig entry wireless: mark prism54 as deprecated and mark for removal wireless: default CONFIG_WLAN to y checkincludes.pl: close file as soon as we're done with it checkincludes.pl: provide usage helper checkincludes.pl: add option to remove duplicates in place wireless: default CONFIG_WLAN to y Luiz Augusto von Dentz (1): Bluetooth: Fix rejected connection not disconnecting ACL link Luotao Fu (4): mx27: add support for phytec pca100 (phyCARD-s) board pcm038: mux configuration for predefined gpio line pcm043: mux configuration for predefined gpio line pcm037: mux configuration for predefined gpio line Lyonel Vincent (1): powerpc/powermac: Thermal control turns system off too eagerly M. Mohan Kumar (1): kprobes: use do_IRQ() in lkdtm Ma Ling (1): drm/i915: select TV format according to connector type Maarten Maathuis (4): drm/crtc_helper: replace modeset fail path with something simpler drm/crtc_helper: place drm_helper_encoder_in_use() in the header file drm/crtc_helper: NULL encoder->crtc when switching encoders drm/crtc_helper: avoid NULL-pointer dereference when encoder is NULL Maciej Sosnowski (1): dca: registering requesters in multiple dca domains Madhusudhan Chikkature (1): MAINTAINERS: update for TI OMAP hsmmc driver Magnus Damm (66): sh: hwblk base implementation sh: hwblk for sh7722 sh: cpuidle for SuperH Mobile using hwblk usb: m66592-udc buffer management update sh: Add support for multiple hwblk counters sh: hwblk support for sh7723 usb: convert r8a66597-hcd to dev_pm_ops usb: r8a66597-hcd platform data on_chip support Driver Core: Add platform device arch data V3 ARM: Rework omap suspend_late()/resume_early() DMA: Rework dw_dmac suspend_late()/resume_early() DMA: Rework txx9dmac suspend_late()/resume_early() I2C: Rework i2c-pxa suspend_late()/resume_early() I2C: Rework i2c-s3c2410 suspend_late()/resume() V2 USB: Rework musb suspend()/resume_early() PM: Remove platform device suspend_late()/resume_early() V2 usb: move r8a66597 register defines usb: m66592-udc platform data on_chip support i2c: change i2c-sh_mobile.c module_init() to subsys_initcall() sh: convert processor device setup functions to arch_initcall() sh: kfr2r09 board support - SCIF console sh: kfr2r09 board support - NOR flash sh: kfr2r09 board support - KEYSC keypad sh: kfr2r09 board support - mach-type and defconfig sh: romImage support V2 sh: kfr2r09 romImage support V2 sh: hwblk support for sh7724 sh: clean up MSTPCRn register definitions sh: Runtime PM pdev hwblk sh: Runtime PM pdev hwblk - sh7722 sh: Runtime PM pdev hwblk - Migo-R sh: Runtime PM pdev hwblk - Solution Engine 7722 sh: Runtime PM pdev hwblk - sh7723 sh: Runtime PM pdev hwblk - AP325RXA sh: Runtime PM pdev hwblk - sh7724 sh: Runtime PM pdev hwblk - kfr2r09 sh: Runtime PM pdev hwblk - Solution Engine 7724 sh: LCDC SYS bus access wait fix sh: 18-bit SYS panel fix for SuperH Mobile LCDC sh: kfr2r09 board support - LCDC panel sh: kfr2r09 board support - NAND flash sh: LED9, LED10 and LED11 support for Solution Engine 7724 sh: fix romImage mach dir usage sh: clean up Migo-R header file sh: Runtime PM pdev hwblk - kfr2r09 LCDC sh: rework SuperH Mobile sleep code exception handling sh: SuperH Mobile Software Standby support for cpuidle usb: add clock support to r8a66597 gadget driver usb: r8a66597-udc buffer management update usb: r8a66597-udc disable interrupts on shutdown fix sh: add r8a66597 usb0 gadget to the kfr2r09 board sh: add r8a66597 usb1 gadget to the se7724 board sh: i2c compile fix for kfr2r09 sh: invalidate icache and tlbs during boot on kfr2r09 sh: jump to p1 during boot on kfr2r09 sh: add kfr2r09 romimage defconfig sh: update kfr2r09 defconfig PM: Run-time PM platform device bus support sh: Runtime PM for SuperH Mobile platform bus devices i2c: Runtime PM for SuperH Mobile I2C video: Runtime PM for SuperH Mobile LCDC v4l2: Runtime PM for SuperH Mobile CEU uio: Runtime PM for UIO devices sh: let ARCH_SHMOBILE select PM and PM_RUNTIME sh: drop static UIO clocks for sh7722, sh7723 and sh7724 mtd: onenand: make onenand/generic.c more generic Maithili Hinge (1): libertas: Fix WEP association failure with open source wpa_supplicant 0.5.10 Mallikarjuna R Chilakala (3): ixgbe: Fix isues while reporting 8259x backplane link capabilities ixgbe: refactor link setup code ixgbe: Patch to fix 82599 multispeed fiber link issues when driver is loaded without any cable and reconnecting it to 1G partner Manish Katiyar (2): ext4: Fix typo in ext4/Kconfig fs/inode.c: add dev-id and inode number for debugging in init_special_inode() Manuel Lauss (7): ASoC: au1x: PSC-AC97 bugfixes MIPS: Alchemy: add gpio_request/gpio_free stubs for CONFIG_GPIOLIB=n MIPS: Alchemy: get rid of allow_au1k_wait MIPS: Alchemy: override loops_per_jiffy detection USB: option: TELIT UC864G support USB: au1xxx: add dev_pm_ops mips: fix build of vmlinux.lds Marc Dionne (1): KEYS: Unlock tasklist when exiting early from keyctl_session_to_parent Marc Kleine-Budde (3): at91sam9263: add at91_can device to generic device definition at91sam9263ek: activate at91 CAN controller at91_can: add driver for Atmel's CAN controller on AT91SAM9263 Marcel Holtmann (20): Bluetooth: Add proper shutdown support to SCO sockets Bluetooth: Disconnect HIDRAW devices on disconnect Bluetooth: Add extra device reference counting for connections Bluetooth: Let HIDP grab the device reference for connections Bluetooth: Fix Kconfig for Marvell Bluetooth driver Bluetooth: Fix compilation of Marvell driver without debugfs Bluetooth: Remove pointless ifdef protection for Marvell header files Bluetooth: Remove pointless casts from Marvell debugfs support Bluetooth: Some coding style cleanup for Marvell core driver Bluetooth: Fix complicated assignment of firmware for Marvell devices Bluetooth: Fix module description strings for Marvell driver Bluetooth: Remove private device name of Marvell SDIO driver Bluetooth: Fix Marvell driver to use skb_put and hci_opcode_pack Bluetooth: Fix last few compiler warning within Marvell core driver Bluetooth: Remove Enter/Leave debug statements from Marvell driver Bluetooth: Coding style cleanup from previous rfcomm_init bug fix Bluetooth: Add module option to enable L2CAP ERTM support Bluetooth: Allow setting of L2CAP ERTM via socket option Bluetooth: Add L2CAP RFC option if ERTM is enabled net: Add DEVTYPE support for Ethernet based devices Marcelo Tosatti (26): KVM: Grab pic lock in kvm_pic_clear_isr_ack KVM: move coalesced_mmio locking to its own device KVM: introduce irq_lock, use it to protect ioapic KVM: switch irq injection/acking data structures to irq_lock KVM: MMU: introduce is_last_spte helper KVM: MMU audit: update count_writable_mappings / count_rmaps KVM: MMU audit: update audit_write_protection KVM: MMU audit: nontrapping ptes in nonleaf level KVM: MMU audit: audit_mappings tweaks KVM: MMU audit: largepage handling KVM: VMX: more MSR_IA32_VMX_EPT_VPID_CAP capability bits KVM: MMU: make for_each_shadow_entry aware of largepages KVM: MMU: add kvm_mmu_get_spte_hierarchy helper KVM: VMX: EPT misconfiguration handler KVM: VMX: conditionally disable 2M pages KVM: convert custom marker based tracing to event traces KVM: x86: missing locking in PIT/IRQCHIP/SET_BSP_CPU ioctl paths KVM: powerpc: convert marker probes to event trace KVM: remove old KVMTRACE support code KVM: use vcpu_id instead of bsp_vcpu pointer in kvm_vcpu_is_bsp KVM: MMU: fix missing locking in alloc_mmu_pages KVM: limit lapic periodic timer frequency KVM: MMU: fix bogus alloc_mmu_pages assignment KVM guest: do not batch pte updates from interrupt context KVM: x86: drop duplicate kvm_flush_remote_tlb calls MAINTAINERS: update KVM entry Marcin Slusarz (12): wireless: fix supported cards for rtl8187 x86: Use printk_once() sh: use printk_once IB: Use printk_once() for driver versions pata_rz1000: use printk_once block: use printk_once Staging: rt3070: add support for Linksys WUSB54GC-EU v3 Staging: rt*: fix wait_queue_head_t declaration on stack Staging: rt*: don't confuse user of rt3070 driver with rt2870 strings tty: vt: use printk_once alpha: use printk_once vsprintf: use WARN_ON_ONCE Marcos Chaparro (1): ath5k: add led pin configuration for compaq c700 laptop Marek Szyprowski (1): ARM: NCP: make ncp_iodesc static and move it to initdata section Marek Vasut (22): Input: wm97xx - add Palm support to Mainstone accelerated touch Input: wm97xx - add possibility to control the GPIO_STATUS shift ALSA: Allow passing platform_data to devices attached to AC97 bus ASoC: Switch palm27x-asoc to jack detection api ALSA: Allow passing platform_data for pxa2xx-ac97 ASoC: Pass correct platform data from pxa2xx-ac97 libertas: Add support for Marvell Libertas CF8305 wm97xx-core: Pass platform_data to battery wm97xx_battery: Use platform_data wm97xx_battery: Use irq to detect charger state wm97xx_battery: Convert to dev_pm_ops backlight: spi driver for LMS283GF05 LCD [ARM] pxa/palm: add detect_delay to mmc for PalmTX,T5,LD [ARM] pxa/palm: Add NOR flash support for PalmLD [ARM] pxa/palm: add NAND Flash support for PalmTX [ARM] pxa/palm: Add NOR Flash support for PalmTX [ARM] pxa: Palm Tungsten|C initial support [ARM] pxa: Palm Tungsten|C PCMCIA support [ARM] pxa/palm: fix possibly uninitialized variable in PalmTC-pcmcia [ARM] pxa: add gpio_pwdown(_inverted) into pxaficp_ir.c MAINTAINERS: fix mailing list entries for ARM/Palm devices mfd/gpio: add a GPIO interface to the UCB1400 MFD chip driver via gpiolib Mario Schwalbe (1): backlight: Add support for new Apple machines. Mark A. Greer (2): davinci: da8xx: Add base DA830/OMAP-L137 SoC support davinci: da8xx: Add support for DA830/OMAP-L137 EVM board Mark Allyn (1): Staging: sep: Upstream revision 3 of the security processor kernel driver Mark Brown (162): ASoC: Add Openmoko Neo FreeRunner (GTA02) audio driver ASoC: Add WM8974 CODEC driver ASoC: WM8974 checkpatch cleanups ASoC: Update WM8974 to use standard I2C device probe methods ASoC: Sort DAPM power sequences while building lists ASoC: Factor out DAPM sequence execution ASoC: Coalesce register writes for DAPM sequences ASoC: Sort specialised mixers and muxes together ASoC: Coalesce power updates for DAPM widgets with events ASoC: Coalesce power updates for PGAs ASoC: Make DAPM power sequence lists local variables Merge branch 'dapm' into for-2.6.32 ASoC: Add WM8961 driver ASoC: Automatically control WM8903 sloping stopband filter ASoC: Automatically manage WM8900 sloping stopband filter ASoC: Automatically manage WM8350 sloping stopband filter ASoC: Add stub suspend and resume calls for ASoC subdevices ASoC: Add suspend and resume callbacks to Wolfson CODEC drivers ASoC: Regulator support for WM8580 ASoC: Fix shadowed variables in twl4030 ASoC: Staticise put_twl4030_opmode_enum_double() Merge branch 'wm8961' into for-2.6.32 ASoC: Add a shutdown callback ASoC: Add core suspend and resume callbacks to WM8961 Merge branch 'for-2.6.31' into for-2.6.32 ASoC: Fix widget powerdown on shutdown ASoC: Remove unreferenced wm8974_add_controls() ASoC: Fix WM8961 suspend function type ASoC: Convert to dev_pm_ops ASoC: Refresh WM8974 bias configuration ASoC: Declare 2 channels for WM8974 ASoC: Refresh WM8974 PLL configuration ASoC: Add WM8974 TLV information ASoC: Use symmetric rates for WM8974 ASoC: WM8974 cosmetic cleanups ASoC: WM8974 DAPM cleanups ASoC: Add WM8523 CODEC driver Merge branch 'for-2.6.31' into for-2.6.32 ASoC: Add CODEC volatile register operation ASoC: Fix leaks in WM8731 probe error handling ASoC: Fix WM8960 leaks on probe failure ASoC: Fix leaks in WM8988 registration error handling ASoC: Begin to factor out register cache I/O functions ASoC: Remove unused AK4535 hardware read functionality ASoC: Remove use of hw_read from TLV320AIC3x driver ASoC: Factor out WM8580 register cache code Merge branch 'for-2.6.31' into for-2.6.32 Merge branch 'davinci' into for-2.6.32 ASoC: Add TLV information for WM8731 ASoC: Correct WM8731 Mic Capture Switch control name ASoC: DaVinci I2S needs mach/asp.h ASoC: Add WM8993 CODEC driver ASoC: Limit WM8731 to symmetric rates ASoC: Use CODEC as clock master on AT91SAM9G20-EK ASoC: Disable microphone input for AT91SAM9G20-EK by default ASoC: Configure WM8731 SYSCLK at startup on AT91SAM9G20-EK ASoC: Add pop delay debug at end of DAPM sequencing ASoC: WM8510 has a single frame clock so needs symmetric rates [ARM] 5596/1: at91sam9g20-ek: Register WM8731 in board file Merge branch 'tlv320aic3x' into reg-cache Merge branch 'for-2.6.31' into for-2.6.32 wm8350_power: Implement charge type property ASoC: Fix sample rate lookup in WM8993 ASoC: Error out if we can't determine a suitable WM9081 sysclk ASoC: Bodge around GCC 4.4.0 flow analysis bug in GCC 4.4.0 ASoC: Fix FLL reference clock division setup in WM8993 ASoC: Fix checkpatch issues in AD1938 Merge branch 'for-2.6.31' into for-2.6.32 Merge branch 'gta02-audio' into for-2.6.32 ASoC: Allow CODECs to flag invalid registers ASoC: Add I/O control bus information to factored out cache setup ASoC: Factor out I2C 8 bit address 16 bit data I/O ASoC: Factor out I/O for Wolfson 8 bit data 16 bit register CODECs ASoC: Factor out 7 bit register 9 bit data SPI write ASoC: Existing S3C24xx AC97 drivers should depend on S3C24xx ASoC: Add WM8776 CODEC driver Merge branch 'for-2.6.31' into for-2.6.32 Merge branch 'reg-cache' into for-2.6.32 ASoC: Convert WM8776 to use factored out register cache code ASoC: Define more formats for the AC97 CODECs ASoC: Drop unneeded declaration of removed wm8731 SPI write function Merge commit 'a5479e389e989acfeca9c32eeb0083d086202280' into for-2.6.32 ASoC: Update WM9081 for tdm_slot() API change ASoC: Update AD1938 for new TDM slot API ASoC: Minor cleanups to AD1938 driver ASoC: Factor out shared code from WM8993 ARM: S3C64XX: Add mapping for IISv4 port ARM: S3C64XX: Add address mapping for AC97 controller ARM: S3C: Move S3C64xx audio devices into S3C64xx directory ARM: S3C24XX: Add platform device for AC97 controller Merge branch 'for-2.6.32' into mxc ASoC: Remove unneeded i.MX dependency on SND ASoC: Staticise unexported variables ASoC: Hook i.MX into build Merge branch 'wm8974-upstream' into for-2.6.32 ASoC: Factor out cache I/O from WM8974 ASoC: Fix handling of bias levels for non-DAPM codecs ASoC: Power speakers and headphones simultaneously ASoC: Fix WM8993 MCLK configuration for high frequency MCLKs ASoC: Implement TDM configuration for WM8993 ASoC: Reenable S3C64xx I2S support ASoC: Remove duplicate ADC/DAC widgets from wm_hubs.c ASoC: Add input and output AIF widgets ASoC: WM8993 digital mixing support ASoC: Provide default set_bias_level() implementation ALSA: Restore support for DMAless DAIs on PXA ASoC: Add DAPM widget power decision debugfs files ASoC: Select core DMA when building for S3C64xx Merge branch 'topic/digital-mixing' into for-2.6.32 genirq: Add prototype for handle_nested_irq() ASoC: Add S3C24xx dependencies for Simtec machines ASoC: Make platform data optional for TLV320AIC3x ASoC: Fix s3c-i2s-v2 build ASoC: Don't reconfigure WM8350 FLL if not needed ASoC: Fully specify DC servo bits to update in wm_hubs power_supply: Add driver for the PMU on WM831x PMICs ASoC: Remove unuused hw_read_t backlight: Add WM831x backlight driver leds: Add WM831x status LED driver ASoC: Fix WM835x Out4 capture enumeration ASoC: Fix display of stream name in DAPM debugfs Driver core: Add accessor for device platform data MAINTAINERS: Add entry for Wolfson PMIC drivers hwmon: Add WM835x PMIC hardware monitoring driver mfd: Allow multiple MFD cells with the same name mfd: Initial core support for WM831x series devices mfd: Add WM831x interrupt support mfd: Add WM831x AUXADC support mfd: Conditionally add WM831x backlight subdevice mfd: Add basic WM831x OTP support mfd: Export ISEL values from WM831x core mfd: Hook WM831x into build system gpio: Add WM831X GPIO driver hwmon: WM831x PMIC hardware monitoring driver input: Add support for the WM831x ON pin regulator: Provide mode to status conversion function regulator: Add WM831x DC-DC buck convertor support regulator: Add WM831x LDO support regulator: Add WM831x EPE support regulator: Add WM831x DC-DC boost convertor support regulator: Add WM831x ISINK support rtc: Add support for RTCs on Wolfson WM831x devices ARM: S3C64XX: Provide for board-specific IRQs mfd: Update MAINTAINERS patterns for WM831x mfd: Convert WM8350 to use request_threaded_irq() [WATCHDOG] Add support for WM831x watchdog regulator: Report regulator_get() failure in virtual consumer regulator: Make virtual consumer use dev_printk regulator: Make virtual consumer a bit more chatty regulator: Allow consumer supplies to be set up with dev_name() regulator: Define full constraints function with REGULATOR disabled regulator: Add regulator_get_exclusive() API regulator: Add regulator voltage range check API regulator: Warn when unregistering an in-use regulator regulator: Fix support for deviceless supply mappings regulator: Improve virtual consumer probe error handling regulator: More explict error reporting for fixed regulator regulator: Check for constraints before using them for name regulator: Check for constraints in regulator_init_complete() regulator: Push locking for regulator_is_enabled() out regulator: regulator_enable() permission checking regulator: Add some brief design documentation Mark Kelly (2): r6040: remove unused pioaddr variable r6040: move down second PHY detection to r6040_init_one Mark Langsdorf (1): [CPUFREQ] Powernow-k8: Enable more than 2 low P-states Mark McLoughlin (1): KVM: fix cpuid E2BIG handling for extended request types Mark Smith (4): ipv6: correct return on ipv6_rcv() packet drop econet: use NET_RX_SUCCESS instead of magic number 0 for econet_rcv successful return Use correct NET_RX_* returns for atalk_rcv() Have atalk_route_packet() return NET_RX_SUCCESS not NET_XMIT_SUCCESS Mark de Wever (1): ide-tape: fix debug call Markus Heidelberg (2): trivial: remove references to non-existent include/linux/config.h trivial: update the Kernel Janitors' web-page URL Markus Metzger (2): x86, perf_counter, bts: Add BTS support to perfcounters x86, perf_counter, bts: Optimize BTS overflow handling Markus Rechberger (1): USB: increase usbdevfs max isoc buffer size Mart Raudsepp (1): V4L/DVB: af9015: add new USB ID for KWorld PlusTV Dual DVB-T Stick (DVB-T 399U) Martin Decky (2): hostap: Revert a toxic part of the conversion to net_device_ops hostap: Revert a toxic part of the conversion to net_device_ops Martin K. Petersen (3): [SCSI] Print failed commands libata: Delegate nonrot flag setting to SCSI block: Optimal I/O limit wrapper Martin Schwidefsky (23): timekeeping: optimized ktime_get[_ts] for GENERIC_TIME=y timers: Cache __next_timer_interrupt result timekeeping: Remove clocksource inline functions timekeeping: Move reset of cycle_last for tsc clocksource to tsc clocksource: Cleanup clocksource selection clocksource: Delay clocksource watchdog highres enablement clocksource: Simplify clocksource watchdog resume logic clocksource: Refactor clocksource watchdog clocksource: Move watchdog downgrade to a work queue thread timekeeping: Introduce struct timekeeper timekeeping: Add xtime_shift and ntp_error_shift to struct timekeeper timekeeping: Move NTP adjusted clock multiplier to struct timekeeper timekeeping: Add timekeeper read_clock helper functions timekeeping: Update clocksource with stop_machine timekeeping: Increase granularity of read_persistent_clock() timekeeping: Introduce read_boot_clock clocksource: Avoid clocksource watchdog circular locking dependency timekeeping: Increase granularity of read_persistent_clock(), build fix [S390] improve mcount code [S390] fix recursive locking on page_table_lock clocksource: Resolve cpu hotplug dead lock with TSC unstable, fix crash [S390] Update default configuration. clocksource: Resume clocksource without taking the clocksource mutex Marton Nemeth (2): V4L/DVB (12382): gspca - main: Remove vidioc_s_std(). trivial: fix typo in CONFIG_DEBUG_FS in gcov doc Martyn Welch (18): powerpc/86xx: Correct reading of information presented in cpuinfo powerpc/86xx: Enable XMC site on GE Fanuc SBC310 powerpc/86xx: Update GE Fanuc sbc310 DTS powerpc/nvram: Allow byte length reads from mmio NVRAM driver powerpc/nvram: Enable use Generic NVRAM driver for different size chips Staging: VME Framework for the Linux Kernel Staging: vme: add VME userspace driver Staging: vme: add Universe I/II bridge driver Staging: vme: add Tundra TSI148 VME-PCI Bridge driver Staging: vme: add TODO file Staging: vme: Correct tsi-148 VME interrupt free routine Staging: vme: Extend VME core probing for special matches Staging: vme: Add syncronize interrupts before removing callback Staging: Update VME vme_user module Staging: Use proper mutexes in the tsi-148 VME driver Staging: vme: add VME Location Monitor management mechanism Staging: vme: Update support for the Universe II VME driver Staging: vme: Separate the list of TODOs from the API documentation Masami Hiramatsu (2): kprobes: Clean up insn_pages by using list instead of hlist perf trace: Add OPT_END to option array of perf-trace Massimo Cirillo (1): mtd: cfi_cmdset_0002: add 0xFF intolerance for M29W128G Matej Kenda (2): [ARM] pxa: add support for the IskraTel XCEP board [ARM] pxa: add defconfig for IskraTel XCEP board Mathieu Desnoyers (1): [CPUFREQ] remove rwsem lock from CPUFREQ_GOV_STOP call (second call site) Matt Carlson (48): tg3: Fix 57780 asic rev PCIe link receiver errors tg3: Prevent tx BD corruption tg3: Fix TSO test against wrong flags var tg3: Preserve PCIe MPS setting for new devs tg3: Add 57788, remove 57720 tg3: Tune 5785 clock switching tg3: Create MII_TG3_FET namespace tg3: Convert code to use PHY_IS_FET broadcom: Add BCM50610M support broadcom: Add AC131 phy support broadcom: Make the 57780 IEEE compliant tg3: Update version to 3.100 tg3: Delay mdio bus init until fw finishes tg3: Add new 5785 10/100 only device ID tg3: Reformat NVRAM case statements tg3: Break out mini producer ring handling tg3: Move the JUMBO_CAPABLE and SUPPORT_MSI flags tg3: Clarify rx buffer relationships tg3: Create rx producer ring setup routines tg3: Create a new prodring_set structure tg3: Use ext rx bds tg3: Cleanup interrupt setup / teardown tg3: Move napi to per-int struct tg3: Convert ISR parameter to tnapi tg3: Convert napi handlers to use tnapi tg3: Move general int members to a per-int struct tg3: Move per-int rx members to per-int struct tg3: Move per-int tx members to a per-int struct tg3: Update version to 3.101 tg3: inline tg3_cond_int() tg3: Add per-int coalesce now member tg3: Create tg3_rings_reset() tg3: Add support code around kernel interrupt API tg3: Add MSI-X support tg3: Add mailbox assignments tg3: Add tx and rx ring resource tracking tg3: Update intmbox and coal_now for msix tg3: Add TSS support tg3: Enable NAPI instances for other int vectors tg3: Add coalesce parameters for msix vectors tg3: Add RSS support tg3: Adjust RSS ring allocation strategies tg3: Assign rx ret producer indexes by vector tg3: Add 5717 asic rev tg3: Add 5717 NVRAM detection routines tg3: Add MDIO bus address assignments tg3: Update version to 3.102 tg3: Fix return ring size breakage Matt Fleming (28): sh: Use bootmem ontop of lmb sh: Use bootmem ontop of lmb for NUMA sh: Fix the value of MCOUNT_INSN_OFFSET sh: Define HAVE_FUNCTION_TRACE_MCOUNT_TEST sh: Add ftrace syscall tracing support sh: Provide diagnostic kernel stack checks sh: Function graph tracer support sh: Mark __switch_to() as __notrace_funcgraph sh: Restore previous behaviour on kernel fault sh: Use the generalized stacktrace ops sh: Allow multiple stack unwinders to be setup sh: Use the new stack unwinder API sh: dwarf unwinder support. sh: Setup the frame register in asm code sh: Add CFI annotations for exception return. sh: Delete DWARF_ARCH_UNWIND_OFFSET sh: Set the cfa_offset to 0 if we see a DW_CFA_def_cfa_register op sh: Try again at getting the initial return address for an unwind sh: Add support for DWARF GNU extensions sh: Add a few missing irqflags tracing markers. sh: unwinder: Fix memory leak and create our own kmem cache sh: unwinder: Set the flags for DW_CFA_val_offset ops as DWARF_VAL_OFFSET sh: unwinder: Introduce UNWINDER_BUG() and UNWINDER_BUG_ON() sh: Setup the frame pointer in handle_interrupt sh: Fix bug calculating the end of the FDE instructions sh: Handle the DWARF op, DW_CFA_undefined sh: Only shout about fixing up unexpected unaligned accesses sh: Fix dcache flushing for N-way write-through caches. Matt Hsu (1): ARM: S3C64XX: Add UART2,UART3 support for SMDK6410 (resend) Matt Kraai (1): intel-iommu: Mark functions with __init Matthew Garrett (6): libata: Export AHCI capabilities backlight: Allow drivers to update the core, and generate events on changes backlight/acpi: Update the backlight state when we change brightness backlight/eeepc-laptop: Update the backlight state when we change brightness rtc: document the sysfs interface rtc: add boot_timesource sysfs attribute Matthew Wilcox (2): frv/PCI: Use pci_claim_resource yenta: Use pci_claim_resource Matthias Kaehlcke (1): mtd: fix a typo in comment Matthias Schwarzott (1): V4L/DVB (12200): mt312: Fix checkpatch warnings Matti J. Aaltonen (1): V4L/DVB (13013): FM TX: si4713: Kconfig: Fixed two typos. Mauro Carvalho Chehab (68): V4L/DVB (12147): pwc: remove definitions that are already present at videodev2.h V4L/DVB (12149): videodev2.h: Reorganize fourcc table V4L/DVB (12124): v4l2-ioctl: better output debug messages for VIDIOC_ENUM_FRAMESIZES V4L/DVB (12168): v4l2-ioctl: avoid flooding log with unasked debug messages V4L/DVB (12273): em28xx-video: rename ac97 audio controls to better document it V4L/DVB (12274): em28xx-video: better implement ac97 control ioctls V4L/DVB (12345): em28xx: fix audio VIDIOC_S_CTRL adjustments on devices without ac97 V4L/DVB (12376): em28xx: fix V4L2 API compliance: don't expose audio inputs for devices without it V4L/DVB (12408): em28xx: Implement g/s_register via address match V4L/DVB (12452): gspca/Kconfig: Fix bad identation for USB_GSPCA_SN9C20X_EVDEV V4L/DVB (12466): Kconfig files: Fix improper use of whitespaces V4L/DVB (12468): saa7134: Fix bad whitespacing V4L/DVB (12470): cx231xx/cx231xx-conf-reg.h: fix bad whitespaces V4L/DVB (12471): stv06xx: fix bad whitespaces V4L/DVB (12472): hdpvr-control: fix bad whitespaces V4L/DVB (12478): ARRAY_SIZE changes V4L/DVB (12557): Use C99 comment CodingStyle V4L/DVB (12558): CodingStyle: Use [0x0f] instead of [ 0x0f ] V4L/DVB (12559): Properly indent comments with tabs V4L/DVB (12560): Fix a number of EXPORT_SYMBOL warnings V4L/DVB (12562): ir-keymaps: replace KEY_KP[0-9] to KEY_[0-9] V4L/DVB (12563): ir-keymaps: add a link to the IR standard layout page V4L/DVB (12564): ir-keymaps: Replace most KEY_[A-Z] to the proper definitions V4L/DVB (12565): ir-keymaps: standardize timeshift key V4L/DVB (12566): ir-keymaps: Fix IR mappings for channel and volume +/- keys V4L/DVB (12567): ir-keymaps: use KEY_CAMERA for snapshots V4L/DVB (12585): Add remote support to cph03x bttv card V4L/DVB (12591): em28xx: Add entry for GADMEI UTV330+ and related IR keymap V4L/DVB (12469): fix bad whitespaces at cx88_geniatech_x8000_mt V4L/DVB (12595): common/ir: use a struct for keycode tables V4L/DVB (12598): dvb-usb: store rc5 custom and data at the same field V4L/DVB (12599): dvb-usb-remote: Allow dynamically replacing the IR keycodes V4L/DVB (12600): dvb-usb-remote: return KEY_RESERVED if there's free space for new keys V4L/DVB (12698): em28xx: ir-kbd-i2c init data needs a persistent object V4L/DVB (12701): saa7134: ir-kbd-i2c init data needs a persistent object V4L/DVB (12712): em28xx: properly load ir-kbd-i2c when needed V4L/DVB (12713): em28xx: Cleanups at ir_i2c handler V4L/DVB (12730): Add conexant cx25821 driver V4L/DVB (12731): cx25821: Add missing include V4L/DVB (12732): cx25821: fix bad whitespacing V4L/DVB (12733): cx25821: some CodingStyle fixes V4L/DVB (12734): cx25821: Fix some compilation troubles cx25821: Add driver to the building system V4L/DVB (12761): DocBook: add media API specs V4L/DVB (12847): cx25821: Add README with todo list V4L/DVB (12851): cx25821/Makefile: Cleanup V4L/DVB (12858): go7007: whitespacing cleanups V4L/DVB (12859): go7007: semaphore -> mutex conversion DocBook/media: renamed xml documents to tmpl DocBook/media: copy also the pictures to the proper place DocBook: Don't use graphics callouts DocBook/media: Some typo fixes DocBook/media: fix some broken links DocBook/media: update dvb url's and use ulink tag instead of emphasis DocBook/media: Remove Satellites from Analog TV Tuners and Modulators V4L/DVB (12906): dib0700: Add support for Prolink SBTVD V4L/DVB (12915): DocBook/media: Add isdb-t documentation V4L/DVB (12917): DocBook/media: add V4L2_PIX_FMT_TM6000 V4L/DVB (12919): DocBook/media: fix some DocBook non-compliances V4L/DVB (12920): DocBook/media: Some xmlto or DTD's don't accept reference inside appendix Docbook/media: Fix some issues at the docbooks V4L/DVB (12993a): saa7164: Fix compilation warning on i386 V4L/DVB(12993b): gl860: Prevent a potential risk of zeroing a floating pointer V4L/DVB (12999): Add a driver for Earthsoft PT1 V4L/DVB (13033): pt1: Don't use a deprecated DMA_BIT_MASK macro V4L/DVB (13037): go7007: Revert compatibility code added at the wrong place V4L/DVB (13038): dvbdev: Remove an anoying/uneeded warning V4L/DVB (13039): dib0700: not building CONFIG_DVB_TUNER_DIB0070 breaks compilation Maxim Levitsky (2): mac80211: Retry probe request few times mac80211: Increase timeouts for station polling Maxime Bizon (4): MIPS: BCM63XX: Add integrated ethernet PHY support for phylib. MIPS: BCM63xx: Add Broadcom 63xx CPU definitions. MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs. MIPS: BCM63xx: Add integrated ethernet mac support. Maximilian Engelhardt (1): netfilter: nf_nat: fix inverted logic for persistent NAT mappings Maxin John (1): USB: serial: Spelling correction in Motorola USB Phone driver Maynard Johnson (1): oprofile: reset bt_lost_no_mapping with other stats Mel Gorman (11): page-allocator: change migratetype for all pageblocks within a high-order page during __rmqueue_fallback page-allocator: remove dead function free_cold_page() tracing, page-allocator: add trace events for page allocation and page freeing tracing, page-allocator: add trace events for anti-fragmentation falling back to other migratetypes tracing, page-allocator: add trace event for page traffic related to the buddy lists tracing, page-allocator: add a postprocessing script for page-allocator-related ftrace events tracing, documentation: add a document describing how to do some performance analysis with tracepoints tracing, documentation: Add a document on the kmem tracepoints page-allocator: limit the number of MIGRATE_RESERVE pageblocks per zone page-allocator: split per-cpu list into one-list-per-migrate-type page-allocator: maintain rolling count of pages to free from the PCP Mhayk Whandson (1): V4L/DVB (12370): v4l doc: fix cqcam source code path Michael Abbott (3): drivers/hwmon/adm1021.c: support high precision ADM1023 remote sensor drivers/hwmon/adm1021.c: add low_power support for adm1021 driver Fix idle time field in /proc/uptime Michael Barkowski (1): powerpc/qe_lib: Set gpio data before changing the direction to output Michael Brunner (1): trivial: SubmittingPatches: Fix reference to renumbered step Michael Buesch (30): b43: Fix unaligned 32bit SHM-shared access b43: Fix hardware key index handling rtl818x: Add some documentation to the TX desc flags b43: Use a threaded IRQ handler b43: Remove TX spinlock b43: Remove DMA/PIO queue locks b43: Remove PIO RX workqueue b43: remove SHM spinlock ssb: Fail ssb modinit, if attach of the buses failed. b43: PCMCIA is not experimental anymore b43: Really disable QoS, if requested b43: Fix sparse warning in hw-tkip code b44/b43/b43legacy: Fix switch warnings introduced by SSB-SDIO ieee1394: raw1394: Do not leak memory on failed trylock. b43: Force-wake queues on init ssb: Disable verbose SDIO coreswitch b43: Fix resume failure Staging: rtl8187se: Fix comment-out-typo dac960: fix undefined behavior on empty string b43: Force-wake queues on init ssb: Disable verbose SDIO coreswitch b43: Fix resume failure b43: Rewrite suspend/resume code b43: Do not use _irqsafe callbacks b43: Fix SDIO interrupt handler deadlock b43: Fix IRQ sync for SDIO b43: Add optional verbose runtime statistics b43: Disable PMQ mechanism b43: Don't abuse wl->current_dev in the led work b43: Remove BROKEN attribute from SDIO Michael Chan (12): bnx2: Zero out status block before chip reset. bnx2: Check if_running() before touching chip registers. bnx2: Close device if MTU change or ring size change fails. bnx2: Apply BROKEN_STATS workaround to 5706 and 5708. bnx2: Report FTQ discard counter. bnx2: Refine coalescing parameters. bnx2: Use const on flash_table structure. bnx2: Update version to 2.0.2. cnic: Put rx/tx ring allocation in separate function. cnic: Put uio init in separate function. bnx2: Update firmware to 5.0.0.j3. cnic: Shutdown iSCSI ring during uio_close. Michael Ellerman (4): powerpc/mpic: Fix MPIC_BROKEN_REGREAD on non broken MPICs kmemleak: Allow kmemleak to be built on powerpc powerpc: Enable GCOV powerpc/vmlinux.lds: Move _edata down Michael Ernst (1): [S390] cio: failing set online/offline processing. Michael Hennerich (15): Input: add Blackfin rotary input driver netdev: smc91x: drop Blackfin cruft Blackfin: bf537-stamp: update ADP5588 header name Blackfin: rename PCF8574 driver config Blackfin: convert boards to use platform data with smc91x Blackfin: remove useless duplicated assignment in gpio code Blackfin: fix spelling in a few comments Blackfin: bf537-stamp: add adp5588 gpio resources Input: ad7879 - add support for AD7889 Input: add driver for ADP5588 QWERTY I2C Keypad USB: serial: ftdi: handle gnICE+ JTAG adaptors USB: isp1760: allow platform devices to customize devflags rtc-bfin: do not share RTC IRQ gpio: gpio support for ADP5520/ADP5501 MFD PMICs backlight: new driver for ADP5520/ADP5501 MFD PMICs Michael Holzheu (7): [S390] vmur: Invalid allocation sequence for vmur class [S390] xpram: Remove checksum validation for suspend/resume [S390] hypfs: Use "%u" instead of "%d" for unsigned ints in snprintf [S390] s390dbf: Add description for usage of "%s" in sprintf events [S390] tape: Fix device online messages [S390] tape: Use pr_xxx instead of dev_xxx in shared driver code [S390] hibernate: Do real CPU swap at resume time Michael Krufky (20): V4L/DVB (12360): au0828: fix typo: dvb uses bulk xfer, dont say isoc in debug V4L/DVB (12576): tda18271: simplify debug printk macros V4L/DVB (12577): tda18271: remove excess whitespace from tda_foo printk macros V4L/DVB (12578): tda18271: allow drivers to request RF tracking filter calibration during attach V4L/DVB (12861): tda18271: add support for additional low-power standby modes V4L/DVB (12862): tda18271: add debug to show which standby mode is in use V4L/DVB (12863): tda18271: add new standby mode: slave tuner output / loop thru on V4L/DVB (12864): tda18271: change output feature configuration to a bitmask V4L/DVB (12865): tda18271: move tda18271_sleep directly below tda18271_init V4L/DVB (12866): tda18271: move small_i2c assignment to the state config block V4L/DVB (12867): tda18271: ensure that configuration options are set for multiple instances V4L/DVB (12868): tda18271: improve error log in function tda18271_write_regs V4L/DVB (12869): tda18271: fix comments and make tda18271_agc debug less verbose V4L/DVB (12873): saa7134: disable tda18271 slave tuner output / loop thru in standby mode V4L/DVB (12874): pvrusb2: disable tda18271 slave tuner output / loop thru in standby mode V4L/DVB (12875): cx23885: disable tda18271 slave tuner output / loop thru in standby mode V4L/DVB (12964): tuner-core: add support for NXP TDA18271 without TDA829X demod V4L/DVB (12967): saa7164: fix Kconfig: rename DVB_FE_CUSTOMIZE to MEDIA_TUNER_CUSTOMISE V4L/DVB (12968): saa7164: fix Kconfig: remove HOTPLUG dependency V4L/DVB (12970): saa7164: fix 64bit build warning Michael Opdenacker (1): Minor code cleanup in drivers/net/r6040.c Michael Prokop (1): drivers/regulator/Kconfig: fix typo (s/Usersapce/Userspace/) in REGULATOR_USERSPACE_CONSUMER description Michael Reed (1): [SCSI] reservation conflict after timeout causes device to be taken offline Michael Riepe (1): drivers/hwmon/coretemp.c: enable the Intel Atom Michael S. Tsirkin (14): tun: reuse struct sock fields PCI: expose function reset capability in sysfs KVM: document locking for kvm_io_device_ops KVM: switch coalesced mmio changes to slots_lock KVM: switch pit creation to slots_lock KVM: convert bus to slots_lock KVM: remove in_range from io devices KVM: document lock nesting rule KVM: ignore msi request if !level KVM: export kvm_para.h uio: add generic driver for PCI 2.3 devices mm: move use_mm/unuse_mm from aio.c to mm/ mm: reduce atomic use on use_mm fast path USB: audio: guard kernel-only code with __KERNEL__ Michael Tokarev (1): trivial: fix missing printk space in amd_k7_smp_check Michael Trimarchi (1): sh: Better description of SH-4 PTEA register update. Michael Wolf (1): powerpc: Adjust base and index registers in Altivec macros Michal Hocko (1): x86: Increase MIN_GAP to include randomized stack Michal Schmidt (3): bsdacct: switch credentials for writing to the accounting file x86: Detect stack protector for i386 builds on x86_64 [SCSI] sg: fix oops in the error path in sg_build_indirect() Michal Simek (17): microblaze: include EXIT_TEXT to _stext leds: gpio-leds: fix typographics fault gcov: Fix DEBUG_FS symbol microblaze: Enable GCOV_PROFILE_ALL microblaze: Add checking mechanism for MSR instruction microblaze: Improve checking mechanism for MSR instruction microblaze: Implement include/asm/syscall.h. microblaze: Save and restore msr in hw exception microblaze: Remove ipc.h file which points to non-existing asm-generic file microblaze: Don't be noisy when userspace causes hardware exceptions microblaze: Generate correct signal and siginfo for integer div-by-zero microblaze: Support ptrace syscall tracing. microblaze: Use LOAD_OFFSET macro to get correct LMA for all sections microblaze: Fix _start symbol to physical address net: xilinx_emaclite: Fix problem with first incoming packet microblaze: Support simpleImage.dts make target microblaze: Disable heartbeat/enable emaclite in defconfigs Michal Sojka (1): trivial: fix typo in tracing documentation Michel Dänzer (9): agp/uninorth: Allow larger aperture sizes on pre-U3 bridges. agp/uninorth: Simplify cache flushing. drm/radeon/kms: Only add common modes which fit in both panel dimensions. drm/radeon/kms: Move radeon_clocks_init() call back after getting VRAM info. drm/radeon/kms: Don't kzalloc memory which is immediately overwritten. drm/radeon/kms: Free CS parser state tracking memory. drm/radeon/kms: Get LVDS native mode details from EDID if necessary. drm/radeon/kms: Use surfaces for scanout / cursor byte swapping on big endian. drm/radeon/kms: Move radeon_get_clock_info() call out of radeon_clocks_init(). Mika Korhonen (1): mtd: OneNAND: spelling fixes Mikael Pettersson (7): ARM: 5677/1: ARM support for TIF_RESTORE_SIGMASK/pselect6/ppoll/epoll_pwait mv643xx_eth.c: remove unused txq_set_wrr() sata_promise: disable hotplug on 1st gen chips sata_promise: update reset code i2c-mv64xxx: correct mv64xxx_i2c_intr() return type ixp4xx: timer and clocks cleanups ixp4xx: arch_idle() documentation fixup Mike Christie (9): [SCSI] ALUA: send STPG if explicit and implicit is supported [SCSI] libiscsi: don't increment cmdsn if cmd is not sent [SCSI] libiscsi: handle immediate command rejections [SCSI] qla4xxx: Removed residual from overrun debug print [SCSI] iscsi class: Add logging to scsi_transport_iscsi.c [SCSI] iscsi_tcp: add new conn error to indicate tcp conn closed [SCSI] libiscsi, iscsi_tcp: check suspend bit before each call to xmit_task [SCSI] libiscsi: add completion function for drivers that do not need pdu processing [SCSI] libiscsi, bnx2i: make bound ep check common Mike Frysinger (39): connector: make callback argument type explicit connector: clean up grammar/style in documentation connector: get test code working by default Input: bf54x-keys - convert printk() to dev_*() ftrace: document function and function graph implementation Blackfin: cleanup traps decode_address() a bit Blackfin: convert ptrace to new memory functions Blackfin: cleanup printk() usage in module code Blackfin: convert malloc()/memset() to zalloc() in module code Blackfin: cleanup module section checking Blackfin: fix module reloc handling for all memory regions Blackfin: push SRAM locks down into related ifdefs Blackfin: add support for common FDPIC ptrace requests Blackfin: drop unused MMR defines that only cause bad code to be written Blackfin: fix BF522/BF523 max VCO mixup Blackfin: drop board resources for dead devices (pbx/ad9960) Blackfin: punt dead cache locking code Blackfin: optimize fixed code handling for the most common case Blackfin: add some isram-driver self tests Blackfin: update ftrace_push_return_trace() breakage Blackfin: unify cache init functions Blackfin: fix elf_fpregset_t definition ASoC: bf5xx-sport: the irq save/restore funcs take an unsigned long mtd/maps: uclinux: depend on MTD_RAM being built into the kernel mtd/maps: gpio-addr-flash: new driver for GPIO assisted flash addressing mtd: fix order of TEST/PARTITIONS kconfig options phram: cleanup error handling and associated messages serial: bfin_5xx: fix building as module when early printk is enabled pcmcia: yenta: add missing __devexit marking checkpatch: add some common Blackfin checks mtd: jedec_probe: add PSD4256G6V id asm/sections: add text/data checking functions for arches to override kallsyms: use new arch_is_kernel_text() lockdep: use new arch_is_kernel_data() Blackfin: override text/data checking functions rtc: update documentation wrt RTC_PIE/irq_set_state flat: use IS_ERR_VALUE() helper macro bfin-otp: add writing support linux/futex.h: place kernel types behind __KERNEL__ Mike Galbraith (14): sched: Clean up SCHED_RESET_ON_FORK sched: Add SCHED_RESET_ON_FORK functionality for nice < 0 tasks sched: Ensure that a child can't gain time over it's parent after fork() sched: Turn off child_runs_first sched: Re-tune the scheduler latency defaults to decrease worst-case latencies sched: Keep kthreads at default priority sched: Complete buddy switches sched: Improve latencies and throughput Staging: rt2870sta interface names perf sched: Add --input=file option to builtin-sched.c sched: Remove unneeded indentation in sched_fair.c::place_entity() sched: Re-add lost cpu_allowed check to sched_fair.c::select_task_rq_fair() perf tools: Fix module symbol loading bug perf tools: Handle relative paths while loading module symbols Mike Mason (3): PCI: support for PCI Express fundamental reset PCI: document PCIe fundamental reset interfaces PCI/powerpc: support PCIe fundamental reset Mike McCormack (7): sky2: remove unnecessary assignment sky2: Avoid rewinding sky2->tx_prod sky2: Move tx reset functionality to sky2_tx_reset() sky2: Reset tx train after interrupts disabled. sky2: Create buffer alloc and free helpers sky2: Use 32bit read to read Y2_VAUX_AVAIL sky2: Set SKY2_HW_RAM_BUFFER in sky2_init Mike Rapoport (15): dm9000: switch to dev_pm_ops Input: gpio_keys - swtich to dev_pm_ops [ARM] pxa/em-x270: remove debug leftovers [ARM] pxa/em-x270: add vcc_core regulator [ARM] pxa/cm-x270: add libertas device registration [ARM] pxa: update da903x_bl.c to use 'struct dev_pm_ops' [ARM] pxa: update pxa serial driver to use 'struct dev_pm_ops' [ARM] pxa: update ohci-pxa27x.c to use 'struct dev_pm_ops' [ARM] pxa: update pxa2xx-spi.c to use 'struct dev_pm_ops' [ARM] pxa: update pxafb.c to use 'struct dev_pm_ops' [ARM] pxa: update pxa2xx-ac97.c to use 'struct dev_pm_ops' [ARM] pxa: update pxamci.c to use 'struct dev_pm_ops' [ARM] pxa: update pcmcia/pxa2xx_base.c to use 'struct dev_pm_ops' backlight: switch to da903x driver to dev_pm_ops regulator: da903x: consolidate DA903[045]_DVC macros Mikhail Ershov (2): KVM: Align cr8 threshold when userspace changes cr8 KVM: Use kvm_{read,write}_guest_virt() to read and write segment descriptors Miklos Szeredi (4): fuse: document protocol version negotiation splice: update mtime and atime on files net: unix: fix sending fds in multiple buffers vfs: seq_file: add helpers for data filling Mimi Zohar (1): IMA: open new file for read Minchan Kim (3): block: trace bio queueing trial only when it occurs vmscan: don't attempt to reclaim anon page in lumpy reclaim when no swap space is available mm: fix NUMA accounting in numastat.txt Ming Lei (15): lockdep: Print the shortest dependency chain if finding a circle lockdep: Improve implementation of BFS lockdep: Introduce match function to BFS lockdep: Implement check_noncircular() by BFS lockdep: Implement find_usage_*wards by BFS lockdep: Introduce print_shortest_lock_dependencies lockdep: Implement lockdep_count_*ward_deps by BFS lockdep: Update memory usage introduced by BFS lockdep: Add statistics info for max bfs queue depth lockdep: Reintroduce generation count to make BFS faster lockdep: Fix memory usage info of BFS lockdep: Remove recursion stattistics OMAP3: PM: fix lockdep warning caused by omap3_pm_init driver-core: move dma-coherent.c from kernel to driver/base USB: otg: twl4030-usb.c: mark .init as subsys_initcall_sync Mingming (2): ext4: Compile warning fix when EXT_DEBUG enabled ext4: Show unwritten extent flag in ext4_ext_show_leaf() Mingquan Pan (1): Blackfin: use KERN_ALERT in all kgdb_test output Mithlesh Thukral (2): staging: wlan-ng: scripts/checkpatch.pl error fixes. Staging: Comedi: Lindent changes to comdi driver in staging tree Moger, Babu (3): [SCSI] scsi_dh_rdac: move the init code from rdac_activate to rdac_bus_attach [SCSI] scsi_dh_rdac: changes to collect the rdac debug information during the initialization [SCSI] scsi_dh_rdac: changes for rdac debug logging Mohamed Abbas (1): iwlwifi: Check HW ready before prepare card. Mohammed Gamal (1): KVM: x86 emulator: Add adc and sbb missing decoder flags Mohanlal Jangir (1): mtd: inftl: fix fold chain block number Moni Shoua (2): bonding: remap muticast addresses without using dev_close() and dev_open() IPoIB: Don't turn on carrier for a non-active port Moritz Muehlenhoff (5): Staging: wlan-ng: Remove some superflous comments Staging: wlan-ng: Use kzfree() to securely zero-out the WEP key when freeing it Staging: wlan-ng: Drop the special case handling of older wireless extensions, WIRELESS_EXT is at 22 for the current kernel. Staging: wlan-ng: Remove more superflous comments Staging: hv: Remove compatibility ifdefry Moussa A. Ba (1): pagemap clear_refs: modify to specify anon or mapped vma clearing Muralidharan Karicheri (16): davinci: DM644x platform changes for vpfe capture davinci: DM355 - platform changes for vpfe capture DaVinci: DM646x - platform changes for vpif capture and display drivers V4L/DVB (12246): tvp514x: Migration to sub-device framework V4L/DVB (12247): tvp514x: formatting comments as per kernel documentation V4L/DVB (12248): v4l: vpfe capture bridge driver for DM355 and DM6446 V4L/DVB (12249): v4l: ccdc hw device header file for vpfe capture V4L/DVB (12250): v4l: dm355 ccdc module for vpfe capture driver V4L/DVB (12251): v4l: dm644x ccdc module for vpfe capture driver V4L/DVB (12252): v4l: ccdc types used across ccdc modules for vpfe capture driver V4L/DVB (12253): v4l: common vpss module for video drivers V4L/DVB (12254): v4l: Makefile and config files for vpfe capture driver V4L/DVB (12906a): V4L : vpif display updates to support vpif capture V4L/DVB (12906b): V4L : vpif capture - Kconfig and Makefile changes V4L/DVB (12906c): V4L : vpif capture driver for DM6467 V4L/DVB (12906d): V4L : vpif updates for DM6467 vpif capture driver Naga Chumbalkar (1): [CPUFREQ] update Doc for cpuinfo_cur_freq and scaling_cur_freq Nam Phạm ThĂ nh (1): V4L/DVB (12475): Add support for Humax/Coex DVB-T USB Stick 2.0 High Speed Narender Kumar (2): netxen: ethtool statistics and control for LRO netxen: bridged mode optimizations Nathan Williams (2): solos: support new FPGA RAM layout solos: Check for rogue received packets Neil Brown (1): NFS/RPC: fix problems with reestablish_timeout and related code. Neil Horman (13): random: Add optional continuous repetition test to entropy store based rngs crypto: fips - Select CPRNG xfrm: export xfrm garbage collector thresholds via sysctl xfrm: select sane defaults for xfrm[4|6] gc_thresh net: skb ftracer - add tracepoint to skb_copy_datagram_iovec (v3) net: skb ftracer - Add config option to enable new ftracer (v3) net: skb ftracer - Add actual ftrace code to kernel (v3) crypto: fips - Depend on ansi_cprng net: drop_monitor: make last_rx timestamp private kmod: fix race in usermodehelper code exec: make do_coredump() more resilient to recursive crashes exec: let do_coredump() limit the number of concurrent dumps to pipes exec: allow do_coredump() to wait for user space pipe readers to complete NeilBrown (14): sunrpc/cache: rename queue_loose to cache_dequeue sunrpc/cache: make sure deferred requests eventually get revisited. sunrpc/cache: recheck cache validity after cache_defer_req sunrpc: fix memory leak in unix_gid cache. sunrpc/cache: change cache_defer_req to return -ve error, not boolean. sunrpc/cache: simplify cache_fresh_locked and cache_fresh_unlocked. sunrpc/cache: use list_del_init for the list_head entries in cache_deferred_req sunrpc/cache: avoid variable over-loading in cache_defer_req md: remove sparse waring "symbol xxx shadows an earlier one" md: remove sparse warnings about lock context. md: Improve name of threads created by md_register_thread md: report device as congested when suspended md: remove unnecessary memset from multipath. Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx into for-linus Nelson Elhage (8): [S390] clean up linker script using new linker script macros. [IA64] Use standard macros for page-aligned data. [IA64] Clean up linker script using standard macros. MIPS: make page.h constants available to assembly. MIPS: Use PAGE_SIZE in assembly instead of _PAGE_SIZE. MIPS: Clean up linker script using new linker script macros. frv: remove unused .altinstructions code frv: clean up linker script using new linker script macros. Nelson, Shannon (2): ixgbe: Allow tx itr specific settings ixgbe: move rx queue RSC configuration to a separate function Nick Black (1): Move magic numbers into magic.h Nick Kossifidis (5): ath5k: Check EEPROM before tweaking SERDES ath5k: Linear PCDAC code fixes ath5k: Wakeup fixes ath5k: Preserve pcicfg bits during attach ath5k: Use SWI to trigger calibration Nick Piggin (6): HWPOISON: Refactor truncate to allow direct truncating of page v2 writeback: remove smp_mb(), it's not needed with list_add_tail_rcu() writeback: improve scalability of bdi writeback work queues writeback: Fix bdi use after free in wb_work_complete() writeback: fix possible bdi writeback refcounting problem fs: turn iprune_mutex into rwsem Nicolas Ferre (17): [ARM] 5564/1: at91: add gpio button and leds support for at91sam9rlek [ARM] 5569/1: at91: Support for at91sam9g45: clocks management [ARM] 5571/1: at91: Basic support for at91sam9g45 series: header files. [ARM] 5572/1: at91: Support for at91sam9g45 series: core chip & board support [ARM] 5567/1: at91: Support for at91sam9g10: clocks management [ARM] 5568/1: at91: Basic support for at91sam9g10: header files [ARM] 5570/1: at91: Support for at91sam9g10: core chip & board support [ARM] 5614/1: at91: atmel_lcdfb: add at91sam9g10 support to atmel LCD driver ARM: 5622/1: at91: at91sam9g45 headers: DMA peripheral identifiers ARM: 5686/1: at91: Correct AC97 reset line in at91sam9263ek board ARM: 5620/1: at91/dmaengine: integration of at_hdmac driver in at91sam9rl ARM: 5621/1: at91/dmaengine: integration of at_hdmac driver in at91sam9g45 series ARM: 5709/1: at91: add AC97 support to at91sam9g45 series and at91sam9m10g45ek board ARM: 5710/1: at91: add AC97 support to at91sam9rl and at91sam9rlek board USB: at91: Add USB EHCI driver for at91sam9g45 series USB: at91: Add USB gadget driver selection for at91sam9g45 series USB: at91: modify OHCI driver to allow shared interrupts Nicolas Palix (6): Staging: hv: Transform some kzalloc calls to kcalloc Staging: hv: Transform PDEVICE_OBJECT and DEVICE_OBJECT typedefs into their corresponding structs Staging: hv: Remove typedef DRIVER_OBJECT and PDRIVER_OBJECT Staging: hv: Remove typedef NETVSC_PACKET and PNETVSC_PACKET Staging: hv: Remove typedef STORVSC_REQUEST and PSTORVSC_REQUEST Staging: hv: Replace typedef SG_BUFFER_LIST by struct scatterlist Nicolas Pitre (8): [ARM] add MAINTAINERS entry for Orion/Kirkwood/etc. ARM: 5687/1: fix an oops with highmem ARM: 5691/1: fix cache aliasing issues between kmap() and kmap_atomic() with highmem Nicolas Pitre has a new email address mmc: core SDIO suspend/resume support mmc: propagate error codes back from bus drivers' suspend/resume methods mmc: make SDIO device/driver struct accessors public make Linux bootable on ARM again Nicolas de PesloĂĽan (1): bonding: Fix useless test: int > INT_MAX Nikanth Karthikesan (2): Seperate read and write statistics of in_flight requests /dev/zero: avoid repeated access_ok() checks Nils Carlson (1): hpet: hpet driver periodic timer setup bug fixes Nitin A Kamble (1): KVM: VMX: Support Unrestricted Guest feature Nobuhiro Iwamatsu (4): dmaengine: sh: Add Support SuperH DMA Engine driver cpumask: Remove mask field from comments sh: Add support DMA Engine to SH7722 sh: Add support DMA Engine to SH7780 Octavian Purdila (1): tcp: fix premature termination of FIN_WAIT2 time-wait sockets Ohad Ben-Cohen (3): sdio: do not ignore MMC_VDD_165_195 sdio: add CD disable support sdio: add MMC_QUIRK_LENIENT_FN0 Olaf Hering (1): leds: Fix LED names OldĹ™ich JedliÄŤka (2): V4L/DVB (12490): Report only 32kHz for ALSA V4L/DVB (12586): Update ALSA capture controls according to selected source. Oleg Nesterov (17): mm_for_maps: simplify, use ptrace_may_access() kernel: fix is_single_threaded kernel: rename is_single_threaded(task) to current_is_single_threaded(void) kernel: is_current_single_threaded: don't use ->mmap_sem mm_for_maps: shift down_read(mmap_sem) to the caller mm_for_maps: take ->cred_guard_mutex to fix the race with exec proc_flush_task: flush /proc/tid/task/pid when a sub-thread exits ptrace: __ptrace_detach: do __wake_up_parent() if we reap the tracee do_wait() wakeup optimization: shift security_task_wait() from eligible_child() to wait_consider_task() do_wait() wakeup optimization: change __wake_up_parent() to use filtered wakeup do_wait() wakeup optimization: child_wait_callback: check __WNOTHREAD case do_wait-wakeup-optimization: fix child_wait_callback()->eligible_child() usage do_wait-wakeup-optimization: simplify task_pid_type() wait_consider_task: kill "parent" argument exec: fix set_binfmt() vs sys_delete_module() race signals: introduce do_send_sig_info() helper signals: send_sigio: use do_send_sig_info() to avoid check_kill_permission() Oliver Hartkopp (3): can: Use WARN_ONCE() instead of BUG_ON() for sanity check in receive path can: use correct NET_RX_ return values can: fix NOHZ local_softirq_pending 08 warning Oliver Neukum (20): Bluetooth: Add USB autosuspend support to btusb driver V4L/DVB (12369): stv680: kfree called before usb_kill_urb V4L/DVB (12491): remove unnecessary power management primitive in stk-webcam USB: storage: fix a resume path GFP_NOIO must be used USB: CDC WDM driver doesn't support non-blocking reads USB: fix cdc-acm regression in open USB: serial: full autosuspend support for the option driver USB: usbtmc can do IO to device after disconnect USB: suspend/resume support for usbtmc USB: legousbtower: make poll notice disconnect USB: ldusb should signal an error in poll if the device is disconnected USB: full power management support for the idmouse driver USB: full autosuspend and power management support for usbsevseg USB: fix wrong order of events in usb serial suspension USB: remove unneeded printks from microtek driver USB: support for autosuspend in sierra while online USB: fix missing error check in probing USB: skel_read really sucks royally USB: make usb-skeleton honor O_NONBLOCK in write path USB: O_NONBLOCK in read path of skeleton Olivier Bornet (5): USB: iuu_phoenix: Don't reset the device at close USB: iuu_phoenix: clean-up parameter's descriptions USB: iuu_phoenix: add support for changing VCC USB: iuu_phoenix: increment version number USB: iuu_phoenix: add a way to select the default VCC Olivier Grenie (3): V4L/DVB (12886): Added new Pinnacle USB devices V4L/DVB (12887): DIB7000P: SNR calcuation forr DiB7000P V4L/DVB (12888): STK7770P: Add support for STK7770P Olivier Lorin (1): V4L/DVB (12954): gspca - gl860: Addition of GL860 based webcams Ondrej Zary (5): ALSA: cmi8330: revert comments about AD1848 back cmi8330: Add basic CMI8329 support ALSA: cmi8330: find OPL3 port automatically ALSA: cmi8330: Allow MPU-401-less operation USB: ark3116: add IrDA support for Gembird UIR-22 Ori Avtalion (1): trivial: fix typo in namei.h comment Otavio Salvador (1): pata_cs5535: add pci id for AMD based CS5535 controllers Ozan Çaglayan (1): markup_oops: use modinfo to avoid confusion with underscored module names Pan, Jacob jun (1): x86: Add hardware_subarch ID for Moorestown Paolo Bonzini (1): dlm: use kernel_sendpage Pat Erley (1): mac80211: remove max_bandwidth Patrick Boettcher (8): V4L/DVB (12889): DIB0700: added USB IDs for a Terratec DVB-T XXS V4L/DVB (12892): DVB-API: add support for ISDB-T and ISDB-Tsb (version 5.1) V4L/DVB (12896): ISDB-T: add mapping of LAYER_ENABLED to frontend-cache V4L/DVB (12898): DiB0070: Update to latest internal release V4L/DVB (12899): DiB0070: Indenting driver with indent -linux V4L/DVB (12900): DiB8000: added support for DiBcom ISDB-T/ISDB-Tsb demodulator DiB8000 V4L/DVB (12901): DiB0700: add support for STK807XP and STK807XPVR V4L/DVB (12903): DiB8000: fix channel search parameter initialization Patrick McHardy (15): net: use NETDEV_TX_OK instead of 0 in ndo_start_xmit() functions net: convert remaining non-symbolic return values in ndo_start_xmit() functions Merge branch 'master' of git://dev.medozas.de/linux netfilter: nf_conntrack: log packets dropped by helpers netlink: constify nlmsghdr arguments netfilter: nfnetlink: constify message attributes and headers netfilter: ip6t_eui: fix read outside array bounds netfilter: ebt_ulog: fix checkentry return value net_sched: fix class grafting errno codes net_sched: make cls_ops->tcf_chain() optional net_sched: make cls_ops->change and cls_ops->delete optional net_sched: remove some unnecessary checks in classful schedulers net_sched: reintroduce dev->qdisc for use by sch_api net_sched: move dev_graft_qdisc() to sch_generic.c net_sched: fix estimator lock selection for mq child qdiscs Paul Brook (1): nommu: ptrace support Paul E. McKenney (37): rcu: Remove Classic RCU rcu: Add synchronize_sched_expedited() primitive rcu: Add synchronize_sched_expedited() torture tests rcu: Add synchronize_sched_expedited() rcutorture doc + updates rcu: Split hierarchical RCU initialization into boot-time and CPU-online pieces cpu hotplug: Introduce cpu_notifier() to handle !HOTPLUG_CPU case rcu: Simplify RCU CPU-hotplug notification rcu: Make preemptable RCU scan all CPUs when summing RCU counters rcu: Make rcupreempt_trace.c look at offline CPUs rcu: Delay rcu_barrier() wait until beginning of next CPU-hotunplug operation. rcu: Expunge lingering references to CONFIG_CLASSIC_RCU, optimize on !SMP rcu: Move private definitions from include/linux/rcutree.h to kernel/rcutree.h rcu: Renamings to increase RCU clarity rcu: Consolidate sparse and lockdep declarations in include/linux/rcupdate.h rcu: Fix online/offline indication for rcudata.csv trace file rcu: Merge per-RCU-flavor initialization into pre-existing macro rcu: Use debugfs_remove_recursive() simplify code. rcu: Simplify rcu_pending()/rcu_check_callbacks() API rcu: Merge preemptable-RCU functionality into hierarchical RCU rcu: Remove CONFIG_PREEMPT_RCU rcu: Add "notrace" to RCU function headers used by ftrace rcu: Add CPU-offline processing for single-node configurations rcu: Add #ifdef to suppress __rcu_offline_cpu() warning in !HOTPLUG_CPU builds rcu: Remove lockdep annotations from RCU's _notrace() API members rcu: Create rcutree plugins to handle hotplug CPU for multi-level trees rcu: Changes from reviews: avoid casts, fix/add warnings, improve comments rcu: Move end of special early-boot RCU operation earlier rcu: Need to update rnp->gpnum if preemptable RCU is to be reliable rcu: Initialize multi-level RCU grace periods holding locks rcu: Kconfig help needs to say that TREE_PREEMPT_RCU scales down rcu: Add debug checks to TREE_PREEMPT_RCU for premature grace periods rcu: Simplify rcu_read_unlock_special() quiescent-state accounting rcu: Fix synchronize_rcu() for TREE_PREEMPT_RCU rcu: Add WARN_ON_ONCE() consistency checks covering state transitions rcu: Apply results of code inspection of kernel/rcutree_plugin.h rcu: Fix thinko, actually initialize full tree rcu: Fix whitespace inconsistencies Paul Fertser (3): mfd: use a dedicated workqueue for pcf50633 irq processing mfd: revise locking for pcf50633 ADC mfd: fix wrong define for 10bit pcf50633 ADC mode Paul Fox (1): Input: hgpk - forced recalibration for the OLPC touchpad Paul Gortmaker (4): powerpc/83xx: sbc8349 - update defconfig, enable MTD, USB storage powerpc/85xx: issue fsl_soc reboot warning only when applicable powerpc/85xx: sbc8560 - remove "has-rstcr" from global utilities block powerpc: derive COMMAND_LINE_SIZE from asm-generic Paul Mackerras (8): powerpc/32: Always order writes to halves of 64-bit PTEs powerpc: Allow perf_counters to access user memory at interrupt time perf_counter: powerpc: Add callchain support perf_counter: Start counting time enabled when group leader gets enabled powerpc: Fix bug where perf_counters breaks oprofile powerpc/perf_counters: Reduce stack usage of power_check_constraints perf_counter, powerpc, sparc: Fix compilation after perf_counter_overflow() change perf_event, powerpc: Fix compilation after big perf_counter rename Paul Menage (6): include/linux/cred.h: work around gcc-4.2.4 warning in get_cred() cgroups: support named cgroups hierarchies cgroups: move the cgroup debug subsys into cgroup.c to access internal state cgroups: add a back-pointer from struct cg_cgroup_link to struct cgroup cgroups: allow cgroup hierarchies to be created with no bound subsystems cgroups: revert "cgroups: fix pid namespace bug" Paul Moore (4): tun: Remove a dead line of code lsm: Add hooks to the TUN driver selinux: Support for the new TUN LSM hooks lsm: Use a compressed IPv6 string format in audit events Paul Mundt (144): Merge branches 'sh/hwblk', 'sh/cpuidle' and 'sh/stable-updates' sh: use kprobes_built_in() for notify_page_fault(). sh: Tidy up vmalloc fault handling. Merge branches 'sh/ftrace' and 'sh/cachetlb' video: sh_mobile_lcdcfb: depends on HAVE_CLK. Merge branches 'sh/ftrace' and 'sh/stable-updates' sh: Decouple mcount from ftrace. sh: Replace DEBUG_STACKOVERFLOW with STACK_DEBUG. sh: Use DECLARE_EXPORT() for mcount symbol export. sh: Fix up ftrace build error when STACK_DEBUG=n. sh: Fix up stack overflow check with ftrace disabled. sh: Tidy up gzip-based zImage decompression. sh: bzip2/lzma zImage support. sh: Consolidate the sh64 changes in arch/sh/boot/compressed/misc_32.c sh: rename arch/sh/boot/compressed/misc_32.c -> misc.c sh64: Don't use PHYSADDR() for output_addr calculation. Merge branches 'sh/compressors' and 'sh/ftrace' sh: Kill off zero-sized vmlinux_64.lds.S Merge branches 'sh/hwblk' and 'sh/platform-updates' Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes into sh/kbuild-fixes sh: bzip2/lzma uImage support. Merge branches 'sh/compressors' and 'sh/stable-updates' sh: Provide _PAGE_SPECIAL for 32-bit. sh: Migrate from PG_mapped to PG_dcache_dirty. Merge branch 'sh/kfr2r09' sh: wire up clear_user_highpage() for sh4, convert sh7705. sh: Rename arch/sh/lib/clear_page.S -> __clear_user.S. sh: Use the now generic SH-4 clear/copy page ops for all MMU platforms. sh: update_mmu_cache() consolidation. sh: Handle a NULL vma in __update_tlb() for the fast-path. Revert "sh: Bump the earlytimer bits back to time_init()." sh: Add romImage target to archhelp. Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 into sh/hwblk sh: Fix up early printk build error. sh: Add a PG_dcache_dirty sanity check in kmap_coherent(). sh: Bring kmap_coherent() out-of-line. sh: Drop unused arguments for kunmap_coherent(). sh: Provide __flush_anon_page(). sh: Tidy up NEFF-based sign extension for SH-5. sh64: Kill off special clear_page() implementation. sh: Split out SH-4 __flush_xxx_region() ops. sh: Partially unroll the SH-4 __flush_xxx_region() flushers. Merge branch 'sh/stable-updates' sh: unwinder: Fix up usage of unaligned accessors. sh: unwinder: Restore put_unaligned() for an unaligned destination. sh: oprofile: Kill off dead valid_kernel_stack(). Merge branch 'sh/dwarf-unwinder' sh: unwinder: Convert frame allocations to GFP_ATOMIC. sh: stacktrace: Add reliability checks in address saving ops. sh: flag the default unwinder as reliable. sh: stacktrace: Properly terminate the trace entry buffer. sh: Add register alignment helpers for shared flushers. sh64: Wire up the shared __flush_xxx_region() flushers. sh: NO_CONTEXT ASID optimizations for SH-4 cache flush. sh: TLB protection violation exception optimizations. sh: TLB fast path optimizations for load/store exceptions. Merge branch 'master' into sh/cachetlb sh: Make sure rte delay slots are nopped out on all parts. sh: delay slot future proofing via EXPMASK on SH-4A parts. sh: Bail from kmap_coherent_init() if we have no dcache aliases. sh: Provide the kmap_coherent() interface generically. sh: rename pg-mmu.c -> cache.c, enable generically. sh: rework nommu for generic cache.c use. sh: consolidate nommu stubs in arch/sh/mm/nommu.c. sh: Track the CPU family in sh_cpuinfo. sh: Centralize the CPU cache initialization routines. sh: Move alias computation to shared cache init. sh: Don't export flush_dcache_all(). sh: consolidate flush_dcache_mmap_lock/unlock() definitions. sh: Kill off unused flush_icache_user_range(). sh: Migrate SH-4 cacheflush ops to function pointers. sh: Convert SH-2 to new cacheflush interface. sh: Convert SH-2A to new cacheflush interface. sh: Convert SH-3 to new cacheflush interface. sh: Convert SH7705 extended mode to new cacheflush interface. Merge branch 'sh/stable-updates' Merge branch 'master' into sh/hwblk sh: Kill off the unhandled pvr case in SH-4 CPU probing. sh: Convert cache disabled SH-5 over to new cache interface. sh64: Build in support for generic stacktrace ops. sh: Fix up the SH-5 build with caches enabled. sh64: Kill off dead i/d-cache disabled bits. sh: Wire up sh5_cache_init(). sh: Merge the _32/_64 variants of arch/sh/kernel/Makefile. sh: Merge the _32/_64 variants of arch/sh/mm/Makefile. sh: unwinder: Move initialization to early_initcall() and tidy up locking. Merge branch 'master' into sh/cachetlb sh: Build fix for disabled caches. sh: Fix up clockevents broadcasting. sh: Add mach-types entry for EcoVec board. Merge branch 'sh/r8a66597-udc' sh: Fix up the CONFIG_FTRACE_SYSCALLS=n build. sh: DSP save/restore ordering and a0 sign extension fixups. rtc: rtc-ds1302: Kill off unused variables. sh: enable rtc-ds1302 in snapgear_defconfig. sh: Fix up cache-sh4 build on SMP. sh: Use local TLB flush for get_mmu_context() ASID exhaustion. sh: Kill off unused cpu/cacheflush.h. sh: Make cache flushers SMP-aware. sh: Kill off now redundant local irq disabling. sh: Export unwind_stack() to satisfy modular oprofile. Merge branch 'sh/dwarf-unwinder' of git://github.com/mfleming/linux-2.6 into sh/dwarf-unwinder sh: unwinder: Use a special bug flag for unwinder traps. sh64: dummy unwinder BUG wrappers. Merge branch 'sh/dwarf-unwinder' sh: unwinder: cacheline align slab cache objects. Merge branch 'sh/hwblk' into sh/pm-runtime sh: Fix section mismatch in platform bus notifier. Merge branches 'sh/hwblk' and 'sh/pm-runtime' usb: gadget: m66592-udc needs linux/err.h. sh: Move the FTRACE_SYSCALL_MAX definition in to asm/ftrace.h. Merge branch 'sh/st-integration' timekeeping: Fix up read_persistent_clock() breakage on sh sh: Fix an off-by-1 in FTRACE_SYSCALL_MAX. sh: Fix up sh4_flush_dcache_page() build on UP. sh: Tidy up watchdog build for SH-2. sh: unwinder: Fix up uninitialized variable warnings on sh2a build. sh: Fix up simplified multi-evt handling under sparseirq. Merge branch 'master' into sh/smp sh: nmi_debug support. sh: Kill off kgdb's magical NMI debouncing. Revert "sh: Kill off now redundant local irq disabling." sh: Fix up UP deadlock with SMP-aware cache ops. sh: disable trapped I/O on SH7785LCR. sh: Fix up build warning for SH7785LCR proto board. sh: Fix up and optimize the kmap_coherent() interface. mtd: onenand: select MTD_PARTITIONS sh: Use more aggressive dcache purging in kmap teardown. sh: Kill off dcache writeback from copy_page(). Merge branches 'sh/smp' and 'sh/stable-updates' rtc: rtc-sh: Fix up oops in early periodic freq assignment. sh: Cleanup whitespace damage in sh4_flush_icache_range(). sh: multi-evt support for SH-X3 proto CPU. sh: cpufreq: Include CPU id in info messages. sh: Fix up sh7705 flush_dcache_page() build. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 sh: Wire up HAVE_SYSCALL_TRACEPOINTS. sh: Kill off unused se_skipped in alignment trap notification code. kallsyms: fix segfault in prefix_underscores_count() sh: Handle unaligned 16-bit instructions on SH-2A. sh: Fix up uninitialized variable use caught by gcc 4.4. sh: update defconfigs. sh: enable onenand support in kfr2r09 defconfig. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Paul Walmsley (10): OMAP3: update OMAP3 Beagle defconfig OMAP: powerdomain: Fix overflow when doing powerdomain deps lookups. OMAP clock: associate MPU clocks with the mpu_clkdm OMAP3 clock: remove superfluous calls to omap2_init_clk_clkdm OMAP2/3 PM: create the OMAP PM interface and add a default OMAP PM no-op layer OMAP2/3/4 PRCM: add module IDLEST wait code OMAP2/3 board-*.c files: read bootloader configuration earlier OMAP2/3/4: create omap_hwmod layer OMAP: omap_hwmod: call omap_hwmod init at boot; create interconnects OMAP2/3/4 core: create omap_device layer Pavel Machek (11): iwlwifi: fix LED config option [ARM] pxa/sharpsl_pm: zaurus c3000 aka spitz: fix resume Staging: HTC Dream: Makefile glue Staging: htc: Dream: limit Kconfig for only MSM platforms Staging: HTC Dream: Cleanup Dream touchscreen driver Staging: HTC Dream: touchscreen: more cleanups Staging: dream: synaptics touchscreen for dream: documentation Staging: Dream: separate Kconfig/Makefile into subdirectory Staging: dream: Synaptics touchscreen: check that smbus is available ARM: spitz: fix touchscreen max presure fbdev: framebuffer support for HTC Dream Pavel Roskin (8): ath5k: fix values for bus error bits in ISR2 rt61pci: fix module reloading rt2x00: cancel all work on disconnect cfg80211: fix disassociation warning due to misuse of wdev->current_bss ath5k: fix uninitialized value use in ath5k_eeprom_read_turbo_modes() ath5k: don't use PCI ID to find the chip revision rc80211_minstrel: fix contention window calculation rc80211_minstrel: fix contention window calculation Pavel Vasilyev (1): x86/gart: Do not select AGP for GART_IOMMU Pawel Ludwikow (2): USB: serial: ftdi_sio: new hardware support - hameg power supply USB: serial: pl2303: new hardware support - sanwa multimeter Pawel Moll (2): sh: Allow for kernel command line concatenation. sh: Simplify "multi-evt" interrupt handling. Pekka Enberg (10): kmemleak: Don't scan uninitialized memory when kmemcheck is enabled Merge branches 'slab/cleanups' and 'slab/fixes' into for-linus Staging: w35und: Convert MDS typedef to struct w35_mds Staging: w35und: Remove unused struct _RXBUFFER Staging: w35und: Cleanup the mlmetxrx_f.h header file Staging: w35und: Convert typedef DESCRIPTOR to struct wb35_descriptor Staging: w35und: Remove unused struct _STATISTICS_INFO Staging: w35und: Convert typedef MTO_PARAMETERS to struct wb35_mto_param Staging: w35und: Remove some write-only struct members shmem: initialize struct shmem_sb_info to zero Pekka Paalanen (4): drm/kms: no need to return void value (encoder) drm/ttm: optimize bo_kmap_type values drm: GEM handles are u32, not int drm: fix _DRM_GEM addmap error message Peng Tao (3): ext4: fix build warning when EXT4FS_DEBUG is on ext4: fix journal ref count in move_extent_par_page doc/filesystems: more mount cleanups Pete Eberlein (8): V4L/DVB (13020): go7007: Updates to Kconfig and Makefile V4L/DVB (13021): go7007: Fix whitespace and line lengths V4L/DVB (13022): go7007: Fix mpeg controls V4L/DVB (13023): go7007: Merge struct gofh and go declarations V4L/DVB (13024): go7007: Implement vidioc_g_std and vidioc_querystd V4L/DVB (13025): s2250-board: Fix memory leaks V4L/DVB (13026): s2250-board: Implement brightness and contrast controls V4L/DVB (13027): go7007: convert printks to v4l2_info Pete Hildebrandt (1): V4L/DVB (12396): [patch] Added Support for STK7700D (DVB) Pete Zaitcev (6): USB: sisusbvga: drop usb_buffer_alloc USB: usbmon: drop Kconfig defaults USB: usbmon: touch up the documentation USB: usbmon: end ugly tricks with DMA peeking USB: Let usb_sg_init to set transfer_buffer more often USB: unusual_devs.h: drop some unneeded floppy entries Peter 'p2' De Schrijver (5): OMAP: PM counter infrastructure. OMAP: PM: Hook into PM counters OMAP: PM: Add closures to clkdm_for_each and pwrdm_for_each. OMAP: PM: Add pm-debug counters OMAP: PM debug: make powerdomains use PM-debug counters Peter Feuerer (2): acerhdf: fix fan control for AOA150 model acerhdf: additional BIOS versions Peter Huewe (8): HID: adding __init/__exit macros to module init/exit functions hvc_console: Add __init and __exit to hvc_vio trivial: add __init/__exit macros to DAC960.c trivial: mtd: add __init/__exit macros to init/exitfunctions trivial: media/omap: adding __init/__exit macros to lcd_drivers trivial: media/video/cx88: add __init/__exit macros to cx88 drivers trivial: add __init macro/ fix of __exit macro location in ipmi_poweroff.c trivial: add __init/__exit macros in drivers/gpio/bt8xxgpio.c Peter Korsgaard (5): ARM: S3C6410: airgoo hmt board support ARM: S3C: move s3c_device_nand from plat-s3c24xx to plat-s3c ARM: S3C: move timer/pwm handling from plat-s3c24xx to plat-s3c uartlite: support shared interrupt lines video: s3c_fb.c: fix build with CONFIG_HOTPLUG=n Peter Meerwald (1): ASoC: fixes multiple typos in comments, no functional change Peter Oberparleiter (3): [S390] cio: fix ineffective verify event [S390] cio: consolidate subchannel intparm reset param: allow whitespace as kernel parameter separator Peter P Waskiewicz Jr (8): ixgbe: Remove legacy descriptor support ixgbe: Make sure boolean assignments from bitwise operations done correctly ixgbe: Add device support for a new copper 82598 device ixgbe: Bump version number ixgbe: Properly disable DCB arbiters prior to applying changes ixgbe: Properly disable packet split per-ring when globally disabled ixgbe: Add support for 82599-based CX4 adapters ixgbe: Create separate media type for CX4 adapters Peter Staubach (1): NFS: read-modify-write page updating Peter Ujfalusi (4): ASoC: TWL4030: Introduce PGAs for outputs ASoC: TWL4030: Fix for capture mixer strings OMAP3: McBSP: Lower the maximum buffersize for McBSP1, 3, 4, 5 OMAP: McBSP: Add link DMA mode selection Peter Williams (1): sched: Simplify sys_sched_rr_get_interval() system call Peter Zijlstra (73): hrtimer: Remove cb_entry from struct hrtimer lockdep: BFS cleanup sched: Fix cgroup smp fairness sched: Optimize unused cgroup configuration sched: Add debug check to task_of() sched: Ensure the migration task doesn't go away during use lockdep: Fix backtraces lockdep: Fix style nits lockdep: Introduce lockdep_assert_held() lockdep: Deal with many similar locks perf tools: Add some comments to the event definitions sched: Avoid division by zero perf_counter: Allow sharing of output channels sched: Fix division by zero - really sched: Add wait, sleep and iowait accounting tracepoints sched: Restore __cpu_power to a straight sum of power sched: Add SD_PREFER_SIBLING sched: Update the cpu_power sum during load-balance sched: Add smt_gain sched: Implement dynamic cpu_power sched: Scale down cpu_power due to RT tasks sched: Try to deal with low capacity sched: Remove reciprocal for cpu_power perf stat: Change noise calculation to use stddev perf stat: Remove the limit on repeat perf stat: Use stddev_mean in stead of stddev perf stat: More advanced variance computation perf stat: Clean up statistics calculations a bit more sched: Remove short cut from select_task_rq_fair() sched: Deal with low-load in wake_affine() sched: enable SD_WAKE_IDLE sched: Fix double_rq_lock() compile warning sched: Split WAKEUP_OVERLAP sched: Add come comments to the sched features sched: Move code around sched: Move sched_balance_self() into sched_fair.c sched: Hook sched_balance_self() into sched_class::select_task_rq() sched: Add TASK_WAKING sched: Merge select_task_rq_fair() and sched_balance_self() sched: Weaken SD_POWERSAVINGS_BALANCE sched: for_each_domain() vs RCU sched: Fix task affinity for select_task_rq_fair sched: Tweak wake_idx sched: Fix some domain tunings sched: Reduce forkexec_idx sched: Provide arch_scale_freq_power x86: Move APERF/MPERF into a X86_FEATURE x86: Add generic aperf/mperf code x86: sched: Provide arch implementations using aperf/mperf sched: Feature to disable APERF/MPERF cpu_power sched: Rename select_task_rq() argument sched: Rename sync arguments sched: Add WF_FORK sched: Fix sync wakeups again sched: Add a few SYNC hint knobs to play with sched: Add SD_PREFER_LOCAL sched: x86: Name old_perf in a unique way sched: Optimize cgroup vs wakeup a bit sched: Clean up the load_idx selection in select_task_rq_fair sched: Rename flags to wake_flags sched: Disable wakeup balancing sched: Add new wakeup preemption mode: WAKEUP_RUNNING sched: Stop buddies from hogging the system sched: Fix SD_POWERSAVING_BALANCE|SD_PREFER_LOCAL vs SD_WAKE_AFFINE perf_counter: Do not throttle single swcounter events perf_counter: Allow for a wakeup watermark perf record: Disable profiling before draining the buffer perf_counter: Fix up swcounter throttling sched_clock: Make it NMI safe tracing: Export trace_profile_buf symbols perf_counter: x86: Fix PMU resource leak perf_event, x86: Fix 'perf sched record' crashing the machine fcntl: add F_[SG]ETOWN_EX Petri Gynther (1): bonding: Have bond_check_dev_link examine netif_running Phil Carmody (2): crypto: aes - Undefined behaviour in crypto_aes_expand_key UBI: eliminate possible undefined behaviour Phil Edworthy (2): video: sh_mobile_lcdcfb: implement display panning video: sh_mobile_lcdcfb: use both register sets for display panning Phil Sutter (2): korina: fix printk formatting, add final info line korina: add error-handling to korina_alloc_ring Phil Vandry (1): ASoC: wm8753: fix mapping when MONOMIX is set to Stereo Philipp Zabel (5): ASoC: UDA1380: refactor device registration [ARM] pxa: remove left-over struct clk *other field from struct clk [ARM] pxa/hx4700: use platform_lcd driver pcmcia: dtl1_cs: fix pcmcia_loop_config logic USB: gadget: pxa25x: basic transceiver support Philippe De Muyter (1): m68knommu: fix ColdFire definition of CLOCK_TICK_RATE Philippe Gerum (10): Blackfin: checkpatch --file arch/blackfin/kernel/ipipe.c Blackfin: fix misnomer of some I-pipe helpers Blackfin: export show_stack() to modules Blackfin: allow high priority domains to preempt schedule_tail() Blackfin: use generic name for EVT14 handler Blackfin: reuse evt_evt14 handler to perform irqtail epilogue Blackfin: allow EVT5 to preempt irqtail prologue (CONFIG_DEBUG_HWERR) Blackfin: document __ipipe_call_irqtail Blackfin: sanitize manual control of IPEND[4] Blackfin: inline I-pipe bypass code in ret_from_exception Phillip Lougher (1): lzma/gzip: fix potential oops when input data is truncated Pierre Habouzit (1): perf tools: do not complain if root is owning perf.data Pierre Ossman (1): sdhci: orphan driver and list Poonam Aggrwal (1): powerpc/85xx: Add support for P2020RDB board Pranith Kumar (1): Staging: otus: Fix warnings in staging/otus/ioctl.c Prarit Bhargava (1): [CPUFREQ] Create a blacklist for processors that should not load the acpi-cpufreq module. Rafael Ignacio Zurita (2): sh: Add early printk support for SH770x CPUs. sh: clkfwk: remove bogus set_bus_parent() from SH7709. Rafael J. Wysocki (26): genirq: Fix comment describing suspend_device_irqs() Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus PM: Introduce core framework for run-time PM of I/O devices (rev. 17) x86: Decrease the level of some NUMA messages to KERN_DEBUG PCI PM: Simplify PCI wake-up code PCI / ACPI PM: Rework some debug messages PCI PM: Introduce device flag wakeup_prepared ACPI PM: Replace wakeup.prepared with reference counter PCI / ACPI PM: Propagate wake-up enable for devices w/o ACPI support Merge branch 'master' into for-linus Merge branch 'master' into for-linus PM/Hibernate: Rework shrinking of memory PM/Hibernate: Do not release preallocated memory unnecessarily (rev. 2) PM/Hibernate: Do not try to allocate too much memory too hard (rev. 2) PM: Update kerneldoc comments in drivers/base/power/main.c PCI / PCIe portdrv: Fix pcie_portdrv_slot_reset() PCI PM: Return error codes from pci_pm_resume() PCI: Clear saved_state after the state has been restored Rafael Laufer (1): netfilter: nf_conntrack: add SCTP support for SO_ORIGINAL_DST Rafi Rubin (1): HID: ntrig tool separation and pen usages Rahul Iyer (1): nfsd41: sunrpc: Added rpc server-side backchannel handling Rajashekhara, Sudhakar (3): davinci: dm644x: Support for dm644x silicon revision 2.1 davinci: Move the da830/omap-l137 #defines to header file TI DaVinci EMAC: delay DaVinci EMAC initialization Ralf Baechle (13): NET: Fix possible corruption in bpqether driver MIPS: Fix potencial build error in MIPS: Get rid of duplicate cpu_idle() prototype. MIPS: Malta: Convert reset initialization to initcall. MIPS: Fulong: Convert reset initialization to initcall. MIPS: FW: Build with -Werror MIPS: IP22, IP28: Build with -Werror MIPS: Consolidate all CONFIG_CPU_HAS_LLSC use in a single C file. MIPS: Rewrite sysmips(MIPS_ATOMIC_SET, ...) in C with inline assembler MIPS: Rewrite clearing of ll_bit on context switch in C MIPS: Malta: Remove pointless use use of CONFIG_CPU_HAS_LLSC MIPS: Get rid of CONFIG_CPU_HAS_LLSC MIPS: Remove useless zero initializations. Rami Rosen (2): cleanup: remove unused member in scm_cookie. sctp: remove unused union (sctp_cmsg_data_t) definition Randy Dunlap (33): xfrm4: fix build when SYSCTLs are disabled ASoC: fix I2C build errors trace_skb: fix build when CONFIG_NET is not enabled phonet: fix build when PROC_FS is disabled [SCSI] scsi_transport_fc: fix kernel-doc param name Bluetooth: Add missing selection of CONFIG_CRC16 for L2CAP layer timer.c: Fix S/390 comments timers: Drop a function prototype ipw2200: fix kconfig dependencies net: fix hydra printk format warning netxen: build fix for INET=n [IA64] mbcs: fix printk format warnings [IA64] ioc4_serial: fix printk format warnings [IA64] sgi-xp: fix printk format warnings Staging: android: lowmemorykiller: fix module param errors Staging: hv: blk dev depends on SCSI Staging: udlfb: fix printk format warning Staging: iio: fix duplicate dev_attr_name ssb/sdio: fix printk format warnings [WATCHDOG] wdt_pci: fix printk and variable type kernel hacking: move STRIP_ASM_SYMS from General page_alloc: fix kernel-doc warning USB: usbtmc: fix printk format warnings USB: otg: fix twl4030-usb build USB: gadget: ether needs to select CRC32 spi.h: add missing kernel-doc for struct spi_master ssb/sdio: fix printk format warnings wl12xx: fix kconfig/link errors creds_are_invalid() needs to be exported for use by modules: serial core: fix new kernel-doc warnings sunrpc/rpc_pipe: fix kernel-doc notation doc/filesystems: remove smount program docs: fix various Documentation/ paths in header files Raphael Derosso Pereira (1): Input: add driver for Atmel AT42QT2160 Sensor Chip Ravi Anand (1): [SCSI] qla2xxx: Pass the command's data residual to upper-layer callers. Reddy, Teerth (1): OMAP3: PM: add T2 interrupt line mux setting, and enable on 3430SDP Reinette Chatre (26): iwlagn: re-enable PS support for iwlagn iwlwifi: add utility to print buffer when error occurs iwlwifi: always print buffer when error condition occurs iwlwifi: fix permissions on debugfs files iwl3945: cleanup number of queues settings iwlagn: fix minimum number of queues setting iwlagn: do not send key clear commands when rfkill enabled iwlwifi: make debug level more user friendly iwlwifi: clarify hardware error message iwlwifi: inform user about rfkill state changes iwlwifi: print packet contents in error case iwlagn: fix null pointer access during ucode load on 1000 iwlagn: fix sparse warning when compiling without debug iwlwifi: re-introduce per device debugging iwlwifi: revert uCode Alive notification with timeout iwlwifi: fix missing EXPORT_SYMBOL iwlwifi: prevent read outside array bounds ipw2x00: fix sparse warnings ipw2x00: update contact information MAINTAINERS: Update ipw2x00 and iwlwifi entries iwlwifi: fix situation in which debug message is printed iwl3945: reduce debug noise when default debug flags used iwlwifi: fix potential rx buffer loss iwlwifi: fix potential rx buffer loss iwlwifi: do not send sync command while holding spinlock iwlwifi: reduce noise when skb allocation fails Renzo Davoli (1): fs/char_dev.c: remove useless loop Rex Feany (1): powerpc/8xx: Fix regression introduced by cache coherency rewrite Ricardo Labiaga (5): nfsd41: Backchannel: Add sequence arguments to callback RPC arguments nfsd41: Backchannel: Server backchannel RPC wait queue nfsd41: Backchannel: Setup sequence information nfsd41: Backchannel: Implement cb_recall over NFSv4.1 nfsd41: Refactor create_client() Richard Ash (10): Staging: add Support for Quatech ESU2-100 USB 2.0 8-port serial adaptor Staging: quatech_usb2: implement open functionality Staging: quatech_usb2: close, read, and some ioctl support Staging: quatech_usb2: write_room rewrite Staging: quatech_usb2: TIOCMGET and TIOCMSET removal Staging: quatech_usb2: chars_in_buffer() fix Staging: quatech_usb2: vendor implementation of set_termios method Staging: quatech_usb2: vendor implementation of break_ctl Staging: quatech_usb2: Improve debug output and fix write_room Staging: quatech_usb2: Improvements to set_termios method Richard Purdie (1): leds: Fix leds-pca9532 whitespace issues Richard Röjfors (7): Input: tsc2007 - remove HR timer Input: tsc2007 - make init/exit platform hw callbacks optional Input: tsc2007 - do not read coordinates during probe Input: tsc2007 - check if I2C communication works during probe V4L/DVB (13019): video: initial support for ADV7180 sdhci: support for ADMA only hosts gpio: add MC33880 driver Rik van Riel (1): vmscan: throttle direct reclaim when too many pages are isolated already Rob Emanuele (2): atmel-mci: unified Atmel MCI drivers (AVR32 & AT91) AT91: atmel-mci: Platform configuration to the the atmel-mci driver Robert Hancock (3): libata: add command name parsing for error output sata_sil24: always set protocol override for non-ATAPI data commands pata_amd: do not filter out valid modes in nv_mode_filter Robert Jarzmik (6): [ARM] pxa/dma: cosmetic move of EXPORT_SYMBOL under their functions [ARM] pxa/dma: optimize irq handler loop [ARM] pxa/dma: add debugfs entries [ARM] pxamci: add simple gpio controls [ARM] pxa: factor pxamci gpio handling [ARM] pxa: update rtc-pxa.c to use 'struct dev_pm_ops' Robert Love (5): [SCSI] libfc: Remove the FC_EM_DBG macro [SCSI] fcoe: Add format spacing to FCOE_NETDEV_DBG debug macro [SCSI] libfc: Fix misleading debug statement [SCSI] libfc: Initialize fc_rport_identifiers inside fc_rport_create [SCSI] libfc: Always reset remote port roles when receiving PRLI Robert P. J. Day (6): mtd: correct typo "MTD_DATAFLASH_VERIFY_WRITE" Staging: comedi: Remove references to dead EXPORT_SYMTAB Staging: vt6655: Remove Makefile refs to EXPORT_SYMTAB kbuild: correct initramfs compression comment trivial: Correct print_tainted routine name in comment trivial: Remove commented out usage of dead MODULE_PARM() in swarm_cs4297a Robert Richter (56): Merge commit 'v2.6.30' into oprofile/master Revert "oprofile: discover counters for op ppro too" x86/oprofile: moving arch_perfmon counter setup to op_x86_model_spec.init x86/oprofile: minor style changes in struct op_x86_model_spec oprofile: remove irq_flags in struct op_entry oprofile: remove obselete include headers x86/oprofile: remove #ifdefs in ibs functions x86/oprofile: simplify AMD cpu init code x86/oprofile: move common macros to op_x86_model.h x86/oprofile: remove MSR macros for AMD cpus x86/oprofile: remove MSR macros for ppro cpus x86/oprofile: remove MSR macros for p4 cpus x86/oprofile: fix and cleanup CTRL_SET_* macros x86/oprofile: remove unused macros for AMD virtualization profiling x86/oprofile: pass the model to setup_ctrs() functions x86/oprofile: replace macros to calculate control register x86/oprofile: replace CTR_OVERFLOWED macros x86/oprofile: replace CTRL_SET_*ACTIVE macros x86/oprofile: replace CTR*_IS_RESERVED macros x86/oprofile: use 64 bit wrmsr functions x86/oprofile: use 64 bit values to save MSR states x86/oprofile: remove some local variables in MSR save/restore functions x86/oprofile: use 64 bit values in IBS functions x86/oprofile: introduce oprofile_add_data64() Merge commit 'tip/perfcounters-for-linus' into oprofile/master x86/oprofile: fix initialization of arch_perfmon for core_i7 Merge branches 'oprofile/fixes', 'oprofile/next' and 'oprofile/master' into oprofile/auto Merge commit 'v2.6.31-rc3'; commit 'tip/oprofile' into oprofile/core x86/oprofile: Fix cast of counter value x86/oprofile: Rework and simplify nmi_cpu_setup() x86/oprofile: Whitespaces changes only x86/oprofile: Fix usage of NUM_CONTROLS/NUM_COUNTERS macros x86/oprofile: Use per_cpu() instead of __get_cpu_var() x86/oprofile: Fix initialization of switch_index oprofile: oprofile_set_timeout(), return with error for invalid args oprofile: Rename variable timeout_jiffies and move to oprofile_files.c oprofile: Remove oprofile_multiplexing_init() oprofile: Grouping multiplexing code in oprof.c oprofile: Introduce op_x86_phys_to_virt() oprofile: Grouping multiplexing code in op_model_amd.c x86/oprofile: Implement multiplexing setup/shutdown functions x86/oprofile: Moving nmi_setup_cpu_mux() in nmi_int.c x86/oprofile: Moving nmi_cpu_save/restore_mpx_registers() in nmi_int.c x86/oprofile: Moving nmi_cpu_switch() in nmi_int.c x86/oprofile: Remove const qualifier from struct op_x86_model_spec x86/oprofile: Remove unused num_virt_controls from struct op_x86_model_spec x86/oprofile: Modify initialization of num_virt_counters x86/oprofile: Add function has_mux() to check multiplexing support x86/oprofile: Enable multiplexing only if the model supports it x86/oprofile: Implement mux_clone() oprofile: Adding switch counter to oprofile statistic variables x86/oprofile: Implement op_x86_virt_to_phys() x86/oprofile: Add counter reservation check for virtual counters x86/oprofile: Small coding style fixes Revert "x86: oprofile/op_model_amd.c set return values for op_amd_handle_ibs()" ring-buffer: consolidate interface of rb_buffer_peek() Robert Schedel (1): HID: Support new variants of Samsung USB IR receiver (0419:0001) Robert Schwebel (1): ASoC: fix pxa2xx-ac97.c breakage Robert Varga (1): tcp: fix CONFIG_TCP_MD5SIG + CONFIG_PREEMPT timer BUG() Robin Callender (1): USB: gadget: audio driver seg-fault fix Robin Getz (9): printk: Enable the use of more than one CON_BOOT (early console) printk: Ensure that "console enabled" messages are printed on the console Blackfin: make EVT3->EVT5 lowering more robust wrt IPEND[4] Blackfin: reject outdated/unused/wrong relocation types Blackfin: clean up early memory setup code Blackfin: add an early shadow console Blackfin: catch hardware errors earlier during booting Blackfin: workaround anomaly 05000283 Blackfin: fix typo in isram_write() Rodrigo Vivi (1): omapfb: add support for rotation on the Blizzard LCD ctrl Roel Kluin (70): wireless: remove redundant tests on unsigned ASoC: Keep index within stac9766_reg[] arlan: inverted logic? HID: fix overrun in quirks initialization nfs: Keep index within mnt_errtbl[] ext4: remove redundant test on unsigned powerpc/fsl-booke: read buffer overflow powerpc/hvsi: Avoid calculating possibly-invalid address ASoC: free socdev if init_card() fails in wm9705_soc_probe() GFS2: jumping to wrong label? x86: Fix x86_model test in es7000_apic_is_cluster() sound: vwsnd: Fix setting of cfgval and ctlval in li_setup_dma() Input: tosakbd - fix cleaning up KEY_STROBEs after error libertas: Read buffer overflow nl80211: jump to out_err upon unsupported iftype ath9k: Fix read buffer overflow drm: dereference of tmp in drm_proc_create_files() ALSA: allocation may fail in snd_pcm_oss_change_params() slram: Read buffer overflow mtd: tests: fix read buffer overflows mtd: pmcmsp-flash: fix error paths in init_msp_flash IB/ipath: strncpy() doesn't always NUL-terminate RDMA/amso1100: Check kmalloc() result in c2_register_device() KVM: fix EFER read buffer overflow [S390] tape: reversed order of labels V4L/DVB (12199): remove redundant tests on unsigned V4L/DVB (12435): strlcpy() will always null terminate the string. V4L/DVB (12575): Fix test of bandwidth range in cx22700_set_tps() pcmcia: drivers/pcmcia: Make static Staging: comedi: s626: Possible read buffer overflow fix Staging: vt6655: fix possible Read buffer overflow Staging: rt2860: Fix test in rt_ioctl_siwfrag() Staging: rspiusb: Check usb_buffer_map_sg() retval Staging: comedi: apci3200: fix test of ui_DelayTime range in i_APCI3200_CommandTestAnalogInput() Staging: rt2860: fix possible NULL dereferences Staging: comedi: addi-data: NULL dereference of amcc in v_pci_card_list_init() Blackfin: fix read buffer overflow MIPS: Octeon: False positive timeout kref: double kref_put() in my_data_handler() V4L/DVB (13015): kmalloc failure ignored in m920x_firmware_download() V4L/DVB (13016): kmalloc failure ignored in lgdt3304_attach() and s921_attach() V4L/DVB (13017): gspca: kmalloc failure ignored in sd_start() V4L/DVB (13018): kzalloc failure ignored in au8522_probe() ARM: STMP3xxx: deallocation with negative index of descriptors[] ARM: s3c: fix check of index into s3c_gpios[] mtd: lart: Prevent a read from mtd->eraseregions[-1] mtd: mtdconcat: prevent a read from eraseregions[-1] mtd: mtdpart: prevent a read from regions[-1] tty: icom: bit and/or confusion? regulator: add check index of wm8350->pmic.pdev[] regulator: fix calculation of voltage range in da9034_set_ldo12_voltage() pcmcia: fix read buffer overflow arch/alpha/boot/tools/objstrip.c: wrong variable tested after open() m32r: remove redundant tests on unsigned uml: fix order of pud and pmd_free() hwmon: fix freeing of gpio_data and irq USB: gadget: s3c-hsotg: missing parentheses USB: gadget: Read buffer overflow USB: double put_tty_driver(gs_tty_driver) in gserial_setup() USB: gadget: double free_irq() in at91udc_probe() smbfs: read buffer overflow dme1737: Keep index within pwm_config[] sdio: fix read buffer overflow ncpfs: read buffer overflow platinumfb: fix misplaced parenthesis sisfb: read buffer overflow drivers/video/console/newport_con.c: fix read outside array bounds mwave: fix read buffer overflow adfs: remove redundant test on unsigned gru: allocation may fail in quicktest1() Roger Quadros (2): OMAP: Remove omap boot parsing code regulator: Add GPIO enable control to fixed voltage regulator driver RogĂ©rio Brito (1): USB: fix paths in usbmon documentation Roland Dreier (26): crypto: aes-ni - Don't print message with KERN_ERR on old system IPoIB: Remove unused includes IPoIB: Drop priv->lock before calling ipoib_send() IB/mad: Check hop count field in directed route MAD to avoid array overflow IB: Use DEFINE_SPINLOCK() for static spinlocks mlx4_core: Use pci_request_regions() mlx4_core: Remove unnecessary includes of IB/mlx4: Annotate CQ locking mlx4_core: Allocate and map sufficient ICM memory for EQ context IB/mthca: Remove unnecessary include of IB/mthca: Remove unnecessary include of IB/mthca: Annotate CQ locking IB/mad: Fix possible lock-lock-timer deadlock MAINTAINERS: InfiniBand/RDMA mailing list transition to vger Add MODULE_DEVICE_TABLE() so ioatdma module is autoloaded I/OAT: Convert to PCI_VDEVICE() Merge branches 'cxgb3', 'ehca', 'ipath', 'ipoib', 'misc', 'mlx4', 'mthca' and 'nes' into for-linus Merge branch 'mad' into for-linus ecryptfs: Remove unneeded locking that triggers lockdep false positives eCryptfs: Fix lockdep-reported AB-BA mutex issue printk_once(): use bool for boolean flag IB/mad: Fix lock-lock-timer deadlock in RMPP code x86: Reduce verbosity of "TSC is reliable" message x86: Reduce verbosity of "PAT enabled" kernel message Merge branches 'ipoib', 'mad', 'mlx4', 'mthca' and 'nes' into for-linus ACPI: Kill overly verbose "power state" log messages Roland McGrath (9): binfmt_elf: fix PT_INTERP bss handling binfmt_elf: fix PT_INTERP bss handling asm-generic: syscall_get_nr returns int x86: syscall_get_nr returns int x86: ptrace: sysret path should reach syscall_trace_leave x86: ptrace: do not sign-extend orig_ax on write x86: ptrace: set TS_COMPAT when 32-bit ptrace sets orig_eax>=0 signals: tracehook_notify_jctl change signals: inline __fatal_signal_pending Rolf Eike Beer (1): Make sure the value in abs() does not get truncated if it is greater than 2^32 Ron Lee (1): [ARM] Kirkwood: Initialise SATA for OpenRD-Base Ron Mercer (3): qlge: Get rid of 'default' rx_ring type. qlge: Allow running MSIx with fewer vectors. qlge: Move TX completions from workqueue to NAPI. Rongrong Cao (1): ASoC: fix checking for external widgets bug Ruben Aos Garralda (1): HID: add rumble support for Thrustmaster Dual Trigger 3-in-1 Rudolf Marek (2): hwmon: (coretemp) Fix Atom CPUs support hwmon: (coretemp) Add support for Penryn mobile CPUs Russell King (39): [ARM] versatile: add PL061 gpiolib support [ARM] realview: add PL061 gpiolib support MMC: MMCI: use AMBA bus accessors MMC: MMCI: allow GPIOs to be passed MMC: MMCI: use gpiolib for card detect/write protect [ARM] Update mach-types [ARM] remove L_PTE_BUFFERABLE and L_PTE_CACHEABLE [ARM] pgtable: rearrange file PTE bit allocation [ARM] Update mach-types Merge branch 'omap4_upstream' of git://dev.omapzoom.org/pub/scm/santosh/kernel-omap4-base into devel-stable Merge branch 'pm-upstream/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into devel-stable Merge branch 'for-rmk' of git://git.marvell.com/orion into devel-stable Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable Merge branch 'for-rmk-2.6.32' of git://git.pengutronix.de/git/ukl/linux-2.6 into devel-stable Merge branch 'next-s3c' of git://aeryn.fluff.org.uk/bjdooks/linux into devel-stable ARM: implement highpte MMC: MMCI: convert realview MMC to use gpiolib mtd: afs: fix build warning Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'for-rmk' of git://git.marvell.com/orion into devel-stable ARM: Fix pfn_valid() for sparse memory Merge branch 'nomadik' into devel-stable [ARM] Update mach-types Merge branches 'arm', 'at91', 'bcmring', 'ep93xx', 'mach-types', 'misc' and 'w90x900' into devel Merge branch 'devel-stable' into devel Merge branch 'master' into devel Merge branch 'next-s3c-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux ARM: Update mailing list addresses [ARM] Update mach-types Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6 ARM: Provide definitions and helpers for decoding the FSR register ARM: Update page fault handling for new OOM techniques ARM: Ensure correct might_sleep() check in pagefault path ARM: Separate out access error checking ARM: Add support for checking access permissions on prefetch aborts Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel Merge branch 'u300' into devel Merge branch 'master' into for-linus Merge branch 'origin' into for-linus Rusty Russell (51): virtio_pci: minor MSI-X cleanups virtio: make add_buf return capacity remaining lguest: move panic notifier registration to its expected place. lguest: use set_pte/set_pmd uniformly for real page table entries lguest: use PGDIR_SHIFT for PAE code to allow different PAGE_OFFSET lguest: don't force VIRTIO_F_NOTIFY_ON_EMPTY misc: remove redundant start_kernel prototypes cpumask: remove the now-obsoleted pcibus_to_cpumask(): alpha cpumask: remove the now-obsoleted pcibus_to_cpumask(): mips cpumask: remove the now-obsoleted pcibus_to_cpumask(): powerpc cpumask: remove obsolete node_to_cpumask now everyone uses cpumask_of_node cpumask: remove dangerous CPU_MASK_ALL_PTR cpumask: remove dangerous CPU_MASK_ALL_PTR, &CPU_MASK_ALL.: mips cpumask: remove unused cpu_mask_all cpumask: remove last assignment to mask field of struct irqaction. cpumask: remove unused mask field from struct irqaction. cpumask: don't define set_cpus_allowed() if CONFIG_CPUMASK_OFFSTACK=y ia64: convert last user of smp_call_function_mask cpumask: remove the deprecated smp_call_function_mask() cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: core cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: sparc cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: s390 cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: powerpc cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: ia64 cpumask: arch_send_call_function_ipi_mask: alpha cpumask: arch_send_call_function_ipi_mask: m32r cpumask: arch_send_call_function_ipi_mask: mips cpumask: arch_send_call_function_ipi_mask: powerpc cpumask: arch_send_call_function_ipi_mask: s390 cpumask: remove arch_send_call_function_ipi cpumask: Use accessors for cpu_*_mask: m32r cpumask: Use accessors for cpu_*_mask: mips cpumask: Use accessors for cpu_*_mask: powerpc cpumask: Use accessors for cpu_*_mask: um cpumask: use mm_cpumask() wrapper: arm cpumask: use mm_cpumask() wrapper: m32r cpumask: use mm_cpumask() wrapper: mn10300 cpumask: use mm_cpumask() wrapper: mips cpumask: use mm_cpumask() wrapper: um cpumask: use mm_cpumask() wrapper: x86 cpumask: use new-style cpumask ops in mm/quicklist. cpumask: remove unused deprecated functions, avoid accusations of insanity cpumask: Move deprecated functions to end of header. virtio_net: skb_orphan() and nf_reset() in xmit path. virtio_net: return NETDEV_TX_BUSY instead of queueing an extra skb. virtio_net: don't free buffers in xmit ring virtio_net: formalize skb_vnet_hdr virtio_net: avoid (most) NETDEV_TX_BUSY by stopping queue early. x86: Remove redundant non-NUMA topology functions module: fix memory leak when load fails after srcversion/version allocated module: don't call percpu_modfree on NULL pointer. Ryan Mallon (6): [ARM] 5566/1: Remove at91_gpiolib_request [ARM] 5605/1: Fix ep93xx gpio.c headers [ARM] 5607/1: ep93xx: Use __iomem pointer on syscon write function mtd: SST25L (non JEDEC) SPI Flash driver ep93xx video driver platform support ep93xx video driver Ryusei Yamaguchi (1): knfsd: Replace lock_kernel with a mutex in nfsd pool stats. Ryusuke Konishi (12): nilfs2: fix ignored error code in __nilfs_read_inode() nilfs2: use semaphore to protect pointer to a writable FS-instance nilfs2: always lookup disk block address before reading metadata block nilfs2: use GFP_NOIO for bio_alloc instead of GFP_NOWAIT nilfs2: remove nilfs_dat_abort_start and nilfs_dat_abort_free nilfs2: remove unused btree argument from btree functions nilfs2: stop zero-fill of btree path just before free it nilfs2: remove individual gfp constants for each metadata file nilfs2: add update functions of virtual block address to dat nilfs2: allow btree code to directly call dat operations nilfs2: convert nilfs_bmap_lookup to an inline function fs/Kconfig: move nilfs2 outside misc filesystems RĂ©mi Denis-Courmont (13): Phonet: sockets list through proc_fs Phonet: account for dropped RX packets Phonet: dropped datagrams accounting f_phonet: lock-less MTU change f_phonet: use page-sized rather than MTU-sized RX buffers Phonet: fix /proc/net/phonet with network namespaces Phonet: fix netlink address dump error handling Phonet: back-end for autoconfigured addresses cdc-phonet: autoconfigure Phonet address Phonet: Netlink event for autoconfigured addresses cdc-phonet: remove noisy debug statement Phonet: fix race for port number in concurrent bind() Phonet: error on broadcast sending (unimplemented) Sachin Sant (2): crypto: s390 - Fix sha build failure net: Fix a build break because of a typo in drivers/net/3c503.c Sage Weil (4): [SCSI] ibmvscsi: avoid unnecessary use of kzalloc_pool Btrfs: fix arithmetic error in clone ioctl md: avoid use of broken kzalloc mempool mm: remove broken 'kzalloc' mempool Sam Ravnborg (6): kbuild: use INSTALLKERNEL to select customized installkernel script kbuild: save ARCH & CROSS_COMPILE when building a kernel kbuild: rename ld-option to cc-ldoption kbuild: introduce ld-option arm, cris, mips, sparc, powerpc, um, xtensa: fix build with bash 4.0 alpha: fix build after vmlinux.lds.S cleanup Samuel Ortiz (16): iwmc3200wifi: invalidate keys when changing the BSSID iwmc3200wifi: handling wifi_if_ntfy responses iwmc3200wifi: cfg80211 key hooks implemetation iwmc3200wifi: cache keys when interface is down cfg80211: connect/disconnect API cfg80211: check for current_bss from giwrate iwmc3200wifi: cfg80211 managed mode port cfg80211: Set WEP ciphers iwmc3200wifi: Set WEP key from connect iwmc3200wifi: Fix sparse warning iwmc3200wifi: New initial LMAC calibration iwmc3200wifi: Handle UMAC stalls and UMAC assert properly iwmc3200wifi: Add a last_fw_err debugfs entry mfd: fix ab3100 warning on x86_64 mfd: Fix ab3100-otp build failure mfd: Fix twl4030-power warnings Samuel R. C. Vale (1): trivial: fix typos in comments s/DGBU/DBGU/ San Mehat (1): mmc: msm_sdccc: driver for HTC Dream Sandeep Paulraj (17): davinci: Adding DM365 SOC Support davinci: Adding DM365 EVM board support davinci: Adding DM365 entries to Makefile/Kconfig/defconfig davinci: dm365: add mux entries for EDMA, RTC, EMAC, keypad. davinci: dm365: EMAC support for SoC and dm365 EVM davinci: dm365: add EDMA support davinci: dm365: add MMC/SD support davinci: MMC/SD Support for dm365 EVM davinci: dm365: add NAND support to EVM board davinci: DM365 Updating PINMUX Entries DaVinci: EDMA: Add queue 2 and 3 for DM365 and DM6467 DaVinci: EDMA: Updating default queue handling DaVinci: DM365: Fix Compilation issue due to PINMUX entry DaVinci: DM365: Add Support for new Revision of silicon DaVinci: DM355: Adding PINMUX entries for DM355 Display DaVinci: DM365: Adding entries for DM365 IRQ's DaVinci: EDMA: Adding 2 new APIs for allocating/freeing PARAMs Sanjeev Premi (1): OMAP3 clock: Fixed processing of bootarg 'mpurate' Santosh Shilimkar (3): OMAP4: sDMA: Update the request lines and new registers. ARM: OMAP4: Fix NULL pointer dereference crash. ARM: OMAP4: Bypass the clock check. Santosh Vernekar (4): [SCSI] qla2xxx: Skip RSCN processing on vha if event is global. [SCSI] qla2xxx: Mark all devices lost on loss of fc port. [SCSI] qla2xxx: Handle RSCN's per master/slave vn-port basis. [SCSI] qla2xxx: Correctly set FCF_TAPE_PRESENT flag based on scsi-device. Sarah Sharp (23): USB: xhci: Work around for chain bit in link TRBs. USB: xhci: Fix slot and endpoint context debugging. USB: xhci: Configure endpoint code refactoring. USB: xhci: Set correct max packet size for HS/FS control endpoints. USB: xhci: Support full speed devices. USB: xhci: Handle stalled control endpoints. USB: xhci: Add quirk for Fresco Logic xHCI hardware. USB: xhci: Make TRB completion code comparison readable. USB: xhci: Handle babbling endpoints correctly. USB: xhci: Don't touch xhci_td after it's freed. USB: xhci: Check URB's actual transfer buffer size. USB: xhci: Check URB_SHORT_NOT_OK before setting short packet status. USB: xhci: Set -EREMOTEIO when xHC gives bad transfer length. USB: xhci: Support interrupt transfers. USB: Fix SS endpoint companion descriptor parsing. USB: xhci: Endpoint representation refactoring. USB: xhci: Refactor input device context setup. USB: xhci: Change how xHCI commands are handled. USB: xhci: Fix command wait list handling. USB: xhci: Set route string for all devices. USB: xhci: Set multi-TT field for LS/FS devices under hubs. USB: xhci: Support USB hubs. USB: Add hub descriptor update hook for xHCI Sarveshwar Bandi (1): be2net:Creating/destroying queues regardless of netif_running() in suspend/resume path Sascha Hauer (44): MXC: pass base/irq to mxc_timer_init system.c: runtime base address mxc: remove ARCH_NR_GPIOS MXC uncompress macros: determine uart base by machine type MXC: remove board specific setup of MXC_LL_UART_[PV]ADDR i.MX serial: do not use #ifdef CONFIG_ARCH_* mxc: remove do not include directly mxc: turn to soc specific init_irq functions MXC iomux-v3: Fix defines for PAD_CTL registers mx2: remove mxc_irda platform device mx2: Codingstyle: Let the compiler count arrays mx3: Codingstyle: Let the compiler count arrays mx1: Codingstyle: Let the compiler count arrays imxfb: calculate bpix value from bits_per_pixel imxfb: use resource_size() macro imxfb: Add support for multiple displays pcm037: Add support for SJA1000 on baseboard pcm038: Add support for SJA1000 on baseboard mxc gpio: CONFIG_ARCH_* -> cpu_is_*() MXC gpio interrupt support: move register definitions to .c file MXC: pwm driver fixes MXC PLL decoding: calculate mfn value with less magic [ARM] MXC: Switch MX1 to clkdev support [ARM] MXC: remove the now unused #ifndef CONFIG_COMMON_CLKDEV ehci mxc: Fix clocks ARM: mxc: Fix i2c_board_info definitions MXC: use variable for irq controller base in entry-macro.S MXC: i.MX25 timer support iomux-v3: Allow for a runtime base address mxc pwm: add mx25 support Add i.MX25 support Freescale i.MX25 PDK (3ds) board support fix mx35 wrong clock MX2: Add SPI devices/resources MX31: add spi controller devices/resources i.MX35 clock support: Add USB clocks mx3x: Fixup USB base addresses MX31 Fix spi clock names MX21: Compilation fix for devices.c mx21ads: Fix framebuffer platform data mfd: Add Freescale MC13783 driver regulator: Add Freescale MC13783 driver spi: remove i.MX SPI driver spi: add SPI driver for most known i.MX SoCs Sascha Hlusiak (1): sit: allow ip fragmentation when using nopmtudisc to fix package loss Sathya Perla (12): be2net: get rid of be_ctrl_info struct/abstraction be2net: remove pci_func field from be_adapter struct be2net: replace some printks with dev_err()/dev_warn() be2net: some name changes for consistency be2net: delete unnecessary code from be_cmd_POST() be2net: Clear pending tx completions before destroying tx queue be2net: fix bad queue traversal in be_rx_q_clean() be2net: clear & notify residual events before destroying event queues be2net: Set mac addr in hw regardless of netif_running() be2net: refactor be_msix_(un)register() code. be2net: destroy mcc queue before tx queues be2net: fix some cmds to use mccq instead of mbox Scott Feldman (11): enic: add support for multiple BARs enic: workaround A0 erratum enic: bug fix: split TSO fragments larger than 16K into multiple descs enic: use netdev_alloc_skb enic: bug fix: protect fw call i/f with spinlock enic: bug fix: included MAC drops in rx_dropped netstat enic: provision for multiple Rx/Tx queues; prepare for RSS support enic: bug fix: enable VLAN filtering enic: changes to driver/firmware interface enic: bug fix: check for zero port MTU before posting warning enic: organize device initialization/deinit into separate functions Scott James Remnant (1): proc connector: add event for process becoming session leader Sebastian Andrzej Siewior (6): kmemcheck: depend on HAVE_ARCH_KMEMCHECK crypto: ansi_prng - Use just a BH lock crypto: ansi_prng - alloc cipher just in init crypto: mv_cesa - Add support for Orion5X crypto engine powerpc/ipic: unmask all interrupt sources Revert "kmod: fix race in usermodehelper code" Sebastian Haas (4): can: sja1000: Add support for the new 4 channel EMS CPC-PCI cards cpc-usb: Removed driver from staging tree ems_usb: Added support for EMS CPC-USB/ARM7 CAN/USB interface ems_pci: fix size of CAN controllers BAR mapping for CPC-PCI v2 Sebastian Ott (16): [SCSI] zfcp: proper use of device register [S390] cio: fix not oper handling after failed [on|off]line processing [S390] cio: increase trace level [S390] cio: ensure to hold a reference for deferred deregistration [S390] cio: fix use after free in s390 debug feature [S390] cio: fix memleak in subchannel validation [S390] cio: remove subchannel init_name [S390] cio: move final put_device to ccw_device_unregister [S390] cio: remove ccw_device init_name [S390] proper use of device register [S390] cio: merge init calls [S390] cio: introduce css_eval_scheduled [S390] cio: introduce css_settle [S390] cio: dont kfree vmalloced memory [S390] cio: idset use actual number of ssids [S390] cio: introduce consistent subchannel scanning Sekhar Nori (1): davinci: make arch_idle and arch_reset as inline functions Senthil Balasubramanian (9): ath9k: remove unnecessary STATION mode check. ath9k: stop ani when the STA gets disconnected. ath9k: race condition in SCANNING state check during ANI calibration ath9k: Handle different TX and RX streams properly. ath9k: Manipulate and report the correct RSSI ath9k: RX stucks during heavy traffic in HT40 mode. ath9k: Fix TX hang issue with Atheros chipsets ath9k: Adjust the chainmasks properly ath9k: Fix bug in chain handling Serge E. Hallyn (1): KEYS: Make /proc/keys use keyid not numread as file position [try #6] Sergei Shtylyov (1): davinci: DM646x: pass correct MUSB IRQs Sergey Matyukevich (3): ARM: 5631/1: Platform data for CF/IDE support in AT91SAM9260 ARM: 5632/1: Board-specific data for IDE support on afeb9260 at91_ide: remove headers specific for at91sam9263 Sergey Senozhatsky (3): HID: Avoid double spin_lock_init on usbhid->lock kmemleak: Printing of the objects hex dump x86: Fix uaccess_32.h typo Sergio Aguirre (1): OMAP3: 3430SDP: Fix defconfig Shan Wei (3): cfq: fix the log message after dispatched a request Staging: usb-ip: vhci_hdc:Fix the returned error value ipv4: check optlen for IP_MULTICAST_IF option Shane Huang (3): libata: add SATA PMP revision information for spec 1.2 ahci: Add AMD SB900 SATA/IDE controller device IDs ahci: kill @force_restart and refine CLO for ahci_kick_engine() Shane Wang (2): x86, intel_txt: clean up the impact on generic code, unbreak non-x86 crypto: vmac - New hash algorithm for intel_txt support Shaohua Li (8): [libata] add DMA setup FIS auto-activate feature drm/i915: Support IGD EOS memory hotplug: update zone pcp at memory online memory hotplug: exclude isolated page from pco page alloc memory hotplug: make pages from movable zone always isolatable memory hotplug: alloc page from other node in memory online memory hotplug: migrate swap cache page writeback: move inodes from one super_block together Sheng Yang (6): KVM: Downsize max support MSI-X entry to 256 KVM: No disable_irq for MSI/MSI-X interrupt on device assignment KVM: Fix apic_mmio_write return for unaligned write KVM: Discard unnecessary kvm_mmu_flush_tlb() in kvm_mmu_load() KVM: VMX: Introduce KVM_SET_IDENTITY_MAP_ADDR ioctl KVM: VMX: Fix EPT with WP bit change during paging Shine Liu (3): ASoC: UDA134X: Fix mistaken mute/unmute code ASoC: S3C24XX : Align the peroid size to the buffer size ASoC: S3C platform: Fix s3c2410_dma_started() called at improper time Shyam Sundar (1): [SCSI] qla2xxx: Pad IOCB structure for size requirements. Siddarth Gore (2): [ARM] Kirkwood: Add support for 6281-A1 mtd: m25p80: add support for 3 Macronix flash chips Simon Farnsworth (1): solos: Show Interleaving details for ADSL2 and 2+ Simon Guinot (2): [ARM] orion5x: Add LaCie NAS d2Network support [ARM] orion5x: Add LaCie NAS 2Big Network support Simon Horman (1): ipvs: Use atomic operations atomicly Singh, Vimal (1): mtd: nand_base: allow drivers to choose ECC block size Sneha Narnakaje (3): mtd: nand: add "page" parameter to all read_page/read_page_raw APIs mtd: nand: add new ECC mode - ECC_HW_OOB_FIRST mtd: nand: DaVinci: Add 4-bit ECC support for large page NAND chips Solomon Peachy (1): powerpc/40x: Add support for the ESTeem 195E (PPC405EP) SBC Sonic Zhang (4): printk: Fix "printk: Enable the use of more than one CON_BOOT (early console)" Blackfin: unify duplicated SMP checks in L2 cache kconfig Blackfin: do not try displaying the end of the stack Blackfin: increase default async timings for parallel flashes Sophie Hamilton (1): ALSA: cs46xx - Fix minimum period size Sreenivasa Honnur (9): vxge: Removed ioremap of unused bar addresses and their references vxge: Fixed memory leak by freeing memory allocated for device_config vxge: check for card status before continuing in device close vxge: Corrected Register map entry for xmac_link registers vxge: Removed the code to bounds check the mss value vxge: Fixes in isr routine vxge: Disable fcs stripping. vxge: Printing the function's configured mode of operation vxge: Version update Sridhar Samudrala (8): udpv4: Handle large incoming UDP/IPv4 packets and support software UFO. udpv6: Fix HW checksum support for outgoing UFO packets udpv6: Fix gso_size setting in ip6_ufo_append_data udpv6: Remove unused skb argument of ipv6_select_ident() udpv6: Handle large incoming UDP/IPv6 packets and support software UFO virtio-net: Allow UFO feature to be set and advertised. tun: Allow tap device to send/receive UFO packets. ethtool: device independent rx_csum and get_flags routines Sriram (1): TI Davinci EMAC: Fix in vector definition for EMAC_VERSION_2 Stanislaw Gruszka (5): itimers: Merge ITIMER_VIRT and ITIMER_PROF itimers: Fix periodic tics precision itimers: Simplify arm_timer() code a bit cputime: Optimize jiffies_to_cputime(1) iwlagn: fix panic in iwl{5000,4965}_rx_reply_tx Stanley.Miao (1): omapfb: add support for the ZOOM MDK LCD Stefan Haberland (2): [S390] dasd: optimize cpu usage in goodcase [S390] dasd: fix message naming Stefan Pledl (2): Blackfin: fix BF548 UART0 DMA IRQ translation Blackfin: bf548-ezkit: fix incorrect LCD size parameters Stefan Richter (8): firewire: ohci: fix Self ID Count register mask (safeguard against buffer overflow) firewire: core: header file cleanup firewire: core: fix race with parallel PCI device probe firewire: core: fix topology map response handler firewire: sbp2: fix status reception firewire: sbp2: remove a workaround for Momobay FX-3A ieee1394: sbp2: remove a workaround for Momobay FX-3A V4L/DVB (12583): firedtv: combine some debug logging code Stefan Roese (8): powerpc: Add AMCC 460EX/460GT Rev. B support to cputable.c powerpc/44x: Add NAND support to Canyonlands dts powerpc/40x: Update Kilauea dts to support NAND, RTC and HWMON powerpc/44x: Update Canyonlands defconfig to support NOR, NAND and RTC powerpc/40x: Update kilauea defconfig to support NAND, RTC and HWMON powerpc/44x: Update Arches dts powerpc/44x: Update Arches defconfig mtd: jedec: fix compilation problem with I28F640C3B definition Stefan Steuerwald (1): rt2x00: Implement set_tim callback for all drivers Stefan Weil (1): wl12xx: fix spelling Stefan Weinhuber (2): [S390] dasd: fail requests when device state is less then ready [S390] dasd: tolerate devices that have no feature codes Stefani Seibold (2): ctags: usability fix procfs: provide stack information for threads Steffen Klassert (7): crypto: tcrypt - Test algorithms by name crypto: cryptd - Fix uninitialized return value crypto: ahash - Use GFP_KERNEL on allocation if the request can sleep crypto: shash - Test for the algorithms import function before exporting it crypto: authenc - Convert to ahash crypto: xcbc - Fix alignment calculation of xcbc_tfm_ctx crypto: ansi_cprng - Fix module initialization Stelian Pop (1): ALSA: hda - Enable HP output with Macbook Pro 5, 5 Sten Spans (1): security: fix security_file_lock cmd argument Stephane Marguet (Stemp) (1): V4L/DVB (12690): gspca - pac7311: Webcam 06f8:3009 added. Stephen Gildea (1): fujitsu-laptop: support led-class as module Stephen Hemminger (65): vlan: allow creating vlan when real device is not up sky2: hold spinlock around phy_power_down sky2: hold RTNL when doing suspend/shutdown operations sky2: cleanup restart operations sky2: lock less transmit completion sky2: fix pause negotiation sky2: version 1.24 sky2: remove restarting workaround flag sky2: use upper/lower 32 bits sky2: transmit ring 64 bit conservation sky2: simplify list element error sky2: dynamic size transmit ring sky2: optimize transmit completion sky2: no recycling sky2: version 1.25 bonding: use compare_ether_addr pktgen: minor cleanup pktgen: change inlining pktgen: mark read-only/mostly variables pktgen: stop_device cleanup pktgen: xmit logic reorganization pktgen: cleanup clone count test pktgen: use netdev_alloc_skb pktgen: reorganize transmit loop pktgen: avoid calling gettimeofday pktgen: convert to use ktime_t pktgen: spin using hrtimer pktgen: use common idle routine pktgen: cleanup checkpatch warnings pktgen: increase version netdev: change transmit to limited range type netdev: convert pseudo-devices to netdev_tx_t convert ATM drivers to netdev_tx_t convert hamradio drivers to netdev_txreturnt_t isdn: convert to netdev_tx_t usbnet: convert to netdev_tx_t tokenring: convert to netdev_tx_t wan: convert drivers to netdev_tx_t hdlc: convert to netdev_tx_t netdev: convert pcmcia drivers to netdev_tx_t irda: convert to netdev_tx_t netdev: convert pseudo drivers to netdev_tx_t uwb: convert to netdev_tx_t tulip: convert drivers to netdev_tx_t 3com: convert drivers to netdev_tx_t intel: convert drivers to netdev_tx_t appletalk: convert drivers to netdev_tx_t wireless: convert drivers to netdev_tx_t netdev: convert bulk of drivers to netdev_tx_t sky2: fix management of driver LED net: make neigh_ops constant netdev: drivers should make ethtool_ops const net: seq_operations should be const tcp: MD5 operations should be const inet: inet_connection_sock_af_ops const net: file_operations should be const sky2: only enable Vaux if capable of wakeup wan: dlci/sdla transmit return dehacking net: force bridge module(s) to be GPL dca: module load should not be an error message sky2: transmit ring accounting sky2: Make sure both ports initialize correctly trivial: typo in kernel-parameters.txt pktgen: T_TERMINATE flag is unused pktgen: better scheduler friendliness Stephen Kitt (1): Input: joydev - validate axis/button maps before clobbering current ones Stephen Rothwell (5): net: fix multiple definitions of setup_w6692 powerpc: use consistent types in mktree intel-iommu: include linux/dmi.h to use dmi_ routines KVM: powerpc: fix some init/exit annotations nfsd: return success for non-NFS4 nfs4_state_start Stephen Smalley (1): selinux: restore optimization to selinux_file_permission Steve Dickson (1): nfsd4: nfsv4 clients should cross mountpoints Steve French (4): [CIFS] potential NULL dereference in parse_DFS_referrals() [CIFS] Fix checkpatch warnings [CIFS] Fix build break when keys support turned off [CIFS] Remove build warning Steve Glendinning (3): smsc95xx: remove EEPROM loaded check smsc95xx: add additional USB product IDs smsc95xx: fix transmission where ZLP is expected Steve Holland (3): USB: usbtmc: Fix short reads in usbtmc_read() USB: usbtmc: inhibit corruption USB: usbtmc: correct termination condition for reads. Steve Sakoman (2): omapfb: add support for the OMAP3 EVM LCD omapfb: add support for the Gumstix Overo LCD Steve Wise (8): RDMA/cxgb3: iwch_unregister_device leaks memory RDMA/cxgb3: Set the appropriate IO channel in rdma_init work requests RDMA/cxgb3: Handle port events properly RDMA/cxgb3: Don't free endpoints early RDMA/cxgb3: Wake up any waiters on peer close/abort RDMA/cxgb3: Don't ignore insert_handle() failures RDMA/cxgb3: Clean up properly on FW mismatch failures RDMA/iwcm: Reject the connection when the cm_id is destroyed Steven A. Falco (2): pcmcia: Use phys_addr_t for physical addresses spi: add spi_ppc4xx driver Steven Rostedt (67): ring-buffer: make the buffer a true circular link list ring-buffer: make lockless ring-buffer: add design document sched: Check for pushing rt tasks after all scheduling sched: Add new prio to cpupri before removing old prio perf tools: Add trace event debugfs IO handler perf tools: Add trace event debugfs stream reader perf tools: Add trace event information parser kconfig: add streamline_config.pl to scripts kconfig: make localmodconfig to run streamline_config.pl kconfig: add make localyesconfig option kconfig: streamline_config.pl do not stop with no depends kconfig: do not warn about modules built in kconfig: enable CONFIG_IKCONFIG from streamline_config.pl kconfig: add check if end exists in extract-ikconfig kconfig: have extract-ikconfig read ELF files kconfig: keep config.gz around even if CONFIG_IKCONFIG_PROC is not set kconfig: search for a config to base the local(mod|yes)config on kconfig: unset IKCONFIG_PROC and clean up nesting kconfig: test for /boot/config-uname after /proc/config.gz in localconfig kconfig: make local .config default for streamline_config kconfig: test if a .config already exists kconfig: add missing dependency of conf to localyesconfig tracing/sched: show CPU task wakes up on in trace event tracing: add comments to explain TRACE_EVENT out of protection tracing: remove legacy select of MARKERS by context switch tracing tracing: only show tracing_max_latency when latency tracer configured ring-buffer: do not reset while in a commit ring-buffer: do not swap buffers during a commit ring-buffer: remove unnecessary cpu_relax ring-buffer: fix ring_buffer_read crossing pages ring-buffer: remove ring_buffer_event_discard ring-buffer: do not count discarded events ring-buffer: disable all cpu buffers when one finds a problem tracing: print out start and stop in latency traces tracing: disable update max tracer while reading trace tracing: disable buffers and synchronize_sched before resetting tracing: remove users of tracing_reset tracing: use timestamp to determine start of latency traces tracing: make tracing_reset safe for external use tracing: pass around ring buffer instead of tracer tracing: add trace_array_printk for internal tracers to use tracing: report error in trace if we fail to swap latency buffer ring-buffer: check for swapped buffers in start of committing ring-buffer: only enable ring_buffer_swap_cpu when needed tracing: do not grab lock in wakeup latency function tracing x86/tracing: comment need for atomic nop tracing: add latency format to function_graph tracer tracing: move tgid out of generic entry and into userstack tracing: add lock depth to entries tracing: consolidate code between trace_output.c and trace_function_graph.c tracing: allow filter predicates to handle ksym symbols tracing: use macros to create internal ftrace entry ring buffer structures tracing: show details of structures within the ftrace structures tracing: use the new trace_entries.h to create format files tracing: remove trace_event_types.h tracing: add filter event logic to special, mmiotrace and boot tracers ring-buffer: typecast cmpxchg to fix PowerPC warning tracing: add static to generated TRACE_EVENT functions tracing: have TRACE_EVENT macro use __flags to not shadow parameter tracing: make testing syscall events a separate configuration tracing: optimize global_trace_clock cachelines tracing: remove notrace from __kprobes annotation vsprintf: add %ps that is the same as %pS but is like %pf tracing: switch function prints from %pf to %ps vsnprintf: remove duplicate comment of vsnprintf libfs: make simple_read_from_buffer conventional Steven Toth (33): V4L/DVB (12304): cx23885: Remove hardcoded gpio bits from the encoder driver V4L/DVB (12305): cx23885: Convert existing HVR1800 GPIO calls into new format V4L/DVB (12306): cx23885: Add support for ATSC/QAM on Hauppauge HVR-1850 V4L/DVB (12307): cx23885: Modify hardware revision detection for newer silicon V4L/DVB (12347): cx25840: Bugfix for no DVB-T on the Hauppauge HVR-1700 V4L/DVB (12922): Add the SAA7164 I2C bus identifier V4L/DVB (12923): SAA7164: Add support for the NXP SAA7164 silicon V4L/DVB (12924): SAA7164: Fix some 32/64bit compile time warnings V4L/DVB (12925): SAA7164: Adjust I/F's to the TDA10048 enabling DVB-T lock V4L/DVB (12926): SAA7164: Email address change V4L/DVB (12927): SAA7164: Remove volatiles for PCI writes (coding style violation) V4L/DVB (12928): SAA7164: Increase firmware load tolerance V4L/DVB (12929): SAA7164: OOPS avoidance during interrupt handling V4L/DVB (12930): SAA7164: Removed spurious I2C errors during driver load with DVB-T boards. V4L/DVB (12931): SAA7164: Fix the 88021 definition to work with production boards. V4L/DVB (12932): SAA7164: Fixed the missing eeprom parse on a specific board. V4L/DVB (12933): SAA7164: Fix IRQ related system hang when firmware is not found. V4L/DVB (12934): SAA7164: Fix i2c eeprom read errors during load (some boards). V4L/DVB (12935): SAA7164: Ensure we specify I/F's for all bandwidths V4L/DVB (12936): SAA7164: Added waitsecs module parameter V4L/DVB (12937): SAA7164: Cleanup a printk V4L/DVB (12938): SAA7164: Increase the firmware command timeout to avoid firmware errors. V4L/DVB (12939): SAA7164: Removed a duplicate call to address any PCI quirks. V4L/DVB (12940): SAA7164: IRQ / message timeout related change V4L/DVB (12941): SAA7164: Removed spurious debug V4L/DVB (12942): SAA7164: HVR2250 changes related to attach time tuner configuration V4L/DVB (12943): SAA7164: Add a warning about addr usage V4L/DVB (12944): SAA7164: Minor i2c assignment cleanup V4L/DVB (12945): SAA7164: Ensure the HVR-2200 second tuner is configured in slave mode. V4L/DVB (12946): SAA7164: Add support for a new HVR-2250 hardware revision V4L/DVB (12974): SAA7164: Remove the SAA7164 bus id, no longer required. V4L/DVB (12975): SAA7164: Remove the i2c client_attach/detach support, no longer required. V4L/DVB (12976): SAA7164: Removed bus registration messages from driver startup Steven Whitehouse (13): GFS2: Add online uevent to GFS2 GFS2: Add some more info to uevents GFS2: Improve error handling in inode allocation GFS2: Replace assertion with proper error handling GFS2: Add sysfs link to device GFS2: Add a document explaining GFS2's uevents GFS2: Add explanation of extended attr on-disk format GFS2: Clean up of extended attribute support GFS2: Rename eattr.[ch] as xattr.[ch] GFS2: Remove no_formal_ino generating code GFS2: Be extra careful about deallocating inodes GFS2: Remove unused sysfs file GFS2: Whitespace fixes Stoyan Gaydarov (3): powerpc: ARRAY_SIZE changes in pasemi and powermac code ARRAY_SIZE changes Staging: ARRAY_SIZE changes Stuart Menefy (11): sh: Rework irqflags tracing to fix up CONFIG_PROVE_LOCKING. sh: Remove implicit sign extension from assembler immediates sh: Read from CCN_PVR instead of ROM for delay. sh: generic_in/outs{bwl} optimizations. sh: Optimise memcpy_to/fromio for SH4 sh: Improve comments int SH4 cache flushing code sh: Add sys_cacheflush() call for SH CPUs. sh: Fix underflow in SH udelay() code. sh: Fixes some write posting issues in the interrupt handling for SH sh: Fix overzealous checking in __ioremap() sh: Fix problems with cache flushing when cache is in write-through mode Subrata Modak (2): UBIFS: suppress compilation warning UBIFS: remove unused functions Sudhakar Rajashekhara (19): davinci: EDMA: multiple CCs, channel mapping and API changes davinci: EDMA: add support for dm646x davinci: Pass proper EDMA CC interrupt number for DA830/OMAP-L137 davinci: Rearrange the da830/omap-l137 macros and functions davinci: Add base DA850/OMAP-L138 SoC support davinci: Add support for DA850/OMAP-L138 EVM board davinci: Add EMAC support for da850/omap-l138 davinci: Configure MDIO pins for EMAC davinci: Correct the number of GPIO pins for da850/omap-l138 davinci: Macro to convert GPIO signal to GPIO pin number davinci: Add platform support for da850/omap-l138 GLCD davinci: Add MMC/SD support for da850/omap-l138 davinci: Add NAND flash support for DA850/OMAP-L138 davinci: Add NOR flash support for da850/omap-l138 davinci: Handle pinmux conflict between mmc/sd and nor flash Staging: panel: Add support for TI CLCD interface driver/Makefile: Initialize "mtd" and "spi" before "net" davinci: fb: Frame Buffer driver for TI DA8xx/OMAP-L1xx davinci-fb-frame-buffer-driver-for-ti-da8xx-omap-l1xx-v4 Sujith (37): mac80211: Add a few 802.11n defines for AMPDU parameters ath9k: Trivial fix in Kconfig ath9k: Fix a sparse warning ath9k: Remove redundant HT macros ath9k: Cleanup return values ath9k: Remove a few redundant variables/macros ath9k: Add debug counters for TX ath9k: Remove unneeded assignment of protocol field ath9k: Cleanup function return types ath9k: Try to fix whitespace damage ath9k: Remove a few DEBUG mesages ath9k: Split eeprom.c into manageable pieces ath9k: Cleanup ath9k_hw_4k_set_gain() interface ath9k: Add macros for Antenna Diversity ath9k: Clean antenna configuration for 4K EEPROM chips ath9k: Cleanup TX power calculation for 4K chips ath9k: Remove local chainmask variable ath9k: Update beacon RSSI ath9k: Remove has_hw_phycounters ath9k: Remove duplicate variables ath9k: Fix bug in PCI resume ath9k: Set HW state properly ath9k: Fix TX poll cancelling ath9k: Fix chainmask selection during scanning ath9k: Reduce the frequency of PA offset calibration ath9k: Fix bugs in programming registers during PA CAL ath9k: Handle PA cal usage properly ath9k: Update INITVALs for AR9285 ath9k: Wrap DMA dump function with PS wakeup/restore ath9k: Fix RX Filter handling for BAR ath9k: Fix channelFlags for 2GHZ ath9k: Fix bug in ANI channel handling ath9k: Fix bug in ANI channel handling ath9k: Restore TSF after RESET ath9k: Fix chip wakeup issue ath9k: Fix regression in PA calibration ath9k: Fix RFKILL bugs Sukadev Bhattiprolu (2): fork(): disable CLONE_PARENT for init pidns: deny CLONE_PARENT|CLONE_NEWPID combination Sunil Mushran (1): ocfs2: __ocfs2_abort() should not enable panic for local mounts Suresh Jayaraman (1): PATCH] cifs: fix broken mounts when a SSH tunnel is used (try #4) Suresh Siddha (4): generic-ipi: Allow cpus not yet online to call smp_call_function with irqs disabled x86, pat/mtrr: Rendezvous all the cpus for MTRR/PAT init x86, pat: don't use rb-tree based lookup in reserve_memtype() x86, apic: Use logical flat on intel with <= 8 logical cpus Suzuki Poulose (1): fix compat_sys_utimensat() Swen Schillig (12): [SCSI] zfcp: invalid usage after free of port resources [SCSI] zfcp: fix layering oddities between zfcp_fsf and zfcp_qdio [SCSI] zfcp: Replace fsf_req wait_queue with completion [SCSI] zfcp: Improve request allocation through mempools [SCSI] zfcp: Remove the useless ZFCP_REQ_AUTO_CLEANUP flag [SCSI] zfcp: Move workqueue to adapter struct [SCSI] zfcp: Separate qdio attributes from zfcp_fsf_req [SCSI] zfcp: Move qdio related data out of zfcp_adapter [SCSI] zfcp: Update dbf calls [SCSI] zfcp: introduce _setup, _destroy for qdio and FC [SCSI] zfcp: Apply common naming conventions to zfcp_fc [SCSI] zfcp: resolve false usage of dd_data in fc_rport Syed Rafiuddin (4): ARM: OMAP4: Add McBSP support ARM: OMAP4: Add UART4 support ARM: OMAP4: Update the GPIO support spi: McSPI support for OMAP4 Tai-hwa Liang (1): Input: add new driver for Sentelic Finger Sensing Pad Takashi Iwai (160): ALSA: Add new TLV types for dBwith min/max ALSA: usb-audio - Use the new TLV_DB_MINMAX type ALSA: usb-audio - Correct bogus volume dB information ALSA: hda - Don't call snd_hda_codec_configure in snd_hda_codec_new() ALSA: hda - Add patch module option ALSA: hda - Add description about patch loading ALSA: hda - More description about patch module option Merge branch 'for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc ALSA: hda - Check "beep" hint Merge branch 'fix/hda-samsung-p50' into topic/hda Merge branch 'fix/hda' into topic/hda Merge branch 'topic/hda-patch' into topic/hda ALSA: hda - Merge patch_alc882() and patch_alc883() ALSA: hda - Fix input pinctl for ALC882 auto mode ALSA: hda - Allow FLOAT PCM format Merge branch 'fix/hda' into topic/hda ALSA: hda - Add Cirrus Logic CS420x support ALSA: ice1724 - Fix section mismatch ALSA: hda - Add missing mixer amp initialization for ALC882 ALSA: hda - Manually expand alc882_init_verbs Merge branch 'fix/hda' into topic/hda ALSA: hda - Don't override maxbps for FLOAT sharing with linear formats Merge branch 'fix/hda' into topic/hda ALSA: hda - Fix cirrus codec parsing ALSA: hda - Force to initialize input mixer setup for CS420x ALSA: hda - Add CS420x-specific coef setup ALSA: info - Use krealloc() ALSA: hda - Fix double creation of SPDIF input controls ALSA: hda - Add quirk for MacBook Pro 5,5 with CS4206 ALSA: hda - Add GPIO setup for MacBook pro 5,5 with CS420x ALSA: hda - Fix the speaker volume control name ALSA: hda - Fix compile warnings in patch_cirrus.c ALSA: Fix SG-buffer DMA with non-coherent architectures ALSA: hda - don't build digital output controls if not exist Merge branch 'fix/hda' into topic/hda ALSA: hda - Fix the merge error ALSA: hda - Check codec errors in snd_hda_get_connections() ASoC: Kill direct accesses to driver_data ALSA: hda - Fix the previous sanity check in make_codec_cmd() ALSA: hda - Fix ALC268 parser for mono speaker Merge branch 'fix/hda' into topic/hda ALSA: ctxfi - Native timer support for emu20k2 Merge branch 'fix/ctxfi' into topic/ctxfi ALSA: hda - Reduce click noise at power-saving ALSA: hda - Fix ALC861 auto-mode parser Merge branch 'fix/ctxfi' into topic/ctxfi ALSA: ctxfi - Simple code clean up ALSA: hda - Add description of new models for ALC889/889A Merge branch 'fix/hda' into topic/hda ALSA: hda - Introduce get_wcaps_type() macro ALSA: hda - Add exception for volume-knob in snd_hda_get_connections() ALSA: hda - Reword information messages for BIOS auto-probing mode ALSA: hda - Don't create unneeded digital input source for IDT 92HD71x ALSA: hda - Create Capture controls dynamically ALSA: hda - Don't create analog mixer for IDT92HD71bxx ALSA: hda - Avoid overwrite of jack events with STAC/IDT ALSA: hda - Support auto-mic switching with IDT/STAC codec ALSA: hda - Remove static connection in IDT 92HD71bxx ALSA: hda - Add missing DMUX initialization for auto-mic with STAC/IDT ALSA: hda - No analog mix input source as default for IDT92HD71bxx ALSA: hda - Fix typos of Capture controls. ALSA: hda - Integrate Digital Input Source to Input Source ALSA: hda - Add line-out jack detection on IDT/STAC codecs Merge branch 'fix/hda' into topic/hda Merge branch 'topic/hda-cirrus' into topic/hda Merge branch 'fix/hda' into topic/hda ALSA: hda - Fix line-out jack detection ALSA: hda - Fix line-out jack handling with STAC/IDT codec ALSA: hda - Add quirks for some HP laptops ALSA: hda - Fix Oops due to STAC/IDT auto-mic changes Merge branch 'fix/hda' into topic/hda ALSA: hda - Add auto-mic support for Realtek codecs ALSA: hda - Use only one capture stream for auto-mic ALSA: usb-audio - Fix types taken in min() Merge branch 'fix/hda' into topic/hda ALSA: hda - Check connectivity for auto-mic of Realtek codecs ALSA: hda - Add a white-list for MSI option ALSA: hda - Add setup hook to ALC preset struct ALSA: hda - Clean up init and setup hooks for Realtek codecs ALSA: hda - Enable line-out detection only with speakers Merge branch 'topic/hda-dmic-fix' into topic/hda ALSA: hda - Fix / clean up IDT92HD83xxx codec parser ALSA: hda - Add missing num_adc_nids definition for IDT92HD8xxx ALSA: hda - Fix invalid capture mixers with some ALC268 models Merge branch 'fix/hda' into topic/hda Merge branch 'fix/hda' into topic/hda ALSA: pcm - Fix drain behavior in non-blocking mode ASoC: add missing inclusion of debugfs.h ASoC: Remove unneeded inclusion of linux/regulator/consumer.h ALSA: hda - Reuse ALC268 parser for ALC269 ALSA: hda - Generalize input pin parsing in patch_realtek.c ALSA: hda - Improve auto-cfg mixer name for ALC880 ALSA: hda - Improve auto-cfg mixer name for ALC260 ALSA: hda - Improve auto-cfg mixer name for ALC262 ALSA: hda - Improve auto-cfg mixer name for ALC861-VD ALSA: hda - Improve auto-cfg mixer name for ALC662 ALSA: hda - Add / fix model entries for HD-audio driver ALSA: core - strip too long file names in snd_print*() ALSA: hda - Add more quirk for HP laptops with AD1984A ALSA: Add debug module option ALSA: pcm - Increase protocol version ALSA: Fixed a typo of printk() ALSA: hda - Create "Digital Mic Capture Volume" correctly for IDT codecs ALSA: hda - Fix ALC268/ALC269 headphone pin routing Merge branch 'fix/hda' into topic/hda ALSA: hda - Add support of docking auto-mute/mic for AD1984A laptop model ALSA: hda - Add missing GPIO initialization for AD1984A laptop model ALSA: hda - Add another entry for Nvidia HDMI device ALSA: hda - Unmute docking line-out as default with AD1984A codec ALSA: hda - Fix obsolete CONFIG_SND_DEBUG_DETECT ALSA: hda - Fix input source selection of IDT92HD73xx ALSA: hda - Remove dead codes from patch_sigmatel.c ALSA: hda - Add support of Alienware M17x laptop ALSA: dummy - Support high-res timer mode ALSA: dummy - Better jiffies handling ALSA: dummy - Add more description ALSA: dummy - Fix the timer calculation in systimer mode ALSA: dummy - Fake buffer allocations ALSA: Remove struct snd_monitor_file from public sound/core.h ALSA: Remove unneeded ifdef from sound/core.h ALSA: hda - Use auto model for HP laptops with ALC268 codec ALSA: Re-export snd_pcm_format_name() function ALSA: Add const prefix to proc helper functions ALSA: dummy - Add debug proc file ALSA: dummy - Increase MAX_PCM_SUBSTREAMS to 128 Merge branch 'topic/ali5451-cleanup' into for-linus Merge branch 'topic/asoc' into for-linus Merge branch 'topic/azt3328' into for-linus Merge branch 'topic/cleanup' into for-linus Merge branch 'topic/cmi8330' into for-linus Merge branch 'topic/cs46xx' into for-linus Merge branch 'topic/ctl-add-remove-fixes' into for-linus Merge branch 'topic/ctxfi' into for-linus Merge branch 'topic/dma-sgbuf' into for-linus Merge branch 'topic/dummy' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/hdsp' into for-linus Merge branch 'topic/ice1724-pm' into for-linus Merge branch 'topic/midi' into for-linus Merge branch 'topic/misc' into for-linus Merge branch 'topic/oss' into for-linus Merge branch 'topic/oxygen' into for-linus Merge branch 'topic/pcm-drain-nonblock' into for-linus Merge branch 'topic/pcm-estrpipe-in-pm' into for-linus Merge branch 'topic/snd-printk' into for-linus Merge branch 'topic/soundcore-preclaim' into for-linus Merge branch 'topic/tlv-minmax' into for-linus Merge branch 'topic/usb-audio' into for-linus Merge branch 'topic/ymfpci' into for-linus ALSA: hda - Add missing model=auto entry for ALC269 ALSA: hda - Set default GPIO for STAC/IDT codecs ALSA: hda - Set default GPIO for IDT92HD71bxx ALSA: hda - Fix HP/line-out initialization with IDT/STAC codecs ALSA: hda - Add support for HP dv6 ALSA: hda - Fix IDT92HD83* codec setup ALSA: hda - Fix Dell S14 pin setup ALSA: hda - Fix MSI GX620 mixer Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus ALSA: pcm - Simplify snd_pcm_drain() implementation Tao Ma (42): ocfs2: Define refcount tree structure. ocfs2: Add metaecc for ocfs2_refcount_block. ocfs2: Add ocfs2_read_refcount_block. ocfs2: Abstract caching info checkpoint. ocfs2: Add new refcount tree lock resource in dlmglue. ocfs2: Add caching info for refcount tree. ocfs2: Add refcount tree lock mechanism. ocfs2: Basic tree root operation. ocfs2: Wrap ocfs2_extent_contig in ocfs2_extent_tree. ocfs2: Abstract extent split process. ocfs2: Add refcount b-tree as a new extent tree. ocfs2: move tree path functions to alloc.h. ocfs2: Add support for incrementing refcount in the tree. ocfs2: Add support of decrementing refcount for delete. ocfs2: Add functions for extents refcounted. ocfs2: Decrement refcount when truncating refcounted extents. ocfs2: Add CoW support. ocfs2: CoW refcount tree improvement. ocfs2: Integrate CoW in file write. ocfs2: CoW a reflinked cluster when it is truncated. ocfs2: Add normal functions for reflink a normal file's extents. ocfs2: handle file attributes issue for reflink. ocfs2: Return extent flags for xattr value tree. ocfs2: Abstract duplicate clusters process in CoW. ocfs2: Add CoW support for xattr. ocfs2: Remove inode from ocfs2_xattr_bucket_get_name_value. ocfs2: Abstract the creation of xattr block. ocfs2: Abstract ocfs2 xattr tree extend rec iteration process. ocfs2: Attach xattr clusters to refcount tree. ocfs2: Call refcount tree remove process properly. ocfs2: Create an xattr indexed block if needed. ocfs2: Add reflink support for xattr. ocfs2: Modify removing xattr process for refcount. ocfs2: Don't merge in 1st refcount ops of reflink. ocfs2: Make transaction extend more efficient. ocfs2: Use proper parameter for some inode operation. ocfs2: Create reflinked file in orphan dir. ocfs2: Add preserve to reflink. ocfs2: Implement ocfs2_reflink. ocfs2: Enable refcount tree support. ocfs2: Add ioctl for reflink. ocfs2: Use buffer IO if we are appending a file. Tejun Heo (68): percpu: use dynamic percpu allocator as the default percpu allocator linker script: throw away .discard section percpu: cleanup percpu array definitions percpu: use DEFINE_PER_CPU_SHARED_ALIGNED() percpu: clean up percpu variable definitions percpu: implement optional weak percpu definitions alpha: kill unnecessary __used attribute in PER_CPU_ATTRIBUTES alpha: switch to dynamic percpu allocator s390: switch to dynamic percpu allocator sparc64: fix build breakage introduced by percpu-convert-most patchset percpu: use __weak only in the definition of weak percpu variables Merge branch 'master' into for-next x86: make pcpu_chunk_addr_search() matching stricter percpu: drop @unit_size from embed first chunk allocator x86,percpu: generalize 4k first chunk allocator percpu: make 4k first chunk allocator map memory x86,percpu: generalize lpage first chunk allocator percpu: simplify pcpu_setup_first_chunk() percpu: reorder a few functions in mm/percpu.c percpu: drop pcpu_chunk->page[] percpu: allow non-linear / sparse cpu -> unit mapping percpu: teach large page allocator about NUMA linker script: unify usage of discard definition percpu: add dummy pcpu_lpage_remapped() for !CONFIG_SMP x86, percpu: Fix DECLARE/DEFINE_PER_CPU_PAGE_ALIGNED() x86, percpu: Collect hot percpu variables into one cacheline chrdev: implement __[un]register_chrdev() sound: request char-major-* module aliases for missing OSS devices sound: make OSS device number claiming optional and schedule its removal Merge branch 'percpu-for-linus' into percpu-for-next percpu: fix pcpu_reclaim() locking percpu: improve boot messages percpu: rename 4k first chunk allocator to page percpu: build first chunk allocators selectively percpu: generalize first chunk allocator selection percpu: drop @static_size from first chunk allocators percpu: make @dyn_size mandatory for pcpu_setup_first_chunk() percpu: add @align to pcpu_fc_alloc_fn_t percpu: move pcpu_lpage_build_unit_map() and pcpul_lpage_dump_cfg() upward percpu: introduce pcpu_alloc_info and pcpu_group_info percpu: add pcpu_unit_offsets[] percpu: add chunk->base_addr vmalloc: separate out insert_vmalloc_vm() vmalloc: implement pcpu_get_vm_areas() percpu: use group information to allocate vmap areas sparsely percpu: update embedding first chunk allocator to handle sparse units x86,percpu: use embedding for 64bit NUMA and page for 32bit NUMA percpu: kill lpage first chunk allocator sparc64: use embedding percpu first chunk allocator powerpc64: convert to dynamic percpu allocator libata: clear eh_info on reset completion libata: remove spindown skipping and warning sata_sis: convert to slave_link libata: unbreak TPM filtering by reorganizing ata_scsi_pass_thru() dmi: fix date handling in dmi_get_year() dmi: extend dmi_get_year() to dmi_get_date() ahci: make ahci_asus_m2a_vm_32bit_only() quirk more generic ahci: Gigabyte GA-MA69VM-S2 can't do 64bit DMA libata: fix off-by-one error in ata_tf_read_block() PCI: apply nv_msi_ht_cap_quirk on resume too PCI: separate out pci_add_dynid() PCI: pci-stub: add pci_stub.ids parameter block: use the same failfast bits for bio and request block: implement mixed merge of different failfast requests scsi,block: update SCSI to handle mixed merge failures Merge branch 'for-next' into for-linus ahci: restore pci_intx() handling libata: fix spurious WARN_ON_ONCE() on port freeze Tero Kristo (4): OMAP: PM debug: Add PRCM register dump support OMAP: PM: Added suspend target state control to debugfs for OMAP3 OMAP: SDRC: Add several new register definitions spi: McSPI saves CHCONFx too Tetsuo Handa (3): TOMOYO: Move tomoyo_delete_domain(). TOMOYO: Remove next_domain from tomoyo_find_next_domain(). seq_file: return a negative error code when seq_path_root() fails. Thadeu Lima de Souza Cascardo (5): trivial: fix typo in ieee802154 documentation and add it to index trivial: remove duplicate "different" from comment leds: fix coding style in worker thread code for ledtrig-gpio. PM: Fix typo in label name s/Platofrm_finish/Platform_finish/ trivial: fix typo s/ketymap/keymap/ in comment Theodore Kilgore (2): V4L/DVB (12459): gspca - jeilinj: New subdriver for Jeilin chip. V4L/DVB (12618): gspca: mr97310a add support for CIF and more VGA camera's Theodore Ts'o (22): ext4: Avoid null pointer dereference when decoding EROFS w/o a journal ext4: Add configurable run-time mballoc debugging ext4: Display the mballoc flags in mb_history in hex instead of decimal ext4: Fix bugs in mballoc's stream allocation mode ext4: Avoid group preallocation for closed files ext4: fix extent sanity checking code with AGGRESSIVE_TEST ext4: Limit number of links that can be created by ext4_link() ext4: Fix spelling typo in the trace format for trace_ext4_da_writepages() ext4: Restore wbc->range_start in ext4_da_writepages() ext4: Add new tracepoint: trace_ext4_da_write_pages() ext4: fix tracepoint format string warnings ext4: Remove journal_checksum mount option and enable it by default ext4: print more sysadmin-friendly message in check_block_validity() ext4: Use bforget() in no journal mode for ext4_journal_{forget,revoke}() ext4: Assure that metadata blocks are written during fsync in no journal mode ext4: Don't update superblock write time when filesystem is read-only ext4: Fix async commit mode to be safe by using a barrier ext4: Fix initalization of s_flex_groups ext4: Fix include/trace/events/ext4.h to work with Systemtap ext4: store EXT4_EXT_MIGRATE in i_state instead of i_flags ext4: Add a tracepoint for ext4_alloc_da_blocks() ext4: Fix the alloc on close after a truncate hueristic Thierry Reding (2): backlight: Add support for the Avionic Design Xanthos backlight device. [WATCHDOG] Add support for the Avionic Design Xanthos watchdog timer. Thomas Abraham (3): ARM: S3C6410: use correct divider_shift in setrate_clksrc() ARM: S3C6410: update clk->parent when setting clock source ARM: S3C64XX: Fix divider value calculation in s3c64xx_roundrate_clksrc Thomas Gleixner (58): genirq: Remove obsolete defines and typedefs timekeeping: Move ktime_get() functions to timekeeping.c sched: Fix return value of migration_init() Merge branch 'linus' into timers/core clocksource: Call clocksource_change_rating() outside of watchdog_lock genirq: Add oneshot support genirq: Add buslock support genirq: Support nested threaded irq handling clocksource: Protect the watchdog rating changes with clocksource_mutex x86: Do not unregister PIT clocksource on PIT oneshot setup/shutdown Bluetooth: Convert hdev->req_lock to a mutex genirq: Do not mask oneshot edge type interrupts init: Move sched_clock_init after late_time_init Merge branch 'x86/paravirt' into x86/cleanups Merge branch 'sched/clock' into x86/cleanups x86: Add x86_init infrastructure x86: Add probe_roms to x86_init x86: Add request_standard_resources to x86_init x86: Add reserve_ebda_region to x86_init_ops x86: Move memory_setup to x86_init_ops x86: Sanitize smp_record and move it to x86_init_ops x86: Move ioapic_ids_setup to x86_init_ops x86: Move mpc_apic_id to x86_init_ops x86: Move smp_read_mpc_oem to x86_init_ops. x86: Move mpc_oem_pci_bus to x86_init_ops x86: Move oem_bus_info to x86_init_ops clocksource: Resolve cpu hotplug dead lock with TSC unstable Merge branch 'timers/posixtimers' into timers/tracing x86: Move get/find_smp_config to x86_init_ops x86: Move pre_intr_init to x86_init_ops x86: Move irq_init to x86_init_ops x86: Move traps_init to x86_init_ops x86: Replace ARCH_SETUP by a proper x86_init_ops x86: Move paravirt banner printout to x86_init_ops x86: Move paravirt pagetable_setup to x86_init_ops x86: Move xen_post_allocator_init into xen_pagetable_setup_done x86: Move percpu clockevents setup to x86_init_ops x86: Add timer_init to x86_init_ops x86: Remove do_timer hook x86: Prepare unification of time_32/64.c x86: Simplify timer_ack magic in time_32.c x86: Remove mca bus ifdef from timer interrupt x86: Make timer setup and global variables the same in time_32/64.c x86: Move calibrate_cpu to tsc.c x86: time_32/64.c unify profile_pc x86: Replace the now identical time_32/64.c by time.c x86: Move tsc_calibration to x86_init_ops x86: Move tsc_init to late_time_init x86: Add early platform detection x86: Add Moorestown early detection x86: Distangle ioapic and i8259 x86: apic namespace cleanup clocksource: clocksource_select must be called with mutex locked clocksource: Delay clocksource down rating to late boot time: Prevent 32 bit overflow with set_normalized_timespec() sfi: Remove unused code x86: platform: Fix section annotations fs: Make unload_nls() NULL pointer safe Thomas Hellstrom (6): drm: Enable drm drivers to add drm sysfs devices. drm/ttm: Add a virtual ttm sysfs device. drm/ttm: Memory accounting rework. ttm: Make parts of a struct ttm_bo_device global. drm/ttm: Fixes for "Make parts of a struct ttm_bo_device global" drm/ttm: Fixes for "Memory accounting rework." Thomas Ilnseher (1): b43: Add LP PHY Analog Switch Support Thomas Liu (6): selinux: clean up avc node cache when disabling selinux Move variable function in lsm_audit.h into SMACK private space security: Make lsm_priv union in lsm_audit.h anonymous security: Wrap SMACK and SELINUX audit data structs in ifdefs SELinux: Convert avc_audit to use lsm_audit.h SELinux: Convert avc_audit to use lsm_audit.h Thomas Renninger (3): [CPUFREQ] Bail out of cpufreq_add_dev if the link for a managed CPU got created [CPUFREQ] Introduce global, not per core: /sys/devices/system/cpu/cpufreq [CPUFREQ] ondemand - Use global sysfs dir for tuning settings Tiago Vignatti (1): PCI/VGA: add VGA arbitration documentation Tiejun Chen (2): powerpc/405ex: provide necessary fixup function to support cuImage powerpc/405ex: support cuImage via included dtb Tilman Schmidt (1): tty: gigaset: really fix chars_in_buffer Tim Abbott (33): sh: Clean up linker script using new linker script macros. sh: Clean up linker script using new BSS_SECTION macro. [S390] Use macros for .data.page_aligned. [IA64] Use .ref.text, not .text.init for start_ap. m68knommu: Make PAGE_SIZE available to assembly files. x86: convert compressed loader to use __HEAD and HEAD_TEXT macros. x86: convert to use __HEAD and HEAD_TEXT macros. x86: Use section .data.page_aligned for the idt_table. x86: Cleanup linker script using new linker script macros. kbuild: Don't define ALIGN and ENTRY when preprocessing linker scripts. Use macros for .bss.page_aligned section. Use macros for .data.page_aligned section. microblaze: Cleanup linker script using new linker script macros. m32r: make PAGE_SIZE available to assembly. m32r: Define THREAD_SIZE only once. m32r: Move GET_THREAD_INFO definition out of asm/thread_info.h. m32r: Remove unused .altinstructions and .exit.* code from linker script. m32r: Move the spi_stack_top and spu_stack_top into .init.data section. m32r: Cleanup linker script using new linker script macros. score: Make PAGE_SIZE available to assembly. score: Make THREAD_SIZE available to assembly files. score: Cleanup linker script using new macros. powerpc: Cleanup linker script using new linker script macros. Optimize the ordering of sections in RW_DATA_SECTION. parisc: Clean up linker script using new linker script macros. parisc: Remove useless altinstructions code copied from x86. xtensa: Cleanup linker script using new linker script macros. um: Clean up linker script using standard macros. h8300: Cleanup linker script using new linker script macros. mn10300: Clean up linker script using higher-level macros. blackfin: Cleanup linker script using new linker script macros. powerpc: Cleanup linker script using new linker script macros. alpha: use .data.init_task instead of .data.init_thread. Tim Blechmann (3): ALSA: hdsp - allow proc reporting with disconnected io box ALSA: lx6464es - cleanup of rmh message bus function ALSA: lx6464es - remove unused struct member Tim Small (1): USb: Break support for WinChipHead CH341 340 USB->Serial "chip" Timo Kokkonen (1): OMAP3: rx51_defconfig: add twl4030 to rx51 default configuration Timofei Bondarenko (1): mtd/maps: uclinux: fix building when partition support is disabled Tobias Doerffel (1): x86: add specific support for Intel Atom architecture Tobias Klauser (8): net: Rename lookup_neigh_params function netfilter: ebtables: Use %pM conversion specifier ext4: Declare seq_operations and file_operations structures as const RDMA/amso1100: Use %pM conversion specifier x86: Make memtype_seq_ops const niu: Use resource_size instead of private function dm9000: Remove unnecessary memset of netdev private data dm9000: Use resource_size instead of private macro Tobias Lorenz (4): V4L/DVB (12142): radio-si470x: Add suport for RDS endpoint interrupt mode V4L/DVB (12143): radio-si470x: cleanups V4L/DVB (12144): radio-si470x: removed v4l2_queryctrl in favor of v4l2_ctrl_query_fill V4L/DVB (12417): I2C cleanups and version checks Tom Picard (1): ioat3: ioat3.2 pci ids for Jasper Forest Tom Zanussi (2): tracing/filters: Don't use pred on alloc failure tracing/filters: add filter Documentation Tomas Kovacik (1): pcmcia: disable prefetch/burst for OZ6933 Tomas Winkler (4): iwlwifi: drop sw_crypto from hw_params. iwlwifi: unify iwl_setup_rxon_timing imwc3200: move iwmc3200 SDIO ids to sdio_ids.h rfkill: add the GPS radio type Tomáš ÄŚech (1): [ARM] pxa/treo680: move LCD power GPIO to proper place Tony Breeds (1): powerpc: Check for unsupported relocs when using CONFIG_RELOCATABLE Tony Lindgren (5): OMAP: Remove OMAP_IO_ADDRESS, use OMAP1_IO_ADDRESS and OMAP2_IO_ADDRESS instead OMAP: Rename OMAP_MPUIO_BASE to OMAP1_MPUIO_BASE OMAP: Remove ifdefs for io.h Merge branch 'pm-upstream/debug' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into for-next Merge branch '2_6_32_for_next' of git://git.pwsan.com/linux-2.6 into for-next Tony Luck (1): [IA64] implement ticket locks for Itanium Trent Piepho (7): V4L/DVB (12287): dvb-pll: Add Samsung TDTC9251DH0 DVB-T NIM V4L/DVB (12288): dvb-pll: Add support for Samsung TBDU18132 DVB-S NIM V4L/DVB (12289): dvb-pll: Add support for Samsung TBMU24112 DVB-S NIM V4L/DVB (12290): dvb-pll: Add support for Alps TDEE4 DVB-C NIM V4L/DVB (12292): b2c2: Use dvb-pll for AirStar DVB-T's tuner V4L/DVB (12293): b2c2: Use dvb-pll for Skystar2 rev 2.3 and rev 2.6 V4L/DVB (12294): b2c2: Use dvb-pll for Cablestar2 Trevor Keith (3): kbuild: add static to prototypes trivial: kbuild: remove extraneous blank line after declaration of usage() Fix all -Wmissing-prototypes warnings in x86 defconfig Trond Myklebust (39): NFSv4: Don't loop forever on state recovery failure... NFSv4: Add 'server capability' flags for NFSv4 recommended attributes NFSv4: Don't do idmapper upcalls for asynchronous RPC calls SUNRPC: convert some sysctls into module parameters NFSv4: Clean up the nfs.callback_tcpport option SUNRPC: Constify rpc_pipe_ops... SUNRPC: Allow rpc_pipefs_ops to have null values for upcall and downcall SUNRPC: Clean up rpc_pipefs lookup code... SUNRPC: Clean up file creation code in rpc_pipefs SUNRPC: Clean up rpc_unlink() SUNRPC: Clean up rpc_lookup_create SUNRPC: Clean up rpc_populate/depopulate SUNRPC: rpc_pipefs cleanup SUNRPC: Rename rpc_mkdir to rpc_create_client_dir() SUNRPC: Clean up rpc_create_client_dir() SUNRPC: Replace rpc_client->cl_dentry and cl_mnt, with a cl_path SUNRPC: clean up rpc_setup_pipedir() SUNRPC: One more clean up for rpc_create_client_dir() NFSD: Clean up the idmapper warning... SUNRPC: Ensure we initialise the cache_detail before creating procfs files SUNRPC: Remove the global temporary write buffer in net/sunrpc/cache.c SUNRPC: Allow the cache_detail to specify alternative upcall mechanisms SUNRPC: Move procfs-specific stuff out of the generic sunrpc cache code SUNRPC: Add an rpc_pipefs front end for the sunrpc cache code NFS: Add a ->migratepage() aop for NFS Merge branch 'patches_cel-for-2.6.32' into nfs-for-2.6.32 Merge branch 'sunrpc_cache-for-2.6.32' into nfs-for-2.6.32 Merge branch 'nfsv4_xdr_cleanups-for-2.6.32' into nfs-for-2.6.32 SUNRPC: Fix a typo in cache_pipefs_files NFS: Add a dns resolver for use with NFSv4 referrals and migration NFS: Use the DNS resolver in the mount code. SUNRPC: cache must take a reference to the cache detail's module on open() SUNRPC: Ensure that sunrpc gets initialised before nfs, lockd, etc... NFSD: Fix a bug in the NFSv4 'supported attrs' mandatory attribute NFSd: Fix filehandle leak in exp_pseudoroot() and nfsd4_path() NFSv4: Disallow 'mount -t nfs4 -overs=2' and 'mount -t nfs4 -overs=3' Merge branch 'nfs-for-2.6.32' SUNRPC: Defer the auth_gss upcall when the RPC call is asynchronous NFS: Get rid of the NFS_MOUNT_VER3 and NFS_MOUNT_TCP flags Troy Heber (1): pci/dmar: correct off-by-one error in dmar_fault() Troy Kisky (11): ASoC: DaVinci: i2s, remove MOD_REG_BIT macro ASoC: DaVinci: i2s toggle clock to complete reset ASoc: DaVinci: i2s, minor cleanup ASoC: DaVinci: i2s cleanup ASoC: DaVinci: i2s, only start sample generator if needed ASoC: DaVinci: i2s, minor cleanup of davinci_i2s_startup ASoC: DaVinci: i2s, fix mcbsp_word_length update ASoC: DaVinci: i2s, add davinci_i2s_prepare and shutdown ASoC: DaVinci: pcm, don't play 1st sound period twice ASoC: DaVinci: i2s: don't bounce through rtd to get dai ASoC: DaVinci: pcm, constrain buffer size to multiple of period Tushar Gohad (1): IPv6/addrconf: Fix minor addrlabel thinko Tyler Hicks (6): eCryptfs: Handle unrecognized tag 3 cipher codes eCryptfs: Check for O_RDONLY lower inodes when opening lower files eCryptfs: Filename encryption only supports password auth tokens eCryptfs: Validate global auth tok keys eCryptfs: Propagate vfs_read and vfs_write return codes eCryptfs: Prevent lower dentry from going negative during unlink Ulrich Drepper (1): perf tools: Avoid unnecessary work in directory lookups Ursula Braun (2): qeth: display "undefined" value of sysfs-attribute "layer2" iucv: suspend/resume error msg for left over pathes Uwe Bugla (1): V4L/DVB (12902): Documentation: synchronize documentation for Technisat cards Uwe Kleine-Koenig (3): trivial: fix typos "man[ae]g?ment" -> "management" trivial: Fix duplicated word "options" in comment trivial: fix typo in aic7xxx comment Uwe Kleine-König (20): [ARM] 5613/1: implement CALLER_ADDRESSx net: move sgiseeq's probe function to .devinit.text net: move jazzsonic's probe function to .devinit.text net: move meth's probe function to .devinit.text net: move sb1250-mac's probe function to .devinit.text net: move xtsonic's probe function to .devinit.text net: move macsonic's probe function to .devinit.text ASoC: s3c2443-ac97: convert semaphore to mutex netx: Use get_irqnr_preamble to initialize base register [ARM] support tracing when using newer compilers Complete irq tracing support for ARM Use kernel/Kconfig.preempt for ARM [ARM] let arch/arm/Kconfig source drivers/Kconfig fec: fix recursive locking of mii_lock fec: don't enable irqs in hard irq context backlight: move hp680-bl's probe function to .devinit.text leds: move leds-clevo-mail's probe function to .devinit.text Staging: fix typos "man[ae]g?ment" -> "management" mtd: nand: register orion_nand using platform_driver_probe() mmc: register mmci-omap-hs using platform_driver_probe Valentin Longchamp (7): mx31: added one more pin definition mx31moboard: added usb xcvr reset for mx31moboard mx31moboard: move usb otg support back to moboard common file mx31: define various GPIOs used on mx31moboard mx31moboard: support for the 4 leds used on mx31moboard mx31moboard: initialize 4 input gpios for mx31moboard mx31moboard: two GPIOS are used to reset other microcontrolers on the robot Vasanthakumar Thiagarajan (36): ath9k: Nuke unneccesary helper function to see if aggr is active ath9k: Remove unnecessary count for addba attempt ath9k: downgrade ASSERT() in ath_clone_txbuf() ath9k: Make sure we configure a non-zero beacon interval ath9k: Remove dead code in rate control ath9k: Remove unused members from rate control structure ath9k: Use probe interval instead of rssi reduce interval ath9k: Nuke struct ath_tx_ratectrl_state ath9k: Remove bogus assert in ath_clone_txbuf() ath9k: Handle tx desc shortage more appropriately ath9k: Remove pointless ath9k_ps_restore() in ath_detach() ath9k: Update rate control for 11NA HT40 mode ath9k: Maintain monotonicity of PER while going across different phy ath9k: Remove unused ath9k_hw_intrget() ath9k: Fix bug in retrieving average beacon rssi ath9k: Nuke struct ath9k_node_stats ath9k: Split ath9k_hw_btcoex_enable() into two logical pieces ath9k: Move btcoex stuff from hw.[ch] to new btcoex.[ch] ath9k: Configure btcoex register during every reset ath9k: Move btcoex related data to a separate struct ath9k: Determine btcoex scheme type based on chip version ath9k: Remove hw capability bit meant for btcoex ath9k: Add infrastructure for generic hw timers ath9k: Add Bluetooth Coexistence 3-wire support ath9k: Do an AHB reset before doing RTC reset ath9k: Move generic hw timer intr handler to bottom-half ath9k: Call spin_lock_bh() on btcoex_lock ath9k: Disable ASPM when btcoex is active ath9k: Remove unnecessary casting to u8 in pci_read_config_byte() call ath9k: Store subsystem id in struct hw_version ath9k: Enable btcoex based on the subsystem id of the device ath9k: Get rid of the modparam btcoex_enable ath9k: Initialize the priority gpio for BT coex 3-wire ath9k: Fix rx data corruption ath9k: Don't read NF when chip has gone through full sleep mode ath9k: Do a full reset for AR9280 Vasiliy Temnikov (1): V4L/DVB (12574): support AverMedia Studio 505 Vasu Dev (9): vlan: adds fcoe offload related net_device_ops and updates fcoe_ddp_xid field ixgbe: updates vlan feature flags to enable FCoE offloads on vlan interface [SCSI] fcoe, libfc: adds exchange manager(EM) anchor list per lport and related APIs [SCSI] fcoe, fnic, libfc: modifies current code paths to use EM anchor list [SCSI] fcoe: modifies fcoe_hostlist_lock uses as prep work to add shared offload EM [SCSI] fcoe, libfc: adds offload EM per eth device with only single xid range per EM [SCSI] fcoe: removes phys_dev and renames real_dev to netdev. [SCSI] fcoe, libfc: adds per cpu exch pool within exchange manager(EM) [SCSI] fcoe, libfc: fully makes use of per cpu exch pool and then removes em_lock Vegard Nossum (3): kmemcheck: remove useless check kmemcheck: update documentation fs: fix overflow in sys_mount() for in-kernel calls Venkatesh Pallipadi (10): x86, pat: Keep identity maps consistent with mmaps even when pat_disabled x86, pat: ioremap to follow same PAT restrictions as other PAT users x86, pat: New i/f for driver to request memtype for IO regions x86, pat: Add PAT reserve free to io_mapping* APIs x86, pat: Add rbtree to do quick lookup in memtype tracking x86, pat: Generalize the use of page flag PG_uncached x86, pat: Use page flags to track memtypes of RAM pages x86, pat: Add lookup_memtype to get the current memtype of a paddr x86, pat: Lookup the protection from memtype list on vm_insert_pfn() x86, pat: Sanity check remap_pfn_range for RAM region Vidhya Govindan (1): wl12xx: Assign value to rx msdu lifetime variable Vikram Kandukuri (2): Bluetooth: Fix missing scheduling when VIRTUAL_CABLE_UNPLUG is received Bluetooth: Improve USB driver throughput by increasing the frame size Vikram Pandita (7): OMAP2/3: Pass irqflags to 8250 driver OMAP3: MMC: Add mux for pins OMAP3: Zoom2: Add TWL4030 support OMAP3: Zoom2: Update board defconfig OMAP: Zoom2: update serial platform_data id for external UART OMAP: Zoom2: release debug board detect gpio line serial: 8250: add IRQ trigger support Ville Syrjala (1): atyfb: coding style cleanup Vincent Li (4): mm/vmscan: rename zone_nr_pages() to zone_nr_lru_pages() mm/vmscan: remove page_queue_congested() comment fs/proc/task_mmu.c v1: fix clear_refs_write() input sanity check fs/proc/base.c: fix proc_fault_inject_write() input sanity check Vipin Bhandari (1): mfd: Correct ro and cd implemantion on DM355 Vitaliy Gusev (2): [S390] hypfs: remove useless variable qname mlx4: Fix access to freed memory Vitaly Mayatskikh (2): do_wait: fix sys_waitid()-specific behaviour wait_noreap_copyout(): check for ->wo_info != NULL Vivek Goyal (1): cfq-iosched: no need to keep track of busy_rt_queues Vivek Natarajan (14): ath9k: Add AR9287 based chipsets' register information. ath9k: Add init values for AR9287 based chipsets. ath9k: Add support for AR9287 based chipsets. ath9k: Add open loop power control support for AR9287. ath9k: Set AR_WA for AR9287 as it improves consistency in throughput. ath9k: Enable LEDs for AR9287 chipsets. ath9k: Fix ref power interpolation logic for AR9287 chipsets. ath9k: Updates for AR9287_12 version of chipset. ath9k: Reconfigure beacon timers after the scan is completed. ath9k: Set default noise floor value for AR9287 ath9k: Revamp PCIE workarounds ath9k: Fix AHB reset for AR9280 ath9k: Disable autosleep feature by default. ath9k: Initialize txgain and rxgain for newer AR9287 chipsets. Vlad Yasevich (18): sctp: release cached route when the transport goes down. sctp: Disallow new connection on a closing socket sctp: Fix data segmentation with small frag_size sctp: Generate SACKs when actually sending outbound DATA sctp: Try to encourage SACK bundling with DATA. sctp: Send user messages to the lower layer as one sctp: Fix error count increments that were results of HEARTBEATS sctp: Clear fast_recovery on the transport when T3 timer expires. sctp: drop a_rwnd to 0 when receive buffer overflows. sctp: Try not to change a_rwnd when faking a SACK from SHUTDOWN. sctp: Nagle delay should be based on path mtu sctp: Don't do NAGLE delay on large writes that were fragmented small sctp: Fix SCTP_MAXSEG socket option to comply to spec. sctp: Failover transmitted list on transport delete sctp: Correctly track if AUTH has been bundled. sctp: Turn flags in 'sctp_packet' into bit fields sctp: Get rid of an extra routing lookup when adding a transport. sctp: Catch bogus stream sequence numbers Vladimir Geroy (1): V4L/DVB (13014): Add support for Compro VideoMate E800 (DVB-T part only) Vladimir Serbinenko (1): ACPI video: ignore buggy _BQC Vlastimil Labsky (1): V4L/DVB (12439): cx88: add support for WinFast DTV2000H rev. J WANG Cong (1): SLUB: Drop write permission to /proc/slabinfo Wan Wei (1): amd64_edac: Rewrite unganged mode code of f10_early_channel_count Wan ZongShun (7): Input: w90p910_ts - use clk API Input: add keypad driver for w90p910 Add support for w90p910 mac driver Input: w90p910_keypad - rename driver name to match platform [WATCHDOG] Add watchdog driver for NUC900 mtd: add nand support for w90p910 (v2) USB: Add nuvoton Ehci driver for w90p910 platform Wei Yongjun (11): svcrdma: fix error handling of rdma_alloc_frmr() sunrpc: reply AUTH_BADCRED to RPCSEC_GSS with unknown service sunrpc: move the close processing after do recvfrom method sctp: avoid overwrite the return value of sctp_process_asconf_ack() sctp: check the unrecognized ASCONF parameter before access it sctp: update the route for non-active transports after addresses are added sctp: drop SHUTDOWN chunk if the TSN is less than the CTSN sctp: fix check the chunk length of received HEARTBEAT-ACK chunk sctp: fix to reset packet information after packet transmit sctp: turn flags in 'struct sctp_association' into bit fields sctp: remove dup code in net/sctp/output.c Wending Weng (1): Bluetooth: Fix false errors from bcsp_pkt_cull function Wengang Wang (2): GFS2: free disk inode which is deleted by remote node -V2 ocfs2: add spinlock protection when dealing with lockres->purge. Wey-Yi Guy (44): iwlwifi: modify sensitivity value for 5150 iwlwifi: no need to refer to max_nrg_cck range value iwlwifi: remove disable_tx_power for device > 4965 iwlwifi: move show_qos to debugfs iwlagn: modify digital SVR for 1000 iwlwifi: fix rx signal quality reporting in dmesg iwlwifi: make led functions generic iwlwifi: add led debugfs function iwlwifi: Led blinking counting both tx and rx iwlwifi: checking unknown HW type iwlwifi: uCode Alive notification with timeout iwlwifi: change iwl_enable/disable_interrupts to "inline" iwlwifi: revert to active table when rate is not valid iwlwifi: critical temperature enter/exit condition iwlwifi: Thermal Throttling Management - Part 1 iwlwifi: Thermal Throttling Management - part 2 iwlwifi: Thermal Throttling debugfs function iwlwifi: Name fix for MPDU density for TX aggregation iwlwifi: debugFs to enable/disable HT40 support iwlwifi: Distinguish power amplifier for 6000 series iwlwifi: remove deprecated 6000 series adapters iwlwifi: name changed from "fat" to "ht40" iwlwifi: new debugging feature for dumping data traffic iwlwifi: Traffic type and counter for debugFs iwlwifi: tx/rx queue pointer information iwlwifi: uCode statistics notification counter iwlwifi: Display sensitivity and chain noise information iwlwifi: fix thermal throttling locking problem iwlwifi: fix legacy thermal throttling power index iwlwifi: handle the case when set power fail iwlwifi: display correct critical temperature infomation iwlwifi: traverse linklist to find the valid OTP block iwlwifi: add thermal throttling support to 5150 iwlwifi: set default tx power user limit to minimal iwlwifi: do not allow set tx power over channel power limit iwlwifi: name changes from "tx_power_channel_lmt" to "tx_power_device_lmt" iwlwifi: error checking for setting tx_power in sysfs iwlwifi: change IWL6000_UCODE_API_MAX to v4 iwlwifi: show current tx power iwlwifi: remove duplicated define iwlwifi: read enhanced tx power info from EEPROM image iwlwifi: fix unloading driver while scanning iwlwifi: find the correct first antenna iwlwifi: find the correct first antenna William Weston (1): ALSA: hda - Add quirks for RTL888 & RV630/M76 based MSI GX710 Willy Tarreau (1): i2c/scx200_acb: Provide more information on bus errors Wim Van Sebroeck (3): [WATCHDOG] ar7_wdt: Fix error handling during probe. [WATCHDOG] wdt_pci - use pci_request_region [WATCHDOG] sizeof cleanup Wolfgang Denk (1): fs_enet/mii-fec.c: fix MII speed calculation Wolfgang Grandegger (3): can: add can_free_echo_skb() for upcoming drivers can: sja1000: fix network statistics update can: sja1000: legacy SJA1000 ISA bus driver Wolfgang Muees (1): mmc_spi: fail gracefully if host or card do not support the switch command Wolfram Sang (19): mtd: physmap_of: use resource_size mtd: plat-ram: use resource_size powerpc/irq: Improve nanodoc pcmcia: fix incorrect argument order to list_add_tail() pcmcia: drop non-existant includes pcmcia: document return value of pcmcia_loop_config gpio/pcf857x: Copy i2c_device_id from old pcf8574 driver i2c/chips: Remove deprecated pcf8575 driver i2c/chips: Remove deprecated pca9539 driver i2c/chips: Remove deprecated pcf8574 driver MAINTAINERS: Add maintainer for AT24 and PCA9564/PCA9665 tty: serial/pcmcia: add ID for Advantech card mtd: maps: add mtd-ram support to physmap_of i2c-imx: make bus available early regulator: update a filename in documentation regulator: fix typos regulator: drop 'default n' regulator/lp3971: drop unnecessary initialization regulator/driver: be more specific in nanodoc for is_enabled Wu Fei (1): MIPS: Shrink the size of tlb handler Wu Fengguang (20): ALSA: hda - add bounds checking for the codec command fields ALSA: hda: add 2-channel mode to Intel ALC889/ALC889A models ALSA: hda: add HP automute support to Intel ALC889/ALC889A models ALSA: hda: add IbexPeak/Clarkdale HDMI model with static cvt/pin number slab: remove duplicate kmem_cache_init_late() declarations ALSA: hda: move open coded tricks into get_wcaps_channels() tcp: replace hard coded GFP_KERNEL with sk_allocation PM: Trivial fixes HWPOISON: check and isolate corrupted free pages v2 HWPOISON: Add invalidate_inode_page HWPOISON: shmem: call set_page_dirty() with locked page mm: count only reclaimable lru pages mm: do batched scans for mem_cgroup libfs: return error code on failed attr set page-types: add feature for walking process address space writeback: balance_dirty_pages() shall write more than dirtied pages writeback: stop background writeback when below background threshold writeback: kupdate writeback shall not stop when more io is possible writeback: cleanup writeback_single_inode() writeback: don't delay inodes redirtied by a fast dirtier Wu Zhangjin (17): ide: fixup for fujitsu disk MIPS: Loongson: Remove existing early_printk implementation MIPS: Loongson: Remove out-of-date board-specific kgdb source code MIPS: Loongson: Add new early_printk implmentation MIPS: Loongson: pm: Remove redundant source code MIPS: Loongson: pm: clean up the reboot support MIPS: Loongson: PCI: use existing mips_io_port_base MIPS: Loongson: Split the implementation of prom and setup parts MIPS: Loongson: clean up the coding style MIPS: Loongson: PCI: Clean up pcimap setup MIPS: Loongson: RTC: Enable legacy RTC driver on fulong MIPS: Loongson: Add oprofile support MIPS: Loongson: Change naming methods MIPS: Loongson: Split common loongson source code out MIPS: Loongson: Add a machtype kernel command line argument MIPS: Loongson: Add GCC 4.4 support for Loongson2E MIPS: Loongson: Update the default config file for fuloong2e Xiao Guangrong (16): tracing/filter: Remove preds from struct event_subsystem tracing/filter: Remove empty subsystem and its directory tracing/function: Simplify __ftrace_replace_code() tracing/trace_stack: Cleanup for trace_lookup_stack() tracing/function: Cleanup for function tracer tracing: cleanup for tracing_trace_options_read() x86: Fix system crash when loading with "reservetop" parameter tracing/events: fix the include file dependencies timers: Add tracepoints for timer_list timers hrtimer: Add tracepoint for hrtimers itimers: Add tracepoints for itimer drop_monitor: fix trace_napi_poll_hit() KVM: fix kvm_init() error handling perf_counter: Fix buffer overflow in perf_copy_attr() lguest: cleanup for map_switcher() generic-ipi: make struct call_function_data lockless Xiaotian Feng (4): slub: release kobject if sysfs_create_group failed in sysfs_slab_add PM: Reset transition_started at dpm_resume_noirq Documentation: update stale definition of file-nr in fs.txt cgroups: make unlock sequence in cgroup_get_sb consistent Yan Zheng (2): Btrfs: improve async block group caching Btrfs: hash the btree inode during fill_super Yan, Zheng (7): Btrfs: speed up snapshot dropping Btrfs: do not reuse objectid of deleted snapshot/subvol Btrfs: change how subvolumes are organized Btrfs: add snapshot/subvolume destroy ioctl Btrfs: check size of inode backref before adding hardlink Btrfs: don't rename file into dummy directory Btrfs: relocate file extents in clusters Yang Shi (1): edac: mpc85xx add P2020DS support Yang Xiaowei (1): xen: use stronger barrier after unlocking lock Yang Zhao (1): drm/radeon: Save and restore bios scratch regs during S/R Yanqing_Liu@Dell.com (1): [SCSI] scsi_dh_rdac: add support for next generation of Dell PV array Yeasah Pell (2): dm9000: add checksum offload support mtd: pxa3xx_nand: add single-bit error corrections reporting Yevgeny Petrilin (4): mlx4_en: Adaptive moderation policy change mlx4_en: Using real number of rings as RSS map size mlx4_en: Not using Shared Receive Queues mlx4_core: Avoid double free_icms Yi Li (8): Blackfin: bf537-stamp: declare SPI IRQ resources Blackfin: bf533-stamp: add resources for mmc_spi card Blackfin: update anomaly lists Blackfin: cleanup sync handling when enabling/disabling cplbs Blackfin: do not trace the exception handler Blackfin: use raw_smp_processor_id() in exception code Blackfin: fix BF54x SPI CS resources Blackfin: update ftrace for latest toolchain Yi Zou (20): net: Add NETIF_F_FCOE_MTU to indicate support for a different MTU for FCoE ixgbe: Add support for NETIF_F_FCOE_MTU to 82599 devices [SCSI] fcoe: Fix validation of mac address when checking for spma support [SCSI] libfcoe: Set fip_flags according to fcf and lport's capability of SPMA support [SCSI] fcoe: Call dev_ethtool_get_settings() in fcoe_link_ok [SCSI] fcoe: Remove ifdef for NETIF_F_FCOE_CRC and NETIF_F_FSO [SCSI] libfc: Remove FC_FRAME_SG_LEN in fc_fcp_send_data [SCSI] libfc: Remove page flags check for sglist net: Add ndo_fcoe_enable/ndo_fcoe_disable to net_device_ops vlan: Add support for net_devices_ops.ndo_fcoe_enable/_disable to VLAN ixgbe: Add support for the net_device_ops.ndo_fcoe_enable/disable to 82599 dcbnl: Add support for setapp/getapp commands to dcbnl dcbnl: Add support for setapp/getapp to netdev dcbnl_rtnl_ops dcbnl: Add netlink attributes for setapp/getapp to dcbnl dcbnl: Add implementations of dcbnl setapp/getapp commands ixgbe: Add support for dcbnl_rtnl_ops.setapp/getapp ixgbe: Add support for multiple Tx queues for FCoE in 82599 ixgbe: Distribute transmission of FCoE traffic in 82599 ixgbe: Add support for using FCoE DDP in 82599 as FCoE targets [SCSI] fcoe: Add sysfs parameter to fcoe for minimum DDP read I/O size Yinghai Lu (7): x86, apic: Move dmar_table_init() out of enable_IR() irq: Make sure irq_desc for legacy irq get correct node setting irq: Add irq_node() primitive pci/intr_remapping: Allocate irq_iommu on node x86: Use hard_smp_processor_id() to get apic id for AMD K8 cpus PCI: print out pref if mmio is prefetchable Revert 'x86: Fix system crash when loading with "reservetop" parameter' Yong Zhang (1): sched: Fix potential NULL derference of doms_cur Yoshihiro Shimoda (6): usb: fix hibernate in r8a66597-hcd dev_pm_ops conversion. usb: gadget: R8A66597 peripheral controller support. usb: r8a66597-udc: implement the set_wedge method sh: Add initial support for SH7757 CPU subtype sh: sh7785lcr: fix prototype board on 32bit MMU mode. net: sh_eth: add value of ether_link pin in platform_data Yossi Etigin (1): IB/core: Fix send multicast group leave retry Youquan Song (2): intel-iommu: Disallow interrupt remapping if not all ioapics covered intel-iommu: Fix kernel hang if interrupt remapping disabled in BIOS Yu Zhiguo (1): NFSv4: ACL in operations 'open' and 'create' should be used Yuri Tikhonov (5): md/raid5,6: common schedule_reconstruction for raid5/6 md/raid6: asynchronous handle_stripe_fill6 md/raid6: asynchronous handle_stripe_dirtying6 md/raid6: asynchronous handle_stripe6 md/raid6: remove synchronous infrastructure Yusuke Goda (1): sh: Fix the indication point of the liquid crystal of AP-325RXA(AP3300) Zhang Qiang (1): nilfs2: An unassigned variable is assigned to a never used structure member Zhang Rui (2): ACPI: video: remove unneeded memsets ACPI video: work-around BIOS AML bug in _BQC Zhang, Yanmin (1): slub: change kmem_cache->align to record the real alignment Zhao Yakui (18): ACPI: Make ACPI processor proc I/F depend on the ACPI_PROCFS drm/mode: add the CVT algorithm in kernel space drm/mode: add the GTF algorithm in kernel space drm/mode: get the modeline for standard timing in EDID by using CVT/GTF drm: Remove the unused prefix in DRM_DEBUG_KMS/DRIVER/MODE drm: Remove the macro defintion of DRM_DEBUG_MODE DRM: Add the explanation about DRM debug level drm: Add the debug info in generic drm mode by using DRM_DEBUG_KMS drm/kms: Parse the detailed time info in CEA-EDID drm/i915: Enable PAL and SECAM format and add the propery for SDVO-TV drm/kms: Add the default mode table drm/kms: try to find the std mode in DMT table drm/kms: add a function that can add the mode for the output device without EDID drm/i915: Add the enhancement property for SDVO-TV drm/i915: Add the brightness property for SDVO-LVDS drm/i915: Add the missing clone_mask for SDVO-VGA(RGB1) drm/i915: Write zero to DPLL_MD Reg for non-SDVO output ACPI: fix Compaq Evo N800c (Pentium 4m) boot hang regression Zhaolei (3): tracing: Rename set_tracer_flags()'s local variable trace_flags ftrace: Move setting of clock-source out of options time: add function to convert between calendar time and broken-down time for universal use Zhenyu Wang (12): agp: Add generic support for graphics dma remapping intel_agp: Use PCI DMA API correctly on chipsets new enough to have IOMMU drm/i915: update debugfs interrupt info on IGDNG drm/i915: fix tiling on IGDNG drm/i915: do dynamic clock freq control only in kernel modesetting V4L/DVB (12190): em28xx: Add support for Gadmei UTV330+ agp/intel: remove restore in resume drm/i915: Fix typo for wrong LVDS clock setting on IGDNG drm/i915: Fix SSC frequence for IGDNG drm/i915: Remove DAC disable in CRT force detect on IGDNG drm/i915: Fix LVDS panel fitting on Arrandale drm/i915: remove restore in resume Zhu Yanhai (1): nilfs2: add more check routines in mount process Zhu Yi (30): iwmc3200wifi: change coexist periodic calibration flag iwmc3200wifi: rfkill cleanup iwmc3200wifi: replace netif_rx with netif_rx_ni iwmc3200wifi: simplify calibration map iwmc3200wifi: remove B0 hardware support cfg80211: fix NULL dereference in IBSS SIOCGIWAP iwmc3200wifi: fix UMAC INIT_COMPLETE notification handling iwmc3200wifi: hardware does not support IP checksum iwmc3200wifi: set cipher_suites before registering wiphy iwmc3200wifi: use correct debug level iwmc3200wifi: remove setting WEP keys before setting essid support iwmc3200wifi: make iwm_send_wifi_if_cmd return 0 on success iwmc3200wifi: remove key caches in driver cfg80211: remove WARN_ON in __cfg80211_sme_scan_done cfg80211: set_default_key only for WEP cfg80211: fix typo of IWEVASSOCRESPIE iwmc3200wifi: use cfg80211_connect_result to send req/resp IE iwmc3200wifi: fix cfg80211_connect_result is called in IBSS iwmc3200wifi: fix a use-after-free bug cfg80211: avoid setting default_key if add_key fails iwmc3200wifi: fix set_wpa_version and set_auth_type order iwmc3200wifi: set WEP key static flag correctly iwmc3200wifi: avoid setting default key for 802.1X and RSNA wireless: display wext SSID when connected by cfg80211 iwlwifi: cleanup HT40 extension channels setup cfg80211: allow cfg80211_connect_result with bssid == NULL iwmc3200wifi: invalidate profile when necessary before connect iwmc3200wifi: use cfg80211_roamed to send roam event iwmc3200wifi: add disconnect work iwmc3200wifi: fix misuse of le16_to_cpu arun c (2): omapfb: add support for the OMAP2EVM LCD omapfb: fix coding style / remove dead line ddiaz@cenditel.gob.ve (1): ALSA: hda/realtek: Added support for CLEVO M540R subsystem, 6 channel + digital dmitry pervushin (2): spi: Freescale STMP driver rtc: add Freescale stmp37xx/378x driver fangxiaozhi (1): USB: usb-storage fails to attach to Huawei Datacard cdrom device fkan@amcc.com (1): powerpc/44x: Add Eiger AMCC (AppliedMicro) PPC460SX evaluation board support. françois romieu (6): r8169: fix r8101 quirk dupe r8169: differentiate close chipsets in the startup identification message r8169: phy init for the 8169sce r8169: phy init for the 8169scd r8169: phy init for the 8169s r8169: phy init for the 8102e gregor kowski (3): b43: remove wrong probe_resp_plcp write b43: remove wrong probe_resp_plcp write b43: add hardware tkip hermann pitton (2): V4L/DVB (12420): saa7134: fix the radio on Avermedia GO 007 FM V4L/DVB (12492): saa7134-input: don't probe for the Pinnacle remotes anymore jassi brar (1): ASoC: Debugged improper setting of PLL fields in WM8580 driver javier Martin (6): ASoC: Correct a bug with "ADC Inversion Switch" in wm8974 codec. ASoC: add DMA platform driver for MX1x and MX2x ASoC: add DAI platform ssi driver for MXC ASoC: add machine driver for i.mx27_visstrim_m10 board ASoC: Fix review issues in i.MX2x PCM driver MX27: Add USB platform devices and resources jie.yang@atheros.com (1): atl1c:remove compiling warning john stultz (4): time: Introduce CLOCK_REALTIME_COARSE alpha: convert to use arch_gettimeoffset() m32r: convert to use arch_gettimeoffset() m68k: convert to use arch_gettimeoffset() jolsa@redhat.com (5): tracing: Remove unused fields/variables tracing: Remove .globl in the scripts/recordmcount.pl doc tracing: create generic trace parser tracing: trace parser support for set_event tracing: trace parser support for function and graph kishore kadiyala (1): omap4: mmc driver support on OMAP4 linus.walleij@stericsson.com (1): spi: add default selection of PL022 for ARM reference platforms mail@rainerkeller.de (1): USB: add PIDs for FTDI based OpenDCC hardware markus.t.metzger@intel.com (3): x86, perf_counter, bts: Fail if BTS is not available x86, perf_counter, bts: Correct pointer-to-u64 casts x86, perf_counter, bts: Do not allow kernel BTS tracing for now maximilian attems (1): ramfs: move RAMFS_MAGIC to include/linux/magic.h miaofng (1): Staging: vt6656: disable wpa related function due to memory failure of this part of codes mingo (2): perf sched: Print PIDs too perf sched: Add support for sched:sched_stat_runtime events npiggin@suse.de (2): truncate: new helpers truncate: use new helpers oscar.medina@motorola.com (1): tipc: Add socket options to get number of queued messages roald (1): regulator: add initialization macro of regulator supply roel kluin (11): b44: strncpy does not null terminate string lmc: Read outside array bounds powerpc/cell: Replace strncpy by strlcpy powerpc: Missing tests for NULL after ioremap() powerpc/macio: Don't the address of an array element before boundchecking tipc: fix test of bearer_priority range in tipc_register_media() WAN: bit and/or confusion au1000_eth: possible NULL dereference of aup->mii_bus->irq in au1000_probe() WARNING: some request_irq() failures ignored in el2_open() atm: dereference of he_dev->rbps_virt in he_init_group() powerpc: kmalloc failure ignored in vio_build_iommu_table() sarveshwarb (1): be2net: Patch to perform function reset at initialization sedji gaouaou (1): ARM: 5640/1: This patch modifies the support of AC97 on the at91sam9263 ek board sfking@fdwdc.com (13): core generic GPIO support for Freescale Coldfire processors. generic GPIO support for the Freescale Coldfire 5206. generic GPIO support for the Freescale Coldire 5206e. generic GPIO support for the Freescale Coldfire 520x. generic GPIO support for the Freescale Coldfire 523x. generic GPIO support for the Freescale Coldfire 5249. generic GPIO support for the Freescale Coldfire 527x. generic GPIO support for the Freescale Coldfire 5272. generic GPIO support for the Freescale Coldfire 528x. generic GPIO support for the Freescale Coldfire 5307. generic GPIO support for the Freescale Coldfire 532x. generic GPIO support for the Freescale Coldfire 5407. generic GPIO support misc files. vimal singh (5): mtd: nand: remove repeated comment, fix spelling mtd: nand_base: use __func__ instead of typing names mtd: physmap_of: fix incorrect check mtd: omap: add support for nand prefetch-read and post-write mtd: omap: adding DMA mode support in nand prefetch/post-write walker@suse.cz (1): [ARM] pxa/treo680: pxamci simplify to use GPIO wanzongshun (17): [ARM] 5591/1: Add group irq enable/disable for w90p910 platform. [ARM] 5601/1: Add HAVE_CLK depends on for w90p910 platform [ARM] 5602/1: Add sub clock api for w90p910 platform [ARM] 5604/1: Add keypad multi-function pin api for w90p910 platform [ARM] 5610/1: Add fmi resource define for w90p910 platform [ARM] 5616/1: Add mac resource define for w90p910 mac driver [ARM] 5617/1: rename this spi device as w90p910-spi [ARM] 5618/1: Add spi resource define for w90p910 spi driver [ARM] 5619/1: Add spi mfp api for w90p910 spi driver ARM: 5633/1: Add wdt resource for w90p910 platform ARM: 5634/1: Add static setting cpu frequence for w90p910 platform ARM: 5674/1: Add clocksource/clockevent support for w90p910 platform ARM: 5675/1: The semaphore is used as mutex so make it a mutex ARM: 5676/1: Provide more useful introduction for w90x900 ARM: 5682/1: Add cpu.c and dev.c and modify some files of w90p910 platform ARM: 5683/1: Add nuc950 platform to w90x900 ARM: 5684/1: Add nuc960 platform to w90x900 ykzhao (1): drm/kms/i915: Add the default mode for CRT output without EDID ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:40 2010 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLewb143667 for ; Fri, 22 Jan 2010 16:21:40 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLc3h143631; Fri, 22 Jan 2010 16:21:38 -0600 Date: Fri, 22 Jan 2010 16:21:38 -0600 Message-Id: <201001222221.o0MMLc3h143631@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.32-rc2, created. v2.6.32-rc1 X-Git-Refname: refs/tags/v2.6.32-rc2 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 1016bf08944977a33d3a48edc15ee34b425f6d8a This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.32-rc2 has been created at 1016bf08944977a33d3a48edc15ee34b425f6d8a (tag) tagging 17d857be649a21ca90008c6dc425d849fa83db5c (commit) replaces v2.6.31 tagged by Linus Torvalds on Sun Sep 27 14:57:59 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.32-rc1 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkq/3+0ACgkQF3YsRnbiHLsS/QCgoL2XSYdbPstvY6hv/7SqAyCI ACsAnRdt0aMSMduj7OK8PxAZe95XuPlF =hKDz -----END PGP SIGNATURE----- Aaro Koskinen (2): SLUB: fix ARCH_KMALLOC_MINALIGN cases 64 and 256 sisfb: change SiS_DDC_Port type to SISIOADDRESS Abhijeet Kolekar (1): iwlwifi: fix remove key error Abhishek Kulkarni (4): 9p: Use the i_size_[read, write]() macros instead of using inode->i_size directly. 9p: Fix the incorrect update of inode size in v9fs_file_write() 9p: Add fscache support to 9p 9p: Update documentation to add fscache related bits Abylay Ospan (4): V4L/DVB (12311): Change clocking configuration and frequency for NetUP card. V4L/DVB (12312): stv0900: fix i2c repeater configuration must be set to manual V4L/DVB (12956): Fix gpio mutex in NetUP Dual DVB-S2 CI card. V4L/DVB (12957): Fix MAC address reading from EEPROM in NetUP Dual DVB-S2 CI card. AceLan Kao (1): V4L/DVB (12352): gspca - vc032x: Fix mi1310_soc preview and LED Adam Jackson (2): drm: shut the EDID warnings up. drm: prune modes when output is disconnected. Adrian Hunter (18): mmc: add 'enable' and 'disable' methods to mmc host mmc: allow host claim / release nesting mmc: add MMC_CAP_NONREMOVABLE host capability mmc: add ability to save power by powering off cards mmc: check status after MMC SWITCH command omap_hsmmc: make use of new enable/disable interface omap_hsmmc: keep track of power mode omap_hsmmc: ensure workqueues are empty before suspend omap_hsmmc: make use of new MMC_CAP_NONREMOVABLE host capability ARM: OMAP: mmc-twl4030: add regulator sleep / wake function omap_hsmmc: put MMC regulator to sleep omap_hsmmc: clear interrupt status after init sequence omap_hsmmc: cater for weird CMD6 behaviour omap_hsmmc: prevent races with irq handler omap_hsmmc: protect the card when the cover is open omap_hsmmc: ensure all clock enables and disables are paired omap_hsmmc: set a large data timeout for commands with busy signal ARM: OMAP: RX51: set MMC capabilities and power-saving flag Ajay Kumar Gupta (1): USB: musb: fix put_device() call sequence Ajit Khaparde (4): be2net: Add GRO support to the be2net driver. LRO is not supported anymore. net/ethtool: Add support for the ethtool feature to flash firmware image from a specified file. be2net: Changes to support flashing of the be2 network adapter be2net: Code changes in Tx path to use skb_dma_map/skb_dma_unmap Akihiro Tsukada (1): V4L/DVB (13000): add driver for 774 Friio White USB ISDB-T receiver Akinobu Mita (9): x86: Clean up dump_pagetable() x86: Use get_desc_base() x86: Remove unused patch_espfix_desc() x86: Introduce set_desc_base() and set_desc_limit() x86: Introduce GDT_ENTRY_INIT() x86: Introduce GDT_ENTRY_INIT(), initialize bad_bios_desc statically KVM: x86: use get_desc_base() and get_desc_limit() KVM: x86: use kvm_get_gdt() and kvm_read_ldt() mm: add gfp mask checking for __get_free_pages() Akira Fujita (9): ext4: Fix compile warnings with MB_DEBUG ext4: Fix wrong comparisons in mext_check_arguments() ext4: Remove unneeded BUG_ON() in ext4_move_extents() ext4: Return exchanged blocks count to user space in failure ext4: Fix small typo for move_extent_per_page() ext4: Replace get_ext_path macro with an inline funciton ext4: Replace BUG_ON() with ext4_error() in move_extents.c ext4: Add null extent check to ext_get_path ext4: Fix different block exchange issue in EXT4_IOC_MOVE_EXT Al Viro (1): nfs[23] tcp breakage in mount with binary options Alan Cox (117): x86/cpu: Clean up various files a bit [libata] Add pata_rdc driver for RDC ATA devices Staging: et1310: Fix the coding style Staging: sep: Move the RAR support into staging where it is supposed to be Staging: rar: fix some initial type problems Staging: rar/sep: Don't use random VENDOR_ID macros but the proper names Staging: sep: Fix rar build Staging: rar/sep: Remove C++isms from the headers Staging: sep: Create a structure to hold all the current crap spewed about as globals Staging: sep: rework write_register/read_register Staging: sep: We have two different repeats of the same logic Staging: sep: do something about all the printk macros Staging: sep: indent pass Staging: sep: first pass after indent Staging: sep: priceless ... Staging: sep: Put all the ARM bits together Staging: sep: function shuffle Staging: sep: statically initialize the fops like other drivers Staging: sep: kill lock wrapper Staging: sep: merge the two files Staging: sep: make everything static Staging: sep: kill off unused code Staging: sep: squish some of the wrapper functions Staging: sep: forward declaration removal time Staging: sep: fix time handler Staging: sep: use O_NDELAY instead of magic APIs Staging: sep: rename some fields Staging: sep: Fix PCI irq usage Staging: sep: Use filp->private_data to create proper device instances Staging: sep: clean up after switching to passing sep Staging: sep: fix flow API Staging: sep: load_rom is remarkably verbose and repetetive Staging: sep: remove module int macro Staging: sep: Try and get kernel address and user address types right Staging: sep: remove extra CFLAGS we don't use Staging: sep: Use the proper allocators for the shared area Staging: sep: fix a conversion thinko Staging: sep: various minor tidyups Staging: sep: tidy firmware load Staging: sep: Implement some proper open/close methods Staging: sep: kick out various fields we can prove are not needed Staging: sep: flow ioctl cleanup Staging: sep: clean up command sending Staging: sep: clean up time Staging: sep: untangle the register_fs code Staging: sep: use ioremap helpers Staging: iio: Fix type warnings Staging: altpciechdma: 64bit type warning fix Staging: pohmelfs: fix atomic type spew Staging: pohmelfs: fix type errors Staging: et1310: kill pAdapter in favour of a sane name Staging: et131x: spinlocks Staging: et131x: power state Staging: et131x: kill unused RCV_REF macros Staging et131x: kill refcount Staging: et131x: MPSend macros Staging: et131x: kill copied PCI fields Staging: et131x: Take a kref for the PCI pointer we cache Staging: et131x: CSRAddress to regs Staging: et131x: Eliminate RegistryDMA Cache Staging: et131x: eliminate write only registry fields Staging: et131x: clean up constant rx/tx registry fields Staging: et131x: attack the config stuff Staging: et131x: config is already zeroed Staging: et131x: fold the diet config into the other code Staging: et131x: de-hungarianise a bit Staging: et131x: continue pruning unused fields Staging: et131x: remove unused PCI identifiers Staging: et131x: eeprom remove features Staging: et131x: sort out the mmc enable routine Staging: et131x: clean up MMC_SRAM_ Staging: et131x: quick tidy of the debug code Staging: et131x: kill the Q_ADDR struct Staging: et131x: clean up PM_CSR_t Staging: et131x: clean up DMA10/DMA4 types Staging: et131x: clean up MP_FLAG macros Staging: et131x: kill the interrupt magic define and types Staging: et131x: put the jagcore routines in with their users Staging: et131x: kill MSI type Staging: et131x: kill the loopback type Staging: et131x: prune all the debug code Staging: et131x: re-order the initpci code to match usual Linux style Staging: et131x: kill off the TXDMA error type Staging: et131x: kill off the TXDMA CSR type slip: Clean up create and destroy kfifo: Use "const" definitions tty: Fix a typo noted in passing mos7840: remove old dead modem logic tty: Add a full port_close function riscom8: split open and close methods up mxser: Split close ready for a standard tty_port_close method isicom: Split the close hardware bits out tty: riscom8 kref and tty_port_close cyclades: use the full port_close function tty: make the kref destructor occur asynchronously cdc_acm: Fix to use modern speed interfaces tty: USB hangup is racy tty: remove dtr/rts use from the driver open methods tty: USB can now use the shutdown method for kref based freeing of ports vt: add an event interface vt: remove power stuff from kernel/power vt: move kernel stuff out of vt.h vt: add an activate and lock tty: USB does not need the filp argument in the drivers isicom: split the open method for the isicom device serial: kill off uart_info serial: Fold closing_* fields into the tty_port ones serial: use tty_port pointers in the core code serial: move count into the tty_port version serial: move the flags into the tty_port field serial: kill off uif_t serial: replace the state mutex with the tty port mutex serial: move delta_msr_wait into the tty_port serial: move port users helper serial: kill USF_CLOSING_* definitions serial: introduce tty krefs tty: USB serial termios bits Alan Jenkins (12): eeepc-laptop: don't touch the pci slot if it was claimed by a different driver eeepc-laptop: use a mutex to serialize pci hotplug (resume vs. notify) eeepc-laptop: fix pci hotplug race on load and unload eeepc-laptop: fix ordering of init and exit functions eeepc-laptop: make input device a child of the platform device eeepc-laptop: remove redundant rfkill_set_sw_state in resume handler eeepc-laptop: check the 3G rfkill state on resume eeepc-laptop: correct the description of the hibernation abort bug eeepc-laptop: switch to dev_pm_ops eeepc-laptop: fix rfkill memory leak on unload eeepc-laptop: allow rfkill hotplug to work on the 900A model 8139cp: fix duplicate loglevel in module load message Alan Stern (21): Driver core: add new device to bus's list before probing TTY: fix typos usb-serial: change referencing of port and serial structures usb-serial: put subroutines in logical order usb-serial: change logic of serial lookups usb-serial: acquire references when a new tty is installed usb-serial: fix termios initialization logic usb-serial: rename subroutines usb-serial: add missing tests and debug lines usb-serial: straighten out serial_open USB serial: update the console driver USB: add API for userspace drivers to "claim" ports USB: make intf.pm_usage an atomic_t USB: make the "usbfs_snoop" log more pertinent USB: check for hub driver not bound to root hub device USB: don't lose mode switch events on suspended devices USB: dummy-hcd: accept mismatch between wLength and transfer length USB: s3c2410: unregister should call unbind, not disconnect USB: EHCI: rescan the queue after an unlink USB: EHCI: change deschedule logic for interrupt QHs USB: usbfs: add USBDEVFS_URB_BULK_CONTINUATION flag Albert Herranz (3): ssb: Implement SDIO host bus support b43: Add Soft-MAC SDIO device support b43: fix build error if !CONFIG_B43_LEDS Albin Tonnerre (3): tracing: Remove mentioning of legacy latency_trace file from documentation PM: Add convenience macro to make switching to dev_pm_ops less error-prone include/linux/unaligned/{l,b}e_byteshift.h: fix usage for compressed kernels Alek Du (5): USB: EHCI: add need_io_watchdog flag to ehci_hcd USB: EHCI: split ehci_qh into hw and sw parts USB: EHCI: Add Intel Moorestown EHCI controller HOSTPCx extensions and support phy low power mode gpio: add Intel Moorestown Platform Langwell chip gpio driver gpio: pca953x: add support for MAX7315 Aleksandr V. Piskunov (1): V4L/DVB (12485): zl10353: correct implementation of FE_READ_UNCORRECTED_BLOCKS Alessandro Guido (1): HID: Remove duplicate Kconfig entry Alessandro Rubini (10): [ARM] 5582/1: VIC: support ST-modified version with a split init [ARM] 5583/1: VIC: acknowledge software interrupts [ARM] 5590/1: Add basic support for ST Nomadik 8815 SoC and evaluation board [ARM] 5584/1: nomadik: add gpio driver and devices [ARM] 5585/1: nomadik: add gpio-i2c devices [ARM] 5586/1: nomadik board: added ethernet [ARM] 5587/1: nomadik: add l2cc [ARM] 5588/1: nomadik: add defconfig for nhk8815 mtd: nand: driver for Nomadik 8815 SoC (on NHK8815 board) mtd: OneNand support for Nomadik 8815 SoC (on NHK8815 board) Alessandro Zummo (3): rtc: rtc-ds1302 fixes rtc: rtc-sh fixes rtc: reorder Makefile Alex Chiang (6): ACPI: pci_slot.ko wants a 64-bit _SUN PCI: remove pcibios_scan_all_fns() ACPI: export acpi_pci_root and friends PCI Hotplug: acpiphp: get pci_bus from acpi handle correctly PCI Hotplug: acpiphp: find bridges the easy way PCI Hotplug: convert acpi_pci_detect_ejectable() to take an acpi_handle Alex Deucher (13): drm/radeon/kms: re-apply 2007d633d639c896396e4c4b53b38068f3831307 drm/radeon/r600: use fence->timeout directly drm/radeon/r600: fix legacy blit code drm/radeon/kms/r600: fix blit support drm/radeon/kms/r600: use blit for BO moves drm/radeon/kms: pull in latest quirks and fixes from ddx drm/radeon/kms: add common scaled modes for TV and LVDS drm/radeon/kms: add common lvds modes in the ddc case drm/radeon/kms/r600: fix blit dword count for non r6xx drm/radeon/kms: fix typo in quirks drm/radeon/r600: don't do interrupts drm/radeon/r600/kms: rv670 is not DCE3 drm/radeon: some r420s have a CP race with the DMA engine. Alex Elder (4): xfs: xfs_showargs() reports group *and* project quotas enabled Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 xfs: Record new maintainer information Merge branch 'master' of git://oss.sgi.com/xfs/xfs into for-linus Alex Roman (1): [ARM] pxa/colibri: add UART MFP configuration for the PXA320 module Alex Williamson (2): iommu=pt is a valid early param PCI iommu: iommu=pt is a valid early param Alexander Beregalov (13): ar9170: fix build error when !CONFIG_AR9170_LEDS Staging: vt6655: fix build when !CONFIG_WIRELESS_EXT Staging: vt6655: remove dependency on WIRELESS_EXT version Staging: otus: remove dependency on WIRELESS_EXT version Staging: vt6656: remove dependency on kernel version Staging: vt6656: remove dependency on WIRELESS_EXT version Staging: vt665x: depend on WIRELESS_EXT Staging: at76_usb: fix !CONFIG_WIRELESS_EXT build Staging: at76_usb: replace mac2str() with %pM Staging: wlan-ng: remove dependency on WIRELESS_EXT version Staging: rt2860: remove dependency on WIRELESS_EXT version Staging: agnx: remove flush_workqueue() Staging: vt665x: fix built-in compiling Alexander Duyck (21): igb: remove media type fiber as it is misleading igb: make serdes power down available for 82575 in addition to 82576 parts igb: change configure_pcs_link to void since it always returns 0 igb: do not overwrite EEPROM LED settings igb: add completion timeout workaround for 82575/82576 igb: move all multicast addresses into multicast table array igb: cleanup receive address register initialization igb: remove unused switch statement from igb_set_wol igb: add support for 82576 mezzanine card igb: use buffer_info->dma instead of shinfo->nr_frags to determine unmap igb: cleanup flow control configuration to make requested/current more clear igb: initialize mailbox function pointers prior to phy init igbvf: resolve "frees DMA memory with different size" warnings igb/ixgbe: add IPV6_CSUM support to vlan_features igb: add support for set_rx_mode netdevice operation igb: only disable/enable interrupt bits for igb physical function igb: set vf rlpml wasn't taking vlan tag into account PCI quirk: update 82576 device ids in SR-IOV quirks list igb: reset sgmii phy at start of init igb: do not allow phy sw reset code to make calls to null pointers igb: resolve namespacecheck warning for igb_hash_mc_addr Alexander Graf (4): x86: Add definition for IGNNE MSR KVM: Implement MSRs used by Hyper-V KVM: SVM: Implement INVLPGA KVM: SVM: Improve nested interrupt injection Alexander Schmidt (1): IB/ehca: Make port autodetect mode the default Alexander Strakh (1): [CIFS] Memory leak in ntlmv2 hash calculation Alexandros Batsakis (3): nfsd41: sunrpc: svc_tcp_recv_record() nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel nfsd41: modify nfsd4.1 backchannel to use new xprt class Alexey Dobriyan (38): sparc64: cheaper asm/uaccess.h inclusion x86: uv: Clean up uv_ptc_init(), use proc_create() pktgen: use proc_create_data() can: switch to seq_file drm: use proc_create_data() netfilter: nf_conntrack: netns fix re reliable conntrack event delivery netns: embed ip6_dst_ops directly ide: convert to ->proc_fops sparc: convert /proc/io_map, /proc/dvma_map to seq_file sctp: use proc_create() headers: net/ipv[46]/protocol.c header trim net: constify struct net_protocol net: constify struct inet6_protocol net: constify remaining proto_ops xfs: switch to seq_file MIPS: Lasat: Fix compilation headers: taskstats_kern.h trim Fix "W" macro in arch/arm/include/asm/unified.h acpi: switch /proc/acpi/{debug_layer,debug_level} to seq_file kernel/profile.c: Switch /proc/irq/prof_cpu_mask to seq_file const: make struct super_block::dq_op const const: make struct super_block::s_qcop const const: mark remaining super_operations const const: mark remaining export_operations const const: mark remaining address_space_operations const const: mark remaining inode_operations as const const: make file_lock_operations const const: make lock_manager_operations const const: make block_device_operations const oom: move oom_killer_enable()/oom_killer_disable to where they belong pcmcia: switch /proc/bus/pccard/drivers to seq_file viafb: switch to seq_file headers: utsname.h redux sysctl: remove "struct file *" argument of ->proc_handler aio: ifdef fields in mm_struct gru: use proc_create() headers: kref.h redux const: mark struct vm_struct_operations Alexey Starikovskiy (4): ACPICA: Don't switch task then not allowed ACPI: EC: Merge IRQ and POLL modes ACPI: EC: use BURST mode only for MSI notebooks ACPI: EC: Drop orphan comment Alistair John Strachan (1): hwmon: (abituguru3) Support multiple DMI strings per chip ID Alok Kataria (1): x86: Print the hypervisor returned tsc_khz during boot Amerigo Wang (7): x86, 32-bit: Use generic sys_pipe() SLUB: Fix some coding style issues selinux: adjust rules for ATTR_FORCE vfs: allow file truncations when both suid and write permissions set x86: Fix an incorrect argument of reserve_bootmem() kcore: fix /proc/kcore's stat.st_size elf: clean up fill_note_info() Amit Kucheria (3): mfd: Add support for TWL4030/5030 dynamic power switching mfd: Print warning for twl4030 out-of-order script loading mfd: OMAP: Board-specifc twl4030 DPS scripts for RX51 board Amit Kumar Salecha (8): netxen: support for ethtool set ringparam netxen: implement pci driver shutdown netxen: fix ip addr hashing after firmware reset netxen: pre calculate register addresses netxen: fix check for ip addr hashing support netxen: fix tx descriptor structure netxen: change firmware write size netxen: fix tx timeout recovery Amit Shah (3): KVM: ignore reads to perfctr msrs Documentation: Update KVM list email address virtio_net: Check for room in the vq before adding buffer Anand Gadiyar (7): MUSB: Remove usb_musb_pm_init() call trivial: OHCI: Fix typo in a comment trivial: fix typo "for for" in multiple files trivial: fix typo "to to" in multiple files USB: EHCI: OHCI: Remove unnecessary includes of reboot.h USB: OMAP: ISP1301: Compile fix OMAP: HSMMC: do not enable buffer ready interrupt if using DMA Anders Kaseorg (1): x86: fix fragile computation of vsyscall address Andi Kleen (38): x86: mce: Make CONFIG_X86_ANCIENT_MCE dependent on CONFIG_X86_MCE x86: mce: Update X86_MCE description in x86/Kconfig x86: mce: Remove old i386 machine check code x86: mce: Rename CONFIG_X86_NEW_MCE to CONFIG_X86_MCE x86: mce: Move code in mce.c x86: mce: Move per bank data in a single datastructure x86: mce: macros to compute banks MSRs x86: mce: Lower maximum number of banks to architecture limit TCP: Add comments to (near) all functions in tcp_output.c v3 PCI: disable pci_find_device warnings when deprecated pci functions are enabled x86, mce: Fix compilation with !CONFIG_DEBUG_FS in mce-severity.c HWPOISON: Add page flag for poisoned pages HWPOISON: Export some rmap vma locking to outside world HWPOISON: Add support for poison swap entries v2 HWPOISON: Add new SIGBUS error codes for hardware poison signals HWPOISON: Add basic support for poisoned pages in fault handler v3 HWPOISON: Add poison check to page fault handling HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2 HWPOISON: Use bitmask/action code for try_to_unmap behaviour HWPOISON: Handle hardware poisoned pages in try_to_unmap HWPOISON: Define a new error_remove_page address space op for async truncation HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process HWPOISON: The high level memory error handler in the VM v7 HWPOISON: Enable .remove_error_page for migration aware file systems HWPOISON: Enable error_remove_page for NFS HWPOISON: Add madvise() based injector for hardware poisoned pages v4 HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs HWPOISON: Enable error_remove_page on btrfs PCI: Disable AER with pci=nomsi x86: Remove final bits of CONFIG_X86_OLD_MCE kbuild: Check if linker supports the -X option kbuild: echo the record_mcount command kbuild: set -fconserve-stack option for gcc 4.5 kbuild: fail build if recordmcount.pl fails Documentation/memory.txt: remove some very outdated recommendations kmap_types.h: rename D macro vfs: optimization for touch_atime() vfs: optimize touch_time() too Andiry Brienza (1): ALSA: hda - Add support for new AMD HD audio devices Andre Draszik (3): sh: ratelimit unaligned fixups sh: Allow user control over misaligned fixup handling sh: cleanup of do_address_error() Andre Maasikas (1): drm/radeon/r600: set correct pitch for 4 byte copy Andre Prendel (2): hwmon: Add driver for Texas Instruments TMP421/422/423 sensor chips hwmon: (tmp421) Add documentation Andre Przywara (15): KVM: SVM: use explicit 64bit storage for sysenter values KVM: Move performance counter MSR access interception to generic x86 path KVM: Allow emulation of syscalls instructions on #UD KVM: x86 emulator: Add missing EFLAGS bit definitions KVM: x86 emulator: Prepare for emulation of syscall instructions KVM: x86 emulator: add syscall emulation KVM: x86 emulator: Add sysenter emulation KVM: x86 emulator: Add sysexit emulation KVM: ignore AMDs HWCR register access to set the FFDIS bit KVM: ignore reads from AMDs C1E enabled MSR KVM: introduce module parameter for ignoring unknown MSRs accesses KVM: Ignore PCI ECS I/O enablement KVM: handle AMD microcode MSR KVM: fix MMIO_CONF_BASE MSR access KVM: add module parameters documentation Andrea Arcangeli (1): ksm: fix deadlock with munlock in exit_mmap Andreas Dilger (2): jbd2: round commit timer up to avoid uncommitted transaction JBD: round commit timer up to avoid uncommitted transaction Andreas Herrmann (18): sched: Use structure to store local data in __build_sched_domains sched: Separate out allocation/free/goto-hell from __build_sched_domains sched: Separate out build of NUMA sched domain from __build_sched_domains sched: Separate out build of CPU sched domain from __build_sched_domains sched: Separate out build of MC sched domain from __build_sched_domains sched: Separate out build of SMT sched domain from __build_sched_domains sched: Separate out build of SMT sched groups from __build_sched_domains sched: Separate out build of MC sched groups from __build_sched_domains sched: Separate out build of CPU sched groups from __build_sched_domains sched: Separate out build of ALLNODES sched groups from __build_sched_domains sched: Separate out build of NUMA sched groups from __build_sched_domains sched: Consolidate definition of variable sd in __build_sched_domains x86: Fix CPU llc_shared_map information for AMD Magny-Cours x86, cacheinfo: Fixup L3 cache information for AMD multi-node processors x86, mcheck: Use correct cpumask for shared bank4 x86, sched: Workaround broken sched domain creation for AMD Magny-Cours x86, EDAC: Provide function to return NodeId of a CPU x86, mce: Fix compile warning in case of CONFIG_SMP=n Andreas Mohr (4): ALSA: azt3328: fix Kconfig entry ALSA: azt3328: large codec cleanup, add I2S port etc. ALSA: azt3328: fix previous breakage, improve suspend, cleanups V4L/DVB (13003): Correct dangerous and inefficient msecs_to_jiffies() calculation in some V4L2 drivers Andreas Oberritter (2): V4L/DVB (12275): Add two new ioctls: DMX_ADD_PID and DMX_REMOVE_PID V4L/DVB (12276): Remove a useless check from dvb_dmx_swfilter_packet() Andreas Schlick (1): ext4: Always set dx_node's fake_dirent explicitly. Andres Salomon (3): Revert "power: remove POWER_SUPPLY_PROP_CAPACITY_LEVEL" olpc_battery: Add an 'error' sysfs device that displays raw errors power_supply: Add a charge_type property, and use it for olpc driver Andrew Morton (13): arch/x86/oprofile/op_model_amd.c: fix op_amd_handle_ibs() return type driver core: platform_device_add_data(): use kmemdup() sched: Fix raciness in runqueue_is_locked() drivers/dma/ioat/dma_v2.c: fix warnings net: fix CONFIG_NET=n build on sparc64 drivers/media/dvb/pt1/pt1.c needs vmalloc.h drivers/mfd/ab3100-core.c: fix powerpc build error include/linux/kmemcheck.h: fix a trillion warnings drivers/video/tmiofb.c: fix uninitialised return value include/linux/cred.h: fix build drivers/usb/serial/sierra.c: fix CONFIG_PM=n build procfs: disable per-task stack usage on NOMMU hugetlb_file_setup(): use C, not cpp Andrew Price (1): rt2x00: fix the definition of rt2x00crypto_rx_insert_iv Andrew Vasquez (8): [SCSI] qla2xxx: Correctly handle 'global port-unavailable' AEN. [SCSI] qla2xxx: ISP21xx/22xx do not support FDMI registrations. [SCSI] qla2xxx: Correct display of vp_count in debug printk. [SCSI] qla2xxx: Generalize srb structure usage. [SCSI] qla2xxx: Add asynchronous-login support. [SCSI] qla2xxx: Further limit device-table (qla_devtbl) lookup to non-24xx. [SCSI] qla2xxx: Correct various NPIV issues. [SCSI] qla2xxx: Properly delete rports attached to a vport. Andrew Victor (1): ARM: 5719/1: [AT91] Fix AC97 breakage Andrey Yurovsky (7): libertas: remove ps_supported flag, use fwcapinfo libertas: copy WPA keys to priv when associating libertas: correct card cleanup order in SPI driver libertas: fix card cleanup order in SDIO driver libertas: check valid bits in SPI bus mode reg mac80211: Use correct sign for mesh active path refresh. libertas: don't use dynamic-sized array Andrzej Hajda (1): V4L/DVB (12465): cx88: High resolution timer for Remote Controls Andy Adamson (16): nfsd41: use globals for DRC limits nfsd41: reclaim DRC memory on session free nfsd41: minor set_forechannel_maxreqs cleanup nfsd41: reserve less memory for DRC nfsd41: hange from page to memory based drc limits nfsd41: remove redundant forechannel max requests check nfsd41: change check_slot_seqid parameters nfsd41: Use separate DRC for setclientid nfsd41: rename nfsd4_enc_uncached_replay nfsd41: encode replay sequence from the slot values nfsd41: expand solo sequence check nfsd41: bound forechannel drc size by memory usage nfsd41: use session maxreqs for sequence target and highest slotid nfsd41: replace nfserr_resource in pure nfs41 responses nfsd41: replace page based DRC with buffer based DRC nfsd41: Backchannel: callback infrastructure Andy Grover (20): RDS: Set retry_count to 2 and make modifiable via modparam RDS/IB: Improve RDS protocol version checking RDS/IB: Handle connections using RDS 3.0 wire protocol RDS/IB: Fix printk to indicate remote IP, not local RDS/RDMA: Fix cut-n-paste errors in printks in rdma_transport.c RDS/IB: Rename byte_len to data_len to enhance readability RDS: Don't set c_version in __rds_conn_create() RDS/IB: Move tx/rx ring init and refill to later RDS/IB: Disable flow control in sysctl and explain why RDS/IB: Drop connection when a fatal QP event is received RDS: Fix completion notifications on blocking sockets RDS/IB: Always use PAGE_SIZE for FMR page size RDS/IW: Remove page_shift variable from iwarp transport RDS/IW: Remove dead code RDS: Refactor end of __conn_create for readability RDS: Add TCP transport to RDS RDS: Export symbols from core RDS RDS: Modularize RDMA and TCP transports RDS: Track transports via an array, not a list RDS: Add a debug message suggesting to load transport modules Andy Walls (11): V4L/DVB (12207): cx18: Add an EEPROM dump routine for the Yuan MPC718 and future cards V4L/DVB (12209): ivtv: Add card entry for AVerMedia UltraTV 1500 MCE (M113 variant) V4L/DVB (12210): ivtv: Fix automatic detection of AVerMedia UltraTV 1500MCE. V4L/DVB (12334): tuner-simple: Add an entry for the Partsnic PTI-5NF05 NTSC tuner V4L/DVB (12335): ivtv: Fix errors in AVerTV M113 card definitions and add a new M113 card V4L/DVB (12336): ivtv: Fix improper GPIO audio mux input switch on video standard change V4L/DVB (12366): ir-kbd-i2c: Allow use of ir-kdb-i2c internal get_key funcs and set ir_type V4L/DVB (12367): cx18: Add i2c initialization for Z8F0811/Hauppage IR transceivers V4L/DVB (12368): ir-kbd-i2c: Add support for Z8F0811/Hauppage IR transceivers V4L/DVB (12699): cx18: ir-kbd-i2c initialization data should point to a persistent object V4L/DVB (12884): cx18: Eliminate warning about discarding 'const' is assignment for IR init Andy Whitcroft (5): checkpatch: possible types -- else cannot start a type checkpatch: indent checks -- stop when we run out of continuation lines checkpatch: format strings should not have brackets in macros checkpatch: limit sN/uN matches to actual bit sizes checkpatch: version 0.29 Aneesh Kumar K.V (7): ext4: Fix memory leak fix when mounting an ext4 filesystem ext4: Add missing unlock_new_inode() call in extent migration code ext4: Allow rename to create more than EXT4_LINK_MAX subdirectories ext4: Take page lock before looking at attached buffer_heads flags ext4: move ext4_mb_init_group() function earlier in the mballoc.c ext4: check for need init flag in ext4_mb_load_buddy ext4: Clarify the locking details in mballoc Anil Ravindranath (1): [SCSI] pmcraid: PMC-Sierra MaxRAID driver to support 6Gb/s SAS RAID controller Anil Veerabhadrappa (6): [SCSI] bnx2i: remove global variable bnx2i_reg_devices [SCSI] bnx2i: bug fixes in bnx2i_init_one to handle error conditions [SCSI] bnx2i: convert bnx2i_dev_lock to mutex [SCSI] bnx2i: register given device with cnic if shost != NULL in ep_connect() [SCSI] bnx2i : Fix command session number jump issue seen during cable pull test [SCSI] bnx2i : Fix "cid #n not valid" issue Anirban Chakraborty (2): [SCSI] qla2xxx: Fix a bug that clears the interrupt status register for the base queue [SCSI] qla2xxx: Fix to ensure driver works in sinlge queue mode if multiqueue fails Anirban Sinha (4): tracing: Eliminate code duplication in kernel/tracepoint.c sched: Rename init_cfs_rq => init_tg_cfs_rq cleanup console_print() Fix ia64 build breakage in head.S Anthony Liguori (1): KVM: When switching to a vm8086 task, load segments as 16-bit Anton Blanchard (9): powerpc: Move 64bit VDSO to improve context switch performance powerpc: Rearrange SLB preload code powerpc: Preload application text segment instead of TASK_UNMAPPED_BASE perf_event: Update PERF_EVENT_FORK header definition tracing/workqueue: Use %pf in workqueue trace events powerpc: Move 64bit heap above 1TB on machines with 1TB segments powerpc/perf_counter: Fix vdso detection powerpc: Increase NODES_SHIFT on 64bit from 4 to 8 powerpc: Fix ibm,client-architecture-support printout Anton Vorontsov (33): ucc_geth: Add support for skb recycling netpoll: Introduce netpoll_carrier_timeout kernel option powerpc/83xx: Add support for MPC8377E-WLAN boards powerpc/85xx: Add support for I2C EEPROMs on MPC8548CDS boards powerpc/83xx: Add eSDHC support for MPC837xE-RDB/WLAN boards powerpc/85xx: Add eSDHC support for MPC8536DS boards powerpc/82xx: Fix BCSR bits for MPC8272ADS boards powerpc/82xx: Add CPM USB Gadget support for MPC8272ADS boards powerpc/85xx: Add QE USB support for MPC8569E-MDS boards ucc_geth: Fix NULL pointer dereference in uec_get_ethtool_stats() powerpc/qe: Implement qe_alive_during_sleep() helper function ucc_geth: Factor out MAC initialization steps into a call ucc_geth: Remove UGETH_MAGIC_PACKET Kconfig symbol and code ucc_geth: Implement suspend/resume and Wake-On-LAN support phy/marvell: Make non-aneg speed/duplex forcing work for 88E1111 PHYs ucc_geth: Rearrange some code to avoid forward declarations ucc_geth: Fix hangs after switching from full to half duplex 8250: Now honours baud rate lower bounds Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 USB: fsl_qe_udc: Add fsl,mpc8323-qe-usb compatible entry sdhci: be more strict with get_min_clock() usage sdhci-of: fix SD clock calculation sdhci-of: avoid writing reserved bits into host control register sdhci-of: fix high-speed cards recognition powerpc: introduce and document sdhci,wp-inverted property for eSDHC sdhci-of: don't hard-code inverted write-protect quirk sdhci-of: cleanup eSDHC's set_clock() a little bit spi: add support for device table matching of: remove "stm,m25p40" alias hwmon: adxx: convert to device table matching hwmon: lm70: convert to device table matching spi: prefix modalias with "spi:" 3c59x: Get rid of "Trying to free already-free IRQ" Antonio Ospite (5): leds: Fix indentation in LEDS_LP3944 Kconfig entry mfd: register ezx-pcap earlier regulator: register pcap earlier regulator: get pcap data from the parent device pxa2xx_spi: register earlier Antti Palosaari (9): V4L/DVB (12752): get_dvb_firmware: add af9015 firmware V4L/DVB (12754): af9015: [2/2] fix USB TS configuration V4L/DVB (12755): af9015: improve usb control message function slightly V4L/DVB (12756): af9015: fix typo in register compare V4L/DVB (12950): tuner-simple: add Philips CU1216L V4L/DVB (12951): em28xx: add Reddo DVB-C USB TV Box V4L/DVB (12959): anysee: increase BULK transfer size from 512 to 8192 V4L/DVB (12960): anysee: coding style fix V4L/DVB (12962): ce6230: increase BULK transfer size from 512 to 8192 Anuj Aggarwal (3): Regulator: Add TPS65023 regulator driver Regulator: Add TPS6507x regulator driver Regulator: Adding TPS65023 and TPS6507x in Kconfig and Makefile Ari Kauppi (2): wl12xx: Fix incorrect warning message. wl12xx: Fix CMD_TEST regression via netlink. Aric Blumer (1): USB: ohci-pxa27x: Allow NOCP and OCPM to be cleared Aric D. Blumer (1): USB: ohci-pxa27x: Reconfigure power settings on resume Arjan van de Ven (18): sched: Provide iowait counters perf: Add a timestamp to fork events perf: Store trace event name/id pairs in perf.data perf: Allow perf utilities to have "callback" options without arguments perf: Add a sample_event type to the event_union tracing, perf: Convert the power tracer into an event tracer perf: Add a SVG helper library file perf: Add the timechart tool perf timechart: Add "perf timechart record" perf utils: Be consistent about minimum text size in the svghelper tracing, x86, cpuidle: Move the end point of a C state in the power tracer perf: Add timechart help text and add timechart to "perf help" perf utils: Use a define for the maximum length of a trace event perf timechart: Show the name of the waker/wakee in timechart perf timechart: Show the duration of scheduler delays in the SVG perf util: Make the timechart SVG width dynamic perf util: SVG performance improvements cpuidle: fix the menu governor to boost IO performance Arnaldo Carvalho de Melo (3): x86, intel_txt: Fix typos in Kconfig help perf top: Show RIP only in verbose mode Subject: [PATCH] appletalk: Fix skb leak when ipddp interface is not loaded Arnd Bergmann (22): x86: add copies of some headers to convert to asm-generic x86: convert trivial headers to asm-generic version x86: convert almost generic headers to asm-generic version x86: convert termios.h to the asm-generic version x86: remove all now-duplicate header files score: unset __ARCH_WANT_IPC_PARSE_VERSION score: remove __{put,get}_user_unknown score: add generic sys_call_table score: remove init_mm score: add prototypes for wrapped syscalls score: add missing #includes score: add address space annotations score: fix function prototypes score: cleanups: dead code, 0 as pointer, shadowed variables score: make irq.h definitions local score: clean up mm/init.c sched: Add default defines for PREEMPT_ACTIVE dma-ops: Remove flush_write_buffers() in dma-mapping-common.h CRIS: add pgprot_noncached tty: handle VT specific compat ioctls in vt driver mm: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions mm: remove duplicate asm/mman.h files Arnd Hannemann (2): mac80211: Remove unnused throughput field from minstrel_rate. mac80211: Fix output of minstrels rc_stats Arputham Benjamin (2): mlx4_core: Distinguish multiple devices in /proc/interrupts IB/mthca: Distinguish multiple devices in /proc/interrupts Artem Bityutskiy (18): UBIFS: kill BKL UBIFS: remove unneeded call from ubifs_sync_fs UBI: print a message if ECH is corrupted and VIDH is ok UBI: amend NOR flash pre-erase quirk UBI: print a warning if too many PEBs are corrupted UBI: introduce flash dump helper UBI: improve NOR flash erasure quirk UBIFS: constify file and inode operations UBIFS: add inode size debugging check UBIFS: do not print scary error messages needlessly UBIFS: check ubifs_scan error codes better UBIFS: amend commentaries UBIFS: define journal head numbers in ubifs-media.h UBIFS: improve journal head debugging prints UBIFS: various minor commentary fixes UBIFS: improve lprops dump UBIFS: fix debugging dump Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into linux-next Arve HjønnevĂĄg (2): Staging: HTC Dream: touchscreen driver for staging Staging: dream: add support for input on GPIO pins Ashish Kalra (1): sata_fsl: Defer non-ncq commands when ncq commands active Ashwin Chaugule (1): hrtimer: Eliminate needless reprogramming of clock events device Atsushi Nemoto (11): ASoC: txx9aclc: dynamically allocate dmaengine devname tc35815: Disable StripCRC tc35815: Improve BLEx / FDAEx handling tc35815: Increase timeout for mdio tc35815: Fix rx_missed_errors count tc35815: Use 0 RxFragSize.MinFrag value for non-packing mode dmaengine: Move all map_sg/unmap_sg for slave channel to its client MIPS: TXx9: Disable PM capability of TX493[89] internal ether mtd: nand: add __nand_correct_data helper function mtd: nand: fix tmio_nand ecc correction mtd: nand: txx9ndfmc: transfer 512 byte at a time if possible Atsushi Tsuji (1): tracing: Fix minor bugs for __unregister_ftrace_function_probe Avi Kivity (37): KVM: x86 emulator: Implement zero-extended immediate decoding KVM: x86 emulator: fix jmp far decoding (opcode 0xea) KVM: Move common KVM Kconfig items to new file virt/kvm/Kconfig KVM: SVM: Fold kvm_svm.h info svm.c KVM: VMX: Avoid duplicate ept tlb flush when setting cr3 KVM: VMX: Simplify pdptr and cr3 management KVM: Cache pdptrs KVM: VMX: Fix reporting of unhandled EPT violations KVM: Calculate available entries in coalesced mmio ring KVM: Reorder ioctls in kvm.h KVM: VMX: Move rmode structure to vmx-specific code KVM: MMU: Fix is_dirty_pte() KVM: MMU: Adjust pte accessors to explicitly indicate guest or shadow pte KVM: MMU: s/shadow_pte/spte/ KVM: Return to userspace on emulation failure KVM: VMX: Only reload guest cr2 if different from host cr2 KVM: SVM: Don't save/restore host cr2 KVM: Trace irq level and source id KVM: Trace mmio KVM: Trace apic registers using their symbolic names KVM: MMU: Trace guest pagetable walker KVM: Document basic API KVM: Trace shadow page lifecycle KVM: VMX: Optimize vmx_get_cpl() x86: Export kmap_atomic_to_page() KVM: SVM: Drop tlb flush workaround in npt KVM: Move #endif KVM_CAP_IRQ_ROUTING to correct place KVM: VMX: Adjust rflags if in real mode emulation KVM: Rename x86_emulate.c to emulate.c KVM: Add __KERNEL__ guards to exported headers KVM: Add missing #include KVM: Protect update_cr8_intercept() when running without an apic KVM: Document KVM_CAP_IRQCHIP KVM: Optimize kvm_mmu_unprotect_page_virt() for tdp KVM: Use thread debug register storage instead of kvm specific data KVM: VMX: Conditionally reload debug register 6 KVM: VMX: Check cpl before emulating debug register access Axel K (6): Staging: rt3090: add device id 1462:891a Staging: rt2860: add new device ids Staging: rt2860/rt2870/rt3070/rt3090: fix compiler warning on x86_64 Staging: rt3090: remove possible conflict with rt2860 Staging: rt3090: rename device from raX to wlanX Staging: rt3090: port changes in WPA_MIX_PAIR_CIPHER to rt3090 Balaji Rao (1): mmc: in mmc_power_up(), use previously selected ocr if available Balbir Singh (7): memcg: remove the overhead associated with the root cgroup memory controller: soft limit documentation memory controller: soft limit interface memory controller: soft limit organize cgroups memory controller: soft limit refactor reclaim flags memory controller: soft limit reclaim on contention memcg: improve resource counter scalability Barry Song (21): ASoC: Blackfin: convert internal names from bf52x to bf5xx ASoC: new ad1938 codec driver based on asoc ASoC: blackfin I2S(TDM mode) CPU DAI driver ASoC: board driver to connect bf5xx with ad1938 ASoC: Fix checkpatch issues and typos of ad1938 codec and bf5xx-tdm dai ASoC: add output/input widgets in ad1938 to make dac/adc dynamic PM work new ad1836 codec driver based on asoc ASoC: delete -spi suffix in ad1938 and free private data while registers fail ASoC: new board driver to connect bfin-5xx with ad1836 codec Blackfin: bf537-stamp: add resources for AD1938 audio card Blackfin: bf538: add bfin_clear_PPI_STATUS() helper Blackfin: bf537-stamp: update AD714x resources Blackfin: bf537-stamp: drop ATA interrupt probe workaround Blackfin: cm-bf527/bf537-stamp: fix dm9000 resources Blackfin: bf538-ezkit: add resources for parallel flash Blackfin: bf537-stamp: update ad1836 resources Blackfin: delete '-spi' suffix in ad1836/ad1938 driver name Blackfin: bf538-ezkit: add SPI IRQ resources ASoC: fix typos in Blackfin headers ASoC: Blackfin I2S: add lost platform_device parameter to resume function ASoC: some minor changes for AD1836 and AD1938 codec drivers Bart Van Assche (2): workqueues: Improve schedule_work() documentation [SCSI] libsrp: fix memory leak in srp_ring_free() Bartlomiej Zolnierkiewicz (157): x86, mce: don't log boot MCEs on Pentium M (model == 13) CPUs x86, mce: fix "mce" boot option handling for CONFIG_X86_NEW_MCE x86, mce: add missing __cpuinit tags x86, mce: remove never executed code x86, mce: fix reporting of Thermal Monitoring mechanism enabled x86: Remove superfluous NULL pointer check in destroy_irq() ide: allow ide_dev_read_id() to be called from the IRQ context ide: fix races in handling of user-space SET XFER commands irq: Remove superfluous NULL pointer check in check_irq_resend() nfs: remove superfluous BUG_ON()s ALSA: ali5451: remove dead code fujitsu-laptop: remove superfluous NULL pointer checks fujitsu-laptop: driver [un]registration fixes KVM: remove superfluous NULL pointer check in kvm_inject_pit_timer_irqs() Staging: rt28[67]0: remove unused md4.h Staging: rtl8187se/ieee80211: remove unused files Staging: rtl8192su/ieee80211: remove unused files Staging: rtl8187se: remove duplicate dot11d.h and ieee80211.h includes Staging: rtl8192su: remove duplicate dot11d.h and ieee80211.h includes Staging: rtl8187se: remove unused ieee80211_crypt.h Staging: rtl8192su: remove unused ieee80211_crypt.h Staging: rtl8187se: remove kernel version compatibility wrappers Staging: rtl8187se: remove support for older wireless extensions Staging: rtl8187se/ieee80211: remove dead _RTL8187_EXT_PATCH_ code Staging: rtl8187se/ieee80211: remove superfluous ieee80211_* defines Staging: rtl8187se/ieee80211: remove unused dump_chnl_map() Staging: rtl8187se/ieee80211: remove superfluous JOHN_* ifdefs Staging: rtl8192su: remove kernel version compatibility wrappers Staging: rtl8192su: remove support for older wireless extensions Staging: rtl8192su/ieee80211: remove unused _ReasonCode enums Staging: rtl8192su/ieee80211: switch to use Staging: rtl8192su: add TODO Staging: rtl8187se: add TODO Staging: rtl8187se: remove ENABLE_DOT11D ifdefs Staging: rtl8187se: remove CONFIG_RTL8180_PM ifdefs Staging: rtl8187se: remove THOMAS_TURBO ifdefs Staging: rtl8187se: remove CONFIG_RTL818x_S ifdefs Staging: rtl8187se: remove CONFIG_RTL8185B ifdefs Staging: rtl8187se: remove CONFIG_RTL8180_IO_MAP ifdefs Staging: rtl8187se: remove dead code Staging: rtl8187se: remove unused radio frontends Staging: rtl8187se: remove debugging code from r8180_core.c Staging: rtl8187se: remove unused rtl8225_rf_* functions Staging: rtl8187se: cleanup r8180_rtl8225.c Staging: rtl8187se: merge r8180_rtl8225.c with r8180_rtl8225z2.c Staging: rtl8187se: cleanup r8180_pm.c Staging: rtl8187se: merge r8180_pm.c with r8180_core.c Staging: rtl8187se: remove unused definitions from r8180_hw.h Staging: rtl8187se: remove unused definitions from r8180.h Staging: rtl8187se: cleanup r8180_rtl8225z2.c Staging: rtl8187se: cleanup r8180_core.c Staging: add rt3090 wireless driver Staging: rtl8192su: remove ENABLE_DOT11D ifdefs Staging: rtl8192su: remove CONFIG_RTL8192_PM ifdefs Staging: rtl8192su: remove THOMAS_TURBO ifdefs Staging: rtl8192su: remove USE_ONE_PIPE ifdefs Staging: rtl8192su: remove EEPROM_OLD_FORMAT_SUPPORT ifdefs Staging: rtl8192su: remove USB_RX_AGGREGATION_SUPPORT ifdefs Staging: rtl8192su: remove USB_TX_DRIVER_AGGREGATION_ENABLE ifdefs Staging: rtl8192su: remove RTL8192SU_DISABLE_CCK_RATE ifdefs Staging: rtl8192su: remove RTL8192S_DISABLE_FW_DM ifdefs Staging: rtl8192su: remove DISABLE_BB_RF ifdefs Staging: rtl8192su: remove RTL8192SU_USE_PARAM_TXPWR ifdefs Staging: rtl8192su: remove RTL8192SU_FPGA_UNSPECIFIED_NETWORK ifdefs Staging: rtl8192su: remove RTL8192SU_FPGA_2MAC_VERIFICATION ifdefs Staging: rtl8192su: remove RTL8192SU_ASIC_VERIFICATION ifdefs Staging: rtl8192su: remove RTL8192SU_USB_PHY_TEST ifdefs Staging: rtl8192su: remove RTL8190_Download_Firmware_From_Header ifdefs Staging: rtl8192su: remove RTL8192S_PREPARE_FOR_NORMAL_RELEASE ifdefs Staging: rtl8192su: remove RTL8192SU_DISABLE_IQK ifdefs Staging: rtl8192su: remove RTL8192SE ifdefs Staging: rtl8192su: remove RTL8192SU ifdefs Staging: rtl8192su: remove unused files Staging: rtl8192su: remove dead code Staging: vt6655: remove PRIVATE_OBJ ifdefs Staging: vt6655: remove unused Makefile.{arm,x86} files Staging: rtl8187se/ieee80211: remove OPENSUSE_SLED ifdefs Staging: rtl8187se/ieee80211: remove FEDORACORE_9 ifdef Staging: rtl8187se/ieee80211: remove NOT_YET ifdefs Staging: rtl8187se: remove ENABLE_IPS ifdefs Staging: rtl8187se: rename struct ieee80211_hdr to struct ieee80211_hdr_4addr Staging: rtl8187se: rename struct ieee80211_hdr_3addr_qos to struct ieee80211_hdr_3addrqos Staging: rtl8187se: rename struct ieee80211_hdr_QOS to struct ieee80211_hdr_4addrqos Staging: rtl8187se/ieee80211: switch to use Staging: rtl8187se/ieee80211: ieee80211.h reorderings Staging: rtl8187se/ieee80211: convert MMIE_TYPE_* defines to enums Staging: rtl8192su: remove more unused files Staging: rtl8192su: make private ieee80211 stack really private Staging: rtl8192su: remove JOHN_DUMP[_TXDESC] ifdefs Staging: rtl8192su/ieee80211: remove OPENSUSE_SLED ifdefs Staging: rtl8192su/ieee80211: remove superfluous container_of definition Staging: rtl8192su: remove NOT_YET ifdefs Staging: rtl8192su/ieee80211: remove unused IEEE80211_PRINT_STR() Staging: rtl8192su/ieee80211: remove unused ieee80211_wx_get_encode_ext() Staging: rtl8192su/ieee80211: ieee80211.h cleanups Staging: rtl8192su/ieee80211: move rtl8192su specific code out from ieee80211.h Staging: vt6655: add TODO Staging: vt6656: add TODO Staging: rt2870: duplicated code is executed twice in AsicEvaluateRxAnt() Staging: rt3070: fix build warnings Staging: rtxxx0: remove support for older wireless extensions Staging: rtxxx0: remove dead platform specific code Staging: rtxxx0: kill RT8270_USB_DEVICES() macro Staging: rtxxx0: PID checking fixes Staging: rt3070: kill TimerQThr thread first in RT28xxThreadTerminate() Staging: rtxxx0: kill PID macros Staging: rtxxx0: remove unused defines Staging: rtxxx0: unify different RT30xx{Read,Write}RFRegister() flavors Staging: rtxxx0: remove superfluous RT30xx ifdefs Staging: rtxxx0: unify RT{USB,MP}FilterCalibration() Staging: rtxxx0: unify MlmeCheckPsmChange() Staging: rtxxx0: unify AsicEvaluateRxAnt() Staging: rtxxx0: remove dead DBG_DIAGNOSE code Staging: rtxxx0: remove dead virtual adapter support Staging: rtxxx0: debug messages fixes Staging: rtxxx0: remove unused link_list.h Staging: rtxxx0: remove superfluous function prototypes Staging: rtxxx0: remove private debugging ioctls Staging: rtxxx0: remove private ioctls Staging: rtxxx0: remove unused code Staging: rtxxxx: unify AsicRxAntEvalTimeout() Staging: rtxxxx: unify AsicSwitchChannel() Staging: rtxx70: unify NICInitRT30xxRFRegisters() Staging: rtxxxx: RTMPGetRalinkAuthModeStr() fixes Staging: rt3070: update allowed channels list for Japan Staging: rt3070: fix PID checking in RTUSBEnqueueCmdFromNdis() Staging: rt3070: WEP fixes Staging: rt3070: AsicSetSlotTime() fix Staging: rt3070: remove needless EFUSE_TAG register read Staging: rt3070: add remaining rt2870 device ids Staging: rt2870: use internal command for AsicUpdateProtect() Staging: rt2870: add fRTUSB_BULK_OUT_DATA_NORMAL_5 quirk Staging: rt28x0: add SIOCGIWNAME support to rt_ioctl_giwscan() Staging: rt28x0: fix GTK length check in ParseKeyData() Staging: rt28x0: fix BPP_R66 register handling Staging: rt28x0: fix fOP_STATUS_DOZE flag handling Staging: rt28x0 fix BACapability policy handling Staging: rt28x0: AsicSwitchChannel() fix Staging: rt28x0: BssTableSetEntry() fix Staging: rt28x0: MlmeSelectTxRateTable() fix Staging: rt28x0: MlmeCheckPsmChange() fix Staging: rt28x0: MlmeAssocReqAction() fixes for wpa_supplicant support Staging: rt28x0: rt_ioctl_siwencode() fixes Staging: rt28x0: LinkUp() fixes Staging: rt3070: remove unused MiniportDataMMRequest() Staging: rt3070: remove unused RT_CMD_SET_* internal commands Staging: rt2870: remove SHOW_ADHOC_ENTRY_INFO support Staging: rtxxxx: remove unused AsicAntenna{Select,Setting}() Staging: rt2870: add eFuse support Staging: rt2870: add Antenna Diversity support Staging: rtxx70: merge rt3070 with rt2870 Staging: rt2870: remove old firmware Staging: remove no longer needed rt3070 driver Staging: rt3090: enable NATIVE_WPA_SUPPLICANT_SUPPORT option MAINTAINERS: remove dead ncpfs list ncpfs: remove dead URL from documentation ncpfs: fix wrong check in __ncp_ioctl() Bastian Blank (1): powerpc: Remove SMP warning from PowerMac cpufreq Becky Bruce (3): powerpc: Name xpn & x fields in HW Hash PTE format powerpc: Rename get_dma_direct_offset get_dma_offset powerpc: Change archdata dma_data to a union Beholder Intl. Ltd. Dmitry Belimov (1): V4L/DVB (12419): Fix incorrect type of tuner for the BeholdTV H6 card Ben Blum (5): cgroups: add a read-only "procs" file similar to "tasks" that shows only unique tgids cgroups: ensure correct concurrent opening/reading of pidlists across pid namespaces cgroups: use vmalloc for large cgroups pidlist allocations cgroups: change css_set freeing mechanism to be under RCU cgroups: let ss->can_attach and ss->attach do whole threadgroups at a time Ben Dooks (49): ARM: S3C: Update hwmon device definition and name ARM: BAST: Add hwmon device information ARM: S3C: Add ADC synchronous read call. ARM: HWMON: S3C24XX series ADC driver ARM: S3C24XX: Add BWSCON per-bank information. ARM: S3C24XX: CPUFREQ: Add core support. ARM: S3C: CPUFREQ: Documentation for cpufreq header ARM: S3C: CPUFREQ: Move struct s3c_cpufreq_config to cpu-freq-core.h ARM: Add ARCH_HAS_CPUFREQ for presence of CPUFREQ driver ARM: Add S3C24XX to CPUFreq KConfig ARM: S3C2410: CPUFREQ: Add io-timing support. ARM: S3C2410: CPUFREQ: Add core support. ARM: S3C2410: CPUFREQ: Add PLL table ARM: S3C2440: CPUFREQ: Add core support. ARM: S3C2440: CPUFREQ: Add PLL tables ARM: S3C2440: CPUFREQ: Add crystal frequency Kconfig entries. ARM: OSIRIS: CPUFREQ: Add CPU frequency scaling support ARM: S3C2412: CPUFREQ: Add core support. ARM: PL093: Header file for PL093 SSMC PrimeCell ARM: S3C: Update CPU register mapping practices. ARM: S3C2412: Update memory register mapping and definitions ARM: S3C24XX: CPUFREQ: S3C2412/S3C2443 IO timing support ARM: S3C2410: Add S3C2410A sysdev. ARM: BAST: CPUFREQ: Add board support ARM: S3C2410: Add armclk for cpufreq support ARM: S3C: CPUFREQ: Add documentation for system ARM: S3C: CPUFREQ: Add debugfs support for cpufreq ARM: S3C24XX: Add FIQ IRQ routing support ARM: S3C24XX: Add SPI bus 1 on GPD8 through GPD10 Merge branch 'next-s3c-hwmon' into next-s3c Merge branch 'next-s3c-machines' into next-s3c Merge branch 'next-s3c24xx' into next-s3c Merge branch 'next-s3c24xx-cpufreq' into next-s3c Merge branch 'next-s3c64xx' into next-s3c Merge branch 'next-s3c64xx-moves' into next-s3c ARM: S3C: Add S3C_DEV_NAND Kconfig entry ARM: Show FIQ in /proc/interrupts on CONFIG_FIQ ASoC: S3C24XX: Add audio core and tlv320aic23 for Simtec boards ASoC: tlv320aic3x: Change to use device model ASoC: tlv320aic3x: fixup board device changes ASoC: S3C24XX: Support for Simtec Hermes boards ARM: S3C: Add missing selection of S3C_DEV_NAND in machine Kconfigs. Merge branch 'next-s3c64xx-fixes' into next-s3c-fixes spi: fix spelling of `automatically' in documentation spi_s3c24xx: fix header includes spi_s3c24xx: use resource_size() to get resource size spi_s3c24xx: use dev_pm_ops spi_s3c24xx: cache device setup data s3c2410fb: fix clockrate calculation Ben Gamari (9): drm/i915: Move i915_gem_debugfs.c to i915_debugfs.c drm/i915: Add i915 register dumping debugfs file drm/i915: Check whether chip is wedged in i915_wait_request() drm/i915: Refactor save/restore code drm/i915: make i915_seqno_passed non-static drm/i915: Add hangcheck timer drm/i915: Implement GPU reset on i965 drm/i915: Hookup chip reset in error handler drm/i915: Make dev_priv->mm.wedged an atomic_t Ben Greear (1): veth: Zero timestamp in xmit path. Ben Hutchings (16): mdio: mdio_if_info::mmds should not be __bitwise sfc: Fix ordering of device registration and initial netif_carrier_off() sfc: Do not reinitialise XAUI serdes before it has completed reset mdio: Check MDIO_STAT1_FAULT in mdio45_links_ok() sfc: QT2025C: Use hard reset only sfc: Work around XMAC bug causing packet loss with some peers sfc: Improve reliability of RX queue flushing drm/mga: Use request_firmware() to load microcode drm/r128: Use request_firmware() to load CCE microcode radeon: Use request_firmware() drm/r128: Add test for initialisation to all ioctls that require it netdev: Remove SIOCDEVPRIVATE aliases for MDIO ioctls netdev: Remove redundant checks for CAP_NET_ADMIN in MDIO implementations netdev: Convert MDIO ioctl implementation to use struct mii_ioctl_data x86: Fix code patching for paravirt-alternatives on 486 Staging: rt{2860,2870,3070}sta: Remove unused CRC code Ben Skeggs (1): drm: update crtc x/y when only fb changes Benjamin Herrenschmidt (42): powerpc: Rename exception.h to exception-64s.h powerpc: Use names rather than numbers for SPRGs (v2) powerpc: Remove use of a second scratch SPRG in STAB code powerpc/mm: Fix definitions of FORCE_MAX_ZONEORDER in Kconfig powerpc/pmac: Fix PowerSurge SMP IPI allocation powerpc: Change PACA from SPRG3 to SPRG1 powerpc: Add compat_sys_truncate powerpc/mm: Fix misplaced #endif in pgtable-ppc64-64k.h powerpc/of: Remove useless register save/restore when calling OF back powerpc/mm: Add HW threads support to no_hash TLB management powerpc/mm: Add opcode definitions for tlbivax and tlbsrx. powerpc/mm: Add more bit definitions for Book3E MMU registers powerpc/mm: Add support for early ioremap on non-hash 64-bit processors powerpc: Modify some ppc_asm.h macros to accomodate 64-bits Book3E powerpc/mm: Make low level TLB flush ops on BookE take additional args powerpc/mm: Call mmu_context_init() from ppc64 powerpc: Clean ifdef usage in copy_thread() powerpc: Move definitions of secondary CPU spinloop to header file powerpc/mm: Rework & cleanup page table freeing code path powerpc: Add SPR definitions for new 64-bit BookE powerpc: Add memory management headers for new 64-bit BookE powerpc: Add definitions used by exception handling on 64-bit Book3E powerpc: Add PACA fields specific to 64-bit Book3E processors powerpc/mm: Move around mmu_gathers definition on 64-bit powerpc: Add TLB management code for 64-bit Book3E powerpc/mm: Add support for SPARSEMEM_VMEMMAP on 64-bit Book3E powerpc: Remaining 64-bit Book3E support powerpc/mm: Fix encoding of page table cache numbers Merge commit 'paulus-perf/master' into next Merge commit 'origin/master' into next powerpc/mm: Cleanup handling of execute permission Merge commit 'kumar/next' into next Merge commit 'tip/iommu-for-powerpc' into next powerpc: Properly start decrementer on BookE secondary CPUs powerpc: Fix some late PowerMac G5 with PCIe ATI graphics PCI/GPU: implement VGA arbitration on Linux powerpc/booke: Don't set DABR on 64-bit BookE, use DAC1 instead powerpc/iseries: Fix oops reading from /proc/iSeries/mf/*/cmdline mm: kmem_cache_create(): make it easier to catch NULL cache names powerpc/pmc: Don't access lppaca on Book3E powerpc/mm: Fix 40x and 8xx vs. _PAGE_SPECIAL Fix build of cpm_uart due to core changes Benjamin Krill (2): powerpc/prom_init: Evaluate mem kernel parameter for early allocation mtd: ofpart: Check availability of reg property instead of name property Benjamin LaHaise (7): vxge: don't drop frame on tx queue full vxge: fix pktgen hangs (don't abuse skb->cb[]) vxge: improve tx performance by using mmiowb() instead of wmb() vxge: prefetch RxD descriptors vxge: prefetch skb->data vxge: Version update intel-iommu: Fix integer wrap on 32 bit kernels Benny Halevy (27): nfsd41: gather and report statistics also for v4.1 ops sunrpc: hton -> cpu_to_be* sunrpc: ntoh -> be*_to_cpu nfs: nfs4xdr: get rid of WRITE32 nfs: nfs4xdr: get rid of WRITE64 nfs: nfs4xdr: get rid of WRITEMEM nfs: nfs4xdr: optimize RESERVE_SPACE in encode_create_session and encode_sequence nfs: nfs4xdr: encode_compound_hdr does not have to round up reserved bytes nfs: nfs4xdr: change RESERVE_SPACE macro into a static helper nfs: nfs4xdr: optimize low level encoding nfs: nfs4xdr: merge xdr_encode_int+xdr_encode_opaque_fixed into xdr_encode_opaque nfs: nfs4xdr: get rid of READ32 nfs: nfs4xdr: get rid of READ64 nfs: nfs4xdr: get rid of READTIME nfs: nfs4xdr: introduce print_overflow_msg nfs: nfs4xdr: introduce decode_opaque_fixed and decode_stateid helpers nfs: nfs4xdr: introduce decode_verifier helper nfs: nfs4xdr: introduce decode_sessionid helper nfs: nfs4xdr: get rid of COPYMEM nfs: nfs4xdr: simplify decode_exchange_id by reusing decode_opaque_inline nfs: nfs4xdr: get rid of READ_BUF nfs: nfs4xdr: optimize low level decoding nfsd41: renew_client must be called under the state lock nfsd41: sunrpc: move struct rpc_buffer def into sunrpc.h nfsd4: fix whitespace in NFSPROC4_CLNT_CB_NULL definition nfsd41: Backchannel: cb_sequence callback sunrpc: xdr_xcode_hyper helpers cannot presume 64-bit alignment Benoit PAPILLAULT (1): rt2x00: Add support for retry rates Bernd Schmidt (2): Blackfin: add ICPLB coverage for async banks nommu: add support for Memory Protection Units (MPU) Beth Kon (1): KVM: PIT support for HPET legacy mode Bhaskar Dutta (1): sctp: Sysctl configuration for IPv4 Address Scoping Bill Pemberton (39): Staging: hv: Use %ld instead of %d for a long ints Staging: hv: Remove C99 comments Staging: hv: StorVsc.c: fix print formatting Staging: hv: blkvsc_drv.c: fix print formatting Staging: hv: fix blkvsc_open() parameters Staging: hv: fix blkvsc_release() parameters Staging: hv: fix blkvsc_ioctl() parameters Staging: hv: Remove X2V_LINUX check Staging: hv: NetVsc.c: fix print formatting Staging: hv: RndisFilter.c: fix print formatting Staging: hv: storvsc_drv.c: fix print formatting Staging: hv: vmbus_drv.c: fix print formatting Staging: hv: check return value of bus_register() Staging: hv: check return value of device_register() Staging: hv: vmbus_drv.c: remove unused structs Staging: hv: Hv.c: remove unused physAddr Staging: hv: remove VMBUS_CHANNEL_PACKET_PAGE_BUFFER typedef Staging: hv: remove VMBUS_CHANNEL_PACKET_MULITPAGE_BUFFER typedef Staging: hv: remove VMBUS_CONNECT_STATE typedef Staging: hv: remove VMBUS_CONNECTION typedef Staging: hv: remove VMBUS_MSGINFO typedef Staging: hv: remove NETVSC_DEVICE typedef Staging: hv: Remove WORKQUEUE typedef Staging: hv: check return value of driver_for_each_device() Staging: hv: comment out blkdev variable in blkvsc_ioctl Staging: hv: remove WAITEVENT typedef Staging: hv remove TIMER typedef Staging: hv: remove HANDLE typedef Staging: hv: rework use of workqueues in osd Staging: hv: remove WaitEventClose() Staging: hv: remove wrapper functions for bit operations Staging: hv: remove wrapper functions for atomic operations Staging: hv: remove wrapper function VirtualFree Staging: hv: remove wrapper functions around kmap_ Staging: hv: remove use of internal list routines in NetVsc Staging: hv: remove more usages of internal list routines Staging: hv: remove use of internal list routines in RndisFilter Staging: hv: Remove List.h Staging: serqt_usb2: fix qt_open parameters Bing Zhao (5): Bluetooth: Add btmrvl driver for Marvell Bluetooth devices Bluetooth: Add Marvell BT-over-SDIO driver Bluetooth: Add debugfs support to btmrvl driver Bluetooth: Add documentation for Marvell Bluetooth driver Bluetooth: Fix incorrect alignment in Marvell BT-over-SDIO driver Bjorn Helgaas (48): ACPI: processor: remove KOBJ_ONLINE/KOBJ_OFFLINE events ACPI: processor: clean up in acpi_processor_start() error exits ACPI: processor: move acpi_processor_start() after acpi_processor_add() ACPI: processor: remove .start() method ACPI: memory hotplug: remove .start() method ACPI: EC: move acpi_ec_start() after acpi_ec_add() ACPI: EC: remove .start() method ACPI: EC: remove .stop() method ACPI: remove unused acpi_device_ops .stop method PCI: use dev_printk in quirk messages PCI hotplug: acpiphp: remove superfluous _HPP/_HPX evaluation PCI hotplug: acpiphp: don't cache hotplug_params in acpiphp_bridge PCI hotplug: clean up acpi_get_hp_params_from_firmware() interface PCI hotplug: add pci_configure_slot() PCI hotplug: pciehp: use generic pci_configure_slot() PCI hotplug: shpchp: use generic pci_configure_slot() PCI hotplug: acpiphp: use generic pci_configure_slot() PCI hotplug: clean up acpi_run_hpp() ACPI: simplify deferred execution path ACPI: remove null pointer checks in deferred execution path ACPI: don't pass handle for fixed hardware notifications ACPI: remove cpumask_t usage ACPICA: fixup after acpi_get_object_info() change ACPI: add debug for device addition ACPI: remove unused acpi_bus_scan_fixed() argument ACPI: remove redundant "handle" and "parent" arguments ACPI: save device_type in acpi_device ACPI: use device_type rather than comparing HID ACPI: remove acpi_device_set_context() "type" argument ACPI: remove redundant "type" arguments ACPI: remove unnecessary argument checking ACPI: add acpi_bus_get_parent() and remove "parent" arguments ACPI: convert acpi_bus_scan() to operate on an acpi_handle ACPI: enumerate namespace before adding functional fixed hardware devices ACPI: identify device tree root by null parent pointer, not ACPI_BUS_TYPE ACPI: use acpi_walk_namespace() to enumerate devices ACPI: add acpi_bus_get_status_handle() ACPI: factor out device type and status checking ACPI: handle re-enumeration, when acpi_devices might already exist ACPI: fix synthetic HID for \_SB_ ACPI: use acpi_device_hid() when possible ACPI: make sure every acpi_device has an ID ACPI: maintain a single list of _HID and _CID IDs ACPI: remove acpi_device.flags.compatible_ids ACPI: remove acpi_device.flags.hardware_id ACPI: remove acpi_device_uid() and related stuff ACPI: simplify building device HID/CID list ACPI: i2c-scmi: don't use acpi_device_uid() Boaz Harrosh (1): exofs: remove BKL from super operations Bob Copeland (25): ath5k: cleanup ath5k_hw struct ath5k: enable hardware LEDs ath5k: send buffered frames after the beacon ath5k: rework beacon configuration ath: remove unnecessary return in ath_regd_get_band_ctl ath5k: do not release irq across suspend/resume ath5k: write PCU registers on initial reset mac80211: disable beacons before removing the associated interface ath5k: update PCU opmode whenever a new interface is added ath5k: fix CAB queue operation wl1251: separate bus i/o code into io.c wl1251: use wiphy_dev instead of wl->spi->dev wl1251: introduce wl1251_if_operations struct wl1251: make wl1251_set_partition bus agnostic wl1251: move module probe methods into spi.c wl1251: split spi interface into separate module wl1251: add sdio support wl1251: make irq handling interface specific wl1251: correct definitions for 0th bit defines wl1251: halt the embedded CPU before loading firmware ath5k: clean up filter flags setting ath5k: use the skb->cb directly for RX status ath5k: add hardware CCMP encyption support ath5k: clarify srev comparison for CCMP check cfg80211: fix looping soft lockup in find_ie() Bob Liu (1): USB: uhci: rm repeatedly evaluation for urbp->qh Bob Moore (29): ACPICA: Fix several pointer casts to avoid possible compile warnings ACPICA: Remove duplicate extern declarations for public globals ACPICA: Add 64-bit support to acpi_read and acpi_write ACPICA: Remove duplicate prototypes from header ACPICA: Major update for acpi_get_object_info external interface ACPICA: Fix possible memory leak in nspredef ACPICA: Fix several acpi_attach_data problems ACPICA: Dump table header - suppress output of non-printable characters ACPICA: Fix: Predefined object repair executed only once ACPICA: Clarify common suffix for error/warning messages ACPICA: ACPI 4.0: Changes for existing ACPI tables. ACPICA: Update version to 20090625 ACPICA: Move predefined repair code to new file, no functional change ACPICA: Add repair for predefined methods that return nested packages ACPICA: ACPI 4.0 : Add new return package type, restructure module. ACPICA: Fix fault if acpi_terminate is called twice ACPICA: Split large ACPI table header ACPICA: ACPI 4: Update headers for new and changed ACPI tables. ACPICA: ACPI 4: Add validation for new predefined names. ACPICA: Update definitions for HEST table ACPICA: Fix typo for HEST ACPI table ACPICA: acpi_reset: Bypass port validation mechanism ACPICA: Update version to 20090730 ACPICA: Fix extraneous warning if _DSM returns a package ACPICA: Remove error message for Store(Localx,Localx) ACPICA: Fix memory leak for ill-formed Package objects ACPICA: Update _OSI with new Windows OS strings ACPICA: Windows compatibility: autoexecute root _INI method ACPICA: Update version to 20090903. Bob Peterson (1): GFS2: Add "-o errors=panic|withdraw" mount options Borislav Petkov (25): x86, mce: fix typo in comment in asm/mce.h x86, mce: use atomic_inc_return() instead of add by 1 ide-tape: convert to ide_debug_log macro ide-tape: fix handling of postponed rqs x86, msr: Add rd/wrmsr interfaces with preset registers x86, msr: Rewrite AMD rd/wrmsr variants x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit EDAC: move MCE error descriptions to EDAC core EDAC: beef up ErrorCodeExt error signatures amd64_edac: cleanup amd64_process_error_info amd64_edac: cleanup/complete NB MCE decoding amd64_edac: remove memory and GART TLB error decoders amd64_edac: cleanup amd64_decode_bus_error x86, mce: pass mce info to EDAC for decoding EDAC, AMD: carve out MCi_STATUS decoding EDAC, AMD: carve out decoding of MCi_STATUS ErrorCode EDAC, AMD: decode data cache MCEs EDAC, AMD: decode instruction cache MCEs EDAC, AMD: decode bus unit MCEs EDAC, AMD: decode load store MCEs EDAC, AMD: decode FR MCEs x86, mce: do not compile mcelog message on AMD amd64_edac: cleanup amd64_check_ecc_enabled amd64_edac: check NB MCE bank enable on the current node properly acerhdf: convert to dev_pm_ops Brian G. Merrell (1): Staging: USB-IP code cleanup Brian Haley (2): netlink: silence compiler warning ipv6: Add IFA_F_DADFAILED flag Brian Johnson (5): V4L/DVB (12351): gspca - sn9c20x: Misc fixes V4L/DVB (12704): gspca - sn9c20x: Fix exposure on SOI968 sensors V4L/DVB (12705): gspca - sn9c20x: Add SXGA support to SOI968 V4L/DVB (12706): gspca - sn9c20x: disable exposure/gain controls for MT9M111 sensors. V4L/DVB (12707): gspca - sn9c20x: Add SXGA support to MT9M111 Brian King (2): [SCSI] ipr: fix buffer overflow powerpc/pseries: Fix to handle slb resize across migration Brian Kloppenborg (1): V4L/DVB (12878): gspca - m5602-s5k4aa: Add vflip quirk for the GX700 Brian Niebuhr (2): USB: Fix CDC EEM host driver 'sentinel' CRC validation USB: gadget: Add EEM gadget driver Brian Swetland (3): Staging: HTC Dream: add smd code Staging: HTC Dream: add rpcrouter driver Staging: HTC Dream: add camera support Brice Goglin (3): perf report: Fix and improve the displaying of per-thread event counters perf report: Add raw displaying of per-thread counters myri10ge: improve parity error detection and recovery Bruno Premont (1): HID: driver for Twinhan USB 6253:0100 remote control Byungho Min (8): ARM: S5PC100: Memory map ARM: S5PC100: UART and Serial ARM: S5PC100: CPU initialization ARM: S5PC100: GPIO and I2C ARM: S5PC100: IRQ and timer ARM: S5PC100: Clock and PLL support ARM: S5PC100: Kconfigs and Makefiles ARM: S5PC100: Board and configuration file Candelaria Villareal, Jorge (4): ASoC: TWL4030: Add EXTMUTE to reduce pop-noise effect ASoC: Zoom2: Update twl4030_setup_data parameters ASoC: SDP3430: Add support for EXTMUTE using TWL GPIO6 ASoC: SDP3430: Fix TWL GPIO6 pin mux request Carl Shaw (1): sh: Improve unwind info for signals Carsten Emde (3): tracing: prevent NULL pointer dereference in ftrace_raw_event_block_bio_bounce tracing: remove unused local variables in tracer probe functions tracing: do not update tracing_max_latency when tracer is stopped Casey Dahlin (2): dlm: fix double-release of socket in error exit path lib/swiotlb.c: Fix strange panic message selection logic when swiotlb fills up Catalin Marinas (35): Thumb-2: Add some .align statements to the .S files Thumb-2: Add macros for the unified assembler syntax Thumb-2: Implementation of the unified start-up and exceptions code Thumb-2: Implement the unified arch/arm/mm support Thumb-2: Implement the unified arch/arm/lib functions Thumb-2: Implement the unified VFP support Thumb-2: Implement the unified boot code Thumb-2: Add support for loadable modules Thumb-2: Pass a Thumb-2 address to the secondary CPUs to jump to Thumb-2: Make the uImage entry an odd number Thumb-2: Add Thumb-2 support to the build files nommu: Fix the fault processing for the MMU-less case nommu: Remove the context.id from asm-offsets.c when !MMU nommu: Add MMU-less support for Integrator platforms nommu: Add MMU-less support for the RealView boards nommu: Do not override the CP15 control reg value returned from initfunc nommu: Remove the memory_start/end variables from ARM page-nommu.h nommu: Add noMMU support to the DMA API nommu: Include asm/setup.h in arch/arm/mm/nommu.c nommu: Add #ifdef CONFIG_MMU around the PTE sanity checks nommu: Do not allow REALVIEW_HIGH_PHYS_OFFSET if !MMU nommu: Fix compressed/head.S to not perform MMU specific operations nommu: Do not set PRRR and NMRR in proc-v7.S if !MMU Include linux/sched.h in arch/arm/mm/fault.c kmemleak: Allow rescheduling during an object scanning kmemleak: Dump object information on request kmemleak: Mark the early log buffer as __initdata kmemleak: Save the stack trace for early allocations kmemleak: Do not report alloc_bootmem blocks as leaks kmemleak: Ignore the aperture memory hole on x86_64 kmemleak: Scan all thread stacks kmemleak: Do no create the clean-up thread during kmemleak_disable() kmemleak: Improve the "Early log buffer exceeded" error message Clear the exclusive monitor when returning from an exception Thumb-2: Correctly handle undefined instructions in the kernel Chaithrika U S (20): ASoC: Introduce platform driver model for dm644x, dm355 ASoC: Add mcasp support for DM646x ASoC: Add machine driver support for DM646x ASoC: Minor fixes to DaVinci I2S probe function ASoC: DaVinci: Support Audio on DA830 EVM ASoC: DaVinci: McASP driver enhacements ASoC: DaVinci: Add a DAI format to McASP driver ASoC: DaVinci: Add audio support fot DA850/OMAP-L138 EVM davinci: dm646x: Adds McASP clock davinci: ASoC: Add the platform devices for ASP davinci: Audio support for DA830 EVM davinci: Audio support for DA850/OMAP-L138 EVM davinci: audio: move tlv320aic33 i2c setup into board files ASoC: davinci: i2c device creation moved into board files ASoC: DaVinci: Fixes to McASP configuration V4L/DVB (12175): davinci/vpif: Add Video Port Interface (VPIF) driver V4L/DVB (12176): davinci/vpif_display: Add VPIF display driver V4L/DVB (12177): dm646x: Add an entry for dm646x EVM card at building system V4L/DVB (12178): vpif_display: Fix compile time warnings for mutex locking V4L/DVB (12453a): DaVinci: DM646x: Update the structure name as per header file changes Chandra Seetharaman (5): [SCSI] scsi_dh: Reference count scsi_dh_attach [SCSI] scsi_dh: add the interface scsi_dh_set_params() [SCSI] scsi_dh: Provide set_params interface in emc device handler [SCSI] scsi_dh: Use scsi_dh_set_params() in multipath. [SCSI] scsi_dh: add two SUN devices to the list of devices supported by default Changli Gao (1): net: remove redundant sched/ in net/Makefile Charlie Brady (1): [SCSI] scsi_dh_rdac: Add support for Sun StorageTek ST2500, ST2510 and ST2530 Chen Liqin (13): score: Add support for Sunplus S+core architecture score: add maintainers for score architecture score: update files according to review comments score: move save arg5 and arg6 instruction in front of enable_irq Merge branch 'score' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic into for-linus score: remove unused code, add include files in .c score: update inconsistent declare after .c was changed score: add MEMORY_START and MEMORY_SIZE define, to make the code clear score: add old syscall support score: update files according to review comments. score: make init_thread_union align to THREAD_SIZE score: add TIF_NOTIFY_RESUME define in asm/thread_info.h score: update email address in MAINTAINERS. Cheng Renquan (6): kconfig: add symbol value to help find the real depend kconfig: add menu_get_ext_help function to display more information kconfig: make use of menu_get_ext_help in menuconfig kconfig: make use of menu_get_ext_help in qconfig kconfig: make use of menu_get_ext_help in "make config" kconfig: make use of menu_get_ext_help in gconfig Chien Tung (1): RDMA/nes: Map MTU to IB_MTU_* and correctly report link state Chris Ball (2): sdhci: add no-card-no-reset quirk for Ricoh R5C822/Sony Z11 sdhci: increase timeout for internal clock stabilization. Chris Friesen (1): [WATCHDOG] fix book E watchdog to take WDIOC_SETTIMEOUT arg in seconds Chris Leech (15): [SCSI] libfcoe: fcoe_ctlr_destroy use cancel_work_sync instead of flush_work [SCSI] fcoe: fix missing error check in call to fcoe_if_init [SCSI] fcoe: interface changes to fcoe_if_create and fcoe_if_destroy [SCSI] fcoe: Introduce and allocate fcoe_interface structure, 1:1 with net_device [SCSI] fcoe: move netdev to fcoe_interface [SCSI] fcoe: move packet handlers from fcoe_port to fcoe_interface [SCSI] fcoe: move FIP controller from fcoe_port to fcoe_interface [SCSI] fcoe: move offload exchange manager pointer from fcoe_port to fcoe_interface [SCSI] fcoe: remove fcoe_interface->priv pointer [SCSI] fcoe: fcoe_interface create, destroy and refcounting [SCSI] fcoe: split out per interface setup [SCSI] fcoe: add mutex to protect create and destroy [SCSI] fcoe: move the host-list add/remove to keep out VN_Ports [SCSI] fcoe: Fix module ref count bug by adding NETDEV UNREGISTER handling [SCSI] fcoe: use rtnl mutex in place of hostlist lock Chris Mason (29): Btrfs: Allow worker threads to exit when idle Btrfs: optimize set extent bit Btrfs: keep irqs on more often in the worker threads Btrfs: reduce worker thread spin_lock_irq hold times Btrfs: use larger nr_to_write for larger extents Btrfs: tweak congestion backoff Btrfs: switch extent_map to a rw lock Btrfs: Fix new state initialization order Btrfs: reduce CPU usage in the extent_state tree Btrfs: cache values for locking extents Btrfs: don't lock bits in the extent tree during writepage Btrfs: use a cached state for extent state operations during delalloc Btrfs: Use PagePrivate2 to track pages in the data=ordered code. Btrfs: Fix extent replacment race Btrfs: fix btrfs page_mkwrite to return locked page Btrfs: zero page past end of inline file items Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Btrfs: fix async worker startup race Btrfs: fix worker thread double spin_lock_irq Btrfs: Fix async thread shutdown race ext3: Add locking to ext3_do_update_inode Btrfs: properly honor wbc->nr_to_write changes Btrfs: search for an allocation hint while filling file COW Btrfs: deal with NULL space info Btrfs: fix early enospc during balancing Btrfs: fix errors handling cached state in set/clear_extent_bit Btrfs: Fix test_range_bit for whole file extents Btrfs: fix releasepage to avoid unlocking extents we haven't locked Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable into for-linus Chris Verges (2): rtc: Philips PCF2123 RTC SPI driver rtc-philips-pcf2123-rtc-spi-driver-updates Chris Wilson (21): drm/i915: Pad ringbuffer with NOOPs before wrapping drm/i915: Only destroy a constructed mmap offset drm/i915: Add buffer to inactive list immediately during fault drm/i915: Remove stored gtt_alignment drm/i915: Include buffer size and dirty state in debugfs lists drm/i915: Register a shrinker to free inactive lists under memory pressure drm/i915: Add ioctl to set 'purgeability' of objects drm/i915: Improve behaviour under memory pressure drm/i915: Check that the relocation points to within the target drm/i915: Skip the sanity checks if the current relocation is valid drm/i915: Add tracepoints drm/i915: Clean up evict from list. drm/i915: Search harder for a reusable object drm/i915: BUG_ON page refleak during unbind drm/i915: Whitespace correction for madv drm/i915: Do not mis-classify clean objects as purgeable drm/i915: Immediately discard any backing storage for uneeded objects drm/i915: Remove eviction debug spam drm/i915: Track purged state. drm/i915: Warn before mmaping a purgeable buffer. drm/i915: Handle ERESTARTSYS during page fault Christian Borntraeger (3): KVM: s390: Fix memslot initialization for userspace_addr != 0 oprofile: fix oprofile regression: select RING_BUFFER_ALLOW_SWAP [S390] ptrace: use common code for simple peek/poke operations Christian Ehrhardt (4): KVM: s390: infrastructure to kick vcpus out of guest state KVM: s390: fix signal handling KVM: s390: streamline memslot handling KVM: remove redundant declarations Christian Kujau (1): crypto: rng - Fix typo Christian Lamparter (31): ar9170usb: module link in sysfs p54: redo rx_status into skb->cb p54: Move eeprom code p54: Move eeprom header p54: Move firmware code p54: Move LED code p54: Move LMAC interface definitions p54: Move mac80211 glue code p54: Move TX/RX code p54: Modify p54 files for new organization p54: two endian fixes p54spi: remove dead code and definitions p54usb: fix stalls caused by urb allocation failures p54: fix queue stall due to underrun p54: re-enable power save feature p54: generate channel list dynamically ar9170: implement transmit aggregation p54: remove useless code p54: fix beaconing related firmware crash p54: fix a fw crash caused by statistic feedback mac80211: do not monitor the connection while scanning mac80211: fix spare warnings in driver-trace.h p54: Write outside array bounds p54: implement rfkill p54: disable PS by default ar9170: refactor configure_filter p54: fix broadcast buffering in AP mode ar9170: implement frequency calibration for one-stage/openfw p54usb: add Zcomax XG-705A usbid p54usb: add Zcomax XG-705A usbid ar9170usb: add usbid for TP-Link TL-WN821N v2 Christian Thaeter (1): trivial: doc: hpfall: reduce risk that hpfall can do harm Christof Schmitt (13): [SCSI] zfcp: Move debug data from zfcp_data to own data structure [SCSI] zfcp: Only collect SCSI debug data for matching trace levels [SCSI] zfcp: Only collect FSF/HBA debug data for matching trace levels [SCSI] zfcp: Remove useless assignment [SCSI] zfcp: Only issue one test link command per port [SCSI] zfcp: Implicitly close all wka ports [SCSI] zfcp: Decouple gid_pn requests from erp [SCSI] zfcp: Use kthread API for zfcp erp thread [SCSI] zfcp: Simplify and update ct/gs and els timeout handling [SCSI] zfcp: Defer resource allocation to first ccw_set_online call [SCSI] zfcp: Replace config semaphore with mutex [SCSI] zfcp: Handle failures during device allocation correctly [SCSI] zfcp: Remove duplicated code for debug timestamps Christoph Hellwig (46): sh: convert to asm-generic/hardirq.h xfs: avoid memory allocation under m_peraglock in growfs code xfs: switch to NOFS allocation under i_lock in xfs_getbmap xfs: switch to NOFS allocation under i_lock in xfs_da_state_alloc xfs: switch to NOFS allocation under i_lock in xfs_da_buf_make xfs: switch to NOFS allocation under i_lock in xfs_dir_cilookup_result xfs: switch to NOFS allocation under i_lock in xfs_buf_associate_memory xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_set xfs: switch to NOFS allocation under i_lock in xfs_readlink_bmap xfs: switch to NOFS allocation under i_lock in xfs_attr_rmtval_get xfs: check for dinode realtime flag corruption xfs: fix spin_is_locked assert on uni-processor builds xfs: fix locking in xfs_iget_cache_hit powerpc/sputrace: Use the generic event tracer powerpc: Switch to asm-generic/hardirq.h CRIS: convert to asm-generic/hardirq.h xfs: improve xfs_inobt_get_rec prototype xfs: improve xfs_inobt_update prototype xfs: untangle xfs_dialloc xfs: rationalize xfs_inobt_lookup* xfs: merge fsync and O_SYNC handling xfs: simplify xfs_trans_iget xfs: actually enable the swapext compat handler xfs: un-static xfs_inobt_lookup ext4: fix cache flush in ext4_sync_file xfs: use correct log reservation when handling ENOSPC in xfs_create KVM: cleanup arch/x86/kvm/Makefile [S390] remove unused irq_cpustat_t defintion block: use blkdev_issue_discard in blk_ioctl_discard vfs: Rename generic_file_aio_write_nolock fsync: wait for data writeout completion before calling ->fsync m68knommu: convert to asm-generic/hardirq.h writeback: merely wakeup flusher thread if work allocation fails for WB_SYNC_NONE MIPS: Convert to asm-generic/hardirq.h tracing: Remove markers h8300: convert to asm-generic/hardirq.h alpha: convert to asm-generic/hardirq.h m32r: convert to asm-generic/hardirq.h m68k: convert to asm-generic/hardirq.h um: convert to asm-generic/hardirq.h virtio_blk: add support for cache flush ntfs: remove ntfs_file_write qnx4: remove write support FRV: Use asm/generic-hardirq.h freeze_bdev: kill bd_mount_sem freeze_bdev: grab active reference to frozen superblocks Chuck Ebbert (1): [CIFS] Re-enable Lanman security Chuck Lever (31): SUNRPC: handle IPv6 PKTINFO when extracting destination address NFS: Fix up new minorversion= option NFS: Add ability to send MOUNTPROC_UMNT to the kernel's mountd client NFS: Fix auth flavor len accounting NFS: Use the authentication flavor list returned by mountd SUNRPC: Clean up RPCBIND_MAXUADDRLEN definitions SUNRPC: Move XDR data type size macros SUNRPC: Provide functions for managing universal addresses SUNRPC: Remove duplicate universal address generation SUNRPC: Use rpc_ntop() for constructing transport address strings NFS: Replace nfs_parse_ip_address() with rpc_pton() NFS: Replace nfs_set_port() with rpc_set_port() lockd: Replace nlm_clear_port() lockd: Replace nsm_display_address() with rpc_ntop() NFSD: Support IPv6 addresses in write_failover_ip() SUNRPC: Introduce new xdr_stream-based encoders to rpcb_clnt.c SUNRPC: Clean up: Remove unused XDR encoder functions from rpcb_clnt.c SUNRPC: Introduce xdr_stream-based decoders for RPCB_UNSET SUNRPC: Introduce new xdr_stream-based decoders to rpcb_clnt.c SUNRPC: Clean up: Remove unused XDR decoder functions from rpcb_clnt.c SUNRPC: Eliminate PROC macro from rpcb_clnt SUNRPC: Rename sock_xprt.addr as sock_xprt.srcaddr SUNRPC: Kill RPC_DISPLAY_ALL SUNRPC: Update xprt address strings after an rpcbind completes SUNRPC: Add documenting comments in net/sunrpc/timer.c NFS: Handle a zero-length auth flavor list NFS: Mount option parser should detect missing "port=" NFS: Refactor NFSv4 text-based mount option validation NFS: Move details of nfs4_get_sb() to a helper NFS: Allow the "nfs" file system type to support NFSv4 NFS: Add nfs_alloc_parsed_mount_data Clemens Ladisch (16): sound: usb-audio: Xonar U1 digital output support seq-midi: always log message on output overrun sound: usb-audio: use multiple input URBs sound: usb-audio: use multiple output URBs sound: usb-audio: add MIDI drain callback sound: seq_midi: do not send MIDI reset when closing sound: seq_oss_midi: remove magic numbers sound: rawmidi: disable active-sensing-on-close by default sound: usb-audio: do not make URBs longer than sync packet interval sound: ymfpci: increase timer resolution to 96 kHz sound: fix OSS MIDI output data loss sound: snd_ctl_elem_add: fix value count check sound: snd_ctl_remove_unlocked_id: simplify error paths sound: snd_ctl_remove_unlocked_id: simplify user control counting sound: snd_ctl_remove_user_ctl: prevent removal of kernel controls sound: oxygen: work around MCE when changing volume Cliff Cai (5): ASoC: Blackfin AC97: fix resume handling ASoC: Blackfin I2S: fix resume handling Blackfin: bf533-stamp: fix typo in SPI frequency for ad1836 codec ASoC: Blackfin AC97: add a few missing multichannel define handling ASoC: Blackfin I2S: fix resuming when device hasn't been used Coly Li (1): dlmglue.c: add missed mlog lines Corbin Simpson (1): Input: xpad - add USB ID for the drumkit controller from Rock Band Corentin Chary (18): eeepc-laptop: add rfkill support for the Wimax in ASUS Eee PC 1000HG eeepc-laptop: document sysfs interface video/backlight: document sysfs interface video/lcd: document sysfs interface led: document sysfs interface asus-laptop: Show HRWS in infos and fix output format asus-laptop: Add *_led_get() functions asus-laptop: Map X50R hotkeys asus-laptop: set maximum led brightness asus-laptop: Add support for Keyboard backlight asus-laptop: handle keyboard backlight keys asus-laptop: Add suport for another "Media" key asus-laptop: Add "calculator" hotkey asus-laptop: document the module asus-laptop: document sysfs interface asus-laptop: Fix coding style for comments thinkpad_acpi: fix rfkill memory leak on unload hp-wmi: fix rfkill memory leak on unload Corrado Zoccolo (1): cpuidle: menu governor: reduce latency on exit Cosmin Ratiu (1): ipv6: Fix tcp_v6_send_response(): it didn't set skb transport header Crane Cai (2): i2c-piix4: Add AMD SB900 SMBus device ID i2c: Add driver for SMBus Control Method Interface Csaba Henk (4): fuse: make the number of max background requests and congestion threshold tunable fuse: use drop_nlink() instead of direct nlink manipulation fuse: limit user-specified values of max background requests fuse: add fusectl interface to max_background Curt Wohlgemuth (1): ext4: More buffer head reference leaks Cyrill Gorcunov (14): net, bridge: align br_nf_ops assignment net, netns_xt: shrink netns_xt members x86: Clean up idt_descr and idt_tableby using NR_VECTORS instead of hardcoded number x86, ipi: Clean up safe_smp_processor_id() by using the cpu_has_apic() macro helper x86, ioapic: Introduce for_each_irq_pin() helper x86, ioapic: Throw BUG instead of NULL dereference x86, apic: Drop redundant bit assignment x86, ioapic: Panic on irq-pin binding only if needed net,pppoe: fixup module init/exit subsequent calls x86, ioapic: Define IO_APIC_DEFAULT_PHYS_BASE constant x86, ioapic: Get rid of needless check and simplify ioapic_setup_resources() x86, e820: Guard against array overflowed in __e820_add_region() x86, apic: Slim down stack usage in early_init_lapic_mapping() x86, apic: Fix missed handling of discrete apics Daisuke Nishimura (3): mm: add_to_swap_cache() must not sleep mm: add_to_swap_cache() does not return -EEXIST memcg: show swap usage in stat file Damian Lukowski (5): Revert Backoff [v3]: Rename skb to icmp_skb in tcp_v4_err() Revert Backoff [v3]: Revert RTO on ICMP destination unreachable Revert Backoff [v3]: Calculate TCP's connection close threshold as a time value. RTO connection timeout: coding style fixes and comments RTO connection timeout: sysctl documentation update Dan Carpenter (2): intel-iommu: double kfree() drivers/char/rio/rioctrl.c: off by one error in rioctrl.c Dan Williams (85): Merge branch 'dmaengine' into async-tx-raid6 async_tx: rename zero_sum to val async_tx: kill ASYNC_TX_DEP_ACK flag async_tx: structify submission arguments, add scribble async_xor: permit callers to pass in a 'dma/page scribble' region md/raid6: release spare page at ->stop() ioat: move to drivers/dma/ioat/ libertas: clean up and clarify get_common_rates md/raid6: move the spare page to a percpu allocation md/raid5,6: add percpu scribble region for buffer lists async_tx: add sum check flags async_tx: kill needless module_{init|exit} async_tx: remove walk of tx->parent chain in dma_wait_for_async_tx async_tx: add support for asynchronous GF multiplication async_tx: add support for asynchronous RAID6 recovery operations dmatest: add pq support async_tx: raid6 recovery self test iop-adma: cleanup iop_adma_run_tx_complete_actions iop-adma: fix lockdep false positive iop-adma: P+Q support for iop13xx adma engines iop-adma: P+Q self test md/raid5: factor out mark_uptodate from ops_complete_compute5 md/raid6: asynchronous raid6 operations md/raid6: asynchronous handle_parity_check6 md/raid456: distribute raid processing over multiple cores Merge commit 'v2.6.31-rc1' into dmaengine ioat: move definitions to dma.h ioat: convert ioat_probe to pcim/devm ioat: cleanup some long deref chains and 80 column collisions ioat: kill function prototype ifdef guards ioat: split ioat_dma_probe into core/version-specific routines ioat: fix type mismatch for ->dmacount ioat: define descriptor control bit-field ioat1: move descriptor allocation from submit to prep ioat: fix self test interrupts ioat: prepare the code for ioat[12]_dma_chan split ioat2,3: convert to a true ring buffer ioat1: kill unused unmap parameters ioat: add some dev_dbg() calls ioat: cleanup completion status reads ioat: ignore reserved bits for chancnt and xfercap ioat: preserve chanctrl bits when re-arming interrupts ioat: ___devinit annotate the initialization paths ioat1: trim ioat_dma_desc_sw ioat: switch watchdog and reset handler from workqueue to timer ioat2,3: dynamically resize descriptor ring net_dma: poll for a descriptor after allocation failure Merge branch 'md-raid6-accel' into ioat3.2 dmaengine: add fence support dmaengine, async_tx: add a "no channel switch" allocator dmaengine: cleanup unused transaction types dmaengine, async_tx: support alignment checks ioat2+: add fence support ioat3: hardware version 3.2 register / descriptor definitions ioat3: split ioat3 support to its own file, add memset ioat: add 'ioat' sysfs attributes ioat3: enable dca for completion writes ioat3: xor support ioat3: xor self test ioat3: pq support ioat3: support xor via pq descriptors ioat3: interrupt descriptor support ioat3: segregate raid engines Merge branch 'ioat' into dmaengine dw_dmac: implement a private tx_list fsldma: implement a private tx_list iop-adma: implement a private tx_list ioat: implement a private tx_list mv_xor: implement a private tx_list at_hdmac: implement a private tx_list txx9dmac: implement a private tx_list dmaengine: kill tx_list ioat2,3: cacheline align software descriptor allocations Merge branch 'iop-raid6' into async-tx-next Merge branch 'dmaengine' into async-tx-next Merge commit 'md/for-linus' into async-tx-next async_tx: remove HIGHMEM64G restriction ioat: driver version 4.0 at_hdmac: Rework suspend_late()/resume_early() md/raid6: eliminate BUG_ON with side effect md/raid6: cleanup ops_run_compute6_2 ioat2: clarify ring size limits raid6test: fix stack overflow ioat3: fix uninitialized var warnings async_tx/raid6: add missing dma_unmap calls to the async fail case Daniel C Halperin (15): iwlwifi: clear iwl_cmd_meta structure before use iwlwifi: remove unused HT configuration entry tx_chan_width iwlwifi: include HT configuration when adding stations through rs_rate_init iwlwifi: refactor packet reception code iwlwifi: configure HT40 channels in iwl_mac_config iwlwifi: check short GI support per-station rather than globally iwlwifi: use station HT capabilities and BSS operating mode for Green-field iwlwifi: fix erroneous use of iwl_rx_packet.len as a length iwlwifi: clear rate control flags on non-HT packet iwlwifi: set HT flags in ieee80211_rx_status for received packets iwlwifi: remove 60 Mbps from sband bitrates table iwlwifi: remove incorrect uses of ieee80211_get_tx_rate to prevent TX stall iwlwifi: use iwl_hwrate_get_mac80211_idx where appropriate iwlwifi: fix HT operation in 2.4 GHz band iwlwifi: fix HT operation in 2.4 GHz band Daniel Drake (1): ALSA: hda - Add CX20582 and OLPC XO-1.5 support Daniel Glöckner (1): gpiolib: allow poll() on value Daniel Mack (29): ds2760_battery: delay power supply registration ds2760_battery: export more features ds2760_battery: add rated_capacity module parameter ds2760_battery: handle full_active_uAh == 0 case correctly ds2760_battery: add current_accum module parameter power_supply: EXPORT_SYMBOL cleanups power_supply: get_by_name and set_charged functionality ds2760_battery: implement set_charged() feature ALSA: ASoC: cs4270: move power management hooks to snd_soc_codec_device net: smsc911x: switch to new dev_pm_ops MX3: Add USB platform devices and resources MX3: add additional USB pins to iomux Input: eeti_ts - allow active high irq lines ARM: MX3: add ckil clock libertas: name the network device wlan%d ds2760_battery: Fix integer overflow for time_to_empty_now [ARM] pxa: add MFP_PULL_FLOAT [ARM] pxa: add clock definition for graphics controller [ARM] pxa: add device definition for graphics controller [ARM] pxa: rename GCU IRQ for consistency [ARM] pxafb: use resource_size() function [ARM] pxa/colibri: add NAND config for Colibri PXA3xx boards [ARM] pxafb: add accelerator ID for PXA3xx GCU UIO: remove 'default n' from Kconfig lis3: fix typo lis3: add free-fall/wakeup function via platform_data lis3: add power management functions lis3_spi: code cleanups rtc: add driver for MXC's internal RTC module Daniel Ribeiro (13): ASoC: Allow 32 bit registers for DAPM ASoC: remove duplicated code on pxa-ssp.c ASoC: change set_tdm_slot api to allow slot_width override. [ARM] pxa/ezx: set IRQ_BOARD_END for EZX mfd: Introduce irq_to_pcap() mfd: add set_ts_bits for pcap mfd: fix pcap irq bottom handler mfd: add ezx_pcap_setbits regulator: add pcap driver mfd: Remove VIB defines from pcap header file input: PCAP2 based touchscreen driver input: PCAP2 misc input driver rtc: driver for PCAP2 PMIC Daniel Silverstone (1): IEEE80154: Add documentation to the IEEE80154 netlink and fakehard driver Daniel Stone (1): omapfb: dispc: allow multiple external IRQ handlers Daniel Vetter (2): drm/i915: remove open-coded drm_mode_object_find drm/i915: modeset: always set intel_crtc->dpms_mode by moving the assignment up. Daniel Walker (12): mac80211: New stat counters for multicast and unicast forwarded frames staging: android: binder: move debugging mask into a macro staging: android: binder: remove a predefine staging: android: binder: add enum usage in function arguments staging: android: binder: global variable cleanup. staging: android: binder: clean up for all the stat statments Staging: android: binder: cleanup some long lines Staging: android: lowmemorykiller: remove a predefine Staging: android: lowmemorykiller: delete the decription file Staging: android: binder: partial checkpatch cleanup x86: apic: Convert BUG() to BUG_ON() checkpatch: handle C99 comments correctly (performance issue) Daniele Napolitano (1): Staging: rt2870: new USB ID for Belkin N+ F5D8055 Darren Hart (8): futex: Correct futex_wait_requeue_pi() commentary futex: Detect mismatched requeue targets futex: Correct futex_wait_requeue_pi() commentary futex: Correct queue_me and unqueue_me commentary futex: Make function kernel-doc commentary consistent futex: Correct futex_q woken state commentary futex: Fix wakeup race by setting TASK_INTERRUPTIBLE before queue_me() futex: Add memory barrier commentary to futex_wait_queue_me() Darrick J. Wong (1): hwmon driver for ACPI 4.0 power meters Dave Airlie (47): Merge git://git.infradead.org/~dwmw2/iommu-agp into agp-next Merge git://git.infradead.org/~dwmw2/iommu-agp into agp-next drm: fixup include file in drm_encoder_slave drm: fixup includes in encoder slave header files. Merge Linus master to drm-next drm/radeon/kms: generate the safe register tables. drm/ttm: consolidate cache flushing code in one place. drm/rs600/690: use autogenerated safe register tables. drm/radeon: cleanup mkregtable.c drm/kms: move driver specific fb common code to helper functions (v2) drm: fix two issues with fb consolidation. drm/mm: add ability to dump mm lists via debugfs drm: fix drm_cache.c for arch with no support. drm/kms: add explicit encoder disable function and detach harder. drm/crtc: fix mismerge of last patch. drm/radeon/kms: block depthxy offset from use from userspace. drm/radeon/kms: add updated registers from drm-fixes. drm: split crtc/fb helpers into a separate module drm/kms: remove old std mode fallback code. Merge intel drm-intel-next branch drm/radeon/kms: add rn50/r100/r200 CS tracker. drm/radeon/kms: add initial radeon tv-out support. drm/kms: fix kms helper license + Kconfig drm/kms/radeon: make kms default a runtime option drm/radeon/kms: lower debugging on dpms events. drm: include seq_file.h for debugfs builds. drm/i915: get the bridge device once. drm/radeon/kms: don't allow ERESTART to hit userspace. Merge remote branch 'origin/master' of ../linux-2.6 into drm-next PCI/vgaarb: cleanup some warnings + cleanup some comments. drm/radeon/kms: set fbdev_info for suspend/resume drm/radeon/kms: add 32/64 ioctl support. drm/radeon/kms: we should return 0 when we have no modes not -1. drm/radeon/kms: IB locking dumps out a lockdep ordering issue drm/radeon: avivo chips have no separate int bit for display drm/radeon/kms: reprogram format in set base. drm/r600/kms: fixup number of loops per blit calculation. drm/radeon/kms: add initial connector properties drm/radeon/kms: disable VGA rendering engine before taking over VRAM drm/radeon/r600: fix some issues with suspend/resume. drm/radeon/kms: move around new init path code to avoid posting at init drm/radeon/kms: rv770 blit init called too late. drm/radeon/kms: more alignment for rv770.c with r600.c drm/radeon/kms: more fixes to rv770 suspend/resume path. drm/radeon/kms: r420 idle after programming GA_ENHANCE drm/vgaarb: add VGA arbitration support to the drm and kms. drm/radeon: consolidate family flags used in pciids. Dave Chinner (3): xfs: factor out inode initialisation xfs: factor out debug checks from xfs_dialloc and xfs_difree xfs: speed up free inode search Dave Hansen (1): ecryptfs: improved dependency checking and reporting Dave Jones (11): Remove unused zero-copy code from velocity NIC driver. Fix up CodingStyle problems in via-velocity.c Remove unnecessary forward declarations from velocity NIC driver. Fix typos in comments in via-velocity header. [SCSI] qla2xxx: Fix __LITTLE_ENDIAN definition warnings [CPUFREQ] Reduce scope of cpu_sys_dev in cpufreq_add_dev [CPUFREQ] cleanup up -ENOMEM handling in cpufreq_add_dev [CPUFREQ] Factor out symlink creation from cpufreq_add_dev [CPUFREQ] Factor out interface creation from cpufreq_add_dev [CPUFREQ] Factor out policy setting from cpufreq_add_dev PCI: Document pci_ids.h addition policy. Dave Kleikamp (1): cifs: Replace wrtPending with a real reference count Dave Young (3): printk boot_delay: rename printk_delay_msec to loops_per_msec printk: add printk_delay to make messages readable for some scenarios tty: Fix regressions caused by commit b50989dc David Altobelli (3): hpilo: staging for interrupt handling hpilo: add interrupt handler hpilo: add poll f_op David Brownell (8): Input: dm355evm_keys - use threaded IRQs davinci: sram warning fix davinci: dm365 evm cpld support: leds, card detect, other setup davinci: dm365 gpio irq support Input: add twl4030_keypad driver driver model: constify attribute groups spi: handle TX-only/RX-only rtc: at91rm9200 fixes David Daney (7): MIPS: Octeon: Check all CCAs in cvmx_write_csr. MIPS: Allow kernel use of LL/SC to be separate from the presence of LL/SC. MIPS: Octeon: Set kernel_uses_llsc to false on non-SMP builds. MIPS: Octeon: Add hardware RNG platform device. MIPS: hw_random: Add hardware RNG for Octeon SOCs. MIPS: Don't corrupt page tables on vmalloc fault. MIPS: Octeon: Move some platform device registration to its own file. David Griego (1): davinci: Fix watchdog reset code David Howells (26): CRED: Add some configurable debugging [try #6] KEYS: Deal with dead-type keys appropriately [try #6] KEYS: Allow keyctl_revoke() on keys that have SETATTR but not WRITE perm [try #6] KEYS: Flag dead keys to induce EKEYREVOKED [try #6] KEYS: Add garbage collection for dead, revoked and expired keys. [try #6] KEYS: Do some whitespace cleanups [try #6] KEYS: Extend TIF_NOTIFY_RESUME to (almost) all architectures [try #6] KEYS: Add a keyctl to install a process's session keyring on its parent [try #6] KEYS: security_cred_alloc_blank() should return int under all circumstances KEYS: Fix default security_session_to_parent() KEYS: Add missing linux/tracehook.h #inclusions CRED: Allow put_cred() to cope with a NULL groups list KEYS: Fix garbage collector RxRPC: Declare the security index constants symbolically RxRPC: Allow key payloads to be passed in XDR form RxRPC: Allow RxRPC keys to be read RxRPC: Parse security index 5 keys (Kerberos 5) RxRPC: Use uX/sX rather than uintX_t/intX_t types MN10300: Handle removal of struct uart_info KEYS: Have the garbage collector set its timer for live expired keys NFS: Propagate 'fsc' mount option through automounts fdpic: ignore the loader's PT_GNU_STACK when calculating the stack size FRV: Flash mappings for the MB93090-MB00 motherboard NOMMU: Fix MAP_PRIVATE mmap() of objects where the data can be mapped directly NOMMU: Fallback for is_vmalloc_or_module_addr() should be inline NOMMU: Ignore mmap() address param as it is a hint David Härdeman (2): pnp: add a shutdown method to pnp drivers input: add a driver for the Winbond WPCD376I Consumer IR hardware David Kilroy (32): cfg80211: add wrapper function to get wiphy from priv pointer cfg80211: Advertise ciphers via WE according to driver capability cfg80211: allow drivers that can't scan for specific ssids cfg80211: set WE encoding size based on available ciphers cfg80211: infer WPA and WPA2 support from TKIP and CCMP orinoco: Move firmware capability determination into hw.c orinoco: Move card reading code into hw.c orinoco: Move FID allocation to hw.c orinoco: use dev_err in early initialisation routines orinoco: firmware helpers should use dev_err and friends orinoco: Replace net_device with orinoco_private in driver interfaces orinoco: initialise independently of netdev orinoco: Change set_tkip to use orinoco_private instead of hermes_t orinoco: initiate cfg80211 conversion orinoco: make firmware download less verbose orinoco: move netdev interface creation to main driver airport: store irq in card private structure orinoco: Handle suspend/restore in core driver orinoco: provide generic commit function orinoco: convert mode setting to cfg80211 orinoco: convert scanning to cfg80211 orinoco: convert giwrange to cfg80211 orinoco: remove WE nickname support orinoco: fix printk format specifier for size_t arguments orinoco: prefer_port3 can be a single bit orinoco: use local types for auth alg and sequence length orinoco: pass orinoco_set_tkip_key the sequence lengths orinoco: move disassociation to hw.c orinoco: add function to retrieve current bssid orinoco: consolidate storage of WEP and TKIP keys cfg80211: fix leaks of wdev->conn->ie orinoco: remove spare whitespace David McKay (1): sh: Allow use of GENERIC_IOMAP David P. Quigley (3): VFS: Factor out part of vfs_setxattr so it can be called from the SELinux hook for inode_setsecctx. LSM/SELinux: inode_{get,set,notify}secctx hooks to access LSM security context information. sysfs: Add labeling support for sysfs David Rientjes (10): slub: add option to disable higher order debugging slabs slub: use size and objsize orders to disable debug flags x86/PCI: default pcibus cpumask to all cpus if it lacks affinity mm: remove obsoleted alloc_pages cpuset comment mm: update alloc_flags after oom killer has been called flex_array: add flex_array_clear function flex_array: poison free elements flex_array: add flex_array_shrink function flex_array: introduce DEFINE_FLEX_ARRAY flex_array: add missing kerneldoc annotations David Rowe (1): Staging: echo: top bit patch David S. Miller (55): Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for_david' of git://git.kernel.org/pub/scm/linux/kernel/git/kkeil/ISDN-2.6-net-next Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 phonet: Fix build. Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 xfrm6: Fix xfrm6_policy.c build when SYSCTL disabled. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 ide: Fix annoying warning in ide_pio_bytes(). Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 ppp_generic: Help GCC see that 'flen' is always initialized. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan net: Temporarily backout SKB sources tracer. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 xilinx_emaclite: Fix permissions on driver sources. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 WAN: dscc4: Fix warning pointing out a bug. Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ net_sched: add classful multiqueue dummy scheduler r8169: Fix warning in rtl8169_start_xmit(). sparc64: Manage NMI watchdog enabling like x86. sparc64: Kill unnecessary cast in profile_timer_exceptions_notify(). sparc64: Make touch_nmi_watchdog() actually work. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 sparc64: Provide extern decls for sparc_??u_type strings. sparc64: Use nmi_enter() and nmi_exit(), as needed. sparc64: Implement a real set_perf_counter_pending(). sparc64: Initial hw perf counter support. sparc64: Provide hypervisor tracing bit support for perf counters. sparc64: Provide a way to specify a perf counter overflow IRQ enable bit. sparc64: Perf counter 'nop' event is not constant. sparc64: Initial niagara2 perf counter support. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ sparc: Kill PROM console driver. sparc: Update defconfigs. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan wl12xx: Fix print_mac() conversion. sparc64: vio: Kill BUILD_BUG_ON() in vio_dring_avail(). Merge branch 'master' of git://git.infradead.org/users/dwmw2/solos-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-davem at91_can: Forgotten git 'add' of at91_can.c David T.L. Wong (1): V4L/DVB (12423): cxusb, d680 dmbth use unified lgs8gxx code instead of lgs8gl5 David VomLehn (1): USB: use kfifo to buffer usb-generic serial writes David Vrabel (4): uwb: handle radio controller events with out-of-range IDs correctly uwb: stop uwbd thread if rc->start() fails uwb: avoid radio controller reset loops USB: whci-hcd: make endpoint_reset method async David Ward (1): ipv6: Update Neighbor Cache when IPv6 RA is received on a router David Wong (2): V4L/DVB (12271): lgs8gxx: add lgs8g75 support V4L/DVB (12272): cx23885: add card Magic-Pro ProHDTV Extreme 2 David Woo (2): mac80211: Mark a destination sequence number as valid when a PREQ is received. mac80211: Fix invalid length passed to IE parser for PLINK CONFIRM frames David Woodhouse (29): solos: Add some margin-related parameters intel-iommu: Speed up map routines by using cached domain ASAP intel-iommu: Remove superfluous iova_alloc_lock from IOVA code intel-iommu: Defer the iotlb flush and iova free for intel_unmap_sg() too. intel-iommu: Kill pointless intel_unmap_single() function agp: Switch mask_memory() method to take address argument again, not page agp: tidy up handling of scratch pages w.r.t. DMA API agp: Switch agp_{un,}map_page() to take struct page * argument intel-agp: Move repeated sglist free into separate function intel-agp: fix sglist allocation to avoid vmalloc() agp: kill phys_to_gart() and gart_to_phys() intel-iommu: Cope with broken HP DC7900 BIOS intel-iommu: Unify hardware and software passthrough support intel-agp: Set dma mask for i915 agp: fix uninorth build Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6 intel-iommu: make domain_add_dev_info() call domain_context_mapping() ia64: IOMMU passthrough mode shouldn't trigger swiotlb init USB: Work around BIOS bugs by quiescing USB controllers earlier intel-iommu: Cope with yet another BIOS screwup causing crashes Make DISCARD_BARRIER and DISCARD_NOBARRIER writes instead of reads intel-iommu: Limit DOMAIN_MAX_PFN to fit in an 'unsigned long' intel-iommu: Fix integer overflow in dma_pte_{clear_range,free_pagetable}() intel-iommu: Kill DMAR_BROKEN_GFX_WA option. intel-iommu: Disable PMRs after we enable translation, not before mtd: sh_flctl: register sh_flctl using platform_driver_probe() jffs2: Use SLAB_HWCACHE_ALIGN for jffs2_raw_{dirent,inode} slabs Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 USB: Work around BIOS bugs by quiescing USB controllers earlier Davide Libenzi (1): anonfd: split interface into file creation and install Davidlohr Bueso A (1): [SCSI] ch: Check NULL for kmalloc() return Dean Nelson (9): atl1c: return PCI_ERS_RESULT_DISCONNECT on permanent failure atl1e: return PCI_ERS_RESULT_DISCONNECT on permanent failure bnx2: return PCI_ERS_RESULT_DISCONNECT on permanent failure bnx2x: return PCI_ERS_RESULT_DISCONNECT on permanent failure igbvf: return PCI_ERS_RESULT_DISCONNECT on permanent failure ixgb: return PCI_ERS_RESULT_DISCONNECT on permanent failure qlge: return PCI_ERS_RESULT_DISCONNECT on permanent failure s2io: return PCI_ERS_RESULT_DISCONNECT on permanent failure vxge: return PCI_ERS_RESULT_DISCONNECT on permanent failure Deepak Saxena (1): Set proper console speed on resume if console suspend is disabled Denis Karpov (8): mmc: power off once at removal omap_hsmmc: add debugfs entry (host registers) ARM: OMAP: mmc-twl4030: add context loss counter support omap_hsmmc: context save/restore support omap_hsmmc: set open drain bit correctly omap_hsmmc: support for deeper power saving states omap_hsmmc: cleanup macro usage omap_hsmmc: code refactoring Denis Kuplyakov (1): ALSA: hda - Add full audio support on Acer Aspire 7730G notebook Denis Loginov (1): V4L/DVB (12356): gspca - sonixj: Webcam 0c45:6148 added Denis Turischev (1): [WATCHDOG] add SBC-FITPC2 watchdog driver Devin Heitmueller (15): V4L/DVB (12444): em28xx: add support for Terratec Cinergy Hybrid T USB XS remote control V4L/DVB (12740): em28xx: better describe vinctrl registers V4L/DVB (12741): em28xx: make video isoc stream work when VBI is enabled V4L/DVB (12742): em28xx: add raw VBI support for NTSC V4L/DVB (12743): em28xx: fix mmap_mapper with vbi V4L/DVB (12744): em28xx: restructure fh/dev locking to handle both video and vbi V4L/DVB (12745): em28xx: remove unreferenced variable V4L/DVB (12746): em28xx: do not create /dev/vbiX device if VBI not supported V4L/DVB (12747): em28xx: only advertise VBI capability if supported V4L/DVB (12748): em28xx: implement g_std v4l call V4L/DVB (12749): em28xx: remove unneeded code that set VINCTRL register V4L/DVB (12750): em28xx: fix unused variable warning V4L/DVB (12880): em28xx: fix codingstyle issues introduced with VBI support V4L/DVB (12881): em28xx: fix codingstyle issues in em28xx-video.c V4L/DVB (12882): em28xx: remove text editor tags from em28xx-vbi.c Dhananjay Phadke (33): netxen: refresh firmware info after reset netxen: enable ip addr hashing netxen: configure interrupt coalesce defaults netxen: annotate dma watchdog setup netxen: refactor tso code netxen: Add default and limit macros for ring sizes. netxen: clean up firmware version checks netxen: refactor net_device setup code netxen: fix skb alloc size for legacy firmware netxen: add vlan tx acceleration support netxen: update version to 4.0.41 netxen: fix CONFIG_INET=n build netxen: fix vlan tso case netxen: remove unnecessary structures netxen: add hardware LRO support netxen: fix firmware reset logic netxen: refactor tx dma mapping code netxen: remove netxen_nic_phan_reg.h netxen: remove unused code netxen: implement generic pcie semaphore functions netxen: remove netxen_nic_niu.c netxen: fix lro buffer allocation netxen: remove duplicate napi_add netxen: fix infinite loop on dma mapping failure netxen: handle firmware load errors netxen: firmware hang detection netxen: refactor firmware info code netxen: update version to 4.0.50 netxen: improve pci memory access netxen: fix file firmware leak netxen: update copyright netxen: fix minor tx timeout bug netxen: fix firmware init after resume Dhaval Vasa (1): [ARM] Kirkwood: Marvell OpenRD-Base board support Dick Hollenbeck (1): ARM: 5688/1: ks8695_serial: disable_irq() lockup Diego Elio 'Flameeyes' Pettenò (1): gconfig: disable "typeahead find" search in treeviews Dimitri Sivanich (1): drivers/char/uv_mmtimer.c: add memory mapped RTC driver for UV Divy Le Ray (11): cxgb3: AQ100X phy support update cxgb3: fix phy power down cxgb3: Fix T3C MAC max packet size access cxgb3: AEL2020 phy support update cxgb3: use request_firmware() for the EDC registers setup cxgb3: Fix mss table initialization cxgb3: fix mac index mapping cxgb3: Drain Mac Tx fifo when the port goes down. cxgb3: fix EDC filename string cxgb3: fix Gen2 pci default settings cxgb3: fix 2 ports 1G regression Dmitri Belimov (5): V4L/DVB (12487): Fix control AC-3 of the 6752HS V4L/DVB (12488): Add RDS config for BeholdTV cards V4L/DVB (12573): FM1216MK5 FM radio V4L/DVB (12587): Add support BeholdTV X7 card V4L/DVB (13001): Key filter for BeholdTV cards. Dmitri Vorobiev (1): Change "useing" -> "using". Dmitriy Taychenachev (2): MXC: add basic MXC91231 support MXC: add iomux pins configuration support for MXC91231 Dmitry Artamonow (1): ARM: 5712/1: SA1100: initialise spinlock in DMA code Dmitry Baryshkov (8): af_ieee802154: drop IEEE802154_SIOC_ADD_SLAVE declaration nl802154: make ieee802154_policy constant documentation: fix wrt. headers rename nl802154: add support for dumping WPAN interface information af_ieee802154: minor cleanup in dgram_bind af_ieee802154: add support for WANT_ACK socket option nl802154: support START-CONFIRM primitive fakehard: use START-CONFIRM primitive to report START failure Dmitry Belimov (1): V4L/DVB (13011): Change tuner type of BeholdTV cards Dmitry Eremin-Solenikov (8): ieee802154: move headers out of extra directory ieee802154: document the skb->cb usage clearly. ieee802154: add a sysfs representation of WPAN master devices fakehard: add binding to wpan-phy device ieee802154: add support for channel pages from IEEE 802.15.4-2006 Drop ARPHRD_IEEE802154_PHY af_ieee802154: setsockopt optlen arg isn't __user ieee802154: add locking for seq numbers Dmitry Monakhov (1): md: raid-1/10: fix RW bits manipulation Dmitry Torokhov (39): Input: sh_keysc - allow modifying keymap from userspace Merge commit 'v2.6.31-rc4' into next Input: pxa27x_keypad - remove extra clk_disable Driver Core: Make PM operations a const pointer Driver Core: Make PM operations a const pointer Input: i8042 - switch to using dev_pm_ops Input: serio - switch to using dev_pm_ops Input: pxa27x_keypad - switch to using dev_pm_ops Input: tsc2007 - properly shut off interrupts/delayed work Input: tsc2007 - make get_pendown_state platform callback optional Input: serio - don't use serio->write() directly Input: wistron_btns - switch to using dev_pm_ops Input: hil_kbd - switch to use completion instead of semaphore Input: hil_kbd - prepare for merging with hil_ptr Input: combine hil_kbd and hil_ptr drivers Input: w90p910_keypad - adjust to use definitions from matrix_keypad.h Input: psmouse - allow defining read-only attributes Merge commit 'v2.6.31-rc8' into next Input: matrix-keypad - add function to build device keymap ACPI: video - fix potential crash when unloading ACPI: video - rename cdev to cooling_dev -- syntax only Input: atkbd - allow setting force-release bitmap via sysfs Input: wacom_w8001 - simplify querying logic Input: i8042 - bypass AUX IRQ delivery test on laptops Input: sunkbd - fix formatting Input: pxa27x_keypad - allow modifying keymap from userspace Input: i8042 - try disabling and re-enabling AUX port at close Input: i8042 - use boolean type where it makes sense Input: i8042 - use platform_driver_probe Input: psmouse - use boolean type V4L/DVB (12489): pwc - fix few use-after-free and memory leaks Input: wistron_btns - add keymap for AOpen 1557 Merge branch 'next' into for-linus Input: libps2 - additional locking for i8042 ports Input: add generic suspend and resume for input devices Input: atkbd - rely on input core to restore state on resume Input: synaptics_i2c - switch to using __cancel_delayed_work() Input: dm355evm_keys - remove dm355evm_keys_hardirq Input: max7359 - use threaded IRQs Don Skidmore (2): ixgbe: cleanup functions that should have been defined static ixgbe: fix sfp_timer clean up in ixgbe_down Don Wood (10): RDMA/nes: Update refcnt during disconnect RDMA/nes: Allocate work item for disconnect event handling RDMA/nes: Change memory allocation for cqp request to GFP_ATOMIC RDMA/nes: Clean out CQ completions when QP is destroyed RDMA/nes: Add CQ error handling RDMA/nes: Implement Terminate Packet RDMA/nes: Use flush mechanism to set status for wqe in error RDMA/nes: Make poll_cq return correct number of wqes during flush RDMA/nes: Use the flush code to fill in cqe error RDMA/nes: Rework the disconn routine for terminate and flushing Donald Dutile (1): intel-iommu: iommu init error path bug fixes Dongdong Deng (1): b44: the poll handler b44_poll must not enable IRQ unconditionally Doug Graham (2): sctp: Fix piggybacked ACKs V3 minixfs: add missing directory type checking Douglas Gilbert (1): [SCSI] update scsi/constants.c Douglas Schilling Landgraf (2): V4L/DVB (12434): em28xx: fix empire auto-detect V4L/DVB (12720): em28xx-cards: Add vendor/product id for Kworld DVD Maker 2 Eberhard Mattes (1): V4L/DVB (12388): dvb-usb: fix tuning with Cinergy T2 Ed Cashin (1): aoe: end barrier bios with EOPNOTSUPP Ed Lin (1): [SCSI] stex: Add reset code for st_yel (v2) Eduardo Valentin (17): OMAP: McBSP: Add IRQEN, IRQSTATUS, THRESHOLD2 and THRESHOLD1 registers. OMAP: McBSP: Use appropriate value for startup delay OMAP: McBSP: Add transmit/receive threshold handler OMAP: McBSP: Create and export max_(r|t)x_thres property OMAP: McBSP: Rename thres sysfs symbols OMAP: McBSP: Change wakeup signals OMAP: McBSP: Configure NO IDLE mode for DMA mode different of threshold ASoC: OMAP: Enable DMA burst mode ASoC: OMAP: Make DMA 64 aligned ASoC: OMAP: Use McBSP threshold to playback and capture ASoC: OMAP: Use DMA operating mode of McBSP V4L/DVB (12547): v4l2-subdev.h: Add g/s_modulator callbacks to subdev api V4L/DVB (12548): v4l2: video device: Add V4L2_CTRL_CLASS_FM_TX controls V4L/DVB (12549): v4l2: video device: Add FM TX controls default configurations V4L/DVB (12551): FM TX: si4713: Add files to add radio interface for si4713 V4L/DVB (12552): FM TX: si4713: Add files to handle si4713 i2c device V4L/DVB (12554): FM TX: si4713: Add document file Eero Nurkkala (8): OMAP: McBSP: Provide functions for ASoC frame syncronization OMAP: McBSP: Wakeups utilized OMAP: McBSP: Retain McBSP FCLK clockactivity OMAP: McBSP: Do not enable wakeups for no-idle mode OMAP: McBSP: Let element DMA mode hit retention also ASoC: Add runtime check for RFIG and XFIG ASoC: Always syncronize audio transfers on frames OMAP: GPIO: Avoid generating extra IRQs Eilon Greenstein (50): bnx2x: Stop management traffic in loopback test bnx2x: Fan failure bnx2x: Fan failure early detection bnx2x: Adding some mmiowb bnx2x: SMP-safe inter_sem bnx2x: Update vlan_features bnx2x: Supporting BCM8727 PHY bnx2x: Set LED in loopback test bnx2x: Missing parenthesis might result with wrong casting bnx2x: Version 1.48.113-1 bnx2x: Receive traffic that maches management filtering rules bnx2x: Self-test kills management traffic bnx2x: WoL only with current MAC address bnx2x: Version 1.48.114-1 bnx2x: New FW files bnx2x: Using the new FW bnx2x: Removing old FW files bnx2x: Supporting Device Control Channel bnx2x: Advertize flow control normally in MF mode bnx2x: BCM8481 LED4 instead of LASI bnx2x: Reading the FW version of the BCM8481 PHY bnx2x: get_ext_phy_fw_version returns NULL if not applicable bnx2x: BCM8727 FW load bnx2x: Adding XAUI CL73 autoneg support bnx2x: MDC/MDIO CL45 IOCTLs bnx2x: Supporting PHY FW upgrade bnx2x: Removing old PHY FW upgrade code bnx2x: Reporting host statistics to management FW bnx2x: Prefetch the page containing the BD descriptor bnx2x: Adding Likely directive bnx2x: Configurable pause scheme bnx2x: Calling pci_set_drvdata earlier bnx2x: Stop loading if error condition detected bnx2x: Combine get_pcie_width and get_pcie_speed bnx2x: Move printing of version from probe to the init bnx2x: Updating regdump_len at drvinfo bnx2x: Remove the init_dmae field from bp bnx2x: Check unzip return code bnx2x: Keep only one HW path active bnx2x: Remove SGMII configuration when not required bnx2x: Missing smp_wmb for statistics state machine bnx2x: Re-arrange the link structures for better alignment bnx2x: Using macro for phy address bnx2x: Adding explicit casting bnx2x: Using PCI_DEVICE macro bnx2x: Re-factor the initialization code bnx2x: Beautify bnx2x_dump.h bnx2x: Removing unused definitions bnx2x: Whitespaces and comments bnx2x: update version to 1.52.1 Eli Cohen (1): mlx4_core: Pass cache line size to device FW Emilio G. Cota (1): Staging: vme: fix {master,slave}_get check bug Eric Anholt (4): drm/i915: Make the downclocking debug code be under DRM_DEBUG not DRM_ERROR. drm/i915: Put the idle reclocking work on our private workqueue as well. drm/i915: Zap mmaps of objects before unbinding them from the GTT. agp/intel: Fix the pre-9xx chipset flush. Eric B Munson (3): hugetlbfs: allow the creation of files suitable for MAP_PRIVATE on the vfs internal mount hugetlb: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions hugetlb: add MAP_HUGETLB example Eric Benard (3): Add support for Eukrea's CPUIMX27 Add support for Eukrea's MBIMX27 mtd: mxc_nand: fix 2KiB pagesize NAND on i.MX27 Eric BĂ©nard (2): ARM: 5629/1: Add support for Eukrea's CPU9260 & CPU9G20 ARM: 5630/1: Add support for Eukrea's CPUAT91 Eric Dumazet (30): udp: cleanups af_packet: style cleanups bnx2x: Dont update vlan_features in bnx2x_set_tso() bnx2: Update vlan_features phonet: phonet_device_get() fix net: ethtool_op_get_rx_csum() should be public and exported neigh: Convert garbage collection from softirq to workqueue netfilter: bridge: refcount fix ipv4: af_inet.c cleanups tcp: keepalive cleanups net: ip_rt_send_redirect() optimization macvlan: Use compare_ether_addr_64bits() bonding: use compare_ether_addr_64bits() in ALB ipv6: ip6_push_pending_frames() should increment IPSTATS_MIB_OUTDISCARDS vlan: multiqueue vlan device ip: Report qdisc packet drops drivers: Kill now superfluous ->last_rx stores net: net/core/dev.c cleanups vlan: enable multiqueue xmits net: Remove debugging code macvlan: add multiqueue capability vlan: adds drops accounting cciss: memory leak in cciss_init_one() slub: fix slab_pad_check() net: kmemcheck annotation in struct socket proc: document `guest' column in /proc/stat ax25: Fix SIOCAX25GETINFO ioctl perf tools: Fix buffer allocation perf tools: Dont use openat() tunnel: eliminate recursion field Eric Miao (3): [ARM] pxa/littleton: update littleton to use the new gpio_card_detect for mmc [ARM] pxa/corgi: make use of GPIO based matrix keypad driver [ARM] pxa/spitz: make use of GPIO based matrix keypad driver Eric Paris (15): Capabilities: move cap_file_mmap to commoncap.c SELinux: call cap_file_mmap in selinux_file_mmap Security/SELinux: seperate lsm specific mmap_min_addr security: define round_hint_to_min in !CONFIG_SECURITY Networking: use CAP_NET_ADMIN when deciding to call request_module security: introducing security_request_module SELinux: add selinux_kernel_module_request Creds: creds->security can be NULL is selinux is disabled SELinux: seperate avc_cache flushing SELinux: flush the avc before disabling SELinux SELinux: inline selinux_is_enabled in !CONFIG_SECURITY_SELINUX SELinux: do not destroy the avc_cache_nodep Audit: reorganize struct audit_watch to save 8 bytes Audit: rearrange audit_context to save 16 bytes per struct Audit: send signal info if selinux is disabled Eric Sandeen (17): xfs: add more statics & drop some unused functions un-static xfs_read_agf xfs: remove XFS_INO64_OFFSET xfs: reduce bmv_count in xfs_vn_fiemap xfs: bump up nr_to_write in xfs_vm_writepage use XFS_CORRUPTION_ERROR in xfs_btree_check_sblock ext4: reject too-large filesystems on 32-bit kernels ext4: open-code ext4_mb_update_group_info simplify some logic in ext4_mb_normalize_request ext4: Add feature set check helper for mount & remount paths ext4: use variables not types in sizeofs() for allocations ext4: use ext4_grpblk_t more extensively xfs: add more statics & drop some unused functions un-static xfs_read_agf xfs: remove XFS_INO64_OFFSET ext4: limit block allocations for indirect-block files to < 2^32 ext4: replace MAX_DEFRAG_SIZE with EXT_MAX_BLOCK Eric Sesterhenn (1): Fix memory leak in write_pool_threads Eric W. Biederman (2): PCI: Simplify hotplug mch quirk. PCI: pcie: Ensure hotplug ports have a minimum number of resources Erik AndrĂ©n (21): V4L/DVB (12877): gspca - m5602-s5k4aa: Add vflip quirk for the Amilo Pa 2548 V4L/DVB (12977): gspca - m5602-ov7660: Create blue gain control V4L/DVB (12978): gspca - m5602-ov7660: Add red gain control V4L/DVB (12979): gspca - m5602-ov7660: Ensure that the default exposure is set V4L/DVB (12980): gspca - m5602-ov7660: Create auto white balance ctrl V4L/DVB (12981): gspca - m5602-ov7660: Set blue and red gain at init V4L/DVB (12982): gspca - m5602-ov7660: Add auto gain ctrl V4L/DVB (12983): gspca - m5602-ov7660: Add auto exposure ctrl V4L/DVB (12984): gspca - m5602-ov7660: Use a new raw init V4L/DVB (12985): gspca - m5602-ov7660: Replace magic constants with defines V4L/DVB (12986): gspca - m5602-ov7660: Add hflip, vflip controls V4L/DVB (12987): gspca - m5602-ov7660: Set the hsync correctly V4L/DVB (12988): gspca - m5602-ov7660: Remove old init V4L/DVB (12989): gspca - m5602-ov7660: Don't set gain during init V4L/DVB (12990): gspca - m5602-ov7660: Don't set blue and red gain during init V4L/DVB (12991): gspca - m5602-ov7660: Remove redundant init writes V4L/DVB (12992): gspca - m5602-ov7660: Disable red and blue gain for now V4L/DVB (13004): gspca - stv06xx: Harmonize the debug macros when tracing writes and reads V4L/DVB (13005): gspca - stv06xx: Translate swedish comments to english V4L/DVB (13006): gspca - stv06xx: Fix a misindentation V4L/DVB (13007): gspca - stv06xx-hdcs: Add exposure and gain ctrls to hdcs_1020 Eugene Yudin (1): V4L/DVB (12589): Add support for RoverMedia TV Link Pro FM Evgeniy Polyakov (1): Staging: pohmelfs: sync with the development tree FUJITA Tomonori (29): swiotlb: remove unused swiotlb_alloc_boot() swiotlb: remove unused swiotlb_alloc() swiotlb: remove swiotlb_arch_range_needs_mapping swiotlb: remove unnecessary swiotlb_bus_to_virt x86: add dma_capable() to replace is_buffer_dma_capable() x86: replace is_buffer_dma_capable() with dma_capable ia64: add dma_capable() to replace is_buffer_dma_capable() powerpc: add dma_capable() to replace is_buffer_dma_capable() swiotlb: use dma_capable() powerpc: remove unncesary swiotlb_arch_address_needs_mapping remove is_buffer_dma_capable() x86, IA64, powerpc: add phys_to_dma() and dma_to_phys() swiotlb: use phys_to_dma and dma_to_phys powerpc: remove unused swiotlb_phys_to_bus() and swiotlb_bus_to_phys() x86: remove unused swiotlb_phys_to_bus() and swiotlb_bus_to_phys() IA64: Remove NULL flush_write_buffers sparc: Use dma_map_ops struct sparc: Use asm-generic/dma-mapping-common.h sparc: Remove no-op dma_4v_sync_single_for_cpu and dma_4v_sync_sg_for_cpu sparc: Replace sbus_map_single and sbus_unmap_single with sbus_map_page and sbus_unmap_page sparc: Use asm-generic/pci-dma-compat sparc: Add CONFIG_DMA_API_DEBUG support powerpc: Remove addr_needs_map in struct dma_mapping_ops powerpc: Remove swiotlb_pci_dma_ops dma: Add set_dma_mask hook to struct dma_map_ops powerpc: use dma_map_ops struct powerpc: Use asm-generic/dma-mapping-common.h powerpc: Handle SWIOTLB mapping error properly powerpc: Add CONFIG_DMA_API_DEBUG support Fabian Henze (2): agp/intel: Add B43 chipset support drm/i915: add B43 chipset support Fabio Estevam (1): fec: Add FEC support for MX25 processor Felipe Balbi (7): OMAP3: beagle: add missing twl4030 usb platform_data Staging: cpc-usb: convert comment style in cpc.h Staging: cpc-usb: convert comment style in cpc_int.h Staging: cpc-usb: convert comment style in cpcusb.h Staging: cpc-usb: add one todo entry mfd: Add twl4030-pwrbutton as a twl4030 child regulator: userspace: use sysfs_create_group Felipe Contreras (3): x86: Trivial whitespace cleanups MAINTAINERS: acpi: add 'include/acpi' MAINTAINERS: omap: fix regex Felix Beck (3): [S390] zcrypt: Use spin_lock_bh in suspend callback [S390] zcrypt: Free ap_device if dev_set_name fails. [S390] zcrypt: Do not add/remove devices in s/r callbacks Felix Blyakher (1): Merge branch 'master' of ssh+git://oss.sgi.com/oss/git/xfs/xfs Feng Kan (1): mtd: nand: fix ECC Correction bug for SMC ordering for NDFC driver Feng Tang (9): ACPI, x86: expose some IO-APIC routines when CONFIG_ACPI=n ACPI: Handle CONFIG_ACPI=n better from linux/acpi.h SFI: create linux/sfi.h SFI: add platform-independent core support SFI: add capability to parse ACPI tables x86: add arch-specific SFI support SFI: Hook PCI MMCONFIG SFI: remove unneeded includes x86: Move get/set_wallclock to x86_platform_ops Fenghua Yu (1): ia64: Fix setup_per_cpu_areas() compilation error Fernando Luis Vazquez Cao (2): virtio: get rid of redundant VIRTIO_ID_9P definition virtio: add virtio IDs file Figo.zhang (5): x86, pgtable.h: Clean up types x86, highmem_32.c: Clean up comment Staging: comedi: no need for checking vfree call vmalloc.c: fix double error checking USB: ehci-dbg.c: no need for checking it before call vfree Fischer, Anna (1): net/bridge: Add 'hairpin' port forwarding mode Florian Echtler (1): Input: usbtouchscreen - add support for e2i touchscreen controller Florian Fainelli (10): cpmac: fix wrong MDIO bus identifier ar7: add fixed PHY support for the two on-board cpmac cpmac: add support for fixed PHY cpmac: wait longer after MDIO reset cpmac: bump version to 0.5.1 cpmac: unmark as broken r6040: bump to version 0.25 and 20 August 2009 release date MIPS: AR7: Make board code register ar7_wdt as a platform device [WATCHDOG] ar7_wdt: convert to become a platform driver cpmac: fix compilation errors against undeclared BUS_ID_SIZE Florian Tobias Schandinat (21): viafb: remove duplicated CX700 register init viafb: remove temporary start address setting viafb: merge viafb_update_viafb_par in viafb_update_fix viafb: split viafb_set_start_addr up viafb: fix ioremap_nocache error handling viafb: clean up viamode.h viafb: remove duplicated mode information viafb: clean up duoview viafb: clean up virtual memory handling viafb: remove unused video device stuff viafb: remove LVDS initialization viafb: another small cleanup of viafb_par viafb: improve viafb_par viafb: 2D engine rewrite viafb: cleanup viafb_cursor viafb: improve pitch handling viafb: hardware acceleration initialization cleanup viafb: use read-only mode parsing viafb: choose acceleration engine for VX855 fb: fix fb_pan_display range check fb: do not ignore fb_set_par errors Florian Westphal (1): net: remove NET_RX_BAD and NET_RX_CN* defines Forest Bond (8): Staging: Add pristine upstream vt6656 driver sources to drivers/staging/vt6656. Staging: vt6656: Add includes to drivers/staging/vt6656. Staging: vt6656: Build vt6656.ko, not vntwusb.ko. Staging: vt6656: main_usb.c: Drop obsolete fsuid/fsgid accesses. Staging: vt6656: Replace net_device->priv accesses with netdev_priv calls. Staging: vt6656: use net_device_ops for management functions Staging: vt6656: replace call to info with printk call. Staging: vt6656: Integrate vt6656 into build system. Francisco Jerez (7): drm/kms: slave encoder interface. drm: Define DRM_MODE_CONNECTOR_TV drm: Define DRM_MODE_SUBCONNECTOR_SCART drm: Define some new standard TV properties. drm: Fix drm_cvt_mode() for interlaced modes. drm: Add more standard TV properties. vgacon: prevent vgacon_deinit from touching the hardware for inactive consoles. Frank Blaschka (1): qeth: scheduling while atomic during ifconfig online sequence Frank Filz (2): nfsd: Fix unnecessary deny bits in NFSv4 ACL nfsd4: remove ACE4_IDENTIFIER_GROUP flag from GROUP@ entry Frank Mayhar (1): ext4: Make non-journal fsync work properly Frank Munzert (1): [S390] tape: use init_timer_on_stack() rather than init_timer() Frank Schaefer (3): USB-serial: pl2303: fix baud rate handling in case of unsupported values USB-serial: pl2303: add space/mark parity USB-serial: pl2303: use 1.5 instead of 2 stop bits with 5 data bits Frans Pop (8): printk: Restore previous console_loglevel when re-enabling logging x86: Simplify the Makefile in a minor way through use of cc-ifversion powerpc: Makefile simplification through use of cc-ifversion floppy: Switch driver to dev_pm_ops hp-wmi: Switch driver to dev_pm_ops trivial: cleanup hpfall example code (checkpatch) trivial: doc: hpfall: accept disk device to unload as argument trivial: improve help text for mm debug config options Frederic Riss (1): ARM: 5715/1: Make kprobes unregistration SMP safe Frederic Weisbecker (57): tracing/function-graph-tracer: Use the %pf format tracing/kmemtrace: Use the %pf format sched: Drop the need_resched() loop from cond_resched() sched: Remove obsolete comment in __cond_resched() sched: Cover the CONFIG_DEBUG_SPINLOCK_SLEEP off-case for __might_sleep() sched: Add a preempt count base offset to __might_sleep() sched: Remove the CONFIG_PREEMPT_BKL case definition of cond_resched() sched: Pull up the might_sleep() check into cond_resched() sched: Convert the only user of cond_resched_bkl to use cond_resched() sched: Fix cond_resched_lock() in !CONFIG_PREEMPT tracing/function-graph-tracer: Drop the useless nmi protection tracing/core: Turn ftrace_cpu_disabled into a global var tracing/core: Make the stack entry helpers global tracing: Move sched event insertion helpers in the sched switch tracer file tracing/function-graph-tracer: Move graph event insertion helpers in the graph tracer file tracing/events: Only define remove_subsystem_dir() if CONFIG_MODULES tracing: Add ftrace event call parameter to its field descriptor handler tracing: Add fields format definition for syscall events tracing: Support for syscall events raw records in perfcounters perf tools: Factorize high level dso helpers perf tools: Factorize the event structure definitions in a single file perf tools: Factorize the map helpers perf tools: Factorize the thread code in a dedicated file perf tools: Substract -Wformat-nonliteral from Wformat=2 in extra flags perf tools: Factorize the dprintf definition perf tools: Put the show mode into the event headers files perf tools: Librarize sample type and attr finding from headers perf tools: Librarize trace_event() helper perf tools: Add perf trace perf tools: Fix spelling mistake in callchain error perf tools: Warn while running perf trace without sample perf tools: Record events info also when :record suffix is used. perf tools: Make trace event format parser aware of cast to pointers perf tools: Fix comm column adjusting perf tools: Save partial non-overlapping map tracing: Undef TRACE_EVENT_FN between trace events headers inclusion perf tools: Only save the event formats we need perf tools: Fix missing string field printing in perf trace tracing: Fix double CPP substitution in TRACE_EVENT_FN perf tools: Add missing parameters documentation perf tools: Librarize idle thread registration perf tools: Resolve idle thread cmdline for perf trace perf tools: Unify swapper tasks naming perf tools: Complete support for dynamic strings perf tools: Allow the specification of all tracepoints at once perf sched: Fix bad event alignment perf sched: Make it easier to plug in new sub profilers perf sched: Add sched latency profiling perf sched: Rename struct lat_snapshot to struct work atoms perf sched: Add involuntarily sleeping task in work atoms perf sched: Export the total, max latency and total runtime to thread atoms list perf sched: Fix nsec to msec conversion perf sched: Implement multidimensional sorting perf tools: Add an option to multiplex counters in a single channel perf tools: Fix processing of randomly serialized sched traces tracing: Factorize the events profile accounting tracing: Allocate the ftrace event profile buffer dynamically Frederik Deweerdt (2): Staging: line6: pod.c: style cleanups Staging: line6: ffzb returns an unsigned integer From: Mel Gorman (1): hugetlbfs: do not call user_shm_lock() for MAP_HUGETLB fix Gabor Juhos (9): ath9k: remove unnecessary clearing of SC_OP_WAIT_{BEACON,CAB} flags ath9k: remove ath_rx_ps_back_to_sleep helper ath9k: serialize ath9k_hw_setpower calls ath9k: uninline ath9k_ps_{wakeup,restore} functions ath9k: serialize ath9k_ps_{wakeup,restore} calls ath9k: wake up the chip for TSF reset ath9k: make use ath9k_hw_wait int ath9k_hw_reset_tsf ath9k: fix race with IEEE80211_CONF_PS checks ath9k: get rid of unnecessary setpower calls Gautham R Shenoy (2): powerpc/pseries: Reduce the polling interval in __cpu_up() sched: Try to deal with low capacity, fix update_sd_power_savings_stats() Geert Uytterhoeven (3): powerpc/cell: Move CBE_IOPTE_* to md: Fix "strchr" [drivers/md/dm-log-userspace.ko] undefined! arches: drop superfluous casts in nr_free_pages() callers Geoff Levand (1): powerpc/ps3: Workaround for flash memory I/O error Geoff Thorpe (1): powerpc: expose the multi-bit ops that underlie single-bit ops. Geoffrey Thomas (2): sparc: Clean up linker script using new linker script macros. alpha: Clean up linker script using new linker script macros. George Spelvin (1): USB: Clean up root hub string descriptors Gerald Schaefer (1): PM / Hibernate / Memory hotplug: Always use for_each_populated_zone() Gerard Lledo (1): jffs2: move jffs2_gcd_mtd threads to the new kthread API Gergely Imreh (1): USB: fix USBTMC get_capabilities success handling Gerhard Pircher (1): powerpc/amigaone: Convert amigaone_init() to a machine_device_initcall() Gerrit Renker (5): mcastv6: Local variable shadows function argument inet6: functions shadow global variable inet6: Conversion from u8 to int inet6: Set default traffic class net-next-2.6 [PATCH 1/1] dccp: ccids whitespace-cleanup / CodingStyle GeunSik Lim (6): debugfs: Fix mount directory of debugfs by default in events.txt debugfs: Change debuhgfs directory of trace-events-sample.h debugfs: Change debugfs directory of IWMC3200 debugfs: Modified default dir of debugfs for debugging UHCI. debugfs: Modify default debugfs directory for debugging pktcdvd. trivial: change address of the libcap source. Giridhar Malavali (2): [SCSI] qla2xxx: Update version number to 8.03.01-k5 [SCSI] qla2xxx: Update version number to 8.03.01-k6. Giuseppe Cavallaro (2): sh: kgdb: do not reload VBR while handling debugger breackpoint sh: fix sys_cacheflush error checking Glauber Costa (1): KVM guest: fix bogus wallclock physical address calculation Gleb Natapov (29): x86/apic: Enable x2APIC without interrupt remapping under KVM KVM: VMX: Properly handle software interrupt re-injection in real mode KVM: Drop interrupt shadow when single stepping should be done only on VMX KVM: Introduce kvm_vcpu_is_bsp() function. KVM: Use pointer to vcpu instead of vcpu_id in timer code. KVM: Break dependency between vcpu index in vcpus array and vcpu_id. KVM: Use macro to iterate over vcpus. KVM: Replace pending exception by PF if it happens serially KVM: Optimize searching for highest IRR KVM: Add Directed EOI support to APIC emulation KVM: x2apic interface to lapic KVM: Use temporary variable to shorten lines. KVM: Add trace points in irqchip code KVM: No need to kick cpu if not in a guest mode KVM: Always report x2apic as supported feature KVM: Move exception handling to the same place as other events KVM: Move kvm_cpu_get_interrupt() declaration to x86 code KVM: Reduce runnability interface with arch support code KVM: silence lapic kernel messages that can be triggered by a guest KVM: s390: remove unused structs KVM: PIT: Unregister ack notifier callback when freeing KVM: Call kvm_vcpu_kick() inside pic spinlock KVM: Call ack notifiers from PIC when guest OS acks an IRQ. KVM: Replace pic_lock()/pic_unlock() with direct call to spinlock functions KVM: Update cr8 intercept when APIC TPR is changed by userspace KVM: VMX: Fix cr8 exiting control clobbering by EPT KVM: Fix coalesced interrupt reporting in IOAPIC KVM: VMX: call vmx_load_host_state() only if msr is cached KVM: fix misreporting of coalesced interrupts by kvm tracer Graf Yang (7): Blackfin: fix MPU handling of invalid memory accesses Blackfin: improve double fault debug handling Blackfin: SMP port does not yet support cpu frequency scaling Blackfin: handle the core timer interrupt with handle_percpu_irq on SMP Blackfin: swap clocksource ratings for gptimer/cycles mtd: m25p80: add support for AAI programming with SST SPI flashes mtd: m25p80: add SST WF SPI flash device information Graham, David (2): e1000: Remove unused function e1000_mta_set. e1000: Fix for e1000 kills IPMI on a tagged vlan. Grant Likely (3): powerpc/pci: Remove dead checks for CONFIG_PPC_OF powerpc/pci: move pci_64.c device tree scanning code into pci-common.c powerpc/pci: Merge ppc32 and ppc64 versions of phb_scan() Greg Kroah-Hartman (191): Driver core: move dev_get/set_drvdata to drivers/base/dd.c Staging: hv: add a TODO file Staging: hv: make the Hyper-V virtual bus code build Staging: hv: use the correct #ifdef for x86-64 Staging: hv: add the Hyper-V virtual bus to the build Staging: hv: make the Hyper-V virtual storage driver build Staging: hv: add the Hyper-V virtual scsi driver to the build Staging: hv: storvsc: fix up driver_data usage Staging: hv: make the Hyper-V virtual block driver build Staging: hv: add the Hyper-V virtual block driver to the build Staging: hv: blkvsc: fix up driver_data usage Staging: hv: make the Hyper-V virtual network driver build Staging: hv: add the Hyper-V virtual network driver to the build Staging: hv: netvsc: fix up driver_data usage Staging: hv: remove INTERNAL typedef Staging: hv: remove PVOID typedef Staging: hv: remove VOID typedef Staging: hv: remove UINT8 and INT8 typedefs Staging: hv: remove UINT16 and INT16 typedefs Staging: hv: remove UINT32 and INT32 typedefs Staging: hv: remove UINT64 and INT64 and UCHAR typedefs Staging: hv: remove USHORT typedef Staging: hv: remove ULONGLONG and LONGLONG typedefs Staging: hv: remove ULONG_PTR typedef Staging: hv: remove ULONG and LONG typedefs Staging: hv: remove SIZE_T typedef Staging: hv: remove DWORD and BYTE typedefs Staging: hv: remove BOOL and BOOLEAN typedefs Staging: hv: remove #defines from osd.c Staging: hv: remove MIN and MAX usages Staging: hv: remove PAGE_SIZE and PAGE_SHIFT and __builtin functions Staging: hv: remove STRUCT_PACKED and STRUCT_ALIGNED defines Staging: hv: remove UNUSED_VAR usage Staging: hv: remove FIELD_OFFSET usage Staging: hv: remove TRUE, FALSE, and NULL usage Staging: hv: osd: remove MemAlloc wrapper Staging: hv: osd: remove MemAllocZeroed wrapper Staging: hv: osd: remove MemAllocAtomic wrapper Staging: hv: osd: remove MemFree wrapper Staging: hv: make Channel->InboundLock a real spinlock Staging: hv: make RingInfo->RingLock a real spinlock Staging: hv: make Device->RequestLock a real spinlock Staging: hv: make netDevice->ReceivePacketListLock a real spinlock Staging: hv: make gVmbusConnection.ChannelMsgLock a real spinlock Staging: hv: make gVmbusConnection.ChannelLock a real spinlock Staging: hv: osd: remove spinlock wrapper functions Staging: hv: osd: remove Sleep wrapper Staging: hv: osd: remove MemoryFence wrapper Staging: hv: osd: remove LogMsg wrapper Staging: hv: osd: remove PrintBytes wrapper Staging: hv: fix up printk warnings Staging: hv: osd: remove GetTickCount and GetTimestamp wrappers Staging: hv: force hyper-v drivers to be built as a module Staging: hv: remove more printk() warnings Staging: hv: properly fix the printk() warnings Staging: hv: fix sparse static warnings Staging: hv: fix sparse function warnings Staging: hv: fix sparse NULL pointer warnings Staging: hv: remove custom cpuid function Staging: hv: remove custom rdmsrl and wrmsrl functions Staging: hv: osd: remove physical address wrapper functions Staging: hv: osd: add osd_ prefix to global functions Staging: hv: remove timer wrapper functions Staging: hv: remove duplicated osd.o inclusions Staging: hv: remove ReadMsr and WriteMsr functions from Hv.h Staging: hv: cleanup coding style issues in Hv.h Staging: hv: cleanup coding style issues in Channel.h Staging: hv: cleanup coding style issues in VersionInfo.h Staging: hv: cleanup coding style issues in ChannelInterface.h Staging: hv: cleanup coding style issues in ChannelMgmt.h Staging: hv: cleanup coding style issues in VmbusPrivate.h Staging: hv: cleanup coding style issues in RingBuffer.h Staging: hv: remove Sources.c Staging: hv: clean up NetVsc.h Staging: hv: clean up RndisFilter.h Staging: hv: clean up typedefs in Hv.h Staging: hv: clean up typedefs in ChannelMgmt.h Staging: hv: clean up vstorage.h Staging: hv: move osd.h Staging: hv: osd.h: codingstyle cleanups Staging: hv: osd.h: remove GUID typedef Staging: hv: osd.h: fix GUID reference problem Staging: hv: osd.c: coding style fixes Staging: hv: remove include/HvTypes.h Staging: hv: remove include/HvHalApi.h Staging: hv: coding style cleanup of include/HvHcApi.h Staging: hv: coding style cleanup of include/HvVpApi.h Staging: hv: move vmbus.h Staging: hv: vmbus.h coding style cleanups Staging: hv: move rndis.h Staging: hv: rndis.h: remove pointless typedefs Staging: hv: rndis.h: codingstyle fixes Staging: hv: rndis.h: typedef removal, part 1 Staging: hv: rndis.h: typedef removal, part 2 Staging: hv: coding style cleanups for HvPtApi.h Staging: hv: coding style cleanups for HvSynicApi.h Staging: hv: typdef fixes for HvSynicApi.h Staging: hv: remove volatile usage from HvSynicApi.h Staging: hv: create hv_api.h Staging: hv: coding style cleanups for HvStatus.h Staging: hv: move HvStatus.h into hv_api.h Staging: hv: coding style cleanups for VmbusChannelInterface.h Staging: hv: typedef removal from VmbusChannelInterface.h Staging: hv: coding style cleanups for VmbusApi.h Staging: hv: typedef removal for VmbusApi.h Staging: hv: codingsyle cleanups for ChannelMessages.h Staging: hv: typedef removal for ChannelMessages.h Staging: hv: fix up some coding style issues in logging.h Staging: hv: fix up coding style issues in NetVscApi.h Staging: hv: fix up typedefs in NetVscApi.h Staging: hv: move vstorage.h to hv dir Staging: hv: fix remaining style issue in ChannelInterface.h Staging: hv: fix typedefs in vstorage.h Staging: hv: fix coding style issues in VmbusPacketFormat.h Staging: hv: remove typedefs from VmbusPacketFormat.h Staging: hv: fix coding style issues in StorVscApi.h Staging: hv: fix typedefs in StorVscApi.h Staging: hv: fix coding style issues in nvspprotocol.h Staging: hv: fix typedefs in nvspprotocol.h Staging: hv: move nvspprotocol.h Staging: hv: remove ChannelMessages.h Staging: hv: move List.h Staging: hv: move logging.h Staging: hv: move NetVscApi.h Staging: hv: move StorVscApi.h Staging: hv: move VmbusApi.h Staging: hv: move VmbusChannelInterface.h Staging: hv: move VmbusPacketFormat.h Staging: hv: coding style cleanups of BlkVsc.c Staging: hv: coding style cleanups of ChannelInterface.c Staging: hv: remove typedefs from ChannelMgmt.c Staging: hv: remove typedefs from RndisFilter.c Staging: hv: remove typedefs from StorVsc.c Staging: hv: coding style cleanups for Connection.c Staging: hv: coding style cleanups on Vmbus.c Staging: hv: code reduction from Vmbus.c Staging: hv: fix coding style issues in Hv.c Staging: hv: coding style cleanups for netvsc_drv.c Staging: hv: reorganize netvsc_drv.c Staging: hv: coding style cleanups for ChannelMgmt.c Staging: hv: reorg ChannelMgmt a bit Staging: hv: TODO: add some more items Staging: hv: coding style cleanups for StorVsc.c Staging: hv: reorg StorVsc.c Staging: hv: coding style fixes for blkvsc_drv.c Staging: hv: coding style cleanup for Channel.c Staging: hv: warn the world of a bug in the release function Staging: hv: coding style cleanups for vmbus_drv.c Staging: hv: coding style cleanup for storvsc_drv.c Staging: hv: coding style cleanup for RndisFilter.c Staging: hv: coding style cleanup for NetVsc.c Staging: hv: rename struct NETVSC_DEVICE Staging: hv: remove function pointer typedefs from VmbusApi.h Staging: hv: remove function pointer typedefs from NetVscApi.h Staging: hv: remove function pointer typedefs from StorVscApi.h Staging: hv: remove PFN_CHANNEL_CALLBACK Staging: hv: remove function pointer typedefs from vmbus.h Staging: hv: update the TODO file Staging: vme: change to VME_BUS Staging: remove epl driver Staging: pata_rdc: remove the driver from the staging tree Staging: echo: fix up remaining checkpatch.pl issues Staging: echo: remove TODO item Staging: echo: remove bit_operations.h Staging: echo: remove unneeded USE_MMX defines Staging: echo: remove unneeded USE_SSE2 defines Staging: echo: coding style cleanups Staging: add Realtek 8192 PCI wireless driver Staging: rtl8192e: fix lots of sparse warnings Staging: rtl8192e: remove unused functions Staging: rtl8192e: remove #if 0 sections Staging: rtl8192e: remove kernel version checks Staging: rtl8192e: remove firmware header file not being used Staging: rtl8192e: remove another firmware header file not being used Staging: rtl8192e: coding style cleanups on r819xE_firmware.c Staging: rtl8192e: remove unneeded ieee80211 files Staging: rtl8192e: remove annoying printk() Staging: rtl8192e: fix for stack bug Staging: rtl8192e: fix timeouts on firmware download Staging: get cowloop to build properly Staging: cowloop: add TODO file Staging: add cowloop to the build Staging: cowloop: remove kernel version checks Staging: vt665x: rename the module binary Staging: remove me4000 driver. Staging: meilhaus: remove the drivers Staging: rspiusb: remove the driver Staging: remove at76_usb wireless driver. Staging: remove heci driver Staging: remove sxg driver USB: skeleton: fix coding style issues. Greg Ungerer (36): m68k: remove unused elia.h include file m68k: merge mmu and non-mmu versions of processor.h m68k: merge mmu and non-mmu versions of irq.h m68k: merge the mmu and non-mmu versions of checksum.h m68k: merge mmu and non-mmu versions of dma.h m68k: clean up comment delimiters in dma.h m68knommu: use general interrupt controller for ColdFire 520x family m68knommu: remove per device interrupt mask setting for ColdFire 520x m68knommu: general interrupt controller for ColdFire many 52xx parts m68knommu: clean up ColdFire 527x interrupt setup m68knommu: clean up ColdFire 528x interrupt setup m68knommu: clean up ColdFire 523x interrupt setup m68knommu: general interrupt controller for ColdFire 532x parts m68knommu: clean up ColdFire 532x interrupt setup m68knommu: use common interrupt controller code for older ColdFire CPU's m68knommu: complete interrupt controller code for the 68328 CPU's m68knommu: complete interrupt controller code for the 68360 CPU m68knommu: remove the common interrupt controller structure m68knommu: remove unecessary interrupt level setting in ColdFire 520x setup m68knommu: remove interrupt masking from ColdFire pit timer m68knommu: remove timer device interrupt setup for ColdFire 532x m68knommu: mask off all interrupts in ColdFire intc-simr controller m68knommu: move ColdFire INTC definitions to new include file m68knommu: remove duplicate ColdFire mcf_autovector() code m68knommu: merge old ColdFire interrupt controller masking macros m68knommu: support code to mask external interrupts on old ColdFire CPU's m68knommu: simplify ColdFire "timers" clock initialization m68knommu: clean up ColdFire 532x CPU timer setup m68knommu: map ColdFire interrupts to correct masking bits m68knommu: clean up old ColdFire timer irq setup m68knommu: add support for second interrupt controller of ColdFire 5249 m68knommu: create a speciailized ColdFire 5272 interrupt controller m68knommu: remove ColdFire direct interrupt register access m68knommu: relax IO_SPACE_LIMIT setting m68knommu: remove special interrupt handling code for ne2k support m68knommu: set multi-function pins for ethernet when enabled Gregory Haskins (8): sched: Enhance the pre/post scheduling logic sched: Fully integrate cpus_active_map and root-domain code KVM: irqfd KVM: Clean up coalesced_mmio destruction KVM: cleanup io_device code KVM: do not register i8254 PIO regions until we are initialized KVM: make io_bus interface more robust KVM: add ioeventfd support Guennadi Liakhovetski (39): [ARM] pxa/pcm990: convert pcm990 to soc-camera as platform-device [ARM] pxa/mioa701: convert mioa701 to the new platform-device soc-camera interface [ARM] pxa/em-x270: convert em-x270 to soc-camera as platform-device V4L/DVB (12158): v4l: add cropping prototypes to struct v4l2_subdev_video_ops V4L/DVB (12504): soc-camera: prepare soc_camera_platform.c and its users for conversion V4L/DVB (12505): soc_camera_platform: pass device pointer from soc-camera core on .add_device() V4L/DVB (12506): soc-camera: convert to platform device V4L/DVB (12507): sh: soc-camera updates V4L/DVB (12508): soc-camera: remove unused .iface from struct soc_camera_platform_info V4L/DVB (12509): sh: prepare board-ap325rxa.c for v4l2-subdev conversion V4L/DVB (12510): soc-camera: (partially) convert to v4l2-(sub)dev API V4L/DVB (12511): V4L2: add a new V4L2_CID_BAND_STOP_FILTER integer control V4L/DVB (12512): ov772x: implement a band-stop filter support V4L/DVB (12513): soc-camera: add support for camera-host controls V4L/DVB (12514): sh_mobile_ceu_camera: add a control for the camera low-pass filter V4L/DVB (12515): soc-camera: use struct v4l2_rect in struct soc_camera_device V4L/DVB (12516): ov772x: successful S_FMT and S_CROP must update user-provided rectangle V4L/DVB (12517): mt9t031: improve rectangle placement in invalid S_CROP V4L/DVB (12518): ov772x: S_CROP must return actually configured geometry V4L/DVB (12519): soc-camera: put pixel format initialisation back in probe, add .put_formats() V4L/DVB (12520): sh-mobile-ceu-camera: do not wait for interrupt when releasing buffers V4L/DVB (12521): soc-camera: use .s_std() from struct v4l2_subdev_core_ops V4L/DVB (12522): sh-mobile-ceu-camera: implement host-side cropping V4L/DVB (12523): tw9910: return updated geometry on successful S_FMT and S_CROP V4L/DVB (12524): soc-camera: S_CROP V4L2 API compliance fix V4L/DVB (12525): soc-camera: prohibit geometry change with initialised buffers V4L/DVB (12526): ov772x: do not use scaling for cropping V4L/DVB (12527): tw9910: do not lie about cropping abilities V4L/DVB (12528): sh_mobile_ceu_camera: implement host-side image scaling V4L/DVB (12529): soc-camera: switch to s_crop v4l2-subdev video operation V4L/DVB (12530): soc-camera: switch to using v4l2_subdev_call() V4L/DVB (12531): soc-camera: Use I2C device for dev_{dbg,info,...} output in all clients V4L/DVB (12532): soc-camera: Use camera device object for core output V4L/DVB (12533): soc-camera: Use video device object for output in host drivers V4L/DVB (12534): soc-camera: V4L2 API compliant scaling (S_FMT) and cropping (S_CROP) V4L/DVB (12535): soc-camera: remove .init() and .release() methods from struct soc_camera_ops V4L/DVB (12536): soc-camera: remove .gain and .exposure struct soc_camera_device members V4L/DVB (12580): soc-camera: remove now unneeded subdevice group ID assignments sh_mobile_ceu_camera: fix compile breakage, caused by a bad merge Guillaume Knispel (1): poll/select: avoid arithmetic overflow in __estimate_accuracy() Guo-Fu Tseng (7): jme: Some minor coding style consistency modifications jme: Fix unmatched tasklet_{enable|disable} pair jme: Fix typo jme: Change bufinf memory location jme: Remove shadow register support jme: Tuning rxsum function jme: Advance driver version number Gustavo F. Padovan (15): Bluetooth: Add configuration support for ERTM and Streaming mode Bluetooth: Create separate l2cap_send_disconn_req() function Bluetooth: Add initial support for ERTM packets transfers Bluetooth: Add support for Segmentation and Reassembly of SDUs Bluetooth: Initial support for retransmission of packets with REJ frames Bluetooth: Add support for Retransmission and Monitor Timers Bluetooth: Enable Streaming Mode for L2CAP Bluetooth: Add support for FCS option to L2CAP Bluetooth: Add support for L2CAP SREJ exception Bluetooth: Full support for receiving L2CAP SREJ frames Bluetooth: Add locking scheme to L2CAP timeout callbacks Bluetooth: Use proper *_unaligned_le{16,32} helpers for L2CAP Bluetooth: Acknowledge L2CAP packets when receiving RR-frames (F-bit=1) Bluetooth: Handle L2CAP case when the remote receiver is busy Bluetooth: Add support for L2CAP 'Send RRorRNR' action Guus Sliepen (1): USB: usbtmc: sanity checks for DEV_DEP_MSG_IN urbs Gábor Stefanik (47): cfg80211: fix disabling WPA via wext (SIOCSIWAUTH) b43: implement baseband init for LP-PHY <= rev1 b43: Add LP 2063 radio init b43: Typo fixes & minor cleanup b43: Fix fallout from the IEEE80211_IF_TYPE to NL80211_IFTYPE change. b43: LP-PHY: Implement STX synchronization b43: Implement LP-PHY baseband table initialization b43: Update LP-PHY rev2+ baseband init to match the specs ssb: Implement the remaining rev.8 SPROM vars needed for LP-PHY b43: Fix a typo in the sync_stx routine b43: LP-PHY: Implement reading band SPROM b43: Implement RC calibration for rev.2+ LP PHYs b43: LP-PHY: Refactor TX gain table I/O b43: Implement RC calibration for rev.0/1 LP-PHYs b43: Update dummy transmission to match V4 specs b43: LP-PHY: Initialize TX power control b43: LP-PHY: Implement channel switching for rev2+/B2063 radio b43: LP-PHY: Implement channel switching for rev0/1/B2062 radio ssb: Fix typo in the rev8 SPROM extraction routine b43: Add LP-PHY firmware loading support b43: Make LP-PHY testable b43: LP-PHY: Don't adjust gain table for rev2+ when setting channel b43: LP-PHY: Update TX gain override for a spec typo fix b43: LP-PHY: Fix another TX power control abuse b43: Handle B43_PHYTYPE_LP in RX path b43: LP-PHY: Update baseband init for recent spec changes b43: LP-PHY: Fix a spec error in the B2062 channel switch routine b43: LP-PHY: Update code for spec fixes, and fix a few typos b43: LP-PHY: Fix a bug in the B2062 channel tune path b43: LP-PHY: Update B2062 radio init with recent spec changes b43: LP-PHY: Remove BROKEN from B43_PHY_LP b43: LP-PHY: Fix reading old mode in the set TX power control routine b43: LP-PHY: Fix setting TX power control mode during RC calibration b43: LP-PHY: Two small spec updates b43: LP-PHY: Implement spec updates and remove resolved FIXMEs iwlwifi: Make injection of non-broadcast frames work again b43: LP-PHY: Fix a few typos in the RC calibration code b43: LP-PHY: Fix and simplify Qdiv roundup b43: Fix and update LP-PHY code ssb: Implement PMU LDO control and use it in b43 b43: LP-PHY: Revert to the original PHY register write routine b43: Enable LP-PHY support by default and remove Kconfig warning b43: Implement antenna diversity support for LP-PHY b43: Refactor and update antenna diversity for A/G-PHY b43: Add myself to module authors & to LP-PHY file copyright notices b43: Fix typo in modparam_btcoex description b43: LP-PHY: Fix TX gain tables H Hartley Sweeten (10): jbd2: bitfields should be unsigned HID: local function should be static mtd: ep93xx: cleanup includes in ts7250 nand driver mtd: make few symbols static hwmon: Include instead of USB: ohci-ep93xx.c: remove unused variable fs/buffer.c: clean up EXPORT* macros aio.c: move EXPORT* macros to line after function gpio: include not jbd.h: bitfields should be unsigned H. Peter Anvin (18): x86, setup: remove obsolete pre-Kconfig CONFIG_VIDEO_ variables x86, intel_txt: tboot.c needs x86, intel_txt: Factor out the code for S3 setup x86, intel_txt: Handle ACPI_SLEEP without X86_TRAMPOLINE x86, mtrr: make mtrr_aps_delayed_init static bool Merge commit 'origin/x86/urgent' into x86/asm x86: allow "=rm" in native_save_fl() Merge branch 'x86/urgent' into x86/pat mm: remove !NUMA condition from PAGEFLAGS_EXTENDED condition set x86, asm: Add 32-bit versions of the combined CFI macros x86, asm: Make _ASM_EXTABLE() usable from assembly code x86, msr: CFI annotations, cleanups for msr-reg.S x86, msr: Have the _safe MSR functions return -EIO, not -EFAULT x86, msr: Create _on_cpu helpers for {rw,wr}msr_safe_regs() x86, msr: Export the register-setting MSR functions via /dev/*/msr x86, msr: fix msr-reg.S compilation with gas 2.16.1 x86, msr: change msr-reg.o to obj-y, and export its symbols Merge branch 'x86/pat' into x86/urgent H.J. Thomassen (1): Staging: add cowloop driver HIRANO Takahito (1): V4L/DVB (12997): Add the DTV_ISDB_TS_ID property for ISDB_S Haiyang Zhang (1): Staging: hv: Add Haiyang's email to the TODO file Hal Rosenstock (1): IB/mad: Allow tuning of QP0 and QP1 sizes Hank Janssen (6): Staging: hv: add the Hyper-V api header files Staging: hv: add the Hyper-V driver header files Staging: hv: add the Hyper-V virtual bus Staging: hv: add the Hyper-V virtual block driver Staging: hv: add the Hyper-V virtual network driver Staging: hv: add the Hyper-V virtual storage driver Hannes Eder (4): IPVS: use pr_fmt IPVS: use pr_err and friends instead of IP_VS_ERR and friends MAINTAINERS: add IPVS include files checkpatch: make -f alias --file, add --help, more verbose help message Hannes Reinecke (2): [SCSI] iscsi_tcp: Evaluate socket state in data_ready() Send uevents for write_protect changes Hans J. Koch (1): Input: ucb1400_ts - fix a misleading function name Hans Verkuil (21): V4L/DVB (12212): v4l2: add RDS API to videodev2.h V4L/DVB (12214): bttv: set RDS capability if applicable. V4L/DVB (12215): saa6588: conform to the final RDS spec. V4L/DVB (12216): saa7134: set RDS capability if applicable. V4L/DVB (12217): radio-cadet: conform to the RDS spec. V4L/DVB (12218): radio-si470x: conform to the RDS spec. V4L/DVB (12316): v4l: add V4L2_CAP_RDS_OUTPUT and V4L2_CAP_MODULATOR caps V4L/DVB (12426): pvrusb2: fix compile warning V4L/DVB (12427): cx24113: fix mips compiler warning V4L/DVB (12455): radio-typhoon: remove obsolete RADIO_TYPHOON_PROC_FS config option V4L/DVB (12543): v4l: introduce string control support. V4L/DVB (12553): FM TX: si4713: Add Kconfig and Makefile entries V4L/DVB (12612): si4713: simplify the code to remove a compiler warning. V4L/DVB (12613): cx25840: fix determining the firmware name V4L/DVB (12948): v4l1-compat: fix VIDIOC_G_STD handling V4L/DVB (12540): v4l: simplify v4l2_i2c_new_subdev and friends V4L/DVB (12541): v4l: remove video_register_device_index V4L/DVB (12722): v4l2-dev: replace 'kernel number' by 'device node number'. V4L/DVB (12723): ivtv/cx18: replace 'kernel number' with 'device node number'. V4L/DVB (12724): v4l2-dev: add simple wrapper functions around the devnode numbers V4L/DVB (12725): v4l: warn when desired devnodenr is in use & add _no_warn function Hans de Goede (12): V4L/DVB (12357): gspca - tv8532: Bad ISOC packet scan V4L/DVB (12616): gspca_pac207: remove a number of unneeded (repeated) register writes V4L/DVB (12617): gspca_pac207: enable higher framerates / lower exposure settings V4L/DVB (12619): gspca: mr97310a fix detection of sensortype for vivicam with id byte of 0x53 V4L/DVB (12620): gspca_mr97310a: cleanup/fixup control handling V4L/DVB (12621): gspca_mr97310a: Move detection of CIF sensor type to probe() function V4L/DVB (12622): gspca_mr97310a: make the probing a bit less chatty V4L/DVB (12623): gspca_mr97310a: Add controls for CIF type 0 sensor cams V4L/DVB (12624): gspca_mr97310a: Use correct register for CIF type 1 sensor gain settings V4L/DVB (12625): Add new V4L2_FMT_FLAG_EMULATED flag to videodev2.h V4L/DVB (12626): gspca_mr97310a: Allow overriding of detected sensor type V4L/DVB (12627): gspca_mr97310a: Add one more vivitar mini cam to the list of CIF cams Hans-Joachim Picht (1): [S390] add call home support Haojian Zhuang (15): [ARM] pxa: remove duplicate mfp definition in mach [ARM] pxa: support mfp of pxa935 [ARM] pxa: expand irq support for PXA93x and PXA950 [ARM] pxa: update cpu_is_xsc3() to include Marvell CPUID [ARM] pxa: add cpu_is_pxa950() and Kconfig options [ARM] pxa: add more registers in interrupt controller [ARM] pxa: initialize default interrupt priority and use ICHP for IRQ handling [ARM] pxa: update dependancy of pxa i2c module [ARM] pxa: merge {zylonite,littleton}_defconfig into pxa3xx_defconfig [ARM] pxa: update rtc-sa1100.c to use 'struct dev_pm_ops' regulator: add buck3 in da903x driver regulator: support da9030 BUCK in da903x driver regulator: replace ADTV1 register by ADTV2 in da903x regulator: support list voltage in da903x regulator: fix voltage range in da9034 ldo12 Harald Krapfenbauer (2): Blackfin: cm-bf537u: split board from cm-bf537e Blackfin: update cm board resources Harald Welte (5): viafb: make module parameters visible in sysfs viafb: remove unused structure member viafb: add support for the VX855 chipset viafb: make viafb a first-class citizen using pci_driver viafb: pass reference to pci device when calling framebuffer_alloc() Harshula Jayasuriya (1): NFS: out of date comment regarding O_EXCL above nfs3_proc_create() Hartley Sweeten (14): [ARM] 5573/1: ep93xx: ensure typesafe io [ARM] 5574/1: ep93xx: gpio.c: fix header includes and __iomem pointers [ARM] 5575/1: ep93xx: Show gpio interrupt type in debugfs output. [ARM] 5577/2: ep93xx: syscon locked register functions [ARM] 5578/1: ep93xx: add ep93xx-keypad clock [ARM] 5592/1: ep93xx: cleanup platform header includes [ARM] 5593/1: ep93xx: clock.c __iomem pointer [ARM] 5598/1: ep93xx: core.c typesafe vic_init [ARM] 5599/1: MAINTAINERS: update for EP93XX ARM [ARM] 5600/1: ep93xx: core.c remove cast when copying dev_addr [ARM] 5609/1: ep93xx: add register defines for keypad support [ARM] 5612/1: ep93xx: add platform LEDs ARM: 5628/1: ep93xx: Introduce Pulse Width Modulator (PWM) driver ARM: 5711/1: locomo.c: CodingStyle cleanups Hector Martin (1): ACPI battery: work around negative s16 battery current on Acer Heiko Carstens (38): locking, powerpc: Rename __spin_try_lock() and friends locking, sparc: Rename __spin_try_lock() and friends locking, m68k/asm-offsets: Rename pt_regs offset defines locking, m68k: Calculate thread_info offset with asm offset locking: Move spinlock function bodies to header file locking: Allow arch-inlined spinlocks locking: Simplify spinlock inlining locking: Inline spinlock code for all locking variants on s390 locking, m68k/asm-offsets: Rename signal defines [SCSI] zfcp: optimize zfcp_qdio_account KVM: fix compile warnings on s390 [S390] cio: move scsw helper functions to header file [S390] introduce get_clock_monotonic [S390] convert/optimize csum_fold() to C [S390] atomic ops: add effecient atomic64 support for 31 bit [S390] atomic ops: small cleanups [S390] hibernation: remove dead file [S390] hibernation: merge files and move to kernel/ [S390] kernel: always keep machine flags in lowcore [S390] Initialize __LC_THREAD_INFO early. [S390] use generic scatterlist.h [S390] Enable guest page hinting by default. [S390] Limit cpu detection to 256 physical cpus. [S390] Get rid of cpuid.h header file. [S390] Remove smp_cpu_not_running. [S390] Wire up page fault events for software perf counters. nilfs2: fix format string compile warning (ino_t) [S390] Convert sys_clone to function with parameters. [S390] Convert sys_execve to function with parameters. [S390] Get rid of init_module/delete_module compat functions. [S390] hibernation: fix guest page hinting related crash [S390] hibernation: reset system after resume [S390] Change kernel_page_present coding style. [S390] fix disabled_wait inline assembly clobber list [S390] smp: introduce LC_ORDER and simplify lowcore handling [S390] hibernate: make sure pfn_is_nosave handles lowcore pages ext2: fix format string compile warning (ino_t) fs: change sys_truncate length parameter type Heiko Schocher (2): powerpc/82xx: mgcoge - updates for 2.6.32 powerpc/82xx: mgcoge - updated defconfig Helmut Schaa (10): mac80211: shorten the passive dwell time for sw scans cfg80211: update misleading comment mac80211: refactor the scan code mac80211: advance the state machine immediately if no delay is needed mac80211: introduce a new scan state "decision" mac80211: Replace {sw, hw}_scanning variables with a bitfield mac80211: implement basic background scanning mac80211: rename scan_state to next_scan_state cfg80211: increase scan result expire time mac80211: fix an oops in ieee80211_scan_state_set_channel Hemant Pedanekar (4): davinci: dm646x: Add clock info and update mux setup for ATA davinci: Move IO device mapping macros from io.h to hardware.h davinci: dm646x: Add IDE setup davinci: dm646x-evm: Add support for IDE Hemanth V (1): spi: McSPI off-mode support Hendrik Brueckner (15): tracing: Add syscall tracepoints - s390 arch update tracing: Check invalid syscall nr while tracing syscalls tracing: Don't trace kernel thread syscalls [S390] kernel: Append scpdata to kernel boot command line [S390] kernel: Convert upper case scpdata to lower case [S390] move (io|sysc)_restore_trace_psw into .data section [S390] kernel: Print an error message if kernel NSS cannot be defined [S390] kvm: use console_initcall() to initialize s390 virtio console iucv: fix iucv_buffer_cpumask check when calling IUCV functions iucv: use correct output register in iucv_query_maxconn() af_iucv: fix race in __iucv_sock_wait() af_iucv: handle non-accepted sockets after resuming from suspend af_iucv: do not call iucv_sock_kill() twice af_iucv: fix race when queueing skbs on the backlog queue hvc_console: Provide (un)locked version for hvc_resize() Henk Vergonet (3): V4L/DVB (12870): tda18271: update temperature compensation calculatation formula V4L/DVB (12871): tda18271: fix bad data in tda18271_cid_target table V4L/DVB (13002): Adds support for Zolid Hybrid PCI card: Hennerich, Michael (1): USB: sl811-hcd: Fix device disconnect: Henning Glawe (1): HID: ignore Philips IEEE802.15.4 RF Dongle Henrik Kurelid (2): V4L/DVB (12482): firedtv: add PID filtering for SW zigzag retune V4L/DVB (12582): The current AVC debugging can clog the log down a lot since many Henrik Rydberg (3): backlight: mbp_nvidia_bl: add support for MacBookAir 1,1 Input: bcm5974 - silence uninitialized variables warnings hwmon: applesmc: restore accelerometer and keyboard backlight on resume Henrique de Moraes Holschuh (16): thinkpad-acpi: don't ask about brightness_mode for fw. 1V and 1R thinkpad-acpi: firmware version checks thinkpad-acpi: be more strict when detecting a ThinkPad thinkpad-acpi: hotkey poll fixes thinkpad-acpi: deprecate hotkey_bios_mask thinkpad-acpi: Fix procfs hotkey reset command thinkpad-acpi: don't poll by default any of the reserved hotkeys thinkpad-acpi: report brightness events when required thinkpad-acpi: don't leave ERR_PTR() pointers around thinkpad-acpi: remove uneeded tp_features.hotkey tests in hotkey_exit thinkpad-acpi: drop HKEY event 0x5010 thinkpad-acpi: hotkey event driver update thinkpad-acpi: add internal hotkey event API thinkpad-acpi: name event constants backlight: extend event support to also support poll() thinkpad-acpi: fix CONFIG_THINKPAD_ACPI_HOTKEY_POLL build problem Herbert Xu (76): crypto: ansi_cprng - Do not select FIPS crypto: tcrypt - Fix module return code when testing by name crypto: testmgr - Remove hash size check crypto: skcipher - Fix request for sync algorithms crypto: skcipher - Change default sync geniv on SMP to eseqiv crypto: testmgr - Allow implementation-specific tests crypto: api - Add new template create function crypto: api - Add crypto_alloc_instance2 crypto: shash - Add shash_instance crypto: api - Add new style spawn support crypto: shash - Add spawn support crypto: api - Add crypto_attr_alg2 helper crypto: shash - Add shash_attr_alg2 helper crypto: shash - Add shash_register_instance crypto: shash - Add crypto_shash_ctx_aligned crypto: shash - Add __crypto_shash_cast crypto: shash - Use finup in default digest crypto: shash - Propagate reinit return value crypto: shash - Add shash_instance_ctx crypto: api - Fix crypto_drop_spawn crash on blank spawns crypto: shash - Export/import hash state only crypto: shash - Move finup/digest null checks to registration time crypto: sha1_generic - Add export/import support crypto: sha256_generic - Use 64-bit counter like sha1 crypto: sha256_generic - Add export/import support crypto: sha1-s390 - Add export/import support crypto: sha256-s390 - Add export/import support crypto: padlock - Use shash fallback for sha crypto: shash - Move null setkey check to registration time crypto: async - Use kzfree for requests crypto: shash - Make descsize a run-time attribute crypto: padlock - Switch sha to shash crypto: hmac - Switch to shash crypto: xcbc - Switch to shash crypto: authenc - Remove reference to crypto_hash crypto: hash - Remove legacy hash/digest implementaion crypto: shash - Export async functions crypto: cryptd - Use shash algorithms crypto: ahash - Add crypto_ahash_set_reqsize crypto: cryptd - Use crypto_ahash_set_reqsize crypto: crypto4xx - Use crypto_ahash_set_reqsize crypto: api - Remove frontend argument from extsize/init_tfm crypto: ahash - Convert to new style algorithms crypto: ahash - Add instance/spawn support crypto: tcrypt - Add mask parameter crypto: hash - Add helpers to free spawns crypto: cryptd - Switch to template create API crypto: cryptd - Switch to new style ahash crypto: crypto4xx - Switch to new style ahash crypto: ahash - Remove old_ahash_alg crypto: hash - Zap unaligned buffers crypto: shash - Fix alignment in unaligned operations crypto: ahash - Use GFP_KERNEL in unaligned setkey crypto: ahash - Add unaligned handling and default operations crypto: crypto4xx - Disable SHA implementation crypto: hmac - Fix incorrect error value when creating instance crypto: xcbc - Fix incorrect error value when creating instance crypto: padlock - Fix compile error on i386 crypto: ahash - Fix setkey crash crypto: shash - Fix digest size offset crypto: shash - Fix async finup handling of null digest crypto: padlock - Fix hashing of partial blocks vlan: Propagate physical MTU changes crypto: cryptd - Add finup/export/import for hash crypto: xcbc - Use crypto_xor crypto: xcbc - Fix shash conversion crypto: sha512 - Export struct sha512_state crypto: sha512_generic - Use 64-bit counters crypto: sha512-s390 - Add export/import support crypto: shash - Require all algorithms to support export/import crypto: hmac - Prehash ipad/opad crypto: api - Fix aligned ctx helper Revert crypto: fips - Select CPRNG crypto: ctr - Use chainiv on raw counter mode crypto: blkcipher - Do not use eseqiv on stream ciphers crypto: api - Do not displace newly registered algorithms Herton Ronaldo Krzesinski (4): ALSA: hda - fix noise issue when recording from digital mic with alc268 rtl8187: fix circular locking (rtl8187_stop/rtl8187_work) rtl8187: Implement rfkill support topstar-laptop: add new driver for hotkeys support on Topstar N01 Hidetoshi Seto (28): x86, mce: CE in last bank prevents panic by unknown MCE PCI MSI: Remove attribute check from pci_disable_msi() PCI MSI: Use list_first_entry() PCI MSI: Unify msi_free_irqs() and msix_free_all_irqs() PCI MSI: Relocate error path in init_msix_capability() PCI MSI: MSI-X cleanup, msix_map_region() PCI MSI: MSI-X cleanup, msix_program_entries() PCI MSI: MSI-X cleanup, msix_setup_entries() PCI MSI: Style cleanups PCI: pcie, aer: checkpatch style cleanup in pcie/aer/* PCI: pcie, aer: AER_PR for printing in aerdrv_errprint.c PCI: pcie, aer: rework MASK macros in aerdrv_errprint.c PCI: pcie, aer: init struct aer_err_info for reuse PCI: pcie, aer: fix report of multiple errors PCI: pcie, aer: remove spinlock in aerdrv_errprint.c PCI: pcie, aer: refer mask state in mask register properly PCI: pcie, aer: report multiple/first error on a device PCI: pcie, aer: remove unused macros PCI: pcie, aer: flags to bits PCI: pcie, aer: change error print format PCI: pcie, aer: report all error before recovery [IA64] kdump: Mask MCA/INIT on frozen cpus [IA64] kexec: Make INIT safe while transition to [IA64] kexec: Unregister MCA handler before kexec [IA64] kdump: Don't return APs to SAL from kdump [IA64] kdump: Mask INIT first in panic-kdump path [IA64] kdump: Try INIT regardless of [IA64] kdump: Short path to freeze CPUs Hin-Tak Leung (3): zd1211rw: sort vid/pid pairs by numerical value zd1211rw: adding Accton Technology Corp (083a:e501) as a ZD1211B device rtl8187: updating Kconfig with info of branded devices Hiroshi DOYU (3): OMAP: iommu: fix wrong argument in flush_cache_vmap() OMAP: iommu: add initial debugfs support OMAP clock: use debugfs_remove_recursive() for rewinding Hiroshi Ito (1): mtd: jedec_probe: fix NEC uPD29F064115 detection Hiroshi Shimamoto (4): sched, task_struct: stack_canary is not needed without CC_STACKPROTECTOR sched: Use for_each_class macro in move_one_task() timekeeping: Fix invalid getboottime() value task_struct cleanup: move binfmt field to mm_struct Hitoshi Mitake (1): sched: Hide runqueues from direct reference at source code level for __raw_get_cpu_var() Holger Schurig (6): orinoco: enable cfg80211 "set_channel" operation cfg80211: allow scanning on specified frequencies when using wext-compatibility cfg80211: use cfg80211_wext_freq() for freq conversion cfg80211: minimal error handling for wext-compat freq scanning cfg80211: use cfg80211_wext_freq() for freq conversion cfg80211: minimal error handling for wext-compat freq scanning Horst Schirmeier (1): trivial: doc: document missing value 2 for randomize-va-space Huang Shijie (2): mmap: remove unnecessary code mmap: save some cycles for the shared anonymous mapping Huang Weiyi (13): kmemcheck: remove duplicated #include x86: Remove duplicated #include [ARM] remove duplicated #include [ARM] remove duplicated #include dropmon: remove duplicated #include Security/SELinux: remove duplicated #include Staging: cpc-usb: remove unused #include ASoC: remove unused #include V4L/DVB (12201): adv7343: remove unused #include V4L/DVB (13029): radio-si4713: remove #include x86/i386: Remove duplicated #include powerpc/book3e-64: Remove duplicated #include powerpc/mm: Remove duplicated #include Huang Ying (10): crypto: ghash - Add GHASH digest algorithm for GCM crypto: gcm - Use GHASH digest algorithm crypto: cryptd - Add support to access underlaying shash x86, mce: Support specifying context for software mce injection x86, mce: Support specifying raise mode for software MCE injection x86, mce: Move debugfs mce dir creating to mce.c x86, mce: Fake panic support for MCE testing x86: Move kernel_fpu_using to irq_fpu_usable in asm/i387.h KVM: Add MCE support x86: mce, inject: Use real inject-msg in raise_local Huaxu Wan (1): hwmon: (coretemp) Add Lynnfield CPU Hugh Dickins (37): ACPI: fix NULL bug for HID/UID string fix undefined reference to user_shm_unlock ksm: first tidy up madvise_vma() ksm: define MADV_MERGEABLE and MADV_UNMERGEABLE ksm: the mm interface to ksm ksm: no debug in page_dup_rmap() ksm: identify PageKsm pages ksm: prevent mremap move poisoning ksm: rename kernel_pages_allocated ksm: move pages_sharing updates ksm: pages_unshared and pages_volatile ksm: break cow once unshared ksm: keep quiet while list empty ksm: five little cleanups ksm: fix endless loop on oom ksm: distribute remove_mm_from_lists ksm: fix oom deadlock ksm: sysfs and defaults ksm: add some documentation ksm: remove VM_MERGEABLE_FLAGS ksm: clean up obsolete references ksm: unmerge is an origin of OOMs ksm: mremap use err from ksm_madvise mm: munlock use follow_page mm: remove unused GUP flags mm: add get_dump_page mm: FOLL_DUMP replace FOLL_ANON mm: follow_hugetlb_page flags mm: fix anonymous dirtying mm: reinstate ZERO_PAGE mm: FOLL flags for GUP flags mm: m(un)lock avoid ZERO_PAGE mm: hugetlbfs_pagecache_present mm: ZERO_PAGE without PTE_SPECIAL mm: move highest_memmap_pfn tmpfs: depend on shmem nommu: fix two build breakages Hunyue Yau (1): omapfb: add support for the 2430SDP LCD Huzaifa Sidhpurwala (1): USB: option.c Add support for ZTE AC2726 EVDO modem Hyok S. Choi (1): nommu: Enables to select noMMU mode Ian Armstrong (1): fbcon: only unbind from console if successfully registered Ian Schram (1): perf_counter: Fix perf_copy_attr() pointer arithmetic Igor Chernyshev (1): ALSA: ice1724 - Patch for suspend/resume for Audiotrak Prodigy HD2 Igor M. Liplianin (9): V4L/DVB (12309): Add output clock configuration for stv6110 tuner. V4L/DVB (12310): stv6110 tuner: remove unused iq_wiring configuration parameter. V4L/DVB (12313): stv6110: Read registers through one time i2c_transfer calling V4L/DVB (12314): cx23885: add CAM presence checkout V4L/DVB (12332): Create card parameters array in SDMC DM1105 driver V4L/DVB (12461): Add ce5039(zl10039) tuner support. V4L/DVB (12462): Add TeVii S630 USB DVB-S card support. V4L/DVB (12463): Add support for Compro VideoMate S350 DVB-S PCI card. V4L/DVB (12486): cx88: fix TBS 8920 card support Igor Perminov (4): mac80211: FIF_PSPOLL filter flag rt2x00: Fix for race condition while update beacon rt2x00: FIF_PSPOLL filter flag support rt2x00: Fix beacon de-synchronization while update beacon Iliyan Malchev (1): Staging: HTC Dream: add qdsp support Ilpo Järvinen (1): tcp: fix ssthresh u16 leftover Imre Deak (5): omapfb: add support for MIPI-DCS compatible LCDs N770: enable LCD MIPI-DCS in Kconfig omapfb: dispc: various typo fixes omapfb: add FB manual update option to Kconfig omapfb: HWA742: fix pointer to be const Ingo Molnar (110): Merge branch 'auto' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into oprofile security: rename ptrace_may_access => ptrace_access_check Merge branch 'linus' into sched/core Merge branch 'linus' into x86/cleanups x86: Further clean up of mtrr/generic.c Merge branch 'tip/tracing/ring-buffer-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/core Merge branch 'linus' into tracing/core Merge branch 'linus' into sched/core debug lockups: Improve lockup detection Merge branch 'sched/urgent' into sched/core lockdep: Fix BFS build sched: Fix cpupri build on !CONFIG_SMP debug lockups: Improve lockup detection, fix generic arch fallback x86: Introduce GDT_ENTRY_INIT(), fix APM Merge branch 'linus' into tracing/core tracing: Fix syscall tracing on !HAVE_FTRACE_SYSCALLS architectures Merge branch 'perfcounters/urgent' into perfcounters/core Merge commit 'v2.6.31-rc6' into core/rcu perf: Enable more compiler warnings perf: Build with stack-protector and with -D_FORTIFY_SOURCE=2 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/perfcounters into perfcounters/core perf tools: Remove obsolete defines [S390] ftrace: update system call tracer support Merge commit 'v2.6.31-rc7' into x86/cpu Merge branch 'perfcounters/urgent' into perfcounters/core Merge commit 'v2.6.31-rc7' into x86/cleanups Merge commit 'v2.6.31-rc7' into irq/core Merge branch 'tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/core Merge branch 'tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/core Merge branch 'for-ingo' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-sfi-2.6 into x86/apic Merge branch 'tip/tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/core Merge branch 'perfcounters/tracing' into perfcounters/core Merge commit 'v2.6.31-rc8' into core/locking CRIS: fix defconfig build failure Merge branch 'x86/paravirt' into x86/cpu Merge commit 'v2.6.31-rc8' into x86/txt Merge commit 'v2.6.31-rc8' into sched/core perf tools: Clean up warnings list in the Makefile perf tools: Work around strict aliasing related warnings perf trace: Sample the CPU too Merge branch 'perfcounters/urgent' into perfcounters/core perf_counter: Introduce new (non-)paranoia level to allow raw tracepoint access perf trace: Sample timestamps as well perf trace: Fix parsing of perf.data perf tools: Seek to the end of the header area perf trace: Print out in nanoseconds perf trace: Fix read_string() perf_counter: Fix output-sharing error path x86, msr: Fix msr-reg.S compilation with gas 2.16.1, on 32-bit too Merge branch 'linus' into core/rcu Merge branches 'sched/domains' and 'sched/clock' into sched/core sched: Fix dynamic power-balancing crash sched: Clean up topology.h sched: Turn on SD_BALANCE_NEWIDLE Merge branch 'amd-iommu/2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu Merge commit 'v2.6.31-rc9' into tracing/core Merge branch 'tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/core sched: Disable NEW_FAIR_SLEEPERS for now sched: Fix sched::sched_stat_wait tracepoint field perf: Add 'perf sched' tool perf sched: Import schedbench.c perf sched: Implement the scheduling workload replay engine perf sched: Tighten up the code perf sched: Clean up latency and replay sub-commands perf sched: Display time in milliseconds, reorganize output perf sched: Add runtime stats perf sched: Output runtime and context switch totals perf sched: Add 'perf sched latency' and 'perf sched replay' perf sched: Finish latency => atom rename and misc cleanups perf sched: Clean up PID sorting logic perf sched: Implement the 'perf sched record' subcommand perf_counter: Allow mmap if paranoid checks are turned off perf sched: Add 'perf sched trace', improve documentation perf_counter, sched: Add sched_stat_runtime tracepoint perf tools: Implement counter output multiplexing perf sched: Fix 'perf sched latency' output on 32-bit systems MAINTAINERS: Update tracing tree details slub: Fix build error in kmem_cache_open() with !CONFIG_SLUB_DEBUG sched: Implement a gentler fair-sleepers feature amd64_edac: build driver only on AMD hardware perf sched: Account for lost events, increase default buffering perf sched: Sanity check context switch events perf sched: Make idle thread and comm/pid names more consistent perf sched: Add 'perf sched map' scheduling event map printout Merge branch 'tip/tracing/core4' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/core Blackfin: Fix link errors with binutils 2.19 and GCC 4.3 sched: Fix TASK_WAKING & loadaverage breakage Merge branch 'linus' into tracing/core perf sched: Determine the number of CPUs automatically Merge branch 'linus' into perfcounters/core Merge branch 'tracing/core-v3' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/urgent Merge branch 'tip/tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent Merge branch 'linus' into x86/urgent Merge branch 'linus' into perfcounters/rename perf_counter: Rename list_entry -> group_entry, counter_list -> group_list perf_counter: Rename 'event' to event_id/hw_event perf: Do the big rename: Performance Counters -> Performance Events perf: Tidy up after the big rename Driver-Core: fix devnode callbacks for dabusb and industrialio perf stat: Fix zero total printouts x86: mce: Clean up thermal throttling state tracking code x86: mce: Fix thermal throttling message storm media: video: Fix build in saa7164 vgaarb: make client interface config invariant. modules, tracing: Remove stale struct marker signature from module_layout() Merge branch 'bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen into x86/urgent x86: mce: Use safer ways to access MCE registers Merge branch 'linus' into x86/urgent input: fix build failures caused by Kconfig Winbond WPCD376I Consumer IR hardware driver Kconfig entry Merge branch 'x86/asm' into x86/urgent Ira Snyder (3): fsldma: split apart external pause and request count features fsldma: Add DMA_SLAVE support hwmon: (adm1031) Add sysfs files for temperature offsets Ira W. Snyder (3): hwmon: (ltc4215) Clear faults at startup hwmon: (ltc4245) Clear faults at startup edac: mpc85xx add mpc83xx support Ivan Kokshaysky (1): alpha: AGP update (fixes compile failure) Ivo van Doorn (18): rt2x00: use wiphy rfkill interface rt2x00: Remove DEVICE_STATE_DISABLED_RADIO_HW rt2x00: Fix build error when crypto support is disabled rt2x00: Remove usage of deprecated radio_enabled & IEEE80211_CONF_CHANGE_RADIO_ENABLED rt2x00: Use IEEE80211_TX_CTL_MORE_FRAMES flag rt2x00: Align ieee80211 header to 4-byte boundary for PCI devices rt2x00: Fix RFKILL polling rt2x00: Fix for rt2800usb for SHARED_KEY_TABLE initializations rt2x00: Add new RF chip defines rt2x00: Set SKBDESC_L2_PADDED in RX path rt2x00: wireless CLI ID and packet ID must not be 0 rt2x00: Fix MCS register intialization rt2x00: configure_filter() callback is allowed to sleep rt2x00: bss_info_changed() callback is allowed to sleep rt2x00: Cleanup rt2x00mac_bss_info_changed() rt2x00: Fix TX status reporting rt2x00: Reorganize padding & L2 padding rt2x00: Hardcode TX ack timeout and consume time Izik Eidus (6): KVM: MMU: make __kvm_mmu_free_some_pages handle empty list ksm: add mmu_notifier set_pte_at_notify() ksm: Kernel SamePage Merging ksm: change copyright message ksm: change ksm nice level to be 5 ksm: change default values to better fit into mainline kernel J. Bruce Fields (12): nfsd: minor write_pool_threads exit cleanup nfs: fix compile error in rpc_pipefs.h Merge branch 'nfs-for-2.6.32' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 into for-2.6.32-incoming nfsd: move some of fh_compose into helper functions nfsd: move fsid_type choice out of fh_compose nfsd4: filehandle leak or error exit from fh_compose() nfsd: clean up readdirplus encoding nfsd: fix leak on error in nfsv3 readdir nfsd4: fix null dereference creating nfsv4 callback client nfsd4: allow nfs4 state startup to fail nfsd4: use common rpc_cred for all callbacks nfsd: revise 4.1 status documentation Jack Morgenstein (4): IB/uverbs: Return ENOSYS for unimplemented commands (not EINVAL) IB/mlx4: Don't allow userspace open while recovering from catastrophic error IB/mthca: Don't allow userspace open while recovering from catastrophic error IB/mthca: Fix access to freed memory in catastrophic event handling Jack Steiner (4): x86, pat: Fix cacheflush address in change_page_attr_set_clr() x86: SGI UV: Fix IPI macros x86: SGI UV: Add volatile semantics to macros that access chipset registers x86: SGI UV: Map MMIO-High memory range James A Webb (1): V4L/DVB (12584): Support for Kaiser Baas ExpressCard Dual HD Tuner James Blanford (2): V4L/DVB (13008): gspca - stv06xx-hdcs: Fixup exposure V4L/DVB (13009): gspca - stv06xx-hdcs: Reduce exposure range James Bottomley (7): [SCSI] scsi_transport_sas: fix incorrect duplicate setup of max_phys [SCSI] ses: fix hotplug with multiple devices and expanders [SCSI] ses: add support for enclosure component hot removal [SCSI] ses: update enclosure data on hot add [SCSI] fix bugs in scsi_vpd_inquiry() [SCSI] update MAINTAINERS with new email [SCSI] fix oops during scsi scanning James Morris (11): Merge branch 'master' into next keys: annotate seqfile ops with __releases and __acquires Merge branch 'master' into next Revert "SELinux: Convert avc_audit to use lsm_audit.h" Merge branch 'master' into next Merge branch 'master' into next Merge branch 'master' into next security: update documentation for security_request_module Merge branch 'master' into next Merge branch 'next' into for-linus seq_file: constify seq_operations James Smart (9): [SCSI] lpfc 8.3.4: Various SLI4 fixes [SCSI] lpfc 8.3.4: Consistently Implement persistent port disable [SCSI] lpfc 8.3.4: Various SLI3 fixes [SCSI] lpfc 8.3.4: Fix a pair of FCoE issues [SCSI] lpfc 8.3.4: NPIV vport fixes [SCSI] lpfc 8.3.4: Add bsg (SGIOv4) support for ELS/CT support [SCSI] lpfc 8.3.4: Remove spaces before newlines in several log messages [SCSI] lpfc 8.3.4: Update driver version to 8.3.4 [SCSI] fc_transport: Correct max fc_host attribute count Jan Beulich (14): x86: properly annotate alternatives.c x86: Fix earlyprintk=dbgp for machines without NX Staging: hv: adjust Hyper-V Kconfig thermal: add missing Kconfig dependency x86: Increase timeout for EHCI debug port reset completion in early printk x86: cpuinit-annotate SMP boot trampolines properly x86: Correct segment permission flags in 64-bit linker script memory hotplug: fix updating of num_physpages for hot plugged memory mm: replace various uses of num_physpages by totalram_pages mm: don't use alloc_bootmem_low() where not strictly needed mm: also use alloc_large_system_hash() for the PID hash table BUILD_BUG_ON(): fix it and a couple of bogus uses of it module: reduce symbol table for loaded modules (v2) module: reduce string table for loaded modules (v2) Jan Engelhardt (22): net: mark read-only arrays as const net: implement a SO_PROTOCOL getsockoption net: implement a SO_DOMAIN getsockoption netfilter: xtables: remove xt_TOS v0 netfilter: xtables: remove xt_CONNMARK v0 netfilter: xtables: remove xt_MARK v0, v1 netfilter: xtables: remove xt_connmark v0 netfilter: xtables: remove xt_conntrack v0 netfilter: xtables: remove xt_iprange v0 netfilter: xtables: remove xt_mark v0 netfilter: xtables: remove xt_owner v0 netfilter: xtables: remove redirecting header files netfilter: conntrack: switch hook PFs to nfproto netfilter: xtables: switch hook PFs to nfproto netfilter: xtables: switch table AFs to nfproto netfilter: xtables: realign struct xt_target_param netfilter: iptables: remove unused datalen variable netfilter: xtables: use memcmp in unconditional check netfilter: xtables: ignore unassigned hooks in check_entry_size_and_hooks netfilter: xtables: check for unconditionality of policies netfilter: xtables: check for standard verdicts in policies netfilter: xtables: mark initial tables constant Jan Glauber (5): crypto: sha-s390 - Fix warnings in import function [S390] qdio: continue polling if the queue is not finished [S390] qdio: remove limited number of debugfs entries [S390] qdio: reduce per device debug messages [S390] qdio: change state of all primed input buffers Jan Kara (33): jbd2: Fail to load a journal if it is too short jbd2: Annotate transaction start also for jbd2_journal_restart() ext4: Fix possible deadlock between ext4_truncate() and ext4_get_blocks() nfs: Remove reference to generic_osync_inode from a comment vfs: Introduce filemap_fdatawait_range vfs: Export __generic_file_aio_write() and add some comments vfs: Remove syncing from generic_file_direct_write() and generic_file_buffered_write() pohmelfs: Use __generic_file_aio_write instead of generic_file_aio_write_nolock ocfs2: Use __generic_file_aio_write instead of generic_file_aio_write_nolock vfs: Introduce new helpers for syncing after writing to O_SYNC file or IS_SYNC inode ext2: Update comment about generic_osync_inode ext3: Remove syncing logic from ext3_file_write ext4: Remove syncing logic from ext4_file_write ntfs: Use new syncing helpers and update comments ocfs2: Update syncing after splicing to match generic version xfs: Convert sync_page_range() to simple filemap_write_and_wait_range() pohmelfs: Use new syncing helper fat: Opencode sync_page_range_nolock() vfs: Remove generic_osync_inode() and sync_page_range{_nolock}() udf: Remove dead code udf: Remove wrong assignment in udf_symlink udf: Perform preallocation only for regular files udf: Fix possible corruption when close races with write ext3: Update MAINTAINERS for ext3 and JBD jbd: Journal block numbers can ever be only 32-bit use unsigned int for them jbd: Annotate transaction start also for journal_restart() ext3: Fix possible deadlock between ext3_truncate() and ext3_get_blocks() ext3: Flush disk caches on fsync when needed ext4: Update documentation about quota mount options fs: make sure data stored into inode is properly seen before unlocking new inode vm: document that setting vfs_cache_pressure to 0 isn't a good idea vfs: split generic_forget_inode() so that hugetlbfs does not have to copy it fs: Fix busyloop in wb_writeback() Jan Kiszka (8): KVM: Allow PIT emulation without speaker port KVM: Cleanup LAPIC interface KVM: Fix racy event propagation in timer KVM: Drop useless atomic test from timer function Revert "KVM: x86: check for cr3 validity in ioctl_set_sregs" KVM: Drop obsolete cpu_get/put in make_all_cpus_request KVM: VMX: Avoid to return ENOTSUPP to userland KVM: x86: Disallow hypercalls for guest callers in rings > 0 Jan Nikitenko (1): V4L/DVB (12342): af9015: avoid magically sized temporary buffer in eeprom_dump Jan Scholz (1): HID: completely remove apple mightymouse from blacklist Jani Nikula (1): gpiolib: allow exported GPIO nodes to be named using sysfs links Janne Grunau (3): V4L/DVB (12684): DVB: make DVB_MAX_ADAPTERS configurable V4L/DVB (12685): dvb-core: check fe->ops.set_frontend return value V4L/DVB (12686): dvb-core: check supported QAM modulations Janusz Krzysztofik (13): ASoC: Add support for Conexant CX20442-11 voice modem codec ASoC: Jack handling enhancements as suggested by subsystem maintainer ASoC: CX20442: fix issues pointed out by subsystem maintainer TTY: Add definition of a new line discipline required by Amstrad E3 (Delta) ASoC driver ASoC: CX20442: push down machine independent line discipline bits ASoC: add support for Amstrad E3 (Delta) machine ASoC: CX20442: add some debugging ASoC: CX20442: simplify codec controller usage TTY/ASoC: Rename N_AMSDELTA line discipline to N_V253 ASoC: OMAP: Make use of DMA channel self linking on OMAP1510 ASoC: OMAP: Enhance OMAP1510 DMA progress software counter ARM: OMAP: DMA: Add support for DMA channel self linking on OMAP1510 OMAP1: AMS_DELTA: add modem support Jarek Poplawski (8): ipv4: Use synchronize_rcu() during trie_rebalance() ipv4: Fix inflate_threshold_root automatically ipv4: fib_trie: Use tnode_get_child_rcu() and node_parent_rcu() in lookups pkt_sched: Fix qdisc_graft WRT ingress qdisc pkt_sched: Fix tx queue selection in tc_modify_qdisc pkt_sched: Fix qdisc_create on stab error handling pkt_sched: Fix qstats.qlen updating in dump_stats ax25: Fix ax25_cb refcounting in ax25_ctl_ioctl Jarkko Lavinen (4): mmc: add mmc card sleep and awake support omap_hsmmc: fix scatter-gather list sanity checking omap_hsmmc: add mmc card sleep and awake support omap_hsmmc: fix NULL pointer dereference Jarkko Nikula (5): ARM: OMAP: McBSP: Fix ASoC on OMAP1510 by fixing API of omap_mcbsp_start/stop OMAP: McBSP: Use textual values in DMA operating mode sysfs files ASoC: OMAP: Fix setup of XCCR and RCCR registers in McBSP DAI ARM: OMAP: McBSP: Merge two functions into omap_mcbsp_start/_stop ASoC: OMAP: Add functionality to set CLKR and FSR sources in McBSP DAI Jarod Wilson (2): crypto: des_s390 - Permit weak keys unless REQ_WEAK_KEY set HID: ignore all recent SoundGraph iMON devices Jaroslav Kysela (5): ALSA: hda_generic: do not read connections for widged with an unknown type ALSA: hda_generic: use AC_WCAP_CONN_LIST check for widget connections ALSA: hda-intel: Cleanups for widget connection list handling ALSA: hda - Add better Intel IbexPeak platform support ALSA: Release v1.0.21 Jason Baron (16): tracing: Map syscall name to number tracing: Call arch_init_ftrace_syscalls at boot tracing: Add DECLARE_TRACE_WITH_CALLBACK() macro tracing: Add syscall tracepoints tracing: Update FTRACE_SYSCALL_MAX tracing: Raw_init() bailout in trace event register fail case tracing: Add ftrace_event_call void * 'data' field tracing: Add trace events for each syscall entry/exit tracing: Add individual syscalls tracepoint id support tracing: Add perf counter support for syscalls tracing tracing: Add more namespace area to 'perf list' output tracing: Convert x86_64 mmap and uname to use DEFINE_SYSCALL tracing: Define NR_syscalls for x86 (32) tracing: Define NR_syscalls for x86_64 tracing: Convert event tracing code to use NR_syscalls tracing: Remove FTRACE_SYSCALL_MAX definitions Jason Gunthorpe (3): IPoIB: Check multicast address format TPM: Fixup boot probe timeout for tpm_tis driver tpm-fixup-pcrs-sysfs-file-update Jason Uhlenkott (1): edac: i3200 memory controller driver Jason Wessel (12): USB: ehci,dbgp,early_printk: split ehci debug driver from early_printk.c USB: dbgp: insert cr prior to nl as needed USB: ehci-dbgp: Execute early BIOS hand off USB: dbgp: EHCI debug controller initialization delays early_printk: Allow more than one early console USB: ehci-dbgp: stability improvements and external re-init USB: ehci-dbgp,ehci: Allow early or late use of the dbgp device USB: ehci-dbgp: errata for EHCI debug controller initialization USB: ehci-dbgp: errata for EHCI debug/host controller synchronization USB: ehci-dbgp,documentation: Documentation updates for ehci-dbgp USB: ehci-dbgp,ehci: Allow dbpg to work with suspend/resume x86: early_printk: Protect against using the same device twice Jason Yeh (1): oprofile: Implement performance counter multiplexing Jassi (4): ASoC: S3C lrsync function made to work with IRQs disabled. ARM: S3C64XX: DMA: struct s3c64xx_dma_buff lli fix. ARM: S3C64XX: DMA: 'size' argument of dma_pool_create ARM: S3C64XX: DMA: Debugged alloc's with GFP_KERNEL flag in Intr context. Jaswinder Singh Rajput (51): x86, cpu: cpu/proc.c display cache alignment and address sizes for 32 bit x86: oprofile/op_model_amd.c set return values for op_amd_handle_ibs() x86: ds.c fix invalid assignment x86: Clean up mtrr/amd.c: x86: Clean up mtrr/centaur.c x86: Clean up mtrr/cleanup.c x86: Clean up mtrr/cyrix.c x86: Clean up mtrr/generic.c x86: Clean up mtrr/if.c x86: Clean up mtrr/mtrr.h x86: Clean up mtrr/state.c x86: Clean up mtrr/main.c ide: ide-taskfile.c fix style problems net: cs89x0: includecheck fix for cs89x0.c net: pcmcia/axnet_cs: includecheck fix axnet_cs.c net: include/linux/icmpv6: includecheck fix for icmpv6.h net: smc911x: includecheck fix for smc911x.h SPARC: fix duplicate declaration PRISM54: fix compilation warning Security/SELinux: includecheck fix kernel/sysctl.c KVM: Replace MSR_IA32_TIME_STAMP_COUNTER with MSR_IA32_TSC of msr-index.h KVM: Use MSR names in place of address xfs: includecheck fix for fs/xfs/xfs_iops.c Staging: otus: includecheck fix: drivers/staging/otus/usbdrv.h Staging: rt2860: includecheck fix: rt_linux.h drm/i915: intel_display.c handle latency variable efficiently tty: includecheck fix: drivers/char, vt.c includecheck fix: s390, sys_s390.c gitignore usr/initramfs_data.cpio.bz2 and usr/initramfs_data.cpio.lzma includecheck fix: um, helper.c includecheck fix: x86, traps.c includecheck fix: x86, shadow.c includecheck fix: drivers/scsi, libfcoe.c includecheck fix: drivers/scsi, ibmvscsi.c includecheck fix: drivers/video, vgacon.c includecheck fix: drivers/xen, evtchn.c includecheck fix: include/acpi, acpi_bus.h includecheck fix: include/drm, drm_memory.h includecheck fix: include/linux, aio.h includecheck fix: include/linux, page_cgroup.h includecheck fix: include/linux, ftrace.h includecheck fix: kernel/trace, ring_buffer.c includecheck fix: x86, cpu/common.c mm: includecheck fix for mm/shmem.c mm: includecheck fix for mm/nommu.c pcmcia: pcnet_cs.c removing useless condition vlynq: includecheck fix: drivers/vlynq/vlynq.c sh: includecheck fix: dwarf.c includecheck fix: Documentation, cfag12864b-example.c net: fix htmldocs sunrpc, clnt.c net: fix htmldocs sunrpc, clnt.c Javier Cardona (12): mac80211: Assign next hop address to pending mesh frames mac80211: Fix regression in mesh forwarding path. mac80211: Improve dequeing from mpath frame queue. mac80211: Use 3-address format for mesh broadcast frames. mac80211: Update the station failed frames average when minstrel is used. mac80211: Early detection of broken mesh paths when using minstrel. mac80211: Assign a default mesh beaconing interval. mac80211: Move mpath and mpp growth to mesh workqueue. mac80211: Fix unresolved mesh frames queued without valid control.vif mac80211: Decouple fail_avg stats used by mesh from rate control algorithm. mac80211: Update mesh config IE to 11s draft 3.02 ath9k: Add support FIF_OTHER_BSS filtering mode. Javier Herrero (1): Input: add driver for OpenCores Keyboard Controller Jay Sternberg (3): iwlwifi: Handle new firmware file with ucode build number in header iwlwifi: update 1000 series API version to match firmware iwlwifi: remove duplicated version info from sysfs Jay Vosburgh (1): bonding: propogate vlan_features to bonding master Jean Delvare (25): IDE: Save a call to PageHighMem() PCI: Unhide the SMBus on the Compaq Evo D510 USDT V4L/DVB (12343): Stop defining I2C adapter IDs nobody uses V4L/DVB (12365): ir-kbd-i2c: Remove superfulous inlines hwmon-vid: Ignore 6th VID pin of AMD family 0Fh processors hwmon: Clearly mark ACPI drivers as such hwmon: (pcf8591) Documentation clean-ups hwmon: (lm85) Don't bind to Winbond/Nuvoton WPCD377I Driver core: Add support for compatibility classes Blackfin: clean up duplicate I2C device type definitions i2c: Drop unused i2c_driver.id field i2c-taos-evm: Switch echo off to improve performance i2c/tsl2550: Use combined SMBus transactions i2c: Convert i2c clients to a device type i2c: Convert i2c adapters to bus devices i2c: Provide compatibility links for i2c adapters i2c: Clearly mark ACPI drivers as such USB: Fix sysfs paths in documentation matroxfb: make CONFIG_FB_MATROX_MULTIHEAD=y mandatory matroxfb: get rid of unneeded macros ACCESS_FBINFO and MINFO matroxfb: get rid of unneeded macros WPMINFO and friends matroxfb: get rid of unneeded macro MINFO_FROM matroxfb: get rid of CONFIG_FB_MATROX_32MB hwmon: Delete deprecated FSC drivers ACPI: Clarify resource conflict message Jean-Christophe PLAGNIOL-VILLARD (1): wl12xx: switch to %pM to print the mac address Jean-Francois Moine (20): V4L/DVB (12226): gspca - spca508: Extend the write_vector routine. V4L/DVB (12227): gspca - pac7311: Webcam 093a:2629 added. V4L/DVB (12228): gspca - vc032x: Webcam 0ac8:c301 added. V4L/DVB (12229): gspca - main: Change the ISOC initialization mechanism. V4L/DVB (12230): gspca - t613: Change tas5130a init sequences. V4L/DVB (12231): gspca - main: Version change. V4L/DVB (12280): gspca - sonixj: Remove auto gain/wb/expo for the ov7660 sensor. V4L/DVB (12353): gspca - vc032x: Add the 1280x960 resolution for sensor mi1310_soc V4L/DVB (12354): gspca - vc032x: H and V flip controls added for mi13x0_soc sensors V4L/DVB (12355): gspca - vc032x: Cleanup source V4L/DVB (12358): gspca - main: Memorize the current alt before setting it V4L/DVB (12383): gspca - vc032x: Bad h/v flip controls when inverted by default. V4L/DVB (12501): gspca - sonixj: Do the ov7660 sensor work again. V4L/DVB (12691): gspca - sonixj: Don't use mdelay(). V4L/DVB (12692): gspca - sunplus: Optimize code. V4L/DVB (12693): gspca - sunplus: The brightness is signed. V4L/DVB (12694): gspca - vc032x: Change the start exchanges of the sensor hv7131r. V4L/DVB (12695): gspca - vc032x: Do the LED work with the sensor hv7131r. V4L/DVB (12696): gspca - sonixj / sn9c102: Two drivers for 0c45:60fc and 0c45:613e. V4L/DVB (12953): gspca - vc032x: Bad GPIO of the Samsung Q1 on start/stop streaming. Jeff Garzik (2): [libata] EH: freeze port before aborting commands [libata] sata_sil: disable DMA engine in sil_freeze() Jeff Layton (21): sunrpc: add routine for comparing addresses sunrpc: add common routine for copying address portion of a sockaddr nfsd: make nfs4_client->cl_addr a struct sockaddr_storage nfsd: convert nfs4_cb_conn struct to hold address in sockaddr_storage nfsd: add support for NFSv4 callbacks over IPv6 nfsd: populate sin6_scope_id on callback address with scopeid from rq_addr on SETCLIENTID call cifs: send IPv6 addr in upcall with colon delimiters cifs: use tcon pointer in cifs_show_options cifs: protect GlobalOplock_Q with its own spinlock cifs: consolidate reconnect logic in smb_init routines cifs: fix oplock request handling in posix codepath cifs: remove cifsInodeInfo.oplockPending flag cifs: take read lock on GlobalSMBSes_lock in is_valid_oplock_break cifs: have cifsFileInfo hold an extra inode reference vfs: explicitly cast s_maxbytes in fiemap_check_ranges vfs: change sb->s_maxbytes to a loff_t vfs: remove redundant position check in do_sendfile cifs: convert oplock breaks to use slow_work facility (try #4) cifs: eliminate cifs_init_private cifs: fix problems with last two commits cifs: fix locking and list handling code in cifs_open and its helper Jeff Mahoney (6): Staging: rtl8192su: compile fixes Staging: rtl8192su: fix up printk warnings Staging: rtl8192su: fixup size comparison warning Staging: rtl8192su: stop using skb->tail Staging: rtl8192su: add linux/vmalloc.h Staging: rtl8192e: compile fixes Jeff Moyer (1): cfq: choose a new next_req when a request is dispatched Jens Axboe (43): sparc: add basic support for 'perf' writeback: get rid of generic_sync_sb_inodes() export writeback: move dirty inodes from super_block to backing_dev_info writeback: switch to per-bdi threads for flushing data writeback: get rid of pdflush completely writeback: add some debug inode list counters to bdi stats writeback: add name to backing_dev_info writeback: check for registered bdi in flusher add and inode dirty cfq-iosched: drain device queue before switching to a sync queue block: make bio_rw_flagged() return a bool bio: first step in sanitizing the bio->bi_rw flag testing block: improve queue_should_plug() by looking at IO depths block: add blk-iopoll, a NAPI like approach for block devices block: fix long lines in block/blk-iopoll.c block: adjust default budget for blk-iopoll block: fix comment in blk-iopoll.c block: use interrupts disabled version of raise_softirq_irqoff() cfq-iosched: get rid of must_alloc flag block: make blk_iopoll_prep_sched() follow normal 0/1 return convention block: enable rq CPU completion affinity by default block: don't assume device has a request list backing in nr_requests store block: fix linkage problem with blk_iopoll and !CONFIG_BLOCK fs: remove bdev->bd_inode_backing_dev_info writeback: get rid of wbc->for_writepages writeback: make wb_writeback() take an argument structure fs: Assign bdi in super_block writeback: only use bdi_writeback_all() for WB_SYNC_NONE writeout writeback: use RCU to protect bdi_list writeback: inline allocation failure handling in bdi_alloc_queue_work() writeback: separate starting of sync vs opportunistic writeback writeback: splice dirty inode entries to default bdi on bdi_destroy() writeback: add comments to bdi_work structure writeback: use schedule_timeout_interruptible() nfs: nfs_kill_super() should call bdi_unregister() after killing super writeback: don't use schedule_timeout() without setting runstate writeback: make balance_dirty_pages() gradually back more off nfs: initialize the backing_dev_info when creating the server writeback: improve readability of the wb_writeback() continue/break logic writeback: get rid to incorrect references to pdflush in comments writeback: don't resort for a single super_block in move_expired_inodes() writeback: make the super_block pinning more efficient writeback: writeback_inodes_sb() should use bdi_start_writeback() writeback: pass in super_block to bdi_start_writeback() Jens LĂĄĂĄs (1): fib_trie: resize rework Jens Rosenboom (3): ipv6: Log the explicit address that triggered DAD failure ipv6: Ignore route option with ROUTER_PREF_INVALID ipv6: Log the affected address when DAD failure occurs Jeremy Fitzhardinge (24): x86/paravirt: split paravirt definitions into paravirt_types.h x86: split out core __math_state_restore x86-32: make sure clts is batched during context switch x86-64: move unlazy_fpu() into lazy cpu state part of context switch x86-64: move clts into batch cpu state updates when preloading fpu x86/acpi: acpi_parse_madt_ioapic_entries: remove redundant braces x86/ioapic.c: ioapic_modify_irq is too large to inline x86/ioapic.c: unify __mask_IO_APIC_irq() x86/ioapic.c: remove #ifdef for 82093AA workaround x86/ioapic.c: remove redundant declaration of irq_pin_list x86/ioapic.c: move lost comment to what seems like appropriate place x86/ioapic.c: convert io_apic_level_ack_pending loop to normal for() loop x86/ioapic.c: simplify add_pin_to_irq_node() x86/ioapic.c: convert replace_pin_at_irq_node to conventional for() loop x86/ioapic.c: clean up replace_pin_at_irq_node logic and comments x86/ioapic.c: convert __target_IO_APIC_irq to conventional for() loop x86/ioapic.c: unify ioapic_retrigger_irq() x86/i386: Make sure stack-protector segment base is cache aligned x86/i386: Put aligned stack-canary in percpu shared_aligned section xen: make -fstack-protector work under Xen xen: only enable interrupts while actually blocking for spinlock x86: split __phys_addr out into separate file xen: check EFER for NX before setting up GDT mapping x86: split NX setup into separate file to limit unstack-protected code Jerome Glisse (12): drm/radeon/kms: add r600 KMS support drm/radeon/kms: wait for cp idle before stopping it. drm/radeon/kms: call r100_cp_disable rather than duplicating code. drm/radeon/kms: add R4XX mc register access helper. drm/radeon/kms: Don't try to process irq when we are unloading drm/radeon/kms: R3XX/R4XX AGP asic use PCI GART not PCIE GART drm/radeon/kms: move modeset init outside of GPU init drm/radeon/kms: convert r4xx to new init path drm/radeon/kms: move mtrr range add and memory information drm/radeon/kms: cleanup - remove radeon_share.h drm/radeon/kms: clear confusion in GART init/deinit path drm/radeon/kms: don't fail if we fail to init GPU acceleration Jes Sorensen (1): KVM: ia64: Correct itc_offset calculations Jesper Dangaard Brouer (2): Doc: seq_file.txt fix wrong dd command example. edac: core: remove completion-wait for complete with rcu_barrier Jesper Nilsson (3): CRIS: Change DEFINE_PER_CPU of current_pgd to be non volatile. CRISv10: Don't autonegotiate if autonegotiation is off CRIS: Cleanup linker script using new linker script macros. Jesse Barnes (24): drm: remove root requirement from DRM_IOCTL_SET_VERSION (+ DRM_IOCTL_AUTH_MAGIC) drm: clarify scaling property names drm/i915: add dynamic clock frequency control PCI: export pci_claim_resource for driver use x86/PCI: initialize PCI bus node numbers early ACPI button: provide lid status functions drm/i915: force mode set at lid open time drm/i915: use ACPI LID status for LVDS ->detect hook drm/i915: generate a KMS uevent at lid open/close time drm/i915: framebuffer compression for pre-GM45 PCI: pcie portdrv: remove unused variable PCI: fix VGA arbiter header file MAINTAINTERS: remove hotplug driver entries drm/i915: fix typo in compressed buffer setup drm/i915: fix suspend/resume breakage in lid notifier drm/i915: fix startup hang on some non-mobile platforms drm/i915: prevent FIFO calculation overflows on 32 bits with high dotclocks ACPI: make ACPI button funcs no-ops if not built in drm/i915: blacklist Acer AspireOne lid status drm/i915: correct FBC update when pipe base update occurs drm: fix drm_fb_helper handling of kernel crtcs x86/PCI: make 32 bit NUMA node array int, not unsigned char drm/i915: split display functions by chip type drm/i915: framebuffer compression for GM45+ Jesse Brandeburg (3): e1000: allow ethtool coalesece to adjust interrupts per second e1000: implement jumbo receive with partial descriptors e1000: fix flow control thresholds Jianjun Kong (1): mm: Fix problem of parameter in note Jie Yang (1): atl1e: fix 2.6.31-git4 -- ATL1E 0000:03:00.0: DMA-API: device driver frees DMA Jim Lieb (16): Staging: vt665x: 64bit compile fixes Part 1 Staging: vt665x: 64bit compile fixes Part 2 Staging: vt6655 textual cleanup in prep for driver merge Staging: vt665x: Text janitor in prep for driver merge Staging: vt665x: Text janitor in prep for driver merge, part 2 Staging: vt665x: Typedef and macro cleanup Part 1 Staging: vt665x: Typedef and macro cleanup Part 2 Staging: vt665x: Clean up include files, Part 1 Staging: vt665x: Clean up include files, Part 2 Staging: vt665x: Remove umem.h Part 1 Staging: vt665x: Remove umem.h Part 2 Staging: vt665x: remove tpci.h file Staging: vt665x: remove tpci.h file in vt6656 Staging: vt665x: cleanup USB definitions Staging: vt665x: remove tbit.h Staging: vt665x: remove tbit.h part 2 Jim Persson (1): Input: usbtouchscreen - support for JASTEC/DigiTech DTR-02U USB touch controllers Jin Dongming (1): mem_class: fix bug Jiri Kosina (9): HID: use debugfs for report dumping descriptor HID: use debugfs for events/reports dumping HID: fix debugfs build with !CONFIG_DEBUG_FS HID: fix memory leak on error path in debug code HID: add force feedback support for Logitech WingMan Formula Force GP HID: support larger reports than 64 bytes in hiddev Merge branches 'upstream', 'upstream-fixes' and 'debugfs' into for-linus HID: fix non-atomic allocation in hid_input_report HID: consolidate connect and disconnect into core code Jiri Olsa (1): tracing/function-graph: x86_64 stack allocation cleanup Jiri Pirko (3): bonding: wipe out printk's bonding: make ab_arp select active slaves as other modes getrusage: fill ru_maxrss value Jiri Slaby (36): ath5k: remove permissions from debugfs files ath9k: remove permissions from debugfs files wireless: wl12xx, fix lock imbalance irq: Clean up by removing irqfixup MODULE_PARM_DESC() [SCSI] lpfc: don't dereference NULL [SCSI] nsp_cs: fix buf overflow x86/PCI: pci quirks, fix pci refcounting KVM: fix lock imbalance V4L/DVB (12372): saa7134: fix lock imbalance V4L/DVB (12373): hdpvr: fix lock imbalances [IA64] pci_br, fix infinite loop in find_free_ate() Staging: dream, fix buf overflow mtd: sst25l, fix lock imbalance cyclades: add tty refcounting cyclades: remove block_til_ready cyclades: avoid addresses recomputation cyclades: switch to tty_port_hangup cyclades: close cleanup cyclades: overall cleanup cyclades: sleep instead busy-wait cyclades: use dtr_rts helpers cyclades: merge cy_startup tails cyclades: ioctls cleanup cyclades: tiocm cleanup cyclades: introduce cyy_readb/writeb cyclades: remove more duplicated code tty: Power: fix suspend vt regression tty: riscom8, fix shutdown declaration tty: riscom8, fix tty refcnt tty: USB: serial/mct_u232, fix tty refcnt tty: Char: mxser, add support for CP112UL tty: Char: mxser, use THRE for ASPP_OQUEUE ioctl USB: usb-serial, remove unused variables USB: make usb_buffer_map_sg consistent with doc video: console, use DIV_ROUND_UP memstick: move dev_dbg Jiro SEKIBA (6): nilfs2: implement nilfs_show_options to display mount options in /proc/mounts nilfs2: remove redundant super block commit nilfs2: fix disorder of nilfs_write_super in nilfs_sync_fs nilfs2: clean up nilfs_write_super nilfs2: stop using periodic write_super callback nilfs2: shorten freeze period due to GC in write operation v3 Joachim Fenkes (2): IB/ehca: Construct MAD redirect replies from request MAD IB/ehca: Fix CQE flags reporting Joe Eykholt (51): [SCSI] libfc: remove extra semicolons from debug macros [SCSI] libfc: change debug messages to give host number. [SCSI] fcoe: stop delivery of received frames before doing lport_destroy() [SCSI] libfc: rename lport NONE state to DISABLED [SCSI] libfc: stop login after fabric logoff [SCSI] libfc: in fc_lport_destroy, flush rports after turning off link [SCSI] libfc: fix WARNING from fc_seq_start_next on closed exchanges [SCSI] libfc: rename rport state "NONE" to "DELETE". [SCSI] libfc: fc_rport_logoff should not drop the lock [SCSI] libfc: fix: cancel rport retry timer [SCSI] fcoe: libfcoe: extra semicolon in CHECK_LOGGING macros causes compile error [SCSI] fcoe: remove unnecessary list and lock initializations. [SCSI] libfc: prepare to split off struct fc_rport_priv from fc_rport_libfc_priv [SCSI] libfc: change interface for rport_create [SCSI] libfc: fix RPORT_TO_PRIV and PRIV_TO_RPORT() macros. [SCSI] libfc: make fc_rport_priv the primary rport interface. [SCSI] libfc: change elsct to use FC_ID instead of rdata [SCSI] libfc: make rport structure optional [SCSI] libfc: rearrange code in fc_rport_work [SCSI] libfc: rename rport event CREATED to READY [SCSI] libfc: don't create dummy (rogue) remote ports [SCSI] libfc: fix rport event race between READY and LOGO [SCSI] libfc: eliminate disc->event [SCSI] libfc: remove unused disc->delay element [SCSI] libfc: rport debug messages were printing pointer values [SCSI] libfc: simplify fc_lport_rport_callback [SCSI] libfc: make rport module maintain the rport list [SCSI] libfc: have rport_create do a lookup for pre-existing rports first [SCSI] libfc: change to make remote port callback optional [SCSI] libfc: move rport_lookup into fc_rport.c [SCSI] libfc: do not log off rports before or after discovery [SCSI] libfc: discovery restart sequence error fix [SCSI] libfc: rearrange code in fc_disc_gpn_ft_resp() [SCSI] libfc: handle discovery failure more correctly. [SCSI] libfc: fix: empty zone causes endless discovery retries. [SCSI] libfc: discovery retry should clear pending first. [SCSI] libfc: discovery gpn_ft parse bug [SCSI] libfc: clean up point-to-point discovery code. [SCSI] libfc: don't do discovery before callback is set [SCSI] libfc: move remote port lookup for ELS requests into fc_rport.c. [SCSI] libfc: fix: rport_recv_req needs disc_mutex when calling rport_lookup [SCSI] libfc: improve debug messages for ELS response handlers [SCSI] libfc: correctly handle incoming PLOGI request. [SCSI] libfc: fix rport error handling for login-required and invalid ops [SCSI] libfc: re-login to remote ports that send us LOGO [SCSI] libfc: LOGO response code had extraeous enter_rtv [SCSI] libfc: use ADISC to verify rport login state [SCSI] libfc: fix handling of incoming Discover Address (ADISC) requests [SCSI] libfc: send GPN_ID in reaction to single-port RSCNs. [SCSI] libfc: don't swap OX_ID and RX_ID when sending BA_RJT [SCSI] fcoe: flush per-cpu thread work when destroying interface Joe Perches (47): hwrng: Use PCI_VDEVICE ext4: Remove unnecessary semicolons in mballoc.c drivers/net/wireless: Use PCI_VDEVICE drivers/net/wireless/ath/ath9k: Remove unnecessary semicolons MAINTAINERS: Update rtl8180 patterns MAINTAINERS: NETWORKING [WIRELESS] additional patterns MAINTAINERS: update information for sfc network driver lib/vsprintf.c: Add "%pI6c" - print pointer as compressed ipv6 address s2io.c: Use const for strings s2io.c: Shorten code line length by using intermediate pointers s2io.c: Use calculated size in kmallocs s2io.c: use kzalloc s2io.c: Make more conforming to normal kernel style s2io.c: convert printks to pr_ s2io.c: fix spelling explaination s2io.c: Standardize statistics accessors s2io.c: Convert skipped nic->config.tx_cfg[i]. to tx_cfg-> s2io: Generate complete messages using single line DBG_PRINTs drivers/ata: Remove unnecessary semicolons MAINTAINERS: Add Atheros Linux wireless drivers home page V4L/DVB (12196): cx18-fileops.c: Remove unnecessary semicolons V4L/DVB (12197): Remove unnecessary semicolons V4L/DVB (12198): ivtv-driver.c: Remove unnecessary semicolons V4L/DVB (12204): bttv and meye: Use PCI_VDEVICE V4L/DVB (12703): gspca - sn9c20x: Reduces size of object pcmcia: drivers/pcmcia/pcmcia_resource.c: Remove unnecessary semicolons arch/m68knommu/kernel/time.c: Remove unnecessary semicolons mfd: remove unnecessary semicolons from twl4030 x86, mtrr: Convert loop to a while based construct, avoid naked semicolon Use new __init_task_data macro in arch init_task.c files. trivial: remove unnecessary semicolons drivers/regulator/pcf50633-regulator.c: Remove unnecessary semicolons scripts/get_maintainer.pl: add --git-blame scripts/get_maintainer.pl: add sections in pattern match depth order scripts/get_maintainer.pl: add --pattern-depth scripts/get_maintainer.pl: better email routines, use perl not shell where possible scripts/get_maintainer.pl: add .mailmap use, shell and email cleanups scripts/get_maintainer.pl: using --separator implies --nomultiline scripts/get_maintainer.pl: add --remove-duplicates scripts/get_maintainer.pl: add maintainers in order listed in matched section MAINTAINERS: integrate P:/M: lines MAINTAINERS: move ARM lists to infradead lib/vsprintf.c: Avoid possible unaligned accesses in %pI6c msm_sdcc.c: convert printk(KERN_ to pr_( msm_sdcc.c: stylistic cleaning msm_sdcc.c: move overly indented code to separate function MAINTAINERS: add Matt Mackall and Herbert Xu to HARDWARE RANDOM NUMBER GENERATOR Joe Peterson (2): n_tty: honor opost flag for echoes n_tty: move echoctl check and clean up logic Joel Becker (40): ocfs2: Make the ocfs2_caching_info structure self-contained. ocfs2: Change metadata caching locks to an operations structure. ocfs2: Take the inode out of the metadata read/write paths. ocfs2: move ip_last_trans to struct ocfs2_caching_info ocfs2: move ip_created_trans to struct ocfs2_caching_info ocfs2: Pass struct ocfs2_caching_info to the journal functions. ocfs2: Store the ocfs2_caching_info on ocfs2_extent_tree. ocfs2: Pass ocfs2_caching_info to ocfs2_read_extent_block(). ocfs2: ocfs2_find_path() only needs the caching info ocfs2: ocfs2_create_new_meta_bhs() doesn't need struct inode. ocfs2: Pass ocfs2_extent_tree to ocfs2_unlink_path() ocfs2: ocfs2_complete_edge_insert() doesn't need struct inode at all. ocfs2: Get inode out of ocfs2_rotate_subtree_root_right(). ocfs2: Pass ocfs2_extent_tree to ocfs2_get_subtree_root() ocfs2: Drop struct inode from ocfs2_extent_tree_operations. ocfs2: ocfs2_rotate_tree_right() doesn't need struct inode. ocfs2: ocfs2_update_edge_lengths() doesn't need struct inode. ocfs2: ocfs2_rotate_subtree_left() doesn't need struct inode. ocfs2: __ocfs2_rotate_tree_left() doesn't need struct inode. ocfs2: ocfs2_rotate_tree_left() no longer needs struct inode. ocfs2: ocfs2_merge_rec_left/right() no longer need struct inode. ocfs2: ocfs2_try_to_merge_extent() doesn't need struct inode. ocfs2: ocfs2_grow_branch() and ocfs2_append_rec_to_path() lose struct inode. ocfs2: ocfs2_truncate_rec() doesn't need struct inode. ocfs2: Make truncating the extent map an extent_tree_operation. ocfs2: ocfs2_insert_at_leaf() doesn't need struct inode. ocfs2: Give ocfs2_split_record() an extent_tree instead of an inode. ocfs2: ocfs2_do_insert_extent() and ocfs2_insert_path() no longer need an inode. ocfs2: ocfs2_extent_contig() only requires the superblock. ocfs2: Swap inode for extent_tree in ocfs2_figure_merge_contig_type(). ocfs2: Remove inode from ocfs2_figure_extent_contig(). ocfs2: ocfs2_figure_insert_type() no longer needs struct inode. ocfs2: Make extent map insertion an extent_tree_operation. ocfs2: ocfs2_insert_extent() no longer needs struct inode. ocfs2: ocfs2_add_clusters_in_btree() no longer needs struct inode. ocfs2: ocfs2_remove_extent() no longer needs struct inode. ocfs2: ocfs2_split_and_insert() no longer needs struct inode. ocfs2: Teach ocfs2_replace_extent_rec() to use an extent_tree. ocfs2: __ocfs2_mark_extent_written() doesn't need struct inode. ocfs2: Pass ocfs2_caching_info into ocfs_init_*_extent_tree(). Joerg Albert (6): ath5k: fix missing output in monitor mode after ifconfig up ar9170: cleanup of bss_info_changed and beacon config ar9170: remove unnecessary call to ar9170_set_beacon_timers ar9170: added phy register initialisation from eeprom values ath,ar9170: move CTL_ defines into regd.h ath,ar9170: implemented conformance test limit calc. for tx power Joerg Roedel (68): x86/amd-iommu: Dump fault entry on DTE error x86/amd-iommu: Dump illegal command on ILLEGAL_COMMAND_ERROR x86/amd-iommu: Introduce function for iommu-local domain flush x86/amd-iommu: Remove some merge helper code x86/amd-iommu: replace "AMD IOMMU" by "AMD-Vi" x86/amd-iommu: Remove redundant 'IOMMU' string x86/amd-iommu: fix broken check in amd_iommu_flush_all_devices x86/amd-iommu: Add function to flush all DTEs on one IOMMU x86/amd-iommu: Add reset function for command buffers x86/amd-iommu: Reset command buffer on ILLEGAL_COMMAND_ERROR x86/amd-iommu: Panic if IOMMU command buffer reset fails x86/amd-iommu: Reset command buffer if wait loop fails x86/amd-iommu: Make fetch_pte aware of dynamic mapping levels x86/amd-iommu: Use fetch_pte in iommu_unmap_page x86/amd-iommu: Use fetch_pte in amd_iommu_iova_to_phys x86/amd-iommu: Add a gneric version of amd_iommu_flush_all_devices x86/amd-iommu: Introduce set_dte_entry function x86/amd-iommu: Flush domains if address space size was increased x86/amd-iommu: Introduce increase_address_space function x86/amd-iommu: Change alloc_pte to support 64 bit address space x86/amd-iommu: Remove last usages of IOMMU_PTE_L0_INDEX x86/amd-iommu: Remove bus_addr check in iommu_map_page x86/amd-iommu: Use 2-level page tables for dma_ops domains x86/amd-iommu: Remove old page table handling macros x86/amd-iommu: Support higher level PTEs in iommu_page_unmap x86/amd-iommu: Change iommu_map_page to support multiple page sizes x86/dma: Mark iommu_pass_through as __read_mostly x86/amd-iommu: Add core functions for pd allocation/freeing x86/amd-iommu: Add passthrough mode initialization functions x86/amd-iommu: Fix device table write order x86/amd-iommu: Align locking between attach_device and detach_device x86/amd-iommu: Make sure a device is assigned in passthrough mode x86/amd-iommu: Don't detach device from pt domain on driver unbind x86/amd-iommu: Initialize passthrough mode when requested Merge branches 'gart/fixes', 'amd-iommu/fixes+cleanups' and 'amd-iommu/fault-handling' into amd-iommu/2.6.32 Merge branch 'amd-iommu/passthrough' into amd-iommu/2.6.32 Merge branch 'amd-iommu/pagetable' into amd-iommu/2.6.32 hugetlbfs: export vma_kernel_pagsize to modules KVM: Prepare memslot data structures for multiple hugepage sizes KVM: MMU: Fix MMU_DEBUG compile breakage KVM: MMU: make rmap code aware of mapping levels KVM: MMU: rename is_largepage_backed to mapping_level KVM: MMU: make direct mapping paths aware of mapping levels KVM: MMU: make page walker aware of mapping levels KVM: MMU: shadow support for 1gb pages KVM: MMU: enable gbpages by increasing nr of pagesizes KVM: report 1GB page support to userspace KVM: SVM: add helper functions for global interrupt flag KVM: SVM: optimize nested #vmexit KVM: SVM: optimize nested vmrun KVM: SVM: copy only necessary parts of the control area on vmrun/vmexit KVM: SVM: complete interrupts after handling nested exits KVM: SVM: move nested svm state into seperate struct KVM: SVM: cache nested intercepts KVM: SVM: consolidate nested_svm_exit_handled KVM: SVM: do nested vmexit in nested_svm_exit_handled KVM: SVM: simplify nested_svm_check_exception KVM: SVM: get rid of nested_svm_vmexit_real KVM: SVM: clean up nested_svm_exit_handled_msr KVM: SVM: clean up nestec vmload/vmsave paths KVM: SVM: clean up nested vmrun path KVM: SVM: remove nested_svm_do and helper functions KVM: SVM: handle errors in vmrun emulation path appropriatly KVM: SVM: move special nested exit handling to separate function KVM: SVM: remove unnecessary is_nested check from svm_cpu_run KVM: SVM: move nested_svm_intr main logic out of if-clause KVM: SVM: check for nested VINTR flag in svm_interrupt_allowed KVM: SVM: enable nested svm by default Johannes Berg (162): cfg80211: pass netdev to change_virtual_intf cfg80211: issue netlink notification when scan starts rt2x00: remove skb->do_not_encrypt usage mac80211: push rx status into skb->cb mac80211: improve per-sta debugfs cfg80211: prohibit scanning the same channel more than once mac80211_hwsim: clean up the skb before passing it back cfg80211: send wext MLME-MICHAELMICFAILURE.indication wext: allow returning NULL stats mac80211: fix todo lock wext: default to y cfg80211: move break statement to correct place nl80211: clean up function definitions cfg80211: use proper allocation flags cfg80211: remove wireless_dev->bssid mac80211: tell SME about real auth state wext: constify extra argument to wireless_send_event cfg80211: introduce nl80211 testmode command mac80211: remove an unused function declaration wireless: define AKM suites cfg80211: emulate connect with auth/assoc cfg80211: managed mode wext compatibility cfg80211: implement iwpower cfg80211: implement IWAP for WDS cfg80211: implement IWRATE cfg80211: implement get_wireless_stats mac80211: re-add HT disabling mac80211: remove auth algorithm retry mac80211: remove dead code, clean up cfg80211: send events for userspace SME cfg80211: reset auth algorithm cfg80211: assimilate and export ieee80211_bss_get_ie cfg80211: keep track of BSSes cfg80211: refuse authenticating to same BSSID twice nl80211: limit to one pairwise cipher for associate() cfg80211: fix giwrange iwlwifi: make software queue assignment more efficient iwlwifi: scan requested channels only iwlwifi: fix aggregation limit rfkill: prep for rfkill API changes cfg80211: let SME control reassociation vs. association mac80211: remove dead code from mlme mac80211: rework MLME for multiple authentications mac80211: refactor the WEP code to be directly usable cfg80211: fix netdev down problem cfg80211: dont use union for wext cfg80211: mlme API must be able to sleep cfg80211: warn again on spurious deauth cfg80211: properly name driver locking cfg80211: fix MFP bug, sparse warnings cfg80211: fix locking cfg80211: clean up naming once and for all cfg80211: disallow configuring unsupported interfaces hwsim: make testmode_cmd static netlink: remove unused exports netlink: use call_rcu for netlink_change_ngroups net: make namespace iteration possible under RCU genetlink: make netns aware net: move and export get_net_ns_by_pid wireless extensions: make netns aware wext: optimise, comment and fix event sending net/compat/wext: send different messages to compat tasks gianfar: remove unused DECLARE_MAC_BUF net: explain netns notifiers a little better mac80211: fix sparse warning mac80211: driver operation debugging cfg80211: fix race in giwrate cfg80211: fix two buglets nl80211: introduce new key attributes cfg80211: rework key operation mac80211: fix multi-use timer mac80211: monitor the connection cfg80211: fix a locking bug mac80211: mesh: fix two small problems cfg80211: fix wext stats mac80211_hwsim: report fixed signal strength cfg80211: don't look at wdev->ssid for giwessid cfg80211: fix wext setting SSID nl80211: report BSS status cfg80211: fix more bugs in mlme handling mac80211: cancel the connection monitor timers/work cfg80211: fix unregistration iwlwifi: make some logging functions static/unexport wireless: remove print_mac uses cfg80211: don't optimise wext calls too much net: export __dev_addr_sync/__dev_addr_unsync mac80211: remove master netdev net: remove unused skb->do_not_encrypt mac80211: fix ieee80211_xmit call context net: deprecate print_mac mac80211: cooperate more with network namespaces cfg80211: make aware of net namespaces mac80211: allow using network namespaces mac80211: fix mlme timeouts mac80211: fix PS-poll response, race iwlwifi: fix up command sending iwlwifi: remove command callback return value cfg80211: fix circular lock dependency (1) mac80211: fix receiving deauth nl80211: add missing parameter clearing cfg80211: fix disassoc while not associated mac80211: verify info->control.vif is not NULL cfg80211: combine iwfreq implementations cfg80211: combine IWAP handlers cfg80211: combine IWESSID handlers cfg80211: self-contained wext handling where possible mac80211: disable software retry for now cfg80211: keep track of current_bss for userspace SME mac80211: fix sparse warnings/errors iwlwifi: don't export symbols not needed in other modules cfg80211: fix NETDEV_UNREGISTER notifier mac80211: fix powersave cfg80211: lower dynamic PS timeout to 100ms cfg80211: clear SSID on disconnect/no connection mac80211: stay authenticated after disassoc cfg80211: fix nl80211 disconnected events cfg80211: fix SME association after disassociation cfg80211: validate channel settings across interfaces cfg80211: use reassociation when possible nl80211: add generation number to all dumps mac80211: explain TX retry and status mac80211: document TX powersave filter requirements mac80211: allow DMA optimisation cfg80211: fix alignment problem in scan request iwlwifi: refactor some thermal throttle code iwlwifi: automatically adjust sleep level cfg80211: fix locking for SIWFREQ cfg80211: add missing device list locking mac80211: take statistics before encryption mac80211: sequence number micro-optimisation mac80211: small tx code cleanup cfg80211: check for and abort dangling scan requests cfg80211: allow driver to override PS default iwlwifi: remove unused members of iwl_ht_info iwlwifi: disable PS by default cfg80211: fix deadlock cfg80211: report userspace SME connected event properly mac80211: allow configure_filter callback to sleep mac80211: remove deprecated API cfg80211: fix dangling scan request checking mac80211: fix register_hw error path [SCSI] fcoe: convert to %pM mac80211: fix configure_filter invocation after stop cfg80211: check lost scans later, fix bug cfg80211: make spurious warnings less likely, configurable cfg80211: clean up properly on interface type change mac80211: remove tasklet enable/disable mac80211: fix RX skb leaks mac80211: fix scan cancel on ifdown iwlwifi: fix ICT irq table endianness iwlwifi: use sleep interval succession rfkill: relicense header file iwlwifi: disable powersave for 4965 genetlink: fix netns vs. netlink table locking cfg80211: fix SME connect kmemcheck: add missing braces to do-while in kmemcheck_annotate_bitfield iwlwifi: disable powersave for 4965 cfg80211: fix SME connect mac80211: fix DTIM setting cfg80211: don't overwrite privacy setting module: preferred way to use MODULE_AUTHOR genetlink: fix netns vs. netlink table locking (2) Johannes Goerner (1): V4L/DVB (12281): gspca - sunplus: Webcam 052b:1803 added. Johannes Weiner (8): kernel-doc: allow multi-line declaration purpose descriptions mm: make swap token dummies static inlines mm: perform non-atomic test-clear of PG_mlocked on free mm: drop unneeded double negations mm: introduce page_lru_base_type() mm: return boolean from page_is_file_cache() mm: return boolean from page_has_private() mm: document is_page_cache_freeable() John Bonesio (2): ASoC: MPC5200: Increase the delay time between resets ASoC: MPC5200: Support for buffer wrap around John Dykstra (1): tcp: Remove redundant copy of MD5 authentication key John Linn (1): net: add Xilinx emac lite device driver John Reiser (1): ftrace: __start_mcount_loc should be .init.rodata John Stultz (1): timekeeping: Introduce timekeeping_leap_insert John W. Linville (7): mac80211_hwsim: fix-up build damage from removal of skb->dst ray_cs: remove bogus NULL check at head of ray_get_wireless_stats rc80211_pid_algo.c: remove unused variable declaration wl1271: remove print_mac usage libipw: switch from ieee80211_* to libipw_* naming policy mac80211: remove ieee80211_rx namespace hack libipw: initiate cfg80211 API conversion John Williams (7): mtd: Enable Open Firmware initialisation of MTD devices and maps for MicroBlaze microblaze: Use correct kbuild variable KBUILD_CFLAGS microblaze: Ensure CPU usermode is set on new userspace processes microblaze: Clear sticky FSR register after generating exception signals microblaze: Updated CPU version and FPGA family codes in PVR microblaze: Copy ppc asm-compat.h for clean handling of constants in asm and C microblaze: Create the LOAD_OFFSET macro used to compute VMA vs LMA offsets John(Jung-Ik) Lee (1): libata: Add pata_atp867x driver for Artop/Acard ATP867X controllers Jon Frosdick (1): sh: Use internal watchdog timer to perform reset Jon Hunter (1): USB: EHCI: ensure all watchdog timer events are deleted when suspending usb Jonathan Cameron (15): Staging: IIO: core support for device registration and management Staging: IIO: max1363 ADC driver Staging: IIO: tsl2561 digital light sensor core support Staging: IIO: lis3l02dq accelerometer core support Staging: IIO: kxsd9 accelerometer minimal support Staging: IIO: Add generic ring buffer support to the IIO core Staging: IIO: VTI sca3000 series accelerometer driver (spi) Staging: IIO: Trigger support added to core. Staging: IIO: Ring buffer: Initial pass at rarely locked ring buffer Staging: IIO: lis3l02dq ring buffer and data ready trigger support Staging: IIO: max1363 add software ring buffer support using ring_sw Staging: IIO: Periodic timer based trigger Staging: IIO: Proof of concept gpio trigger Staging: IIO: Initial documentation Staging: IIO: Add todo list for staging Jonathan Corbet (1): Document the flex_array library. Jonathan McDowell (2): [ARM] pxa: balloon3 (http://balloonboard.org/) base machine support omapfb: add support for the Amstrad Delta LCD Jonathan Woithe (2): fujitsu-laptop: fix config corner case fujitsu-laptop: increment driver version Joonyoung Shim (11): ASoC: add SOC_DOUBLE_EXT_TLV control type ASoC: add SOC_DOUBLE_R_EXT_TLV control type ASoC: MAX9877: add MAX9877 amp driver ASoC: MAX9877: separate callback functions ASoC: MAX9877: fix write operation for register ASoC: Fix data format configuration for S3C64XX IISv2 V4L/DVB (12413): radio-si470x: separate common and usb code V4L/DVB (12414): radio-si470x: change to dev_* macro from printk V4L/DVB (12415): radio-si470x: add disconnect check function V4L/DVB (12416): radio-si470x: add i2c driver for si470x Input: add touchscreen driver for MELFAS MCS-5000 controller Jory A. Pratt (1): kbuild: fix cc1 options check to ensure we do not use -fPIC when compiling Jose Alberto Reguero (1): V4L/DVB (12753): af9015: [1/2] fix USB TS configuration Josef Bacik (6): Btrfs: make balance code choose more wisely when relocating Btrfs: don't keep retrying a block group if we fail to allocate a cluster Btrfs: fix bitmap size tracking Btrfs: remove dead code Btrfs: fix extent entry threshold calculation Btrfs: account for space used by the super mirrors Joseph Cihula (4): x86, intel_txt: Intel TXT boot support x86, intel_txt: Intel TXT reboot/halt shutdown support x86, intel_txt: Intel TXT Sx shutdown support intel_txt: Force IOMMU on for Intel TXT launch Josh Boyer (2): powerpc: Fix __flush_icache_range on 44x powerpc/4xx: Fix erroneous xmon warning on PowerPC 4xx Josh Stone (4): tracing: Rename FTRACE_SYSCALLS for tracepoints tracing: Make syscall tracepoints conditional tracing: Move tracepoint callbacks from declaration to definition tracing: Create generic syscall TRACE_EVENTs Josh Triplett (4): rcu: Fix typo in rcu_irq_exit() comment header tracing: Add vim script to enable folding for function_graph traces rcutorture: Occasionally delay readers enough to make RCU force_quiescent_state Documentation/vm/.gitignore: add page-types Jouni Hogander (4): spi: omap2_mcspi use BIT(n) omapfb: dispc: disable iface clocks along with func clocks omapfb: dispc: enable wake up capability omapfb: suspend/resume only if FB device is already initialized Jouni Malinen (1): mac80211: Check pending scan request after having processed mgd work Julia Lawall (65): drivers/net/cs89x0.c: Avoid using magic number in set_dma_mode Input: use resource_size when allocating resources drivers/net/bonding: Adjust constant name HID: Drop NULL test on list_entry result drivers/net: Drop unnecessary NULL test drivers/isdn: Drop unnecessary NULL test drivers/net: Correct redundant test net/netlabel: Correct redundant test drivers/atm: Correct redundant test fs/xfs: Correct redundant test drivers/net: Use DIV_ROUND_CLOSEST drivers/atm: Use DIV_ROUND_CLOSEST ARM: 5635/1: Use DIV_ROUND_CLOSEST drivers/net/wireless: Use DIV_ROUND_CLOSEST security/smack: Use AF_INET for sin_family field net/rds: Use AF_INET for sin_family field drivers/ide/ide-cd.c: Use DIV_ROUND_CLOSEST HID: fix memory leak on error patch in debug code drivres/net: Change constant name drivers/net/tokenring: Use status field rather than state field drivers/net: Correct use of request_region/request_mem_region drivers/net/wireless/ath/ath5k: Change constant name powerpc/fsl_rio: Add kmalloc NULL tests powerpc/ipic: introduce missing kfree powerpc/qe: introduce missing kfree hvc_console: Drop unnecessary NULL test powerpc: Use DIV_ROUND_CLOSEST in time init code Bluetooth: Add missing kmalloc NULL tests to Marvell driver fujitsu-laptop: Correct redundant test Input: w90p910_keypad - move a dereference below a NULL test fs/xfs: Correct redundant test KVM: correct error-handling code drivers/ata: use resource_size drivers/net/wan: introduce missing kfree drivers/net/phy: introduce missing kfree ASoC: Clean up error handling in MPC5200 DMA setup V4L/DVB (12421): drivers/media/video/gspca: introduce missing kfree V4L/DVB (12477): Use dst_type field instead of type_flags V4L/DVB (12483): Use DIV_ROUND_CLOSEST hwmon: Use resource_size Staging: otus: Drop an unnecessary NULL test Staging: b3dfg: Drop NULL test on list_entry result Staging: meilhaus: convert nested spin_lock_irqsave to spin_lock Staging: Correct use of ! and & Staging: dst: correct error-handling code staging: Make some structures static Staging: rtl8192e: Drop unnecessary NULL test Staging: dream: introduce missing kfree Staging: iio: introduce missing kfree MIPS: TXx9: Fix error handling. i2c-pnx: Correct use of request_region/request_mem_region V4L/DVB (13012): uvc: introduce missing kfree drivers/net: remove duplicate structure field initialization USB: gadget: Drop NULL test on list_entry result USB: storage: Drop an unneeded a NULL test USB: isp1362: Correct use of ! and & drivers/rtc: correct error-handling code drivers/rtc: introduce missing kfree drivers/video: add kmalloc NULL tests drivers/net/wireless: Use usb_endpoint_dir_out fs/romfs: correct error-handling code edac: fix resource size calculation fs/romfs: correct error-handling code drivers/vlynq/vlynq.c: fix resource size off by 1 error RDMA/nes: Remove duplicate .ndo_set_mac_address field initialization Julian Scheel (1): V4L/DVB (12481): Fix lowband tuning with tda8261 Julie Zhu (1): microblaze: Add architectural support for USB EHCI host controllers Julien Tinnes (1): personality handling: fix PER_CLEAR_ON_SETID for security reasons Julius Volz (1): IPVS: Add handling of incoming ICMPV6 messages Jurij Smakov (1): sparc64: build compressed image (zImage) by default Jussi Kivilinna (39): rndis_wlan: convert get/set frag/rts to cfg80211 usbnet: Add stop function pointer to 'struct rndis_data'. rndis_wlan: convert set/get txpower to cfg80211 usbnet: allow "minidriver" to prevent urb unlinking on usbnet_stop rndis_wlan: stop workers on rndis_wlan_stop() and restore on rndis_wlan_reset() rndis_wlan: clear cfg80211 scan on rndis_wlan_stop() rndis_wlan: reset device and restore multicast list on rndis_wlan_reset() rndis_wlan: set current packet filter to zero on stop rndis_wlan: add rndis_set/query_oid debugging rndis_host: allow rndis_wlan to see all indications rndis_wlan: handle 802.11 indications from device rndis_wlan: add missing padding to struct rndis_80211_remove_key rndis_wlan: rework key handling usbnet: add rx queue pausing cfg80211: export cfg80211_wext_siwfreq rndis_wlan: fix broken logic in add_wep_key() rndis_wlan: set cipher suites for cfg80211 rndis_wlan: ignore OID_802_11_ADD_KEY triggered media connect indications rndis_wlan: get bssid scan list before new scan rndis_wlan: resize bssid list if too small rndis_wlan: increase scan timer delay rndis_wlan: move link up/down work to separate functions rndis_wlan: use is_zero_ether_addr() and is_broadcast_ether_addr() rndis_wlan: set ieee80211_ptr->iftype in rndis_change_virtual_intf rndis_wlan: enable infrastructure before setting random essid rndis_wlan: add cfg80211 connect, disconnect, join_ibss and leave_ibss rndis_wlan: add cfg80211 set_channel rndis_wlan: add cfg80211 key handling rndis_wlan: add cfg80211 get_station rndis_wlan: add cfg80211 dump_station rndis_wlan: rename wireless stats worker to device poller rndis_wlan: remove unneeded SIOCSIWCOMMIT rndis_wlan: convert mic failure wireless event to cfg80211 rndis_wlan: disable IWEVPMKIDCAND wireless event rndis_wlan: use cfg80211_wext_handler rndis_wlan: use bool for on/off switches rndis_wlan: cleanup rndis_wlan: fix sparse endianess warnings rndis_wlan: remove 'select WIRELESS_EXT' in Kconfig Juuso Oikarinen (4): wl12xx: removed chipset interrupt source configuration from fw wakeup wl12xx: Moved wl1251 TX path implementation into chip specific files wl12xx: Add support for block reading from a fixed register address wl12xx: Use chipset specific join commands KAMEZAWA Hiroyuki (15): vmalloc: unmap vmalloc area after hiding it kcore: fix vread/vwrite to be aware of holes kcore: /proc/kcore should use vread kcore: use usual list for kclist kcore: add kclist types kcore: register vmalloc area in generic way kcore: register text area in generic way walk system ram range kcore: use registerd physmem information kcore: register vmemmap range kcore: register module area in generic way kcore: more fixes for init /proc/kcore: fix stat.st_size /proc/kcore: update stat.st_size after memory hotplug memcg: add comments explaining memory barriers KOSAKI Motohiro (17): mm: clean up page_remove_rmap() mm: show_free_areas(): display slab pages in two separate fields mm: oom analysis: add per-zone statistics to show_free_areas() mm: oom analysis: add buffer cache information to show_free_areas() mm: oom analysis: Show kernel stack usage in /proc/meminfo and OOM log output mm: oom analysis: add shmem vmstat mm: rename pgmoved variable in shrink_active_list() mm: shrink_inactive_list() nr_scan accounting fix fix mm: vmstat: add isolate pages mm: remove __{add,sub}_zone_page_state() vmscan: move ClearPageActive from move_active_pages() to shrink_active_list() vmscan: kill unnecessary page flag test vmscan: kill unnecessary prefetch oom: move oom_adj value from task_struct to signal_struct oom: make oom_score to per-process value oom: oom_kill doesn't kill vfork parent (or child) oom: fix oom_adjust_write() input sanity check KaiGai Kohei (2): cleanup in ss/services.c Add audit messages on type boundary violations Kalle Valo (46): wl12xx: cmd and acx interface rework wl12xx: reserver buffer for read32()/write32() in struct wl12xx wl12xx: fix error handling in wl12xx_probe() wl12xx: reserve buffer for partition command in struct wl12xx wl12xx: allocate buffer spi read/write command buffer kzalloc() wl12xx: allocate buffer the spi busy word from struct wl12xx wl12xx: use wl12xx_mem_read32() to read the rx counter wl12xx: fix rx descriptor use wl12xx: protect wl12xx_op_set_rts_threshold() wl12xx: optimise elp wakeup and sleep calls wl12xx: check if elp wakeup failed wl12xx: enable ELP mode wl12xx: rename wl1251.c wl1251_ops.c wl12xx: rename driver to wl1251 wl1251: remove wl1271_setup() wl1251: add wl1251 prefix to all 1251 files wl1251: rename wl12xx.h to wl1251.h wl12xx: remove unused wl12xx_hw_init_mem_config() wl1251: use wl1251 prefix everywhere wl1251: fix a checkpatch warning wl1251: remove accidentally added wl1251_netlink.c wl1251: remove wl1251_plt_start/stop() MAINTAINERS: add wl1251 wireless driver wl1251: remove fixed address support from spi commands wl1251: remove wl1251_ops wl1251: reorder wl1251_cmd_join() arguments wl1251: use beacon interval and dtim period provided by mac80211 wl1251: remove wait parameter from wl1251_cmd_join() wl1251: initialise default channel to zero wl1251: add channel to wl1251_cmd_join() parameters wl1251: create wl1251_join() wl1251: fix channel setting in wl1251_op_config() wl1251: move wl1251_acx_wake_up_conditions() to wl1251_ps_set_mode() wl1251: use workqueue provided by mac80211 wl1251: rename reg.h to wl1251_reg.h wl1251: remove Luciano as maintainer wl1251: add hw scan completed debug message wl1251: hack to disable filters for fixing association iwl3945: fix compilation error in iwl3945_pass_packet_to_mac80211() wl1251: remove wl1251_ops.c wl1251: remove unused definitions from wl1251_reg.h OMAP: remove OMAP_TAG_SERIAL_CONSOLE OMAP: UART: drop OMAP_TAG_UART, enable all UARTs, auto-disabled on idle OMAP2: compile usb-tusb6010.c OMAP2: add board file for Nokia N800 and N810 OMAP2: n8x0: add n8x0_defconfig Kamalesh Babulal (1): Staging: sep: SEP driver build breaks with CONFIG_PCI=n Karl Hiramoto (1): atm/br2684: netif_stop_queue() when atm device busy and netif_wake_queue() when we can send packets again. Karl Relton (1): Staging: wlan-ng: Convert firmware loading to load binary ihex format Karsten Keil (13): ISDN: Make isdnhdlc usable for other ISDN drivers ISDN: Clean up isdnhdlc code ISDN: Add support for none reverse bitstreams to isdnhdc ISDN: Fix isdnhdlc for one byte hdlc packets mISDN: Make clearing B-channel a common function mISDN: Add driver for Infineon ISDN chipset family mISDN: Driver for AVM Fritz!CARD PCI mISDN: Add support for Speedfax+ cards mISDN: Add driver for Winbond cards mISDN: Add support for Traverse Technologies NETJet PCI cards ISDN: ARRAY_SIZE changes mISDN: hfcmulti display real PCI ids for not supported cards mISDN: Fix wrong struct name in macro and clarifications Kashyap, Desai (20): [SCSI] mptsas : Change DEFINED value of can queue for FC and SAS devices. [SCSI] mptsas : Removed mptscsih_timer_expired. [SCSI] mptsas : Handle INSUFFICIENT resources status as similar to IOC BUSY status [SCSI] mptsas : Change config request timeout value to 30 seconds. [SCSI] mptsas : set max_id to infinite value. [SCSI] mptsas : Code cleanup of host page alloc and diag reset. [SCSI] mptsas : Bump version to 3.04.11 [SCSI] mpt2sas : Rescan topology from Interrupt context instead of work thread [SCSI] mpt2sas: Prevent sending command to FW while Host Reset [SCSI] mpt2sas: Removed wrapper funtions _scsih_link_change. [SCSI] mpt2sas: setting SDEV into RUNNING state from Interrupt context [SCSI] mpt2sas: Raid 10 Volume is showing as Raid 1E in dmesg [SCSI] mpt2sas: cleanup interrupt routine and config_request optimization [SCSI] mpt2sas: Bump driver version 01.100.06.00 [SCSI] mptsas : Sanity check for phyinfo is added [SCSI] mptsas : NULL pointer on big endian systems causing Expander not to tear off [SCSI] mptsas : PAE Kernel more than 4 GB kernel panic [SCSI] mptsas : Send DID_NO_CONNECT for pending IOs of removed device [SCSI] mptsas : FW event thread and scsi mid layer deadlock in SYNCHRONIZE CACHE command [SCSI] mptsas : Bump version to 3.04.12 Kay Sievers (3): mem_class: use minor as index instead of searching the array Driver Core: devtmpfs - kernel-maintained tmpfs-based /dev Driver-Core: extend devnode callbacks to provide permissions Kees Cook (1): proc: fix reported unit for RLIMIT_CPU Kees Schoenmakers (2): MOS7720 has no tiocmget method tty: usb_serial_mos7720: Fix get_lsr_info Keith Packard (1): drm/I915: Use the CRT DDC to get the EDID for DVI-connector on Mac Ken Kawasaki (1): pcnet_cs: add cis of Linksys multifunction pcmcia card Ken MacLeod (1): USB: isp1362: fix pulldown register defines and conf logic Kenji Kaneshige (25): PCI ASPM: do not clear enabled field by support field PCI ASPM: remove redundant list check PCI ASPM: fix possible null pointer dereference PCI ASPM: introduce disable flag PCI ASPM: introduce capable flag PCI ASPM: support partial aspm enablement PCI ASPM: support per direction l0s management PCI hotplug: fix typo in pcie link speed info PCI hotplug: add support for 5.0G link speed PCI ASPM: support L1 only PCI: pciehp: remove slot_list field PCI: pciehp: remove num_slots field PCI: pciehp: remove slot_num_inc field PCI: pciehp: remove bus field PCI: pciehp: remove device field PCI: pciehp: remove hp_slot field PCI: pciehp: remove slot_device_offset field PCI: pciehp: remove first_slot field PCI: pciehp: remove slot_bus field PCI: pciehp: remove crit_sect mutex PCI: pciehp: remove pci_dev field PCI: pciehp: remove hpc_ops PCI: pciehp: remove number field PCI: pciehp: remove error message definitions PCI: pciehp: remove slot capabilities definitions Kevin A. Granade (1): Staging: asus_oled: Cleaned up checkpatch issues. Kevin Cernekee (2): m25p80: Add Spansion S25FL129P serial flashes kaweth: Fix memory leak in kaweth_control() Kevin Hilman (14): ASoC: spdif codec: enable use by modules ASoC: spdif: set module licence to GPL ASoC: davinci: don't use clock names IDE: palm_bk3710: convert clock usage after clkdev conversion MAINTAINERS: add entry for TI DaVinci machine support davinci: Kconfig: enable EVMs by default when SoCs are enabled davinci: remove watchdog from soc_info davinci: Kconfig: update default config for 2.6.31-rc davinci: da830: updates for mach-type name change davinci: Kconfig: update default defconfig davinci: audio clocks: use struct device instead of clock names davinci: Kconfig: add dm646x ASoC support [WATCHDOG] davinci: use clock framework for timer frequency omapfb: add support for the 3430SDP LCD Kim Kyuwon (1): Input: add driver for Maxim MAX7359 key switch controller Kim Phillips (3): crypto: talitos - simplify hmac data size calculation crypto: talitos - align locks on cache lines crypto: talitos - add support for 36 bit addressing Kiran Divekar (1): libertas: add NULL check on return value of get_zeroed_page Kirill A. Shutemov (2): ARM: 5700/1: ARM: Introduce ARM_L1_CACHE_SHIFT to define cache line size ARM: 5701/1: ARM: copy_page.S: take into account the size of the cache line Kirill Smelkov (1): perf tools: .gitignore += perf*.html Klaus-Dieter Wacker (3): qeth: HiperSockets SIGA retry support on CC=2. qeth: Cleanup for cast-type determination. qeth: display service_level info only when valid. Koen Kooi (1): omapfb: add support for the OMAP3 Beagle DVI output Konrad Eisele (5): sparc,leon: CONFIG_SPARC_LEON option and leon specific files. sparc,leon: Redefine MMU register access asi if CONFIG_LEON sparc,leon: Introduce the sparc-leon CPU type. sparc,leon: Added support for AMBAPP bus. sparc, leon: sparc-leon specific SRMMU initialization and bootup fixes. Krishna Kumar (5): net: Avoid enqueuing skb for default qdiscs Speed-up pfifo_fast lookup using a private bitmap netdevice: Consolidate to use existing macros where available. net: convert remaining non-symbolic return values in dev_queue_xmit pkt_sched: Fix resource limiting in pfifo_fast Kristoffer Ericson (2): ARM: 5689/1: Update default config of HP Jornada 700-series machines pcmcia: cleanup/fixup patch for sa1100_jornada_pcmcia driver Krzysztof Halasa (4): WAN/LMC: Fix type_trans(). WAN: remove deprecated PCI_DEVICE_ID from PCI200SYN driver. IXP42x HSS support for setting internal clock rate trivial: fix comment typo in drivers/ata/pata_hpt37x.c Krzysztof HaĹ‚asa (1): Add MAINTAINERS entry for ARM/INTEL IXP4xx arch support. Kumar Gala (14): powerpc/mm: Fix switch_mmu_context to iterate of the proper list of cpus powerpc/85xx: Move mpc8536ds.dts to address-cells/size-cells = <2> powerpc/85xx: Added 36-bit physical device tree for mpc8536ds board powerpc/mm: Fix assert_pte_locked to work properly on uniprocessor powerpc/booke: Move MMUCSR definition into mmu-book3e.h powerpc/mm: Add MMU features for TLB reservation & Paired MAS registers powerpc/book3e-64: Move the default cpu table entry powerpc/book3e-64: Wait til generic_calibrate_decr to enable decrementer powerpc/book3e-64: Add helper function to setup IVORs powerpc/book3e-64: Add support to initial_tlb_book3e for non-HES TLB powerpc/pci: Pull ppc32 PCI features into common powerpc/book3e: Add missing page sizes powerpc/fsl-booke: Use HW PTE format if CONFIG_PTE_64BIT powerpc/85xx: Fix SMP compile error and allow NULL for smp_ops Kuninori Morimoto (33): sh: ms7724se: add 1280x720 lcdc output support sh: Add SH7724 DMAC support. sh: mach-kfr2409: add FLLFRQ value for PLL correction. sh: clkfwk: Support additional IFC divisor on SH7724. sh: Prevent heartbeat from scribbling over non-LED bits. sh: USB0 resource area fix for ms7724se sh: Add SH7724 support to NR_ONCHIP_DMA_CHANNELS sh: Add EcoVec (SH7724) board support ASoC: Add SuperH FSI driver support for ALSA ASoC: Add ak4642/ak4643 codec support ASoC: Add FSI-AK4642 sound support for SuperH sh: fix CPU_SH7723/7724 numbering bug sh: modify to enable boot for EcoVec24 sh: Add SH-ETH support for EcoVec24 sh: Add USB support for EcoVec24 sh: Add support LCDC for EcoVec24 sh: Add CEU support for EcoVec24 sh: Add LCDC Panel support for EcoVec24 sh: Add I2C device support for EcoVec24 sh: add romimage-macros.h sh: Add romImage support for EcoVec24 sh: EcoVec24: write MAC address in boot sh: EcoVec24: add HIZA setting for LED sh: USB disable process is needed if romImage boot for EcoVec24 sh: Add EcoVec24 romImage defconfig sh: add kycr2_delay for sh_keysc sh: Add KEYSC support for EcoVec24 sh: mach-ecovec24: deassert usb irq on boot. sh: mach-ecovec24: need asm/clock.h. sh: kfr2r09: document the PLL/FLL <-> RF relationship. sh: mach-ecovec24: Add user debug switch support sh: mach-ecovec24: Add active low setting for sh_eth sh: add FSI driver support for ms7724se Kurt Roeckx (1): [CPUFREQ] Fix NULL ptr regression in powernow-k8 Kusanagi Kouichi (1): tun: Return -EINVAL if neither IFF_TUN nor IFF_TAP is set. Kyle McMartin (1): drm/i915: i915_modeset is signed Kyungmin Park (2): mtd: OneNAND: 4-bit ECC status macros omapfb: add support for the Apollon LCD Ladinu Chandrasinghe (1): Documentation/: fix warnings from -Wmissing-prototypes in HOSTCFLAGS Lai Jiangshan (5): tracing/stat: Add stat_release() callback tracing/workqueues: Add refcnt to struct cpu_workqueue_stats ring_buffer: Fix warning while ignoring cmpxchg return value tracing/events: add missing type info of dynamic arrays tracing: Simplify print_graph_cpu() Lalit Chandivade (2): [SCSI] qla2xxx: Process DPC requests within valid Fabric topologies. [SCSI] qla2xxx: Correct qla2x00_eh_wait_on_command() to wait correctly. Lamarque Vieira Souza (3): V4L/DVB (12278): zr364xx: implement V4L2_CAP_STREAMING V4L/DVB (12325): Implement changing resolution on the fly for zr364xx driver V4L/DVB (12326): zr364xx: error message when buffer is too small and code cleanup Larry Finger (7): hostap_cs: Enable shared interrupts p54: Eliminate unnecessary initialization b43: Work around mac80211 race condition b43legacy: Work around mac80211 race condition ssb: Fix error when V1 SPROM extraction is forced ssb: Fix error when V1 SPROM extraction is forced b43: Implement RFKILL status for LP PHY Lars Ericsson (3): rt2x00: Don't alter rt2x00dev->default_ant rt2x00: Fix quality houskeeping for software diversity rt2x00: Fix rounding errors in RSSI average calculation Lars Marowsky-Bree (1): dlm: fix connection close handling Lars-Peter Clausen (4): ASoC: neo1973_gta02_wm8753: Replace snd_soc_cnew with snd_soc_add_controls. ASoC: neo1973_gta02_wm8753: Replace deprecated s3c_gpio calls with gpiolib ASoC: jack: Fix race in snd_soc_jack_add_gpios Regulator: Implement list_voltage for pcf50633 regulator driver. Laurent Pinchart (12): V4L/DVB (12184): uvcvideo: Use class-specific descriptor types from usb/ch9.h V4L/DVB (12185): uvcvideo: Prefix all UVC constants with UVC_ V4L/DVB (12186): uvcvideo: Remove unused Logitech-specific constants V4L/DVB (12187): uvcvideo: Move UVC definitions to linux/usb/video.h V4L/DVB (12188): uvcvideo: Set PROBE_MINMAX quirk for Aveo Technology webcams V4L/DVB (12327): uvcvideo: Add PROBE_DEF quirk and enable it for the MT6227 device V4L/DVB (12378): uvcvideo: Restructure the driver to support multiple simultaneous streams. V4L/DVB (12379): uvcvideo: Multiple streaming interfaces support USB: Move endpoint sync type definitions from usb/audio.h to usb/ch9.h USB: Move vendor subclass definition from usb/audio.h to usb/ch9.h USB audio gadget: Prefix all macro definitions with UAC_ in linux/usb/audio.h USB audio gadget: Un-inline generic_[gs]et_cmd Lee Schermerhorn (5): hugetlb: balance freeing of huge pages across nodes hugetlb: use free_pool_huge_page() to return unused surplus pages hugetlb: clean up and update huge pages documentation hugetlb: restore interleaving of bootmem huge pages mmap: avoid unnecessary anon_vma lock acquisition in vma_adjust() Len Brown (34): ACPI: fix CONFIG_ACPI_PROCFS=n build warning eeepc-laptop: whitespace for checkpatch.pl ACPI: Move definition of PREFIX from acpi_bus.h to internal..h ACPI, PCI: Change PREFIX to "PCI" from "ACPI" in mmconfig-shared.c ACPI: check acpi_disabled in acpi_table_parse() and acpi_table_parse_entries() SFI: Simple Firmware Interface - MAINTAINERS, Kconfig ACPI: sleep: another HP DMI entry for init_set_sci_en_on_resume Merge branch 'bugzilla-13745' into release Revert "ACPI: Attach the ACPI device to the ACPI handle as early as possible" Merge branch 'bugzilla-13002' into release Merge branch 'linus' into release Merge branch 'linus' into sfi-release Merge branch 'sfi-base' into release Merge branch 'thinkpad' into release Merge branch 'topstar-laptop' into release ACPI: linux/acpi.h should not include linux/dmi.h ACPI: remove unnecessary #ifdef CONFIG_DMI Merge branch 'acpica' into release Merge branch 'acer' into release Merge branch 'asus' into release Merge branch 'battery' into release Merge branch 'bjorn-start-stop-2.6.32' into release Merge branch 'ec' into release Merge branch 'bugzilla-13620' into release Merge branch 'fujitsu' into release Merge branch 'power-meter' into release Merge branch 'preempt' into release Merge branch 'processor-procfs-2.6.32' into release Merge branch 'thinkpad' into release Merge branch 'misc-2.6.32' into release Merge branch 'video' into release Merge branch 'bjorn-HID' into release Merge branch 'thinkpad-2.6.32-part2' into release ACPI: IA64=y ACPI=n build fix Lennart Poettering (1): sched: Introduce SCHED_RESET_ON_FORK scheduling policy flag Lennart Sorensen (1): microblaze: Actually show KiB rather than pages in "Freeing initrd memory:" Lennert Buytenhek (34): ¶ARM] Orion5x: fix cpu window mapping for 88f6183 mwl8k: remove various unused struct members and defines mwl8k: s/IEEE80211_ADDR_LEN/ETH_ALEN/g mwl8k: sort firmware command list by opcode, and trim unused commands mwl8k: various coding style cleanups mwl8k: remove MWL8K_RADIO_* defines mwl8k: remove MWL8K_RADIO_*_PREAMBLE defines mwl8k: remove MWL8K_WMM_* defines mwl8k: remove MWL8K_*_SLOTTIME defines mwl8k: fix mwl8k_configure_filter() parameter lifetime issue mwl8k: ->add_interface() is not called for monitor interfaces mwl8k: dma header manipulations can't fail mwl8k: don't touch 'command done' interrupt during firmware load mwl8k: don't hardcode the number of transmit queues mwl8k: no need to hold ->tx_lock while setting the hardware interrupt mask mwl8k: implement idle mode mwl8k: mwl8k_txq_xmit() rework mwl8k: mwl8k_queue_work() cleanup mwl8k: fix firmware command serialisation mwl8k: get rid of mwl8k_start() workqueue use mwl8k: get rid of mwl8k_stop() workqueue use mwl8k: get rid of mwl8k_config() workqueue use mwl8k: get rid of mwl8k_bss_info_changed() workqueue use mwl8k: get rid of mwl8k_set_rts_threshold() workqueue use mwl8k: get rid of mwl8k_conf_tx() workqueue use mwl8k: get rid of mwl8k_get_stats() workqueue use mwl8k: get rid of mwl8k_configure_filter() workqueue use mwl8k: remove mwl8k_queue_work() mwl8k: update copyright and version number MAINTAINERS: add information for mwl8k wireless driver mwl8k: fix inverted error test in mwl8k_bss_info_changed() mwl8k: fix pci dma mapping leak in mwl8k_post_cmd() error path mwl8k: missing endian conversion when printing firmware command result mwl8k: separate driver and device info reporting during probe Leo Chen (25): ARM: 5643/1: bcmring: arch.c and header files ARM: 5644/1: add bcmring core.c, clock.c, clock.h ARM: 5645/1: bcmring: add bcmring irq.c ARM: 5646/1: bcmring: add mach-bcmring/mm.c and memory headers ARM: 5647/1: bcmring: add bcmring dma.h and dma_device.c ARM: 5648/1: bcmring: add bmcring dma.c ARM: 5649/1: bcmring: add bcmring timer function ARM: 5650/1: bcmring: add io.h, uncompress. h, and entry-macro.S ARM: 5651/1: bcmring: csp capability header files ARM: 5652/1: bcmring: add misc headers for csp code ARM: 5654/1: bcmring: add csp chipc hardware register file ARM: 5655/1: bcmring: add csp chipc hardware definition file ARM: 5656/1: bcmring: add csp chipc inline functions ARM: 5657/1: bcmring: add csp chipc block source code ARM: 5658/1: bcmring: add csp dmac header files ARM: 5659/1: bcmring: add csp dmac source files ARM: 5660/1: bcmring: add csp timer block header and source files ARM: 5661/1: bcmring: add csp security hardware headers ARM: 5653/1: bcmring: add Makefile of csp code ARM: 5642/1: bcmring: add Makefile/Kconfig/Makefile.boot in mach-bcmring ARM: 5641/1: bcmring: add Kconfig and Makefile entries in arch/arm ARM: 5670/1: bcmring: add default configuration for bcmring arch ARM: 5671/1: bcmring: add maintainer entry ARM: 5625/1: fix hard coded 4K resource size in amba bus detection ARM: 5626/1: add suspend/resume functions to amba-pl011 serial driver Li Hong (1): tracing: Fix a comment and a trivial format issue in tracepoint.h Li Peng (2): Add G33 series in VGA hotplug support category drm/i915: fix opregion backlight chip detect and range Li Yang (1): USB: gadget: Update Freescale UDC entry in MAINTAINERS Li Zefan (46): tracing/events: Add trace_event boot option kmemtrace: Print binary output only if 'bin' option is set kmemtrace: Rename some functions tracing/events: record the size of dynamic arrays tracing/filters: improve subsystem filter lockdep: Fix missing entry in /proc/lock_stat lockdep: Fix missing entries in /proc/lock_chains lockdep: Simplify lockdep seqfile code lockdep: Simplify lockdep_chains seqfile code lockdep: Simplify lock_stat seqfile code tracing/events: Add module tracepoints tracing/syscalls: Fix to print parameter types trace_stat: Fix missing entry in stat file trace_stack: Simplify seqfile code ftrace: Simplify seqfile code tracing/syscalls: Fix fields format for enter events tracing/syscalls: Add fields format for exit events tracing/events: Add ftrace_event_call param to define_fields() tracing/events: Add trace_define_common_fields() tracing/syscalls: Add filtering support tracing/syscalls: Fix the output of syscalls with no arguments tracing/filters: Add filter_type to struct ftrace_event_field tracing/filters: Add __field_ext() to TRACE_EVENT tracing/filters: Support filtering for char * strings tracing/filters: Defer pred allocation tracing/filters: Defer pred allocation, fix memory leak tracing: remove dead code tracing: format clean ups tracing: remove stats from struct tracer tracing: move PRED macros to trace_events_filter.c tracing/profile: fix profile_disable vs module_unload tracing: fix F_printk() typos ftrace: add compile-time check on F_printk() tracing: remove some unused macros softirq: add BLOCK_IOPOLL to softirq_to_name perf tools: Fix memory leak in read_ftrace_printk() perf tools: Increase MAX_EVENT_LENGTH perf trace: Sample timestamp and cpu when using record flag function-graph: use ftrace_graph_funcs directly tracing: remove max_tracer_type_len tracing/events: use list_for_entry_continue tracing: Fix off-by-one in trace_get_user() tracing: Check the return value of trace_get_user() tracing: Fix failure path in ftrace_graph_write() tracing: Fix failure path in ftrace_regex_open() cpumask: use zalloc_cpumask_var() where possible Liam Girdwood (1): regulator: tps650xx - build fixes for x86_64 Liang Li (4): powerpc/83xx: Remove second USB node from SBC834x DTS powerpc/83xx: Add localbus node and MTD partitions for SBC834x powerpc/83xx: Fix incorrect PCI interrupt map in SBC834x DTS powerpc/85xx: sbc8560 - Fix warm reboot with board specific reset function Lin Ming (5): ACPICA: ACPI 4.0: iASL/Disassembler - IPMI keyword support. ACPICA: ACPI 4.0: Interpreter support for IPMI. ACPICA: fix leak of acpi_os_validate_address ACPICA: reformat predefined method table, no functional change ACPICA: Add support for module-level executable AML code Linus Torvalds (202): x86, percpu: Add 'percpu_read_stable()' interface for cacheable accesses Do not call 'ima_path_check()' for each path component Simplify exec_permission_lite() logic Simplify exec_permission_lite() further Simplify exec_permission_lite(), part 3 Make 'check_acl()' a first-class filesystem op shmfs: use 'check_acl' instead of 'permission' ext[234]: move over to 'check_acl' permission model jffs2/jfs/xfs: switch over to 'check_acl' rather than 'permission()' Merge branch 'lookup-permissions-cleanup' Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'kmemleak' of git://linux-arm.org/linux-2.6 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'core-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-futexes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-printk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-threaded-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'oprofile-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-kbuild-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-percpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw Merge branch 'osync_cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'kvm-updates/2.6.32' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'docs-next' of git://git.lwn.net/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'for-2.6.32' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-kconfig Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'for-linus3' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'agp-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6 Merge branch 'x86-txt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-pat-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-next-2.6 Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pcmcia-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip pty_write: don't do a tty_wakeup() when the buffers are full Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for-linus' of git://gitserver.sunplusct.com/linux-2.6-score Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip tty-ldisc: make /proc/tty/ldiscs use ldisc_ops instead of ldiscs tty-ldisc: get rid of tty_ldisc_try_get() helper function Merge branch 'perfcounters-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge branch 'next-i2c' of git://aeryn.fluff.org.uk/bjdooks/linux loongson: fix cut-and-paste mis-merge Merge git://git.kernel.org/pub/scm/linux/kernel/git/jaswinder/linux-2.6 Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubi-2.6 Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perfcounters-rename-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial Merge branch 'for-2.6.32' of git://linux-nfs.org/~bfields/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86/orig_ax' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland Merge branch 'for-linus' of git://gitserver.sunplusct.com/linux-2.6-score Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'sfi-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-sfi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'fix/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'fix/misc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge git://git.infradead.org/iommu-2.6 Merge branch 'vgaarb-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge git://git.infradead.org/mtd-2.6 Merge branch 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge git://git.infradead.org/battery-2.6 Merge branch 'x86/ptrace-syscall-exit' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland Merge branch 'ixp4xx' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://neil.brown.name/md Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'cputime' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://repo.or.cz/cris-mirror Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-backlight Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 x86: Fix hwpoison code related build failure on 32-bit NUMAQ Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip ACPI: kill "unused variable â€i’" warning alpha: Fix duplicate include Linux 2.6.32-rc1 Linus Walleij (27): ARM: 5665/1: U300 syscon register updates ARM: 5666/1: Revamped U300 padmux API ARM: 5667/3: U300 SSP/SPI board setup and test ARM: 5668/2: U300 I2C board setup ARM: 5685/1: Make MMCI driver compile without gpiolib ARM: 5636/1: Move vendor enum to AMBA include ARM: 5696/1: Include device.h in VIC driver ARM: 5580/2: ARM TCM (Tightly-Coupled Memory) support v3 ARM: 5697/1: MMCI Break out clock divider setup ARM: 5698/1: MMCI pass capabilities in platform data mfd: AB3100 accessor function cleanups mfd: AB3100 propagate error mfd: AB3100 alter default setting mfd: AB3100 disable irq nosync mfd: AB3100 OTP readout rtc: AB3100 RTC support regulator: AB3100 support regulator: Voltage count for AB3100 [WATCHDOG] Use DIV_ROUND_UP() macro in the coh901327 WDT ARM: 5704/1: U300 sched_clock implementation v2 ARM: 5678/1: SSP/SPI PL022 polarity terminology fix ARM: 5718/1: Sane busids for RealView board components Fix some regulator documentation REGULATOR Handle positive returncode from enable ARM: 5720/1: Move MMCI header to amba include dir ARM: 5721/1: MMCI enable the use of a regulator rtc: U300 COH 901 331 RTC driver v3 Liu Yu (3): KVM: ppc: e500: Move to Book-3e MMU definitions KVM: ppc: e500: Directly pass pvr to guest KVM: ppc: e500: Add MMUCFG and PVR emulation Lopez Cruz, Misael (7): ASoC: Zoom2: Add machine driver for Zoom2 board ASoC: TWL4030: Fix voice interface clock masters ASoC: TWL4030: Add AVADC Clock Priority ASoC: TWL4030: Correct bypass event for voice sidetone ASoC: Remove word "Switch" from Handsfree switch name ASoC: TWL4030: Add tristate callbacks for HiFi and Voice ASoC: OMAP: Staticise pcm creation function of omap-pcm Lothar Wassmann (1): USB: NXP ISP1362 USB host driver Lothar WaĂźmann (1): i.MX25 iomux definitions (corrected version) Lubomir Rintel (1): ALSA: pcm - Tell user that stream to be rewound is suspended Luca Tettamanti (1): hwmon: (asus_atk0110) Add maintainer information Lucian Adrian Grijincu (1): powerpc: Update boot wrapper script with the new location of dtc Luciano Coelho (10): wl12xx: add wl12xx_spi_reg_read() and wl12xx_spi_reg_write() functions wl12xx: moved firmware version reading routine to chip-specific functions wl12xx: add support for new WL1271 chip revision wl12xx: add support for fixed address in wl12xx_spi_read wl12xx: pass the wake up condition when configuring the wake up event wl1251: change psm enabled/disabled info to debug wl1271: add wl1271 driver files wl1271: add wl1271 to Kconfig and the Makefile MAINTAINERS: add information for wl1271 wireless driver wl1271: fix compiler warnings on 64 bit archs Lucy Liu (1): ixgbe: allow vlan egress priority mapping in DCB mode Luis Correia (1): rt2x00: Comment spellchecking Luis R. Rodriguez (104): ath9k: differentiate quality reporting between legacy and HT configurations mac80211: drop frames for sta with no valid rate ath9k: downgrade assert in rc.c for invalid rate iwlwifi: remove rs_get_rate workaround ath9k: cleanup try count for MRR in rate control ath9k: remove unused min rate calculation code ath9k: remove unused stepdown when looking for the next rate ath9k: remove pointless wrapper ath_rc_rate_getidx() ath9k: rename ath_rc_get_nextlowervalid_txrate() ath9k: remove unused ath_rc_isvalid_txmask() ath9k: remove ATH9K_MODE_11B ath9k: remap ATH9K_MODE_* ath9k: rename ath_rc_ratefind_ht() to ath_rc_get_highest_rix() ath9k: remove unnecessary IEEE80211_TX_CTL_NO_ACK checks mac80211: make minstrel/pid RC use ieee80211_is_data(fc) iwlwifi: use ieee80211_is_data(fc) mac80211: add helper for management / no-ack frame rate decision ath9k: remove rate control wraper ath9k: disable radio when all devices are marked idle cfg80211: treat ieee80211_regdom hints as user hints ath9k: do not stop the queues in driver stop adm8211: remove uneeded code during suspend/resume ath: map TH to FCC3_WORLD mac80211: fix MLME issuing of probe requests while scanning mac80211: fix oops due to missing private data ath9k: remove unused ATH_PCI_VERSION ath9k: re-order cancelling of work on mac80211 workqueue ath9k: move cancel_delayed_work_sync() out of ath_deinit_leds() ath9k: move workqueue cancels to stop callback ar76c50x-usb: cancel promisc work during mac80211 stop at76c50x-usb: cancel scan work at stop callback ar9170: remove unneeded flush_workqueue() wext: remove extra return on wireless_nlevent_init() ath: depend on cfg80211 ath: simplify kconfig dependency and add documentation ath: use menuconfig to put ath stuff in its own page ath5k: remove EXPERIMENTAL marker wireless: use menuconfig for WLAN_PRE80211 and WLAN_80211 rt2x00: move experimental on kconfig only to rt2800usb ar9170: remove EXPERIMENTAL marker at76c50x-usb: remove unneeded flush_workqueue() at usb disconnect mac80211: redefine usage of the mac80211 workqueue cfg80211: use goto out on country IE reg hint failure cfg80211: do not iterate over rdev list on country IE hint cfg80211: decouple regulatory variables from cfg80211_mutex cfg80211: enable country IE support to all cfg80211 drivers iwlwifi: remove usage of orig_flags ath9k: remove usage of AR_SREV_*() wrapper to detect supported hw ath9k: use a switch for revising supported hw mac revisions ath9k: propagate hw initialization errors ath9k: move memory allocation of ath_hw to ath_init() ath9k: move devid cache setting to ath_init() ath9k: move cache setting of softc ah prior to attach ath9k: call hw initializer directly ath9k: pass only one argument to hw attach ath9k: move hw macrevision checker to helper ath9k: rename ath9k_hw_newstate() to ath9k_hw_init_defaults() ath9k: rename ath9k_hw_set_defaults() to ath9k_hw_init_config() ath9k: remove debug message for no memoery on ath_init() ath9k: break up hw initialization into a few more helpers ath9k: describe hw initialization better ath9k: distinguish between device initialization and ath_softc init ath9k: remove !NULL check before kfree() ath9k: use helper macro to kfree and nullify on ath9k_hw_rfdetach() ath9k: rename ath9k_hw_rfdetach() to ath9k_hw_rf_free() ath9k: rename ath9k_hw_ani_detach() to ath9k_hw_ani_disable() ath9k: set ah to null after freeing ath9k: set sc->sc_ah to NULL after freeing it ath9k: call ath9k_hw_detach() once upon hw init failure ath9k: remove dangling error check on keycache reset on hw init ath9k: remove spurious check for channel on keycache reset ath9k: Remove _t postfix for ar9287_eeprom structure ath9k: add ar9271 revision and subrevision ID helpers ath9k: add initvals and registry definitions for AR9271 ath9k: add initial hardware support for ar9271 ath9k: cancel xmit poll work at stop() callback ath9k: fix compile warning on ath9k_hw_AR9287_check_eeprom() ath9k: use new FIF_PSPOLL configure filter zd1211rw: make it clear we don't use leds.h LED stuff mac80211: fix compilation of mesh (although its disabled) ath9k: Fix regression on receiving PS poll frames ath: add common ath_rxbuf_alloc() and make ath9k use it ath5k: use common ath.ko ath_rxbuf_alloc() ath5k: use bit shift operators for cache line size ath9k: update kconfig to indicate support for AR9002 family ath: move regulatory info into shared common structure wireless: update top level wireless driver entry wireless: update reg debug kconfig entry wireless: remove mac80211 rate selection extra menu kmemleak: use bool for true/false questions kmemleak: add clear command support kmemleak: move common painting code together kmemleak: fix sparse warning over overshadowed flags kmemleak: fix sparse warning for static declarations ath9k: propagate ieee80211_alloc_hw() failure ath9k: propagate errors on ath_init_device() and request_irq() ath9k: claim irq for ath9k, not ath for pci wireless: update cfg80211 kconfig entry wireless: mark prism54 as deprecated and mark for removal wireless: default CONFIG_WLAN to y checkincludes.pl: close file as soon as we're done with it checkincludes.pl: provide usage helper checkincludes.pl: add option to remove duplicates in place wireless: default CONFIG_WLAN to y Luiz Augusto von Dentz (1): Bluetooth: Fix rejected connection not disconnecting ACL link Luotao Fu (4): mx27: add support for phytec pca100 (phyCARD-s) board pcm038: mux configuration for predefined gpio line pcm043: mux configuration for predefined gpio line pcm037: mux configuration for predefined gpio line Lyonel Vincent (1): powerpc/powermac: Thermal control turns system off too eagerly M. Mohan Kumar (1): kprobes: use do_IRQ() in lkdtm Ma Ling (1): drm/i915: select TV format according to connector type Maarten Maathuis (4): drm/crtc_helper: replace modeset fail path with something simpler drm/crtc_helper: place drm_helper_encoder_in_use() in the header file drm/crtc_helper: NULL encoder->crtc when switching encoders drm/crtc_helper: avoid NULL-pointer dereference when encoder is NULL Maciej Sosnowski (1): dca: registering requesters in multiple dca domains Madhusudhan Chikkature (1): MAINTAINERS: update for TI OMAP hsmmc driver Magnus Damm (66): sh: hwblk base implementation sh: hwblk for sh7722 sh: cpuidle for SuperH Mobile using hwblk usb: m66592-udc buffer management update sh: Add support for multiple hwblk counters sh: hwblk support for sh7723 usb: convert r8a66597-hcd to dev_pm_ops usb: r8a66597-hcd platform data on_chip support Driver Core: Add platform device arch data V3 ARM: Rework omap suspend_late()/resume_early() DMA: Rework dw_dmac suspend_late()/resume_early() DMA: Rework txx9dmac suspend_late()/resume_early() I2C: Rework i2c-pxa suspend_late()/resume_early() I2C: Rework i2c-s3c2410 suspend_late()/resume() V2 USB: Rework musb suspend()/resume_early() PM: Remove platform device suspend_late()/resume_early() V2 usb: move r8a66597 register defines usb: m66592-udc platform data on_chip support i2c: change i2c-sh_mobile.c module_init() to subsys_initcall() sh: convert processor device setup functions to arch_initcall() sh: kfr2r09 board support - SCIF console sh: kfr2r09 board support - NOR flash sh: kfr2r09 board support - KEYSC keypad sh: kfr2r09 board support - mach-type and defconfig sh: romImage support V2 sh: kfr2r09 romImage support V2 sh: hwblk support for sh7724 sh: clean up MSTPCRn register definitions sh: Runtime PM pdev hwblk sh: Runtime PM pdev hwblk - sh7722 sh: Runtime PM pdev hwblk - Migo-R sh: Runtime PM pdev hwblk - Solution Engine 7722 sh: Runtime PM pdev hwblk - sh7723 sh: Runtime PM pdev hwblk - AP325RXA sh: Runtime PM pdev hwblk - sh7724 sh: Runtime PM pdev hwblk - kfr2r09 sh: Runtime PM pdev hwblk - Solution Engine 7724 sh: LCDC SYS bus access wait fix sh: 18-bit SYS panel fix for SuperH Mobile LCDC sh: kfr2r09 board support - LCDC panel sh: kfr2r09 board support - NAND flash sh: LED9, LED10 and LED11 support for Solution Engine 7724 sh: fix romImage mach dir usage sh: clean up Migo-R header file sh: Runtime PM pdev hwblk - kfr2r09 LCDC sh: rework SuperH Mobile sleep code exception handling sh: SuperH Mobile Software Standby support for cpuidle usb: add clock support to r8a66597 gadget driver usb: r8a66597-udc buffer management update usb: r8a66597-udc disable interrupts on shutdown fix sh: add r8a66597 usb0 gadget to the kfr2r09 board sh: add r8a66597 usb1 gadget to the se7724 board sh: i2c compile fix for kfr2r09 sh: invalidate icache and tlbs during boot on kfr2r09 sh: jump to p1 during boot on kfr2r09 sh: add kfr2r09 romimage defconfig sh: update kfr2r09 defconfig PM: Run-time PM platform device bus support sh: Runtime PM for SuperH Mobile platform bus devices i2c: Runtime PM for SuperH Mobile I2C video: Runtime PM for SuperH Mobile LCDC v4l2: Runtime PM for SuperH Mobile CEU uio: Runtime PM for UIO devices sh: let ARCH_SHMOBILE select PM and PM_RUNTIME sh: drop static UIO clocks for sh7722, sh7723 and sh7724 mtd: onenand: make onenand/generic.c more generic Maithili Hinge (1): libertas: Fix WEP association failure with open source wpa_supplicant 0.5.10 Mallikarjuna R Chilakala (3): ixgbe: Fix isues while reporting 8259x backplane link capabilities ixgbe: refactor link setup code ixgbe: Patch to fix 82599 multispeed fiber link issues when driver is loaded without any cable and reconnecting it to 1G partner Manish Katiyar (2): ext4: Fix typo in ext4/Kconfig fs/inode.c: add dev-id and inode number for debugging in init_special_inode() Manuel Lauss (7): ASoC: au1x: PSC-AC97 bugfixes MIPS: Alchemy: add gpio_request/gpio_free stubs for CONFIG_GPIOLIB=n MIPS: Alchemy: get rid of allow_au1k_wait MIPS: Alchemy: override loops_per_jiffy detection USB: option: TELIT UC864G support USB: au1xxx: add dev_pm_ops mips: fix build of vmlinux.lds Marc Dionne (1): KEYS: Unlock tasklist when exiting early from keyctl_session_to_parent Marc Kleine-Budde (3): at91sam9263: add at91_can device to generic device definition at91sam9263ek: activate at91 CAN controller at91_can: add driver for Atmel's CAN controller on AT91SAM9263 Marcel Holtmann (20): Bluetooth: Add proper shutdown support to SCO sockets Bluetooth: Disconnect HIDRAW devices on disconnect Bluetooth: Add extra device reference counting for connections Bluetooth: Let HIDP grab the device reference for connections Bluetooth: Fix Kconfig for Marvell Bluetooth driver Bluetooth: Fix compilation of Marvell driver without debugfs Bluetooth: Remove pointless ifdef protection for Marvell header files Bluetooth: Remove pointless casts from Marvell debugfs support Bluetooth: Some coding style cleanup for Marvell core driver Bluetooth: Fix complicated assignment of firmware for Marvell devices Bluetooth: Fix module description strings for Marvell driver Bluetooth: Remove private device name of Marvell SDIO driver Bluetooth: Fix Marvell driver to use skb_put and hci_opcode_pack Bluetooth: Fix last few compiler warning within Marvell core driver Bluetooth: Remove Enter/Leave debug statements from Marvell driver Bluetooth: Coding style cleanup from previous rfcomm_init bug fix Bluetooth: Add module option to enable L2CAP ERTM support Bluetooth: Allow setting of L2CAP ERTM via socket option Bluetooth: Add L2CAP RFC option if ERTM is enabled net: Add DEVTYPE support for Ethernet based devices Marcelo Tosatti (26): KVM: Grab pic lock in kvm_pic_clear_isr_ack KVM: move coalesced_mmio locking to its own device KVM: introduce irq_lock, use it to protect ioapic KVM: switch irq injection/acking data structures to irq_lock KVM: MMU: introduce is_last_spte helper KVM: MMU audit: update count_writable_mappings / count_rmaps KVM: MMU audit: update audit_write_protection KVM: MMU audit: nontrapping ptes in nonleaf level KVM: MMU audit: audit_mappings tweaks KVM: MMU audit: largepage handling KVM: VMX: more MSR_IA32_VMX_EPT_VPID_CAP capability bits KVM: MMU: make for_each_shadow_entry aware of largepages KVM: MMU: add kvm_mmu_get_spte_hierarchy helper KVM: VMX: EPT misconfiguration handler KVM: VMX: conditionally disable 2M pages KVM: convert custom marker based tracing to event traces KVM: x86: missing locking in PIT/IRQCHIP/SET_BSP_CPU ioctl paths KVM: powerpc: convert marker probes to event trace KVM: remove old KVMTRACE support code KVM: use vcpu_id instead of bsp_vcpu pointer in kvm_vcpu_is_bsp KVM: MMU: fix missing locking in alloc_mmu_pages KVM: limit lapic periodic timer frequency KVM: MMU: fix bogus alloc_mmu_pages assignment KVM guest: do not batch pte updates from interrupt context KVM: x86: drop duplicate kvm_flush_remote_tlb calls MAINTAINERS: update KVM entry Marcin Slusarz (12): wireless: fix supported cards for rtl8187 x86: Use printk_once() sh: use printk_once IB: Use printk_once() for driver versions pata_rz1000: use printk_once block: use printk_once Staging: rt3070: add support for Linksys WUSB54GC-EU v3 Staging: rt*: fix wait_queue_head_t declaration on stack Staging: rt*: don't confuse user of rt3070 driver with rt2870 strings tty: vt: use printk_once alpha: use printk_once vsprintf: use WARN_ON_ONCE Marcos Chaparro (1): ath5k: add led pin configuration for compaq c700 laptop Marek Szyprowski (1): ARM: NCP: make ncp_iodesc static and move it to initdata section Marek Vasut (22): Input: wm97xx - add Palm support to Mainstone accelerated touch Input: wm97xx - add possibility to control the GPIO_STATUS shift ALSA: Allow passing platform_data to devices attached to AC97 bus ASoC: Switch palm27x-asoc to jack detection api ALSA: Allow passing platform_data for pxa2xx-ac97 ASoC: Pass correct platform data from pxa2xx-ac97 libertas: Add support for Marvell Libertas CF8305 wm97xx-core: Pass platform_data to battery wm97xx_battery: Use platform_data wm97xx_battery: Use irq to detect charger state wm97xx_battery: Convert to dev_pm_ops backlight: spi driver for LMS283GF05 LCD [ARM] pxa/palm: add detect_delay to mmc for PalmTX,T5,LD [ARM] pxa/palm: Add NOR flash support for PalmLD [ARM] pxa/palm: add NAND Flash support for PalmTX [ARM] pxa/palm: Add NOR Flash support for PalmTX [ARM] pxa: Palm Tungsten|C initial support [ARM] pxa: Palm Tungsten|C PCMCIA support [ARM] pxa/palm: fix possibly uninitialized variable in PalmTC-pcmcia [ARM] pxa: add gpio_pwdown(_inverted) into pxaficp_ir.c MAINTAINERS: fix mailing list entries for ARM/Palm devices mfd/gpio: add a GPIO interface to the UCB1400 MFD chip driver via gpiolib Mario Schwalbe (1): backlight: Add support for new Apple machines. Mark A. Greer (2): davinci: da8xx: Add base DA830/OMAP-L137 SoC support davinci: da8xx: Add support for DA830/OMAP-L137 EVM board Mark Allyn (1): Staging: sep: Upstream revision 3 of the security processor kernel driver Mark Brown (162): ASoC: Add Openmoko Neo FreeRunner (GTA02) audio driver ASoC: Add WM8974 CODEC driver ASoC: WM8974 checkpatch cleanups ASoC: Update WM8974 to use standard I2C device probe methods ASoC: Sort DAPM power sequences while building lists ASoC: Factor out DAPM sequence execution ASoC: Coalesce register writes for DAPM sequences ASoC: Sort specialised mixers and muxes together ASoC: Coalesce power updates for DAPM widgets with events ASoC: Coalesce power updates for PGAs ASoC: Make DAPM power sequence lists local variables Merge branch 'dapm' into for-2.6.32 ASoC: Add WM8961 driver ASoC: Automatically control WM8903 sloping stopband filter ASoC: Automatically manage WM8900 sloping stopband filter ASoC: Automatically manage WM8350 sloping stopband filter ASoC: Add stub suspend and resume calls for ASoC subdevices ASoC: Add suspend and resume callbacks to Wolfson CODEC drivers ASoC: Regulator support for WM8580 ASoC: Fix shadowed variables in twl4030 ASoC: Staticise put_twl4030_opmode_enum_double() Merge branch 'wm8961' into for-2.6.32 ASoC: Add a shutdown callback ASoC: Add core suspend and resume callbacks to WM8961 Merge branch 'for-2.6.31' into for-2.6.32 ASoC: Fix widget powerdown on shutdown ASoC: Remove unreferenced wm8974_add_controls() ASoC: Fix WM8961 suspend function type ASoC: Convert to dev_pm_ops ASoC: Refresh WM8974 bias configuration ASoC: Declare 2 channels for WM8974 ASoC: Refresh WM8974 PLL configuration ASoC: Add WM8974 TLV information ASoC: Use symmetric rates for WM8974 ASoC: WM8974 cosmetic cleanups ASoC: WM8974 DAPM cleanups ASoC: Add WM8523 CODEC driver Merge branch 'for-2.6.31' into for-2.6.32 ASoC: Add CODEC volatile register operation ASoC: Fix leaks in WM8731 probe error handling ASoC: Fix WM8960 leaks on probe failure ASoC: Fix leaks in WM8988 registration error handling ASoC: Begin to factor out register cache I/O functions ASoC: Remove unused AK4535 hardware read functionality ASoC: Remove use of hw_read from TLV320AIC3x driver ASoC: Factor out WM8580 register cache code Merge branch 'for-2.6.31' into for-2.6.32 Merge branch 'davinci' into for-2.6.32 ASoC: Add TLV information for WM8731 ASoC: Correct WM8731 Mic Capture Switch control name ASoC: DaVinci I2S needs mach/asp.h ASoC: Add WM8993 CODEC driver ASoC: Limit WM8731 to symmetric rates ASoC: Use CODEC as clock master on AT91SAM9G20-EK ASoC: Disable microphone input for AT91SAM9G20-EK by default ASoC: Configure WM8731 SYSCLK at startup on AT91SAM9G20-EK ASoC: Add pop delay debug at end of DAPM sequencing ASoC: WM8510 has a single frame clock so needs symmetric rates [ARM] 5596/1: at91sam9g20-ek: Register WM8731 in board file Merge branch 'tlv320aic3x' into reg-cache Merge branch 'for-2.6.31' into for-2.6.32 wm8350_power: Implement charge type property ASoC: Fix sample rate lookup in WM8993 ASoC: Error out if we can't determine a suitable WM9081 sysclk ASoC: Bodge around GCC 4.4.0 flow analysis bug in GCC 4.4.0 ASoC: Fix FLL reference clock division setup in WM8993 ASoC: Fix checkpatch issues in AD1938 Merge branch 'for-2.6.31' into for-2.6.32 Merge branch 'gta02-audio' into for-2.6.32 ASoC: Allow CODECs to flag invalid registers ASoC: Add I/O control bus information to factored out cache setup ASoC: Factor out I2C 8 bit address 16 bit data I/O ASoC: Factor out I/O for Wolfson 8 bit data 16 bit register CODECs ASoC: Factor out 7 bit register 9 bit data SPI write ASoC: Existing S3C24xx AC97 drivers should depend on S3C24xx ASoC: Add WM8776 CODEC driver Merge branch 'for-2.6.31' into for-2.6.32 Merge branch 'reg-cache' into for-2.6.32 ASoC: Convert WM8776 to use factored out register cache code ASoC: Define more formats for the AC97 CODECs ASoC: Drop unneeded declaration of removed wm8731 SPI write function Merge commit 'a5479e389e989acfeca9c32eeb0083d086202280' into for-2.6.32 ASoC: Update WM9081 for tdm_slot() API change ASoC: Update AD1938 for new TDM slot API ASoC: Minor cleanups to AD1938 driver ASoC: Factor out shared code from WM8993 ARM: S3C64XX: Add mapping for IISv4 port ARM: S3C64XX: Add address mapping for AC97 controller ARM: S3C: Move S3C64xx audio devices into S3C64xx directory ARM: S3C24XX: Add platform device for AC97 controller Merge branch 'for-2.6.32' into mxc ASoC: Remove unneeded i.MX dependency on SND ASoC: Staticise unexported variables ASoC: Hook i.MX into build Merge branch 'wm8974-upstream' into for-2.6.32 ASoC: Factor out cache I/O from WM8974 ASoC: Fix handling of bias levels for non-DAPM codecs ASoC: Power speakers and headphones simultaneously ASoC: Fix WM8993 MCLK configuration for high frequency MCLKs ASoC: Implement TDM configuration for WM8993 ASoC: Reenable S3C64xx I2S support ASoC: Remove duplicate ADC/DAC widgets from wm_hubs.c ASoC: Add input and output AIF widgets ASoC: WM8993 digital mixing support ASoC: Provide default set_bias_level() implementation ALSA: Restore support for DMAless DAIs on PXA ASoC: Add DAPM widget power decision debugfs files ASoC: Select core DMA when building for S3C64xx Merge branch 'topic/digital-mixing' into for-2.6.32 genirq: Add prototype for handle_nested_irq() ASoC: Add S3C24xx dependencies for Simtec machines ASoC: Make platform data optional for TLV320AIC3x ASoC: Fix s3c-i2s-v2 build ASoC: Don't reconfigure WM8350 FLL if not needed ASoC: Fully specify DC servo bits to update in wm_hubs power_supply: Add driver for the PMU on WM831x PMICs ASoC: Remove unuused hw_read_t backlight: Add WM831x backlight driver leds: Add WM831x status LED driver ASoC: Fix WM835x Out4 capture enumeration ASoC: Fix display of stream name in DAPM debugfs Driver core: Add accessor for device platform data MAINTAINERS: Add entry for Wolfson PMIC drivers hwmon: Add WM835x PMIC hardware monitoring driver mfd: Allow multiple MFD cells with the same name mfd: Initial core support for WM831x series devices mfd: Add WM831x interrupt support mfd: Add WM831x AUXADC support mfd: Conditionally add WM831x backlight subdevice mfd: Add basic WM831x OTP support mfd: Export ISEL values from WM831x core mfd: Hook WM831x into build system gpio: Add WM831X GPIO driver hwmon: WM831x PMIC hardware monitoring driver input: Add support for the WM831x ON pin regulator: Provide mode to status conversion function regulator: Add WM831x DC-DC buck convertor support regulator: Add WM831x LDO support regulator: Add WM831x EPE support regulator: Add WM831x DC-DC boost convertor support regulator: Add WM831x ISINK support rtc: Add support for RTCs on Wolfson WM831x devices ARM: S3C64XX: Provide for board-specific IRQs mfd: Update MAINTAINERS patterns for WM831x mfd: Convert WM8350 to use request_threaded_irq() [WATCHDOG] Add support for WM831x watchdog regulator: Report regulator_get() failure in virtual consumer regulator: Make virtual consumer use dev_printk regulator: Make virtual consumer a bit more chatty regulator: Allow consumer supplies to be set up with dev_name() regulator: Define full constraints function with REGULATOR disabled regulator: Add regulator_get_exclusive() API regulator: Add regulator voltage range check API regulator: Warn when unregistering an in-use regulator regulator: Fix support for deviceless supply mappings regulator: Improve virtual consumer probe error handling regulator: More explict error reporting for fixed regulator regulator: Check for constraints before using them for name regulator: Check for constraints in regulator_init_complete() regulator: Push locking for regulator_is_enabled() out regulator: regulator_enable() permission checking regulator: Add some brief design documentation Mark Kelly (2): r6040: remove unused pioaddr variable r6040: move down second PHY detection to r6040_init_one Mark Langsdorf (1): [CPUFREQ] Powernow-k8: Enable more than 2 low P-states Mark McLoughlin (1): KVM: fix cpuid E2BIG handling for extended request types Mark Smith (4): ipv6: correct return on ipv6_rcv() packet drop econet: use NET_RX_SUCCESS instead of magic number 0 for econet_rcv successful return Use correct NET_RX_* returns for atalk_rcv() Have atalk_route_packet() return NET_RX_SUCCESS not NET_XMIT_SUCCESS Mark de Wever (1): ide-tape: fix debug call Markus Heidelberg (2): trivial: remove references to non-existent include/linux/config.h trivial: update the Kernel Janitors' web-page URL Markus Metzger (2): x86, perf_counter, bts: Add BTS support to perfcounters x86, perf_counter, bts: Optimize BTS overflow handling Markus Rechberger (1): USB: increase usbdevfs max isoc buffer size Mart Raudsepp (1): V4L/DVB: af9015: add new USB ID for KWorld PlusTV Dual DVB-T Stick (DVB-T 399U) Martin Decky (2): hostap: Revert a toxic part of the conversion to net_device_ops hostap: Revert a toxic part of the conversion to net_device_ops Martin K. Petersen (3): [SCSI] Print failed commands libata: Delegate nonrot flag setting to SCSI block: Optimal I/O limit wrapper Martin Schwidefsky (23): timekeeping: optimized ktime_get[_ts] for GENERIC_TIME=y timers: Cache __next_timer_interrupt result timekeeping: Remove clocksource inline functions timekeeping: Move reset of cycle_last for tsc clocksource to tsc clocksource: Cleanup clocksource selection clocksource: Delay clocksource watchdog highres enablement clocksource: Simplify clocksource watchdog resume logic clocksource: Refactor clocksource watchdog clocksource: Move watchdog downgrade to a work queue thread timekeeping: Introduce struct timekeeper timekeeping: Add xtime_shift and ntp_error_shift to struct timekeeper timekeeping: Move NTP adjusted clock multiplier to struct timekeeper timekeeping: Add timekeeper read_clock helper functions timekeeping: Update clocksource with stop_machine timekeeping: Increase granularity of read_persistent_clock() timekeeping: Introduce read_boot_clock clocksource: Avoid clocksource watchdog circular locking dependency timekeeping: Increase granularity of read_persistent_clock(), build fix [S390] improve mcount code [S390] fix recursive locking on page_table_lock clocksource: Resolve cpu hotplug dead lock with TSC unstable, fix crash [S390] Update default configuration. clocksource: Resume clocksource without taking the clocksource mutex Marton Nemeth (2): V4L/DVB (12382): gspca - main: Remove vidioc_s_std(). trivial: fix typo in CONFIG_DEBUG_FS in gcov doc Martyn Welch (18): powerpc/86xx: Correct reading of information presented in cpuinfo powerpc/86xx: Enable XMC site on GE Fanuc SBC310 powerpc/86xx: Update GE Fanuc sbc310 DTS powerpc/nvram: Allow byte length reads from mmio NVRAM driver powerpc/nvram: Enable use Generic NVRAM driver for different size chips Staging: VME Framework for the Linux Kernel Staging: vme: add VME userspace driver Staging: vme: add Universe I/II bridge driver Staging: vme: add Tundra TSI148 VME-PCI Bridge driver Staging: vme: add TODO file Staging: vme: Correct tsi-148 VME interrupt free routine Staging: vme: Extend VME core probing for special matches Staging: vme: Add syncronize interrupts before removing callback Staging: Update VME vme_user module Staging: Use proper mutexes in the tsi-148 VME driver Staging: vme: add VME Location Monitor management mechanism Staging: vme: Update support for the Universe II VME driver Staging: vme: Separate the list of TODOs from the API documentation Masami Hiramatsu (2): kprobes: Clean up insn_pages by using list instead of hlist perf trace: Add OPT_END to option array of perf-trace Massimo Cirillo (1): mtd: cfi_cmdset_0002: add 0xFF intolerance for M29W128G Matej Kenda (2): [ARM] pxa: add support for the IskraTel XCEP board [ARM] pxa: add defconfig for IskraTel XCEP board Mathieu Desnoyers (1): [CPUFREQ] remove rwsem lock from CPUFREQ_GOV_STOP call (second call site) Matt Carlson (48): tg3: Fix 57780 asic rev PCIe link receiver errors tg3: Prevent tx BD corruption tg3: Fix TSO test against wrong flags var tg3: Preserve PCIe MPS setting for new devs tg3: Add 57788, remove 57720 tg3: Tune 5785 clock switching tg3: Create MII_TG3_FET namespace tg3: Convert code to use PHY_IS_FET broadcom: Add BCM50610M support broadcom: Add AC131 phy support broadcom: Make the 57780 IEEE compliant tg3: Update version to 3.100 tg3: Delay mdio bus init until fw finishes tg3: Add new 5785 10/100 only device ID tg3: Reformat NVRAM case statements tg3: Break out mini producer ring handling tg3: Move the JUMBO_CAPABLE and SUPPORT_MSI flags tg3: Clarify rx buffer relationships tg3: Create rx producer ring setup routines tg3: Create a new prodring_set structure tg3: Use ext rx bds tg3: Cleanup interrupt setup / teardown tg3: Move napi to per-int struct tg3: Convert ISR parameter to tnapi tg3: Convert napi handlers to use tnapi tg3: Move general int members to a per-int struct tg3: Move per-int rx members to per-int struct tg3: Move per-int tx members to a per-int struct tg3: Update version to 3.101 tg3: inline tg3_cond_int() tg3: Add per-int coalesce now member tg3: Create tg3_rings_reset() tg3: Add support code around kernel interrupt API tg3: Add MSI-X support tg3: Add mailbox assignments tg3: Add tx and rx ring resource tracking tg3: Update intmbox and coal_now for msix tg3: Add TSS support tg3: Enable NAPI instances for other int vectors tg3: Add coalesce parameters for msix vectors tg3: Add RSS support tg3: Adjust RSS ring allocation strategies tg3: Assign rx ret producer indexes by vector tg3: Add 5717 asic rev tg3: Add 5717 NVRAM detection routines tg3: Add MDIO bus address assignments tg3: Update version to 3.102 tg3: Fix return ring size breakage Matt Fleming (28): sh: Use bootmem ontop of lmb sh: Use bootmem ontop of lmb for NUMA sh: Fix the value of MCOUNT_INSN_OFFSET sh: Define HAVE_FUNCTION_TRACE_MCOUNT_TEST sh: Add ftrace syscall tracing support sh: Provide diagnostic kernel stack checks sh: Function graph tracer support sh: Mark __switch_to() as __notrace_funcgraph sh: Restore previous behaviour on kernel fault sh: Use the generalized stacktrace ops sh: Allow multiple stack unwinders to be setup sh: Use the new stack unwinder API sh: dwarf unwinder support. sh: Setup the frame register in asm code sh: Add CFI annotations for exception return. sh: Delete DWARF_ARCH_UNWIND_OFFSET sh: Set the cfa_offset to 0 if we see a DW_CFA_def_cfa_register op sh: Try again at getting the initial return address for an unwind sh: Add support for DWARF GNU extensions sh: Add a few missing irqflags tracing markers. sh: unwinder: Fix memory leak and create our own kmem cache sh: unwinder: Set the flags for DW_CFA_val_offset ops as DWARF_VAL_OFFSET sh: unwinder: Introduce UNWINDER_BUG() and UNWINDER_BUG_ON() sh: Setup the frame pointer in handle_interrupt sh: Fix bug calculating the end of the FDE instructions sh: Handle the DWARF op, DW_CFA_undefined sh: Only shout about fixing up unexpected unaligned accesses sh: Fix dcache flushing for N-way write-through caches. Matt Hsu (1): ARM: S3C64XX: Add UART2,UART3 support for SMDK6410 (resend) Matt Kraai (1): intel-iommu: Mark functions with __init Matthew Garrett (6): libata: Export AHCI capabilities backlight: Allow drivers to update the core, and generate events on changes backlight/acpi: Update the backlight state when we change brightness backlight/eeepc-laptop: Update the backlight state when we change brightness rtc: document the sysfs interface rtc: add boot_timesource sysfs attribute Matthew Wilcox (2): frv/PCI: Use pci_claim_resource yenta: Use pci_claim_resource Matthias Kaehlcke (1): mtd: fix a typo in comment Matthias Schwarzott (1): V4L/DVB (12200): mt312: Fix checkpatch warnings Matti J. Aaltonen (1): V4L/DVB (13013): FM TX: si4713: Kconfig: Fixed two typos. Mauro Carvalho Chehab (68): V4L/DVB (12147): pwc: remove definitions that are already present at videodev2.h V4L/DVB (12149): videodev2.h: Reorganize fourcc table V4L/DVB (12124): v4l2-ioctl: better output debug messages for VIDIOC_ENUM_FRAMESIZES V4L/DVB (12168): v4l2-ioctl: avoid flooding log with unasked debug messages V4L/DVB (12273): em28xx-video: rename ac97 audio controls to better document it V4L/DVB (12274): em28xx-video: better implement ac97 control ioctls V4L/DVB (12345): em28xx: fix audio VIDIOC_S_CTRL adjustments on devices without ac97 V4L/DVB (12376): em28xx: fix V4L2 API compliance: don't expose audio inputs for devices without it V4L/DVB (12408): em28xx: Implement g/s_register via address match V4L/DVB (12452): gspca/Kconfig: Fix bad identation for USB_GSPCA_SN9C20X_EVDEV V4L/DVB (12466): Kconfig files: Fix improper use of whitespaces V4L/DVB (12468): saa7134: Fix bad whitespacing V4L/DVB (12470): cx231xx/cx231xx-conf-reg.h: fix bad whitespaces V4L/DVB (12471): stv06xx: fix bad whitespaces V4L/DVB (12472): hdpvr-control: fix bad whitespaces V4L/DVB (12478): ARRAY_SIZE changes V4L/DVB (12557): Use C99 comment CodingStyle V4L/DVB (12558): CodingStyle: Use [0x0f] instead of [ 0x0f ] V4L/DVB (12559): Properly indent comments with tabs V4L/DVB (12560): Fix a number of EXPORT_SYMBOL warnings V4L/DVB (12562): ir-keymaps: replace KEY_KP[0-9] to KEY_[0-9] V4L/DVB (12563): ir-keymaps: add a link to the IR standard layout page V4L/DVB (12564): ir-keymaps: Replace most KEY_[A-Z] to the proper definitions V4L/DVB (12565): ir-keymaps: standardize timeshift key V4L/DVB (12566): ir-keymaps: Fix IR mappings for channel and volume +/- keys V4L/DVB (12567): ir-keymaps: use KEY_CAMERA for snapshots V4L/DVB (12585): Add remote support to cph03x bttv card V4L/DVB (12591): em28xx: Add entry for GADMEI UTV330+ and related IR keymap V4L/DVB (12469): fix bad whitespaces at cx88_geniatech_x8000_mt V4L/DVB (12595): common/ir: use a struct for keycode tables V4L/DVB (12598): dvb-usb: store rc5 custom and data at the same field V4L/DVB (12599): dvb-usb-remote: Allow dynamically replacing the IR keycodes V4L/DVB (12600): dvb-usb-remote: return KEY_RESERVED if there's free space for new keys V4L/DVB (12698): em28xx: ir-kbd-i2c init data needs a persistent object V4L/DVB (12701): saa7134: ir-kbd-i2c init data needs a persistent object V4L/DVB (12712): em28xx: properly load ir-kbd-i2c when needed V4L/DVB (12713): em28xx: Cleanups at ir_i2c handler V4L/DVB (12730): Add conexant cx25821 driver V4L/DVB (12731): cx25821: Add missing include V4L/DVB (12732): cx25821: fix bad whitespacing V4L/DVB (12733): cx25821: some CodingStyle fixes V4L/DVB (12734): cx25821: Fix some compilation troubles cx25821: Add driver to the building system V4L/DVB (12761): DocBook: add media API specs V4L/DVB (12847): cx25821: Add README with todo list V4L/DVB (12851): cx25821/Makefile: Cleanup V4L/DVB (12858): go7007: whitespacing cleanups V4L/DVB (12859): go7007: semaphore -> mutex conversion DocBook/media: renamed xml documents to tmpl DocBook/media: copy also the pictures to the proper place DocBook: Don't use graphics callouts DocBook/media: Some typo fixes DocBook/media: fix some broken links DocBook/media: update dvb url's and use ulink tag instead of emphasis DocBook/media: Remove Satellites from Analog TV Tuners and Modulators V4L/DVB (12906): dib0700: Add support for Prolink SBTVD V4L/DVB (12915): DocBook/media: Add isdb-t documentation V4L/DVB (12917): DocBook/media: add V4L2_PIX_FMT_TM6000 V4L/DVB (12919): DocBook/media: fix some DocBook non-compliances V4L/DVB (12920): DocBook/media: Some xmlto or DTD's don't accept reference inside appendix Docbook/media: Fix some issues at the docbooks V4L/DVB (12993a): saa7164: Fix compilation warning on i386 V4L/DVB(12993b): gl860: Prevent a potential risk of zeroing a floating pointer V4L/DVB (12999): Add a driver for Earthsoft PT1 V4L/DVB (13033): pt1: Don't use a deprecated DMA_BIT_MASK macro V4L/DVB (13037): go7007: Revert compatibility code added at the wrong place V4L/DVB (13038): dvbdev: Remove an anoying/uneeded warning V4L/DVB (13039): dib0700: not building CONFIG_DVB_TUNER_DIB0070 breaks compilation Maxim Levitsky (2): mac80211: Retry probe request few times mac80211: Increase timeouts for station polling Maxime Bizon (4): MIPS: BCM63XX: Add integrated ethernet PHY support for phylib. MIPS: BCM63xx: Add Broadcom 63xx CPU definitions. MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs. MIPS: BCM63xx: Add integrated ethernet mac support. Maximilian Engelhardt (1): netfilter: nf_nat: fix inverted logic for persistent NAT mappings Maxin John (1): USB: serial: Spelling correction in Motorola USB Phone driver Maynard Johnson (1): oprofile: reset bt_lost_no_mapping with other stats Mel Gorman (11): page-allocator: change migratetype for all pageblocks within a high-order page during __rmqueue_fallback page-allocator: remove dead function free_cold_page() tracing, page-allocator: add trace events for page allocation and page freeing tracing, page-allocator: add trace events for anti-fragmentation falling back to other migratetypes tracing, page-allocator: add trace event for page traffic related to the buddy lists tracing, page-allocator: add a postprocessing script for page-allocator-related ftrace events tracing, documentation: add a document describing how to do some performance analysis with tracepoints tracing, documentation: Add a document on the kmem tracepoints page-allocator: limit the number of MIGRATE_RESERVE pageblocks per zone page-allocator: split per-cpu list into one-list-per-migrate-type page-allocator: maintain rolling count of pages to free from the PCP Mhayk Whandson (1): V4L/DVB (12370): v4l doc: fix cqcam source code path Michael Abbott (3): drivers/hwmon/adm1021.c: support high precision ADM1023 remote sensor drivers/hwmon/adm1021.c: add low_power support for adm1021 driver Fix idle time field in /proc/uptime Michael Barkowski (1): powerpc/qe_lib: Set gpio data before changing the direction to output Michael Brunner (1): trivial: SubmittingPatches: Fix reference to renumbered step Michael Buesch (30): b43: Fix unaligned 32bit SHM-shared access b43: Fix hardware key index handling rtl818x: Add some documentation to the TX desc flags b43: Use a threaded IRQ handler b43: Remove TX spinlock b43: Remove DMA/PIO queue locks b43: Remove PIO RX workqueue b43: remove SHM spinlock ssb: Fail ssb modinit, if attach of the buses failed. b43: PCMCIA is not experimental anymore b43: Really disable QoS, if requested b43: Fix sparse warning in hw-tkip code b44/b43/b43legacy: Fix switch warnings introduced by SSB-SDIO ieee1394: raw1394: Do not leak memory on failed trylock. b43: Force-wake queues on init ssb: Disable verbose SDIO coreswitch b43: Fix resume failure Staging: rtl8187se: Fix comment-out-typo dac960: fix undefined behavior on empty string b43: Force-wake queues on init ssb: Disable verbose SDIO coreswitch b43: Fix resume failure b43: Rewrite suspend/resume code b43: Do not use _irqsafe callbacks b43: Fix SDIO interrupt handler deadlock b43: Fix IRQ sync for SDIO b43: Add optional verbose runtime statistics b43: Disable PMQ mechanism b43: Don't abuse wl->current_dev in the led work b43: Remove BROKEN attribute from SDIO Michael Chan (12): bnx2: Zero out status block before chip reset. bnx2: Check if_running() before touching chip registers. bnx2: Close device if MTU change or ring size change fails. bnx2: Apply BROKEN_STATS workaround to 5706 and 5708. bnx2: Report FTQ discard counter. bnx2: Refine coalescing parameters. bnx2: Use const on flash_table structure. bnx2: Update version to 2.0.2. cnic: Put rx/tx ring allocation in separate function. cnic: Put uio init in separate function. bnx2: Update firmware to 5.0.0.j3. cnic: Shutdown iSCSI ring during uio_close. Michael Ellerman (4): powerpc/mpic: Fix MPIC_BROKEN_REGREAD on non broken MPICs kmemleak: Allow kmemleak to be built on powerpc powerpc: Enable GCOV powerpc/vmlinux.lds: Move _edata down Michael Ernst (1): [S390] cio: failing set online/offline processing. Michael Hennerich (15): Input: add Blackfin rotary input driver netdev: smc91x: drop Blackfin cruft Blackfin: bf537-stamp: update ADP5588 header name Blackfin: rename PCF8574 driver config Blackfin: convert boards to use platform data with smc91x Blackfin: remove useless duplicated assignment in gpio code Blackfin: fix spelling in a few comments Blackfin: bf537-stamp: add adp5588 gpio resources Input: ad7879 - add support for AD7889 Input: add driver for ADP5588 QWERTY I2C Keypad USB: serial: ftdi: handle gnICE+ JTAG adaptors USB: isp1760: allow platform devices to customize devflags rtc-bfin: do not share RTC IRQ gpio: gpio support for ADP5520/ADP5501 MFD PMICs backlight: new driver for ADP5520/ADP5501 MFD PMICs Michael Holzheu (7): [S390] vmur: Invalid allocation sequence for vmur class [S390] xpram: Remove checksum validation for suspend/resume [S390] hypfs: Use "%u" instead of "%d" for unsigned ints in snprintf [S390] s390dbf: Add description for usage of "%s" in sprintf events [S390] tape: Fix device online messages [S390] tape: Use pr_xxx instead of dev_xxx in shared driver code [S390] hibernate: Do real CPU swap at resume time Michael Krufky (20): V4L/DVB (12360): au0828: fix typo: dvb uses bulk xfer, dont say isoc in debug V4L/DVB (12576): tda18271: simplify debug printk macros V4L/DVB (12577): tda18271: remove excess whitespace from tda_foo printk macros V4L/DVB (12578): tda18271: allow drivers to request RF tracking filter calibration during attach V4L/DVB (12861): tda18271: add support for additional low-power standby modes V4L/DVB (12862): tda18271: add debug to show which standby mode is in use V4L/DVB (12863): tda18271: add new standby mode: slave tuner output / loop thru on V4L/DVB (12864): tda18271: change output feature configuration to a bitmask V4L/DVB (12865): tda18271: move tda18271_sleep directly below tda18271_init V4L/DVB (12866): tda18271: move small_i2c assignment to the state config block V4L/DVB (12867): tda18271: ensure that configuration options are set for multiple instances V4L/DVB (12868): tda18271: improve error log in function tda18271_write_regs V4L/DVB (12869): tda18271: fix comments and make tda18271_agc debug less verbose V4L/DVB (12873): saa7134: disable tda18271 slave tuner output / loop thru in standby mode V4L/DVB (12874): pvrusb2: disable tda18271 slave tuner output / loop thru in standby mode V4L/DVB (12875): cx23885: disable tda18271 slave tuner output / loop thru in standby mode V4L/DVB (12964): tuner-core: add support for NXP TDA18271 without TDA829X demod V4L/DVB (12967): saa7164: fix Kconfig: rename DVB_FE_CUSTOMIZE to MEDIA_TUNER_CUSTOMISE V4L/DVB (12968): saa7164: fix Kconfig: remove HOTPLUG dependency V4L/DVB (12970): saa7164: fix 64bit build warning Michael Opdenacker (1): Minor code cleanup in drivers/net/r6040.c Michael Prokop (1): drivers/regulator/Kconfig: fix typo (s/Usersapce/Userspace/) in REGULATOR_USERSPACE_CONSUMER description Michael Reed (1): [SCSI] reservation conflict after timeout causes device to be taken offline Michael Riepe (1): drivers/hwmon/coretemp.c: enable the Intel Atom Michael S. Tsirkin (14): tun: reuse struct sock fields PCI: expose function reset capability in sysfs KVM: document locking for kvm_io_device_ops KVM: switch coalesced mmio changes to slots_lock KVM: switch pit creation to slots_lock KVM: convert bus to slots_lock KVM: remove in_range from io devices KVM: document lock nesting rule KVM: ignore msi request if !level KVM: export kvm_para.h uio: add generic driver for PCI 2.3 devices mm: move use_mm/unuse_mm from aio.c to mm/ mm: reduce atomic use on use_mm fast path USB: audio: guard kernel-only code with __KERNEL__ Michael Tokarev (1): trivial: fix missing printk space in amd_k7_smp_check Michael Trimarchi (1): sh: Better description of SH-4 PTEA register update. Michael Wolf (1): powerpc: Adjust base and index registers in Altivec macros Michal Hocko (1): x86: Increase MIN_GAP to include randomized stack Michal Schmidt (3): bsdacct: switch credentials for writing to the accounting file x86: Detect stack protector for i386 builds on x86_64 [SCSI] sg: fix oops in the error path in sg_build_indirect() Michal Simek (17): microblaze: include EXIT_TEXT to _stext leds: gpio-leds: fix typographics fault gcov: Fix DEBUG_FS symbol microblaze: Enable GCOV_PROFILE_ALL microblaze: Add checking mechanism for MSR instruction microblaze: Improve checking mechanism for MSR instruction microblaze: Implement include/asm/syscall.h. microblaze: Save and restore msr in hw exception microblaze: Remove ipc.h file which points to non-existing asm-generic file microblaze: Don't be noisy when userspace causes hardware exceptions microblaze: Generate correct signal and siginfo for integer div-by-zero microblaze: Support ptrace syscall tracing. microblaze: Use LOAD_OFFSET macro to get correct LMA for all sections microblaze: Fix _start symbol to physical address net: xilinx_emaclite: Fix problem with first incoming packet microblaze: Support simpleImage.dts make target microblaze: Disable heartbeat/enable emaclite in defconfigs Michal Sojka (1): trivial: fix typo in tracing documentation Michel Dänzer (9): agp/uninorth: Allow larger aperture sizes on pre-U3 bridges. agp/uninorth: Simplify cache flushing. drm/radeon/kms: Only add common modes which fit in both panel dimensions. drm/radeon/kms: Move radeon_clocks_init() call back after getting VRAM info. drm/radeon/kms: Don't kzalloc memory which is immediately overwritten. drm/radeon/kms: Free CS parser state tracking memory. drm/radeon/kms: Get LVDS native mode details from EDID if necessary. drm/radeon/kms: Use surfaces for scanout / cursor byte swapping on big endian. drm/radeon/kms: Move radeon_get_clock_info() call out of radeon_clocks_init(). Mika Korhonen (1): mtd: OneNAND: spelling fixes Mikael Pettersson (7): ARM: 5677/1: ARM support for TIF_RESTORE_SIGMASK/pselect6/ppoll/epoll_pwait mv643xx_eth.c: remove unused txq_set_wrr() sata_promise: disable hotplug on 1st gen chips sata_promise: update reset code i2c-mv64xxx: correct mv64xxx_i2c_intr() return type ixp4xx: timer and clocks cleanups ixp4xx: arch_idle() documentation fixup Mike Christie (9): [SCSI] ALUA: send STPG if explicit and implicit is supported [SCSI] libiscsi: don't increment cmdsn if cmd is not sent [SCSI] libiscsi: handle immediate command rejections [SCSI] qla4xxx: Removed residual from overrun debug print [SCSI] iscsi class: Add logging to scsi_transport_iscsi.c [SCSI] iscsi_tcp: add new conn error to indicate tcp conn closed [SCSI] libiscsi, iscsi_tcp: check suspend bit before each call to xmit_task [SCSI] libiscsi: add completion function for drivers that do not need pdu processing [SCSI] libiscsi, bnx2i: make bound ep check common Mike Frysinger (39): connector: make callback argument type explicit connector: clean up grammar/style in documentation connector: get test code working by default Input: bf54x-keys - convert printk() to dev_*() ftrace: document function and function graph implementation Blackfin: cleanup traps decode_address() a bit Blackfin: convert ptrace to new memory functions Blackfin: cleanup printk() usage in module code Blackfin: convert malloc()/memset() to zalloc() in module code Blackfin: cleanup module section checking Blackfin: fix module reloc handling for all memory regions Blackfin: push SRAM locks down into related ifdefs Blackfin: add support for common FDPIC ptrace requests Blackfin: drop unused MMR defines that only cause bad code to be written Blackfin: fix BF522/BF523 max VCO mixup Blackfin: drop board resources for dead devices (pbx/ad9960) Blackfin: punt dead cache locking code Blackfin: optimize fixed code handling for the most common case Blackfin: add some isram-driver self tests Blackfin: update ftrace_push_return_trace() breakage Blackfin: unify cache init functions Blackfin: fix elf_fpregset_t definition ASoC: bf5xx-sport: the irq save/restore funcs take an unsigned long mtd/maps: uclinux: depend on MTD_RAM being built into the kernel mtd/maps: gpio-addr-flash: new driver for GPIO assisted flash addressing mtd: fix order of TEST/PARTITIONS kconfig options phram: cleanup error handling and associated messages serial: bfin_5xx: fix building as module when early printk is enabled pcmcia: yenta: add missing __devexit marking checkpatch: add some common Blackfin checks mtd: jedec_probe: add PSD4256G6V id asm/sections: add text/data checking functions for arches to override kallsyms: use new arch_is_kernel_text() lockdep: use new arch_is_kernel_data() Blackfin: override text/data checking functions rtc: update documentation wrt RTC_PIE/irq_set_state flat: use IS_ERR_VALUE() helper macro bfin-otp: add writing support linux/futex.h: place kernel types behind __KERNEL__ Mike Galbraith (14): sched: Clean up SCHED_RESET_ON_FORK sched: Add SCHED_RESET_ON_FORK functionality for nice < 0 tasks sched: Ensure that a child can't gain time over it's parent after fork() sched: Turn off child_runs_first sched: Re-tune the scheduler latency defaults to decrease worst-case latencies sched: Keep kthreads at default priority sched: Complete buddy switches sched: Improve latencies and throughput Staging: rt2870sta interface names perf sched: Add --input=file option to builtin-sched.c sched: Remove unneeded indentation in sched_fair.c::place_entity() sched: Re-add lost cpu_allowed check to sched_fair.c::select_task_rq_fair() perf tools: Fix module symbol loading bug perf tools: Handle relative paths while loading module symbols Mike Mason (3): PCI: support for PCI Express fundamental reset PCI: document PCIe fundamental reset interfaces PCI/powerpc: support PCIe fundamental reset Mike McCormack (7): sky2: remove unnecessary assignment sky2: Avoid rewinding sky2->tx_prod sky2: Move tx reset functionality to sky2_tx_reset() sky2: Reset tx train after interrupts disabled. sky2: Create buffer alloc and free helpers sky2: Use 32bit read to read Y2_VAUX_AVAIL sky2: Set SKY2_HW_RAM_BUFFER in sky2_init Mike Rapoport (15): dm9000: switch to dev_pm_ops Input: gpio_keys - swtich to dev_pm_ops [ARM] pxa/em-x270: remove debug leftovers [ARM] pxa/em-x270: add vcc_core regulator [ARM] pxa/cm-x270: add libertas device registration [ARM] pxa: update da903x_bl.c to use 'struct dev_pm_ops' [ARM] pxa: update pxa serial driver to use 'struct dev_pm_ops' [ARM] pxa: update ohci-pxa27x.c to use 'struct dev_pm_ops' [ARM] pxa: update pxa2xx-spi.c to use 'struct dev_pm_ops' [ARM] pxa: update pxafb.c to use 'struct dev_pm_ops' [ARM] pxa: update pxa2xx-ac97.c to use 'struct dev_pm_ops' [ARM] pxa: update pxamci.c to use 'struct dev_pm_ops' [ARM] pxa: update pcmcia/pxa2xx_base.c to use 'struct dev_pm_ops' backlight: switch to da903x driver to dev_pm_ops regulator: da903x: consolidate DA903[045]_DVC macros Mikhail Ershov (2): KVM: Align cr8 threshold when userspace changes cr8 KVM: Use kvm_{read,write}_guest_virt() to read and write segment descriptors Miklos Szeredi (4): fuse: document protocol version negotiation splice: update mtime and atime on files net: unix: fix sending fds in multiple buffers vfs: seq_file: add helpers for data filling Mimi Zohar (1): IMA: open new file for read Minchan Kim (3): block: trace bio queueing trial only when it occurs vmscan: don't attempt to reclaim anon page in lumpy reclaim when no swap space is available mm: fix NUMA accounting in numastat.txt Ming Lei (15): lockdep: Print the shortest dependency chain if finding a circle lockdep: Improve implementation of BFS lockdep: Introduce match function to BFS lockdep: Implement check_noncircular() by BFS lockdep: Implement find_usage_*wards by BFS lockdep: Introduce print_shortest_lock_dependencies lockdep: Implement lockdep_count_*ward_deps by BFS lockdep: Update memory usage introduced by BFS lockdep: Add statistics info for max bfs queue depth lockdep: Reintroduce generation count to make BFS faster lockdep: Fix memory usage info of BFS lockdep: Remove recursion stattistics OMAP3: PM: fix lockdep warning caused by omap3_pm_init driver-core: move dma-coherent.c from kernel to driver/base USB: otg: twl4030-usb.c: mark .init as subsys_initcall_sync Mingming (2): ext4: Compile warning fix when EXT_DEBUG enabled ext4: Show unwritten extent flag in ext4_ext_show_leaf() Mingquan Pan (1): Blackfin: use KERN_ALERT in all kgdb_test output Mithlesh Thukral (2): staging: wlan-ng: scripts/checkpatch.pl error fixes. Staging: Comedi: Lindent changes to comdi driver in staging tree Moger, Babu (3): [SCSI] scsi_dh_rdac: move the init code from rdac_activate to rdac_bus_attach [SCSI] scsi_dh_rdac: changes to collect the rdac debug information during the initialization [SCSI] scsi_dh_rdac: changes for rdac debug logging Mohamed Abbas (1): iwlwifi: Check HW ready before prepare card. Mohammed Gamal (1): KVM: x86 emulator: Add adc and sbb missing decoder flags Mohanlal Jangir (1): mtd: inftl: fix fold chain block number Moni Shoua (2): bonding: remap muticast addresses without using dev_close() and dev_open() IPoIB: Don't turn on carrier for a non-active port Moritz Muehlenhoff (5): Staging: wlan-ng: Remove some superflous comments Staging: wlan-ng: Use kzfree() to securely zero-out the WEP key when freeing it Staging: wlan-ng: Drop the special case handling of older wireless extensions, WIRELESS_EXT is at 22 for the current kernel. Staging: wlan-ng: Remove more superflous comments Staging: hv: Remove compatibility ifdefry Moussa A. Ba (1): pagemap clear_refs: modify to specify anon or mapped vma clearing Muralidharan Karicheri (16): davinci: DM644x platform changes for vpfe capture davinci: DM355 - platform changes for vpfe capture DaVinci: DM646x - platform changes for vpif capture and display drivers V4L/DVB (12246): tvp514x: Migration to sub-device framework V4L/DVB (12247): tvp514x: formatting comments as per kernel documentation V4L/DVB (12248): v4l: vpfe capture bridge driver for DM355 and DM6446 V4L/DVB (12249): v4l: ccdc hw device header file for vpfe capture V4L/DVB (12250): v4l: dm355 ccdc module for vpfe capture driver V4L/DVB (12251): v4l: dm644x ccdc module for vpfe capture driver V4L/DVB (12252): v4l: ccdc types used across ccdc modules for vpfe capture driver V4L/DVB (12253): v4l: common vpss module for video drivers V4L/DVB (12254): v4l: Makefile and config files for vpfe capture driver V4L/DVB (12906a): V4L : vpif display updates to support vpif capture V4L/DVB (12906b): V4L : vpif capture - Kconfig and Makefile changes V4L/DVB (12906c): V4L : vpif capture driver for DM6467 V4L/DVB (12906d): V4L : vpif updates for DM6467 vpif capture driver Naga Chumbalkar (1): [CPUFREQ] update Doc for cpuinfo_cur_freq and scaling_cur_freq Nam Phạm ThĂ nh (1): V4L/DVB (12475): Add support for Humax/Coex DVB-T USB Stick 2.0 High Speed Narender Kumar (2): netxen: ethtool statistics and control for LRO netxen: bridged mode optimizations Nathan Williams (2): solos: support new FPGA RAM layout solos: Check for rogue received packets Neil Brown (1): NFS/RPC: fix problems with reestablish_timeout and related code. Neil Horman (13): random: Add optional continuous repetition test to entropy store based rngs crypto: fips - Select CPRNG xfrm: export xfrm garbage collector thresholds via sysctl xfrm: select sane defaults for xfrm[4|6] gc_thresh net: skb ftracer - add tracepoint to skb_copy_datagram_iovec (v3) net: skb ftracer - Add config option to enable new ftracer (v3) net: skb ftracer - Add actual ftrace code to kernel (v3) crypto: fips - Depend on ansi_cprng net: drop_monitor: make last_rx timestamp private kmod: fix race in usermodehelper code exec: make do_coredump() more resilient to recursive crashes exec: let do_coredump() limit the number of concurrent dumps to pipes exec: allow do_coredump() to wait for user space pipe readers to complete NeilBrown (14): sunrpc/cache: rename queue_loose to cache_dequeue sunrpc/cache: make sure deferred requests eventually get revisited. sunrpc/cache: recheck cache validity after cache_defer_req sunrpc: fix memory leak in unix_gid cache. sunrpc/cache: change cache_defer_req to return -ve error, not boolean. sunrpc/cache: simplify cache_fresh_locked and cache_fresh_unlocked. sunrpc/cache: use list_del_init for the list_head entries in cache_deferred_req sunrpc/cache: avoid variable over-loading in cache_defer_req md: remove sparse waring "symbol xxx shadows an earlier one" md: remove sparse warnings about lock context. md: Improve name of threads created by md_register_thread md: report device as congested when suspended md: remove unnecessary memset from multipath. Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx into for-linus Nelson Elhage (8): [S390] clean up linker script using new linker script macros. [IA64] Use standard macros for page-aligned data. [IA64] Clean up linker script using standard macros. MIPS: make page.h constants available to assembly. MIPS: Use PAGE_SIZE in assembly instead of _PAGE_SIZE. MIPS: Clean up linker script using new linker script macros. frv: remove unused .altinstructions code frv: clean up linker script using new linker script macros. Nelson, Shannon (2): ixgbe: Allow tx itr specific settings ixgbe: move rx queue RSC configuration to a separate function Nick Black (1): Move magic numbers into magic.h Nick Kossifidis (5): ath5k: Check EEPROM before tweaking SERDES ath5k: Linear PCDAC code fixes ath5k: Wakeup fixes ath5k: Preserve pcicfg bits during attach ath5k: Use SWI to trigger calibration Nick Piggin (6): HWPOISON: Refactor truncate to allow direct truncating of page v2 writeback: remove smp_mb(), it's not needed with list_add_tail_rcu() writeback: improve scalability of bdi writeback work queues writeback: Fix bdi use after free in wb_work_complete() writeback: fix possible bdi writeback refcounting problem fs: turn iprune_mutex into rwsem Nicolas Ferre (17): [ARM] 5564/1: at91: add gpio button and leds support for at91sam9rlek [ARM] 5569/1: at91: Support for at91sam9g45: clocks management [ARM] 5571/1: at91: Basic support for at91sam9g45 series: header files. [ARM] 5572/1: at91: Support for at91sam9g45 series: core chip & board support [ARM] 5567/1: at91: Support for at91sam9g10: clocks management [ARM] 5568/1: at91: Basic support for at91sam9g10: header files [ARM] 5570/1: at91: Support for at91sam9g10: core chip & board support [ARM] 5614/1: at91: atmel_lcdfb: add at91sam9g10 support to atmel LCD driver ARM: 5622/1: at91: at91sam9g45 headers: DMA peripheral identifiers ARM: 5686/1: at91: Correct AC97 reset line in at91sam9263ek board ARM: 5620/1: at91/dmaengine: integration of at_hdmac driver in at91sam9rl ARM: 5621/1: at91/dmaengine: integration of at_hdmac driver in at91sam9g45 series ARM: 5709/1: at91: add AC97 support to at91sam9g45 series and at91sam9m10g45ek board ARM: 5710/1: at91: add AC97 support to at91sam9rl and at91sam9rlek board USB: at91: Add USB EHCI driver for at91sam9g45 series USB: at91: Add USB gadget driver selection for at91sam9g45 series USB: at91: modify OHCI driver to allow shared interrupts Nicolas Palix (6): Staging: hv: Transform some kzalloc calls to kcalloc Staging: hv: Transform PDEVICE_OBJECT and DEVICE_OBJECT typedefs into their corresponding structs Staging: hv: Remove typedef DRIVER_OBJECT and PDRIVER_OBJECT Staging: hv: Remove typedef NETVSC_PACKET and PNETVSC_PACKET Staging: hv: Remove typedef STORVSC_REQUEST and PSTORVSC_REQUEST Staging: hv: Replace typedef SG_BUFFER_LIST by struct scatterlist Nicolas Pitre (8): [ARM] add MAINTAINERS entry for Orion/Kirkwood/etc. ARM: 5687/1: fix an oops with highmem ARM: 5691/1: fix cache aliasing issues between kmap() and kmap_atomic() with highmem Nicolas Pitre has a new email address mmc: core SDIO suspend/resume support mmc: propagate error codes back from bus drivers' suspend/resume methods mmc: make SDIO device/driver struct accessors public make Linux bootable on ARM again Nicolas de PesloĂĽan (1): bonding: Fix useless test: int > INT_MAX Nikanth Karthikesan (2): Seperate read and write statistics of in_flight requests /dev/zero: avoid repeated access_ok() checks Nils Carlson (1): hpet: hpet driver periodic timer setup bug fixes Nitin A Kamble (1): KVM: VMX: Support Unrestricted Guest feature Nobuhiro Iwamatsu (4): dmaengine: sh: Add Support SuperH DMA Engine driver cpumask: Remove mask field from comments sh: Add support DMA Engine to SH7722 sh: Add support DMA Engine to SH7780 Octavian Purdila (1): tcp: fix premature termination of FIN_WAIT2 time-wait sockets Ohad Ben-Cohen (3): sdio: do not ignore MMC_VDD_165_195 sdio: add CD disable support sdio: add MMC_QUIRK_LENIENT_FN0 Olaf Hering (1): leds: Fix LED names OldĹ™ich JedliÄŤka (2): V4L/DVB (12490): Report only 32kHz for ALSA V4L/DVB (12586): Update ALSA capture controls according to selected source. Oleg Nesterov (17): mm_for_maps: simplify, use ptrace_may_access() kernel: fix is_single_threaded kernel: rename is_single_threaded(task) to current_is_single_threaded(void) kernel: is_current_single_threaded: don't use ->mmap_sem mm_for_maps: shift down_read(mmap_sem) to the caller mm_for_maps: take ->cred_guard_mutex to fix the race with exec proc_flush_task: flush /proc/tid/task/pid when a sub-thread exits ptrace: __ptrace_detach: do __wake_up_parent() if we reap the tracee do_wait() wakeup optimization: shift security_task_wait() from eligible_child() to wait_consider_task() do_wait() wakeup optimization: change __wake_up_parent() to use filtered wakeup do_wait() wakeup optimization: child_wait_callback: check __WNOTHREAD case do_wait-wakeup-optimization: fix child_wait_callback()->eligible_child() usage do_wait-wakeup-optimization: simplify task_pid_type() wait_consider_task: kill "parent" argument exec: fix set_binfmt() vs sys_delete_module() race signals: introduce do_send_sig_info() helper signals: send_sigio: use do_send_sig_info() to avoid check_kill_permission() Oliver Hartkopp (3): can: Use WARN_ONCE() instead of BUG_ON() for sanity check in receive path can: use correct NET_RX_ return values can: fix NOHZ local_softirq_pending 08 warning Oliver Neukum (20): Bluetooth: Add USB autosuspend support to btusb driver V4L/DVB (12369): stv680: kfree called before usb_kill_urb V4L/DVB (12491): remove unnecessary power management primitive in stk-webcam USB: storage: fix a resume path GFP_NOIO must be used USB: CDC WDM driver doesn't support non-blocking reads USB: fix cdc-acm regression in open USB: serial: full autosuspend support for the option driver USB: usbtmc can do IO to device after disconnect USB: suspend/resume support for usbtmc USB: legousbtower: make poll notice disconnect USB: ldusb should signal an error in poll if the device is disconnected USB: full power management support for the idmouse driver USB: full autosuspend and power management support for usbsevseg USB: fix wrong order of events in usb serial suspension USB: remove unneeded printks from microtek driver USB: support for autosuspend in sierra while online USB: fix missing error check in probing USB: skel_read really sucks royally USB: make usb-skeleton honor O_NONBLOCK in write path USB: O_NONBLOCK in read path of skeleton Olivier Bornet (5): USB: iuu_phoenix: Don't reset the device at close USB: iuu_phoenix: clean-up parameter's descriptions USB: iuu_phoenix: add support for changing VCC USB: iuu_phoenix: increment version number USB: iuu_phoenix: add a way to select the default VCC Olivier Grenie (3): V4L/DVB (12886): Added new Pinnacle USB devices V4L/DVB (12887): DIB7000P: SNR calcuation forr DiB7000P V4L/DVB (12888): STK7770P: Add support for STK7770P Olivier Lorin (1): V4L/DVB (12954): gspca - gl860: Addition of GL860 based webcams Ondrej Zary (5): ALSA: cmi8330: revert comments about AD1848 back cmi8330: Add basic CMI8329 support ALSA: cmi8330: find OPL3 port automatically ALSA: cmi8330: Allow MPU-401-less operation USB: ark3116: add IrDA support for Gembird UIR-22 Ori Avtalion (1): trivial: fix typo in namei.h comment Otavio Salvador (1): pata_cs5535: add pci id for AMD based CS5535 controllers Ozan Çaglayan (1): markup_oops: use modinfo to avoid confusion with underscored module names Pan, Jacob jun (1): x86: Add hardware_subarch ID for Moorestown Paolo Bonzini (1): dlm: use kernel_sendpage Pat Erley (1): mac80211: remove max_bandwidth Patrick Boettcher (8): V4L/DVB (12889): DIB0700: added USB IDs for a Terratec DVB-T XXS V4L/DVB (12892): DVB-API: add support for ISDB-T and ISDB-Tsb (version 5.1) V4L/DVB (12896): ISDB-T: add mapping of LAYER_ENABLED to frontend-cache V4L/DVB (12898): DiB0070: Update to latest internal release V4L/DVB (12899): DiB0070: Indenting driver with indent -linux V4L/DVB (12900): DiB8000: added support for DiBcom ISDB-T/ISDB-Tsb demodulator DiB8000 V4L/DVB (12901): DiB0700: add support for STK807XP and STK807XPVR V4L/DVB (12903): DiB8000: fix channel search parameter initialization Patrick McHardy (15): net: use NETDEV_TX_OK instead of 0 in ndo_start_xmit() functions net: convert remaining non-symbolic return values in ndo_start_xmit() functions Merge branch 'master' of git://dev.medozas.de/linux netfilter: nf_conntrack: log packets dropped by helpers netlink: constify nlmsghdr arguments netfilter: nfnetlink: constify message attributes and headers netfilter: ip6t_eui: fix read outside array bounds netfilter: ebt_ulog: fix checkentry return value net_sched: fix class grafting errno codes net_sched: make cls_ops->tcf_chain() optional net_sched: make cls_ops->change and cls_ops->delete optional net_sched: remove some unnecessary checks in classful schedulers net_sched: reintroduce dev->qdisc for use by sch_api net_sched: move dev_graft_qdisc() to sch_generic.c net_sched: fix estimator lock selection for mq child qdiscs Paul Brook (1): nommu: ptrace support Paul E. McKenney (37): rcu: Remove Classic RCU rcu: Add synchronize_sched_expedited() primitive rcu: Add synchronize_sched_expedited() torture tests rcu: Add synchronize_sched_expedited() rcutorture doc + updates rcu: Split hierarchical RCU initialization into boot-time and CPU-online pieces cpu hotplug: Introduce cpu_notifier() to handle !HOTPLUG_CPU case rcu: Simplify RCU CPU-hotplug notification rcu: Make preemptable RCU scan all CPUs when summing RCU counters rcu: Make rcupreempt_trace.c look at offline CPUs rcu: Delay rcu_barrier() wait until beginning of next CPU-hotunplug operation. rcu: Expunge lingering references to CONFIG_CLASSIC_RCU, optimize on !SMP rcu: Move private definitions from include/linux/rcutree.h to kernel/rcutree.h rcu: Renamings to increase RCU clarity rcu: Consolidate sparse and lockdep declarations in include/linux/rcupdate.h rcu: Fix online/offline indication for rcudata.csv trace file rcu: Merge per-RCU-flavor initialization into pre-existing macro rcu: Use debugfs_remove_recursive() simplify code. rcu: Simplify rcu_pending()/rcu_check_callbacks() API rcu: Merge preemptable-RCU functionality into hierarchical RCU rcu: Remove CONFIG_PREEMPT_RCU rcu: Add "notrace" to RCU function headers used by ftrace rcu: Add CPU-offline processing for single-node configurations rcu: Add #ifdef to suppress __rcu_offline_cpu() warning in !HOTPLUG_CPU builds rcu: Remove lockdep annotations from RCU's _notrace() API members rcu: Create rcutree plugins to handle hotplug CPU for multi-level trees rcu: Changes from reviews: avoid casts, fix/add warnings, improve comments rcu: Move end of special early-boot RCU operation earlier rcu: Need to update rnp->gpnum if preemptable RCU is to be reliable rcu: Initialize multi-level RCU grace periods holding locks rcu: Kconfig help needs to say that TREE_PREEMPT_RCU scales down rcu: Add debug checks to TREE_PREEMPT_RCU for premature grace periods rcu: Simplify rcu_read_unlock_special() quiescent-state accounting rcu: Fix synchronize_rcu() for TREE_PREEMPT_RCU rcu: Add WARN_ON_ONCE() consistency checks covering state transitions rcu: Apply results of code inspection of kernel/rcutree_plugin.h rcu: Fix thinko, actually initialize full tree rcu: Fix whitespace inconsistencies Paul Fertser (3): mfd: use a dedicated workqueue for pcf50633 irq processing mfd: revise locking for pcf50633 ADC mfd: fix wrong define for 10bit pcf50633 ADC mode Paul Fox (1): Input: hgpk - forced recalibration for the OLPC touchpad Paul Gortmaker (4): powerpc/83xx: sbc8349 - update defconfig, enable MTD, USB storage powerpc/85xx: issue fsl_soc reboot warning only when applicable powerpc/85xx: sbc8560 - remove "has-rstcr" from global utilities block powerpc: derive COMMAND_LINE_SIZE from asm-generic Paul Mackerras (8): powerpc/32: Always order writes to halves of 64-bit PTEs powerpc: Allow perf_counters to access user memory at interrupt time perf_counter: powerpc: Add callchain support perf_counter: Start counting time enabled when group leader gets enabled powerpc: Fix bug where perf_counters breaks oprofile powerpc/perf_counters: Reduce stack usage of power_check_constraints perf_counter, powerpc, sparc: Fix compilation after perf_counter_overflow() change perf_event, powerpc: Fix compilation after big perf_counter rename Paul Menage (6): include/linux/cred.h: work around gcc-4.2.4 warning in get_cred() cgroups: support named cgroups hierarchies cgroups: move the cgroup debug subsys into cgroup.c to access internal state cgroups: add a back-pointer from struct cg_cgroup_link to struct cgroup cgroups: allow cgroup hierarchies to be created with no bound subsystems cgroups: revert "cgroups: fix pid namespace bug" Paul Moore (4): tun: Remove a dead line of code lsm: Add hooks to the TUN driver selinux: Support for the new TUN LSM hooks lsm: Use a compressed IPv6 string format in audit events Paul Mundt (144): Merge branches 'sh/hwblk', 'sh/cpuidle' and 'sh/stable-updates' sh: use kprobes_built_in() for notify_page_fault(). sh: Tidy up vmalloc fault handling. Merge branches 'sh/ftrace' and 'sh/cachetlb' video: sh_mobile_lcdcfb: depends on HAVE_CLK. Merge branches 'sh/ftrace' and 'sh/stable-updates' sh: Decouple mcount from ftrace. sh: Replace DEBUG_STACKOVERFLOW with STACK_DEBUG. sh: Use DECLARE_EXPORT() for mcount symbol export. sh: Fix up ftrace build error when STACK_DEBUG=n. sh: Fix up stack overflow check with ftrace disabled. sh: Tidy up gzip-based zImage decompression. sh: bzip2/lzma zImage support. sh: Consolidate the sh64 changes in arch/sh/boot/compressed/misc_32.c sh: rename arch/sh/boot/compressed/misc_32.c -> misc.c sh64: Don't use PHYSADDR() for output_addr calculation. Merge branches 'sh/compressors' and 'sh/ftrace' sh: Kill off zero-sized vmlinux_64.lds.S Merge branches 'sh/hwblk' and 'sh/platform-updates' Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes into sh/kbuild-fixes sh: bzip2/lzma uImage support. Merge branches 'sh/compressors' and 'sh/stable-updates' sh: Provide _PAGE_SPECIAL for 32-bit. sh: Migrate from PG_mapped to PG_dcache_dirty. Merge branch 'sh/kfr2r09' sh: wire up clear_user_highpage() for sh4, convert sh7705. sh: Rename arch/sh/lib/clear_page.S -> __clear_user.S. sh: Use the now generic SH-4 clear/copy page ops for all MMU platforms. sh: update_mmu_cache() consolidation. sh: Handle a NULL vma in __update_tlb() for the fast-path. Revert "sh: Bump the earlytimer bits back to time_init()." sh: Add romImage target to archhelp. Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 into sh/hwblk sh: Fix up early printk build error. sh: Add a PG_dcache_dirty sanity check in kmap_coherent(). sh: Bring kmap_coherent() out-of-line. sh: Drop unused arguments for kunmap_coherent(). sh: Provide __flush_anon_page(). sh: Tidy up NEFF-based sign extension for SH-5. sh64: Kill off special clear_page() implementation. sh: Split out SH-4 __flush_xxx_region() ops. sh: Partially unroll the SH-4 __flush_xxx_region() flushers. Merge branch 'sh/stable-updates' sh: unwinder: Fix up usage of unaligned accessors. sh: unwinder: Restore put_unaligned() for an unaligned destination. sh: oprofile: Kill off dead valid_kernel_stack(). Merge branch 'sh/dwarf-unwinder' sh: unwinder: Convert frame allocations to GFP_ATOMIC. sh: stacktrace: Add reliability checks in address saving ops. sh: flag the default unwinder as reliable. sh: stacktrace: Properly terminate the trace entry buffer. sh: Add register alignment helpers for shared flushers. sh64: Wire up the shared __flush_xxx_region() flushers. sh: NO_CONTEXT ASID optimizations for SH-4 cache flush. sh: TLB protection violation exception optimizations. sh: TLB fast path optimizations for load/store exceptions. Merge branch 'master' into sh/cachetlb sh: Make sure rte delay slots are nopped out on all parts. sh: delay slot future proofing via EXPMASK on SH-4A parts. sh: Bail from kmap_coherent_init() if we have no dcache aliases. sh: Provide the kmap_coherent() interface generically. sh: rename pg-mmu.c -> cache.c, enable generically. sh: rework nommu for generic cache.c use. sh: consolidate nommu stubs in arch/sh/mm/nommu.c. sh: Track the CPU family in sh_cpuinfo. sh: Centralize the CPU cache initialization routines. sh: Move alias computation to shared cache init. sh: Don't export flush_dcache_all(). sh: consolidate flush_dcache_mmap_lock/unlock() definitions. sh: Kill off unused flush_icache_user_range(). sh: Migrate SH-4 cacheflush ops to function pointers. sh: Convert SH-2 to new cacheflush interface. sh: Convert SH-2A to new cacheflush interface. sh: Convert SH-3 to new cacheflush interface. sh: Convert SH7705 extended mode to new cacheflush interface. Merge branch 'sh/stable-updates' Merge branch 'master' into sh/hwblk sh: Kill off the unhandled pvr case in SH-4 CPU probing. sh: Convert cache disabled SH-5 over to new cache interface. sh64: Build in support for generic stacktrace ops. sh: Fix up the SH-5 build with caches enabled. sh64: Kill off dead i/d-cache disabled bits. sh: Wire up sh5_cache_init(). sh: Merge the _32/_64 variants of arch/sh/kernel/Makefile. sh: Merge the _32/_64 variants of arch/sh/mm/Makefile. sh: unwinder: Move initialization to early_initcall() and tidy up locking. Merge branch 'master' into sh/cachetlb sh: Build fix for disabled caches. sh: Fix up clockevents broadcasting. sh: Add mach-types entry for EcoVec board. Merge branch 'sh/r8a66597-udc' sh: Fix up the CONFIG_FTRACE_SYSCALLS=n build. sh: DSP save/restore ordering and a0 sign extension fixups. rtc: rtc-ds1302: Kill off unused variables. sh: enable rtc-ds1302 in snapgear_defconfig. sh: Fix up cache-sh4 build on SMP. sh: Use local TLB flush for get_mmu_context() ASID exhaustion. sh: Kill off unused cpu/cacheflush.h. sh: Make cache flushers SMP-aware. sh: Kill off now redundant local irq disabling. sh: Export unwind_stack() to satisfy modular oprofile. Merge branch 'sh/dwarf-unwinder' of git://github.com/mfleming/linux-2.6 into sh/dwarf-unwinder sh: unwinder: Use a special bug flag for unwinder traps. sh64: dummy unwinder BUG wrappers. Merge branch 'sh/dwarf-unwinder' sh: unwinder: cacheline align slab cache objects. Merge branch 'sh/hwblk' into sh/pm-runtime sh: Fix section mismatch in platform bus notifier. Merge branches 'sh/hwblk' and 'sh/pm-runtime' usb: gadget: m66592-udc needs linux/err.h. sh: Move the FTRACE_SYSCALL_MAX definition in to asm/ftrace.h. Merge branch 'sh/st-integration' timekeeping: Fix up read_persistent_clock() breakage on sh sh: Fix an off-by-1 in FTRACE_SYSCALL_MAX. sh: Fix up sh4_flush_dcache_page() build on UP. sh: Tidy up watchdog build for SH-2. sh: unwinder: Fix up uninitialized variable warnings on sh2a build. sh: Fix up simplified multi-evt handling under sparseirq. Merge branch 'master' into sh/smp sh: nmi_debug support. sh: Kill off kgdb's magical NMI debouncing. Revert "sh: Kill off now redundant local irq disabling." sh: Fix up UP deadlock with SMP-aware cache ops. sh: disable trapped I/O on SH7785LCR. sh: Fix up build warning for SH7785LCR proto board. sh: Fix up and optimize the kmap_coherent() interface. mtd: onenand: select MTD_PARTITIONS sh: Use more aggressive dcache purging in kmap teardown. sh: Kill off dcache writeback from copy_page(). Merge branches 'sh/smp' and 'sh/stable-updates' rtc: rtc-sh: Fix up oops in early periodic freq assignment. sh: Cleanup whitespace damage in sh4_flush_icache_range(). sh: multi-evt support for SH-X3 proto CPU. sh: cpufreq: Include CPU id in info messages. sh: Fix up sh7705 flush_dcache_page() build. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 sh: Wire up HAVE_SYSCALL_TRACEPOINTS. sh: Kill off unused se_skipped in alignment trap notification code. kallsyms: fix segfault in prefix_underscores_count() sh: Handle unaligned 16-bit instructions on SH-2A. sh: Fix up uninitialized variable use caught by gcc 4.4. sh: update defconfigs. sh: enable onenand support in kfr2r09 defconfig. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Paul Walmsley (10): OMAP3: update OMAP3 Beagle defconfig OMAP: powerdomain: Fix overflow when doing powerdomain deps lookups. OMAP clock: associate MPU clocks with the mpu_clkdm OMAP3 clock: remove superfluous calls to omap2_init_clk_clkdm OMAP2/3 PM: create the OMAP PM interface and add a default OMAP PM no-op layer OMAP2/3/4 PRCM: add module IDLEST wait code OMAP2/3 board-*.c files: read bootloader configuration earlier OMAP2/3/4: create omap_hwmod layer OMAP: omap_hwmod: call omap_hwmod init at boot; create interconnects OMAP2/3/4 core: create omap_device layer Pavel Machek (11): iwlwifi: fix LED config option [ARM] pxa/sharpsl_pm: zaurus c3000 aka spitz: fix resume Staging: HTC Dream: Makefile glue Staging: htc: Dream: limit Kconfig for only MSM platforms Staging: HTC Dream: Cleanup Dream touchscreen driver Staging: HTC Dream: touchscreen: more cleanups Staging: dream: synaptics touchscreen for dream: documentation Staging: Dream: separate Kconfig/Makefile into subdirectory Staging: dream: Synaptics touchscreen: check that smbus is available ARM: spitz: fix touchscreen max presure fbdev: framebuffer support for HTC Dream Pavel Roskin (8): ath5k: fix values for bus error bits in ISR2 rt61pci: fix module reloading rt2x00: cancel all work on disconnect cfg80211: fix disassociation warning due to misuse of wdev->current_bss ath5k: fix uninitialized value use in ath5k_eeprom_read_turbo_modes() ath5k: don't use PCI ID to find the chip revision rc80211_minstrel: fix contention window calculation rc80211_minstrel: fix contention window calculation Pavel Vasilyev (1): x86/gart: Do not select AGP for GART_IOMMU Pawel Ludwikow (2): USB: serial: ftdi_sio: new hardware support - hameg power supply USB: serial: pl2303: new hardware support - sanwa multimeter Pawel Moll (2): sh: Allow for kernel command line concatenation. sh: Simplify "multi-evt" interrupt handling. Pekka Enberg (10): kmemleak: Don't scan uninitialized memory when kmemcheck is enabled Merge branches 'slab/cleanups' and 'slab/fixes' into for-linus Staging: w35und: Convert MDS typedef to struct w35_mds Staging: w35und: Remove unused struct _RXBUFFER Staging: w35und: Cleanup the mlmetxrx_f.h header file Staging: w35und: Convert typedef DESCRIPTOR to struct wb35_descriptor Staging: w35und: Remove unused struct _STATISTICS_INFO Staging: w35und: Convert typedef MTO_PARAMETERS to struct wb35_mto_param Staging: w35und: Remove some write-only struct members shmem: initialize struct shmem_sb_info to zero Pekka Paalanen (4): drm/kms: no need to return void value (encoder) drm/ttm: optimize bo_kmap_type values drm: GEM handles are u32, not int drm: fix _DRM_GEM addmap error message Peng Tao (3): ext4: fix build warning when EXT4FS_DEBUG is on ext4: fix journal ref count in move_extent_par_page doc/filesystems: more mount cleanups Pete Eberlein (8): V4L/DVB (13020): go7007: Updates to Kconfig and Makefile V4L/DVB (13021): go7007: Fix whitespace and line lengths V4L/DVB (13022): go7007: Fix mpeg controls V4L/DVB (13023): go7007: Merge struct gofh and go declarations V4L/DVB (13024): go7007: Implement vidioc_g_std and vidioc_querystd V4L/DVB (13025): s2250-board: Fix memory leaks V4L/DVB (13026): s2250-board: Implement brightness and contrast controls V4L/DVB (13027): go7007: convert printks to v4l2_info Pete Hildebrandt (1): V4L/DVB (12396): [patch] Added Support for STK7700D (DVB) Pete Zaitcev (6): USB: sisusbvga: drop usb_buffer_alloc USB: usbmon: drop Kconfig defaults USB: usbmon: touch up the documentation USB: usbmon: end ugly tricks with DMA peeking USB: Let usb_sg_init to set transfer_buffer more often USB: unusual_devs.h: drop some unneeded floppy entries Peter 'p2' De Schrijver (5): OMAP: PM counter infrastructure. OMAP: PM: Hook into PM counters OMAP: PM: Add closures to clkdm_for_each and pwrdm_for_each. OMAP: PM: Add pm-debug counters OMAP: PM debug: make powerdomains use PM-debug counters Peter Feuerer (2): acerhdf: fix fan control for AOA150 model acerhdf: additional BIOS versions Peter Huewe (8): HID: adding __init/__exit macros to module init/exit functions hvc_console: Add __init and __exit to hvc_vio trivial: add __init/__exit macros to DAC960.c trivial: mtd: add __init/__exit macros to init/exitfunctions trivial: media/omap: adding __init/__exit macros to lcd_drivers trivial: media/video/cx88: add __init/__exit macros to cx88 drivers trivial: add __init macro/ fix of __exit macro location in ipmi_poweroff.c trivial: add __init/__exit macros in drivers/gpio/bt8xxgpio.c Peter Korsgaard (5): ARM: S3C6410: airgoo hmt board support ARM: S3C: move s3c_device_nand from plat-s3c24xx to plat-s3c ARM: S3C: move timer/pwm handling from plat-s3c24xx to plat-s3c uartlite: support shared interrupt lines video: s3c_fb.c: fix build with CONFIG_HOTPLUG=n Peter Meerwald (1): ASoC: fixes multiple typos in comments, no functional change Peter Oberparleiter (3): [S390] cio: fix ineffective verify event [S390] cio: consolidate subchannel intparm reset param: allow whitespace as kernel parameter separator Peter P Waskiewicz Jr (8): ixgbe: Remove legacy descriptor support ixgbe: Make sure boolean assignments from bitwise operations done correctly ixgbe: Add device support for a new copper 82598 device ixgbe: Bump version number ixgbe: Properly disable DCB arbiters prior to applying changes ixgbe: Properly disable packet split per-ring when globally disabled ixgbe: Add support for 82599-based CX4 adapters ixgbe: Create separate media type for CX4 adapters Peter Staubach (1): NFS: read-modify-write page updating Peter Ujfalusi (4): ASoC: TWL4030: Introduce PGAs for outputs ASoC: TWL4030: Fix for capture mixer strings OMAP3: McBSP: Lower the maximum buffersize for McBSP1, 3, 4, 5 OMAP: McBSP: Add link DMA mode selection Peter Williams (1): sched: Simplify sys_sched_rr_get_interval() system call Peter Zijlstra (73): hrtimer: Remove cb_entry from struct hrtimer lockdep: BFS cleanup sched: Fix cgroup smp fairness sched: Optimize unused cgroup configuration sched: Add debug check to task_of() sched: Ensure the migration task doesn't go away during use lockdep: Fix backtraces lockdep: Fix style nits lockdep: Introduce lockdep_assert_held() lockdep: Deal with many similar locks perf tools: Add some comments to the event definitions sched: Avoid division by zero perf_counter: Allow sharing of output channels sched: Fix division by zero - really sched: Add wait, sleep and iowait accounting tracepoints sched: Restore __cpu_power to a straight sum of power sched: Add SD_PREFER_SIBLING sched: Update the cpu_power sum during load-balance sched: Add smt_gain sched: Implement dynamic cpu_power sched: Scale down cpu_power due to RT tasks sched: Try to deal with low capacity sched: Remove reciprocal for cpu_power perf stat: Change noise calculation to use stddev perf stat: Remove the limit on repeat perf stat: Use stddev_mean in stead of stddev perf stat: More advanced variance computation perf stat: Clean up statistics calculations a bit more sched: Remove short cut from select_task_rq_fair() sched: Deal with low-load in wake_affine() sched: enable SD_WAKE_IDLE sched: Fix double_rq_lock() compile warning sched: Split WAKEUP_OVERLAP sched: Add come comments to the sched features sched: Move code around sched: Move sched_balance_self() into sched_fair.c sched: Hook sched_balance_self() into sched_class::select_task_rq() sched: Add TASK_WAKING sched: Merge select_task_rq_fair() and sched_balance_self() sched: Weaken SD_POWERSAVINGS_BALANCE sched: for_each_domain() vs RCU sched: Fix task affinity for select_task_rq_fair sched: Tweak wake_idx sched: Fix some domain tunings sched: Reduce forkexec_idx sched: Provide arch_scale_freq_power x86: Move APERF/MPERF into a X86_FEATURE x86: Add generic aperf/mperf code x86: sched: Provide arch implementations using aperf/mperf sched: Feature to disable APERF/MPERF cpu_power sched: Rename select_task_rq() argument sched: Rename sync arguments sched: Add WF_FORK sched: Fix sync wakeups again sched: Add a few SYNC hint knobs to play with sched: Add SD_PREFER_LOCAL sched: x86: Name old_perf in a unique way sched: Optimize cgroup vs wakeup a bit sched: Clean up the load_idx selection in select_task_rq_fair sched: Rename flags to wake_flags sched: Disable wakeup balancing sched: Add new wakeup preemption mode: WAKEUP_RUNNING sched: Stop buddies from hogging the system sched: Fix SD_POWERSAVING_BALANCE|SD_PREFER_LOCAL vs SD_WAKE_AFFINE perf_counter: Do not throttle single swcounter events perf_counter: Allow for a wakeup watermark perf record: Disable profiling before draining the buffer perf_counter: Fix up swcounter throttling sched_clock: Make it NMI safe tracing: Export trace_profile_buf symbols perf_counter: x86: Fix PMU resource leak perf_event, x86: Fix 'perf sched record' crashing the machine fcntl: add F_[SG]ETOWN_EX Petri Gynther (1): bonding: Have bond_check_dev_link examine netif_running Phil Carmody (2): crypto: aes - Undefined behaviour in crypto_aes_expand_key UBI: eliminate possible undefined behaviour Phil Edworthy (2): video: sh_mobile_lcdcfb: implement display panning video: sh_mobile_lcdcfb: use both register sets for display panning Phil Sutter (2): korina: fix printk formatting, add final info line korina: add error-handling to korina_alloc_ring Phil Vandry (1): ASoC: wm8753: fix mapping when MONOMIX is set to Stereo Philipp Zabel (5): ASoC: UDA1380: refactor device registration [ARM] pxa: remove left-over struct clk *other field from struct clk [ARM] pxa/hx4700: use platform_lcd driver pcmcia: dtl1_cs: fix pcmcia_loop_config logic USB: gadget: pxa25x: basic transceiver support Philippe De Muyter (1): m68knommu: fix ColdFire definition of CLOCK_TICK_RATE Philippe Gerum (10): Blackfin: checkpatch --file arch/blackfin/kernel/ipipe.c Blackfin: fix misnomer of some I-pipe helpers Blackfin: export show_stack() to modules Blackfin: allow high priority domains to preempt schedule_tail() Blackfin: use generic name for EVT14 handler Blackfin: reuse evt_evt14 handler to perform irqtail epilogue Blackfin: allow EVT5 to preempt irqtail prologue (CONFIG_DEBUG_HWERR) Blackfin: document __ipipe_call_irqtail Blackfin: sanitize manual control of IPEND[4] Blackfin: inline I-pipe bypass code in ret_from_exception Phillip Lougher (1): lzma/gzip: fix potential oops when input data is truncated Pierre Habouzit (1): perf tools: do not complain if root is owning perf.data Pierre Ossman (1): sdhci: orphan driver and list Poonam Aggrwal (1): powerpc/85xx: Add support for P2020RDB board Pranith Kumar (1): Staging: otus: Fix warnings in staging/otus/ioctl.c Prarit Bhargava (1): [CPUFREQ] Create a blacklist for processors that should not load the acpi-cpufreq module. Rafael Ignacio Zurita (2): sh: Add early printk support for SH770x CPUs. sh: clkfwk: remove bogus set_bus_parent() from SH7709. Rafael J. Wysocki (26): genirq: Fix comment describing suspend_device_irqs() Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus Merge branch 'master' into for-linus PM: Introduce core framework for run-time PM of I/O devices (rev. 17) x86: Decrease the level of some NUMA messages to KERN_DEBUG PCI PM: Simplify PCI wake-up code PCI / ACPI PM: Rework some debug messages PCI PM: Introduce device flag wakeup_prepared ACPI PM: Replace wakeup.prepared with reference counter PCI / ACPI PM: Propagate wake-up enable for devices w/o ACPI support Merge branch 'master' into for-linus Merge branch 'master' into for-linus PM/Hibernate: Rework shrinking of memory PM/Hibernate: Do not release preallocated memory unnecessarily (rev. 2) PM/Hibernate: Do not try to allocate too much memory too hard (rev. 2) PM: Update kerneldoc comments in drivers/base/power/main.c PCI / PCIe portdrv: Fix pcie_portdrv_slot_reset() PCI PM: Return error codes from pci_pm_resume() PCI: Clear saved_state after the state has been restored Rafael Laufer (1): netfilter: nf_conntrack: add SCTP support for SO_ORIGINAL_DST Rafi Rubin (1): HID: ntrig tool separation and pen usages Rahul Iyer (1): nfsd41: sunrpc: Added rpc server-side backchannel handling Rajashekhara, Sudhakar (3): davinci: dm644x: Support for dm644x silicon revision 2.1 davinci: Move the da830/omap-l137 #defines to header file TI DaVinci EMAC: delay DaVinci EMAC initialization Ralf Baechle (13): NET: Fix possible corruption in bpqether driver MIPS: Fix potencial build error in MIPS: Get rid of duplicate cpu_idle() prototype. MIPS: Malta: Convert reset initialization to initcall. MIPS: Fulong: Convert reset initialization to initcall. MIPS: FW: Build with -Werror MIPS: IP22, IP28: Build with -Werror MIPS: Consolidate all CONFIG_CPU_HAS_LLSC use in a single C file. MIPS: Rewrite sysmips(MIPS_ATOMIC_SET, ...) in C with inline assembler MIPS: Rewrite clearing of ll_bit on context switch in C MIPS: Malta: Remove pointless use use of CONFIG_CPU_HAS_LLSC MIPS: Get rid of CONFIG_CPU_HAS_LLSC MIPS: Remove useless zero initializations. Rami Rosen (2): cleanup: remove unused member in scm_cookie. sctp: remove unused union (sctp_cmsg_data_t) definition Randy Dunlap (33): xfrm4: fix build when SYSCTLs are disabled ASoC: fix I2C build errors trace_skb: fix build when CONFIG_NET is not enabled phonet: fix build when PROC_FS is disabled [SCSI] scsi_transport_fc: fix kernel-doc param name Bluetooth: Add missing selection of CONFIG_CRC16 for L2CAP layer timer.c: Fix S/390 comments timers: Drop a function prototype ipw2200: fix kconfig dependencies net: fix hydra printk format warning netxen: build fix for INET=n [IA64] mbcs: fix printk format warnings [IA64] ioc4_serial: fix printk format warnings [IA64] sgi-xp: fix printk format warnings Staging: android: lowmemorykiller: fix module param errors Staging: hv: blk dev depends on SCSI Staging: udlfb: fix printk format warning Staging: iio: fix duplicate dev_attr_name ssb/sdio: fix printk format warnings [WATCHDOG] wdt_pci: fix printk and variable type kernel hacking: move STRIP_ASM_SYMS from General page_alloc: fix kernel-doc warning USB: usbtmc: fix printk format warnings USB: otg: fix twl4030-usb build USB: gadget: ether needs to select CRC32 spi.h: add missing kernel-doc for struct spi_master ssb/sdio: fix printk format warnings wl12xx: fix kconfig/link errors creds_are_invalid() needs to be exported for use by modules: serial core: fix new kernel-doc warnings sunrpc/rpc_pipe: fix kernel-doc notation doc/filesystems: remove smount program docs: fix various Documentation/ paths in header files Raphael Derosso Pereira (1): Input: add driver for Atmel AT42QT2160 Sensor Chip Ravi Anand (1): [SCSI] qla2xxx: Pass the command's data residual to upper-layer callers. Reddy, Teerth (1): OMAP3: PM: add T2 interrupt line mux setting, and enable on 3430SDP Reinette Chatre (26): iwlagn: re-enable PS support for iwlagn iwlwifi: add utility to print buffer when error occurs iwlwifi: always print buffer when error condition occurs iwlwifi: fix permissions on debugfs files iwl3945: cleanup number of queues settings iwlagn: fix minimum number of queues setting iwlagn: do not send key clear commands when rfkill enabled iwlwifi: make debug level more user friendly iwlwifi: clarify hardware error message iwlwifi: inform user about rfkill state changes iwlwifi: print packet contents in error case iwlagn: fix null pointer access during ucode load on 1000 iwlagn: fix sparse warning when compiling without debug iwlwifi: re-introduce per device debugging iwlwifi: revert uCode Alive notification with timeout iwlwifi: fix missing EXPORT_SYMBOL iwlwifi: prevent read outside array bounds ipw2x00: fix sparse warnings ipw2x00: update contact information MAINTAINERS: Update ipw2x00 and iwlwifi entries iwlwifi: fix situation in which debug message is printed iwl3945: reduce debug noise when default debug flags used iwlwifi: fix potential rx buffer loss iwlwifi: fix potential rx buffer loss iwlwifi: do not send sync command while holding spinlock iwlwifi: reduce noise when skb allocation fails Renzo Davoli (1): fs/char_dev.c: remove useless loop Rex Feany (1): powerpc/8xx: Fix regression introduced by cache coherency rewrite Ricardo Labiaga (5): nfsd41: Backchannel: Add sequence arguments to callback RPC arguments nfsd41: Backchannel: Server backchannel RPC wait queue nfsd41: Backchannel: Setup sequence information nfsd41: Backchannel: Implement cb_recall over NFSv4.1 nfsd41: Refactor create_client() Richard Ash (10): Staging: add Support for Quatech ESU2-100 USB 2.0 8-port serial adaptor Staging: quatech_usb2: implement open functionality Staging: quatech_usb2: close, read, and some ioctl support Staging: quatech_usb2: write_room rewrite Staging: quatech_usb2: TIOCMGET and TIOCMSET removal Staging: quatech_usb2: chars_in_buffer() fix Staging: quatech_usb2: vendor implementation of set_termios method Staging: quatech_usb2: vendor implementation of break_ctl Staging: quatech_usb2: Improve debug output and fix write_room Staging: quatech_usb2: Improvements to set_termios method Richard Purdie (1): leds: Fix leds-pca9532 whitespace issues Richard Röjfors (7): Input: tsc2007 - remove HR timer Input: tsc2007 - make init/exit platform hw callbacks optional Input: tsc2007 - do not read coordinates during probe Input: tsc2007 - check if I2C communication works during probe V4L/DVB (13019): video: initial support for ADV7180 sdhci: support for ADMA only hosts gpio: add MC33880 driver Rik van Riel (1): vmscan: throttle direct reclaim when too many pages are isolated already Rob Emanuele (2): atmel-mci: unified Atmel MCI drivers (AVR32 & AT91) AT91: atmel-mci: Platform configuration to the the atmel-mci driver Robert Hancock (3): libata: add command name parsing for error output sata_sil24: always set protocol override for non-ATAPI data commands pata_amd: do not filter out valid modes in nv_mode_filter Robert Jarzmik (6): [ARM] pxa/dma: cosmetic move of EXPORT_SYMBOL under their functions [ARM] pxa/dma: optimize irq handler loop [ARM] pxa/dma: add debugfs entries [ARM] pxamci: add simple gpio controls [ARM] pxa: factor pxamci gpio handling [ARM] pxa: update rtc-pxa.c to use 'struct dev_pm_ops' Robert Love (5): [SCSI] libfc: Remove the FC_EM_DBG macro [SCSI] fcoe: Add format spacing to FCOE_NETDEV_DBG debug macro [SCSI] libfc: Fix misleading debug statement [SCSI] libfc: Initialize fc_rport_identifiers inside fc_rport_create [SCSI] libfc: Always reset remote port roles when receiving PRLI Robert P. J. Day (6): mtd: correct typo "MTD_DATAFLASH_VERIFY_WRITE" Staging: comedi: Remove references to dead EXPORT_SYMTAB Staging: vt6655: Remove Makefile refs to EXPORT_SYMTAB kbuild: correct initramfs compression comment trivial: Correct print_tainted routine name in comment trivial: Remove commented out usage of dead MODULE_PARM() in swarm_cs4297a Robert Richter (56): Merge commit 'v2.6.30' into oprofile/master Revert "oprofile: discover counters for op ppro too" x86/oprofile: moving arch_perfmon counter setup to op_x86_model_spec.init x86/oprofile: minor style changes in struct op_x86_model_spec oprofile: remove irq_flags in struct op_entry oprofile: remove obselete include headers x86/oprofile: remove #ifdefs in ibs functions x86/oprofile: simplify AMD cpu init code x86/oprofile: move common macros to op_x86_model.h x86/oprofile: remove MSR macros for AMD cpus x86/oprofile: remove MSR macros for ppro cpus x86/oprofile: remove MSR macros for p4 cpus x86/oprofile: fix and cleanup CTRL_SET_* macros x86/oprofile: remove unused macros for AMD virtualization profiling x86/oprofile: pass the model to setup_ctrs() functions x86/oprofile: replace macros to calculate control register x86/oprofile: replace CTR_OVERFLOWED macros x86/oprofile: replace CTRL_SET_*ACTIVE macros x86/oprofile: replace CTR*_IS_RESERVED macros x86/oprofile: use 64 bit wrmsr functions x86/oprofile: use 64 bit values to save MSR states x86/oprofile: remove some local variables in MSR save/restore functions x86/oprofile: use 64 bit values in IBS functions x86/oprofile: introduce oprofile_add_data64() Merge commit 'tip/perfcounters-for-linus' into oprofile/master x86/oprofile: fix initialization of arch_perfmon for core_i7 Merge branches 'oprofile/fixes', 'oprofile/next' and 'oprofile/master' into oprofile/auto Merge commit 'v2.6.31-rc3'; commit 'tip/oprofile' into oprofile/core x86/oprofile: Fix cast of counter value x86/oprofile: Rework and simplify nmi_cpu_setup() x86/oprofile: Whitespaces changes only x86/oprofile: Fix usage of NUM_CONTROLS/NUM_COUNTERS macros x86/oprofile: Use per_cpu() instead of __get_cpu_var() x86/oprofile: Fix initialization of switch_index oprofile: oprofile_set_timeout(), return with error for invalid args oprofile: Rename variable timeout_jiffies and move to oprofile_files.c oprofile: Remove oprofile_multiplexing_init() oprofile: Grouping multiplexing code in oprof.c oprofile: Introduce op_x86_phys_to_virt() oprofile: Grouping multiplexing code in op_model_amd.c x86/oprofile: Implement multiplexing setup/shutdown functions x86/oprofile: Moving nmi_setup_cpu_mux() in nmi_int.c x86/oprofile: Moving nmi_cpu_save/restore_mpx_registers() in nmi_int.c x86/oprofile: Moving nmi_cpu_switch() in nmi_int.c x86/oprofile: Remove const qualifier from struct op_x86_model_spec x86/oprofile: Remove unused num_virt_controls from struct op_x86_model_spec x86/oprofile: Modify initialization of num_virt_counters x86/oprofile: Add function has_mux() to check multiplexing support x86/oprofile: Enable multiplexing only if the model supports it x86/oprofile: Implement mux_clone() oprofile: Adding switch counter to oprofile statistic variables x86/oprofile: Implement op_x86_virt_to_phys() x86/oprofile: Add counter reservation check for virtual counters x86/oprofile: Small coding style fixes Revert "x86: oprofile/op_model_amd.c set return values for op_amd_handle_ibs()" ring-buffer: consolidate interface of rb_buffer_peek() Robert Schedel (1): HID: Support new variants of Samsung USB IR receiver (0419:0001) Robert Schwebel (1): ASoC: fix pxa2xx-ac97.c breakage Robert Varga (1): tcp: fix CONFIG_TCP_MD5SIG + CONFIG_PREEMPT timer BUG() Robin Callender (1): USB: gadget: audio driver seg-fault fix Robin Getz (9): printk: Enable the use of more than one CON_BOOT (early console) printk: Ensure that "console enabled" messages are printed on the console Blackfin: make EVT3->EVT5 lowering more robust wrt IPEND[4] Blackfin: reject outdated/unused/wrong relocation types Blackfin: clean up early memory setup code Blackfin: add an early shadow console Blackfin: catch hardware errors earlier during booting Blackfin: workaround anomaly 05000283 Blackfin: fix typo in isram_write() Rodrigo Vivi (1): omapfb: add support for rotation on the Blizzard LCD ctrl Roel Kluin (70): wireless: remove redundant tests on unsigned ASoC: Keep index within stac9766_reg[] arlan: inverted logic? HID: fix overrun in quirks initialization nfs: Keep index within mnt_errtbl[] ext4: remove redundant test on unsigned powerpc/fsl-booke: read buffer overflow powerpc/hvsi: Avoid calculating possibly-invalid address ASoC: free socdev if init_card() fails in wm9705_soc_probe() GFS2: jumping to wrong label? x86: Fix x86_model test in es7000_apic_is_cluster() sound: vwsnd: Fix setting of cfgval and ctlval in li_setup_dma() Input: tosakbd - fix cleaning up KEY_STROBEs after error libertas: Read buffer overflow nl80211: jump to out_err upon unsupported iftype ath9k: Fix read buffer overflow drm: dereference of tmp in drm_proc_create_files() ALSA: allocation may fail in snd_pcm_oss_change_params() slram: Read buffer overflow mtd: tests: fix read buffer overflows mtd: pmcmsp-flash: fix error paths in init_msp_flash IB/ipath: strncpy() doesn't always NUL-terminate RDMA/amso1100: Check kmalloc() result in c2_register_device() KVM: fix EFER read buffer overflow [S390] tape: reversed order of labels V4L/DVB (12199): remove redundant tests on unsigned V4L/DVB (12435): strlcpy() will always null terminate the string. V4L/DVB (12575): Fix test of bandwidth range in cx22700_set_tps() pcmcia: drivers/pcmcia: Make static Staging: comedi: s626: Possible read buffer overflow fix Staging: vt6655: fix possible Read buffer overflow Staging: rt2860: Fix test in rt_ioctl_siwfrag() Staging: rspiusb: Check usb_buffer_map_sg() retval Staging: comedi: apci3200: fix test of ui_DelayTime range in i_APCI3200_CommandTestAnalogInput() Staging: rt2860: fix possible NULL dereferences Staging: comedi: addi-data: NULL dereference of amcc in v_pci_card_list_init() Blackfin: fix read buffer overflow MIPS: Octeon: False positive timeout kref: double kref_put() in my_data_handler() V4L/DVB (13015): kmalloc failure ignored in m920x_firmware_download() V4L/DVB (13016): kmalloc failure ignored in lgdt3304_attach() and s921_attach() V4L/DVB (13017): gspca: kmalloc failure ignored in sd_start() V4L/DVB (13018): kzalloc failure ignored in au8522_probe() ARM: STMP3xxx: deallocation with negative index of descriptors[] ARM: s3c: fix check of index into s3c_gpios[] mtd: lart: Prevent a read from mtd->eraseregions[-1] mtd: mtdconcat: prevent a read from eraseregions[-1] mtd: mtdpart: prevent a read from regions[-1] tty: icom: bit and/or confusion? regulator: add check index of wm8350->pmic.pdev[] regulator: fix calculation of voltage range in da9034_set_ldo12_voltage() pcmcia: fix read buffer overflow arch/alpha/boot/tools/objstrip.c: wrong variable tested after open() m32r: remove redundant tests on unsigned uml: fix order of pud and pmd_free() hwmon: fix freeing of gpio_data and irq USB: gadget: s3c-hsotg: missing parentheses USB: gadget: Read buffer overflow USB: double put_tty_driver(gs_tty_driver) in gserial_setup() USB: gadget: double free_irq() in at91udc_probe() smbfs: read buffer overflow dme1737: Keep index within pwm_config[] sdio: fix read buffer overflow ncpfs: read buffer overflow platinumfb: fix misplaced parenthesis sisfb: read buffer overflow drivers/video/console/newport_con.c: fix read outside array bounds mwave: fix read buffer overflow adfs: remove redundant test on unsigned gru: allocation may fail in quicktest1() Roger Quadros (2): OMAP: Remove omap boot parsing code regulator: Add GPIO enable control to fixed voltage regulator driver RogĂ©rio Brito (1): USB: fix paths in usbmon documentation Roland Dreier (26): crypto: aes-ni - Don't print message with KERN_ERR on old system IPoIB: Remove unused includes IPoIB: Drop priv->lock before calling ipoib_send() IB/mad: Check hop count field in directed route MAD to avoid array overflow IB: Use DEFINE_SPINLOCK() for static spinlocks mlx4_core: Use pci_request_regions() mlx4_core: Remove unnecessary includes of IB/mlx4: Annotate CQ locking mlx4_core: Allocate and map sufficient ICM memory for EQ context IB/mthca: Remove unnecessary include of IB/mthca: Remove unnecessary include of IB/mthca: Annotate CQ locking IB/mad: Fix possible lock-lock-timer deadlock MAINTAINERS: InfiniBand/RDMA mailing list transition to vger Add MODULE_DEVICE_TABLE() so ioatdma module is autoloaded I/OAT: Convert to PCI_VDEVICE() Merge branches 'cxgb3', 'ehca', 'ipath', 'ipoib', 'misc', 'mlx4', 'mthca' and 'nes' into for-linus Merge branch 'mad' into for-linus ecryptfs: Remove unneeded locking that triggers lockdep false positives eCryptfs: Fix lockdep-reported AB-BA mutex issue printk_once(): use bool for boolean flag IB/mad: Fix lock-lock-timer deadlock in RMPP code x86: Reduce verbosity of "TSC is reliable" message x86: Reduce verbosity of "PAT enabled" kernel message Merge branches 'ipoib', 'mad', 'mlx4', 'mthca' and 'nes' into for-linus ACPI: Kill overly verbose "power state" log messages Roland McGrath (9): binfmt_elf: fix PT_INTERP bss handling binfmt_elf: fix PT_INTERP bss handling asm-generic: syscall_get_nr returns int x86: syscall_get_nr returns int x86: ptrace: sysret path should reach syscall_trace_leave x86: ptrace: do not sign-extend orig_ax on write x86: ptrace: set TS_COMPAT when 32-bit ptrace sets orig_eax>=0 signals: tracehook_notify_jctl change signals: inline __fatal_signal_pending Rolf Eike Beer (1): Make sure the value in abs() does not get truncated if it is greater than 2^32 Ron Lee (1): [ARM] Kirkwood: Initialise SATA for OpenRD-Base Ron Mercer (3): qlge: Get rid of 'default' rx_ring type. qlge: Allow running MSIx with fewer vectors. qlge: Move TX completions from workqueue to NAPI. Rongrong Cao (1): ASoC: fix checking for external widgets bug Ruben Aos Garralda (1): HID: add rumble support for Thrustmaster Dual Trigger 3-in-1 Rudolf Marek (2): hwmon: (coretemp) Fix Atom CPUs support hwmon: (coretemp) Add support for Penryn mobile CPUs Russell King (39): [ARM] versatile: add PL061 gpiolib support [ARM] realview: add PL061 gpiolib support MMC: MMCI: use AMBA bus accessors MMC: MMCI: allow GPIOs to be passed MMC: MMCI: use gpiolib for card detect/write protect [ARM] Update mach-types [ARM] remove L_PTE_BUFFERABLE and L_PTE_CACHEABLE [ARM] pgtable: rearrange file PTE bit allocation [ARM] Update mach-types Merge branch 'omap4_upstream' of git://dev.omapzoom.org/pub/scm/santosh/kernel-omap4-base into devel-stable Merge branch 'pm-upstream/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into devel-stable Merge branch 'for-rmk' of git://git.marvell.com/orion into devel-stable Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable Merge branch 'for-rmk-2.6.32' of git://git.pengutronix.de/git/ukl/linux-2.6 into devel-stable Merge branch 'next-s3c' of git://aeryn.fluff.org.uk/bjdooks/linux into devel-stable ARM: implement highpte MMC: MMCI: convert realview MMC to use gpiolib mtd: afs: fix build warning Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'for-rmk' of git://git.marvell.com/orion into devel-stable ARM: Fix pfn_valid() for sparse memory Merge branch 'nomadik' into devel-stable [ARM] Update mach-types Merge branches 'arm', 'at91', 'bcmring', 'ep93xx', 'mach-types', 'misc' and 'w90x900' into devel Merge branch 'devel-stable' into devel Merge branch 'master' into devel Merge branch 'next-s3c-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux ARM: Update mailing list addresses [ARM] Update mach-types Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6 ARM: Provide definitions and helpers for decoding the FSR register ARM: Update page fault handling for new OOM techniques ARM: Ensure correct might_sleep() check in pagefault path ARM: Separate out access error checking ARM: Add support for checking access permissions on prefetch aborts Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel Merge branch 'u300' into devel Merge branch 'master' into for-linus Merge branch 'origin' into for-linus Rusty Russell (51): virtio_pci: minor MSI-X cleanups virtio: make add_buf return capacity remaining lguest: move panic notifier registration to its expected place. lguest: use set_pte/set_pmd uniformly for real page table entries lguest: use PGDIR_SHIFT for PAE code to allow different PAGE_OFFSET lguest: don't force VIRTIO_F_NOTIFY_ON_EMPTY misc: remove redundant start_kernel prototypes cpumask: remove the now-obsoleted pcibus_to_cpumask(): alpha cpumask: remove the now-obsoleted pcibus_to_cpumask(): mips cpumask: remove the now-obsoleted pcibus_to_cpumask(): powerpc cpumask: remove obsolete node_to_cpumask now everyone uses cpumask_of_node cpumask: remove dangerous CPU_MASK_ALL_PTR cpumask: remove dangerous CPU_MASK_ALL_PTR, &CPU_MASK_ALL.: mips cpumask: remove unused cpu_mask_all cpumask: remove last assignment to mask field of struct irqaction. cpumask: remove unused mask field from struct irqaction. cpumask: don't define set_cpus_allowed() if CONFIG_CPUMASK_OFFSTACK=y ia64: convert last user of smp_call_function_mask cpumask: remove the deprecated smp_call_function_mask() cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: core cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: sparc cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: s390 cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: powerpc cpumask: remove obsolete topology_core_siblings and topology_thread_siblings: ia64 cpumask: arch_send_call_function_ipi_mask: alpha cpumask: arch_send_call_function_ipi_mask: m32r cpumask: arch_send_call_function_ipi_mask: mips cpumask: arch_send_call_function_ipi_mask: powerpc cpumask: arch_send_call_function_ipi_mask: s390 cpumask: remove arch_send_call_function_ipi cpumask: Use accessors for cpu_*_mask: m32r cpumask: Use accessors for cpu_*_mask: mips cpumask: Use accessors for cpu_*_mask: powerpc cpumask: Use accessors for cpu_*_mask: um cpumask: use mm_cpumask() wrapper: arm cpumask: use mm_cpumask() wrapper: m32r cpumask: use mm_cpumask() wrapper: mn10300 cpumask: use mm_cpumask() wrapper: mips cpumask: use mm_cpumask() wrapper: um cpumask: use mm_cpumask() wrapper: x86 cpumask: use new-style cpumask ops in mm/quicklist. cpumask: remove unused deprecated functions, avoid accusations of insanity cpumask: Move deprecated functions to end of header. virtio_net: skb_orphan() and nf_reset() in xmit path. virtio_net: return NETDEV_TX_BUSY instead of queueing an extra skb. virtio_net: don't free buffers in xmit ring virtio_net: formalize skb_vnet_hdr virtio_net: avoid (most) NETDEV_TX_BUSY by stopping queue early. x86: Remove redundant non-NUMA topology functions module: fix memory leak when load fails after srcversion/version allocated module: don't call percpu_modfree on NULL pointer. Ryan Mallon (6): [ARM] 5566/1: Remove at91_gpiolib_request [ARM] 5605/1: Fix ep93xx gpio.c headers [ARM] 5607/1: ep93xx: Use __iomem pointer on syscon write function mtd: SST25L (non JEDEC) SPI Flash driver ep93xx video driver platform support ep93xx video driver Ryusei Yamaguchi (1): knfsd: Replace lock_kernel with a mutex in nfsd pool stats. Ryusuke Konishi (12): nilfs2: fix ignored error code in __nilfs_read_inode() nilfs2: use semaphore to protect pointer to a writable FS-instance nilfs2: always lookup disk block address before reading metadata block nilfs2: use GFP_NOIO for bio_alloc instead of GFP_NOWAIT nilfs2: remove nilfs_dat_abort_start and nilfs_dat_abort_free nilfs2: remove unused btree argument from btree functions nilfs2: stop zero-fill of btree path just before free it nilfs2: remove individual gfp constants for each metadata file nilfs2: add update functions of virtual block address to dat nilfs2: allow btree code to directly call dat operations nilfs2: convert nilfs_bmap_lookup to an inline function fs/Kconfig: move nilfs2 outside misc filesystems RĂ©mi Denis-Courmont (13): Phonet: sockets list through proc_fs Phonet: account for dropped RX packets Phonet: dropped datagrams accounting f_phonet: lock-less MTU change f_phonet: use page-sized rather than MTU-sized RX buffers Phonet: fix /proc/net/phonet with network namespaces Phonet: fix netlink address dump error handling Phonet: back-end for autoconfigured addresses cdc-phonet: autoconfigure Phonet address Phonet: Netlink event for autoconfigured addresses cdc-phonet: remove noisy debug statement Phonet: fix race for port number in concurrent bind() Phonet: error on broadcast sending (unimplemented) Sachin Sant (2): crypto: s390 - Fix sha build failure net: Fix a build break because of a typo in drivers/net/3c503.c Sage Weil (4): [SCSI] ibmvscsi: avoid unnecessary use of kzalloc_pool Btrfs: fix arithmetic error in clone ioctl md: avoid use of broken kzalloc mempool mm: remove broken 'kzalloc' mempool Sam Ravnborg (6): kbuild: use INSTALLKERNEL to select customized installkernel script kbuild: save ARCH & CROSS_COMPILE when building a kernel kbuild: rename ld-option to cc-ldoption kbuild: introduce ld-option arm, cris, mips, sparc, powerpc, um, xtensa: fix build with bash 4.0 alpha: fix build after vmlinux.lds.S cleanup Samuel Ortiz (16): iwmc3200wifi: invalidate keys when changing the BSSID iwmc3200wifi: handling wifi_if_ntfy responses iwmc3200wifi: cfg80211 key hooks implemetation iwmc3200wifi: cache keys when interface is down cfg80211: connect/disconnect API cfg80211: check for current_bss from giwrate iwmc3200wifi: cfg80211 managed mode port cfg80211: Set WEP ciphers iwmc3200wifi: Set WEP key from connect iwmc3200wifi: Fix sparse warning iwmc3200wifi: New initial LMAC calibration iwmc3200wifi: Handle UMAC stalls and UMAC assert properly iwmc3200wifi: Add a last_fw_err debugfs entry mfd: fix ab3100 warning on x86_64 mfd: Fix ab3100-otp build failure mfd: Fix twl4030-power warnings Samuel R. C. Vale (1): trivial: fix typos in comments s/DGBU/DBGU/ San Mehat (1): mmc: msm_sdccc: driver for HTC Dream Sandeep Paulraj (17): davinci: Adding DM365 SOC Support davinci: Adding DM365 EVM board support davinci: Adding DM365 entries to Makefile/Kconfig/defconfig davinci: dm365: add mux entries for EDMA, RTC, EMAC, keypad. davinci: dm365: EMAC support for SoC and dm365 EVM davinci: dm365: add EDMA support davinci: dm365: add MMC/SD support davinci: MMC/SD Support for dm365 EVM davinci: dm365: add NAND support to EVM board davinci: DM365 Updating PINMUX Entries DaVinci: EDMA: Add queue 2 and 3 for DM365 and DM6467 DaVinci: EDMA: Updating default queue handling DaVinci: DM365: Fix Compilation issue due to PINMUX entry DaVinci: DM365: Add Support for new Revision of silicon DaVinci: DM355: Adding PINMUX entries for DM355 Display DaVinci: DM365: Adding entries for DM365 IRQ's DaVinci: EDMA: Adding 2 new APIs for allocating/freeing PARAMs Sanjeev Premi (1): OMAP3 clock: Fixed processing of bootarg 'mpurate' Santosh Shilimkar (3): OMAP4: sDMA: Update the request lines and new registers. ARM: OMAP4: Fix NULL pointer dereference crash. ARM: OMAP4: Bypass the clock check. Santosh Vernekar (4): [SCSI] qla2xxx: Skip RSCN processing on vha if event is global. [SCSI] qla2xxx: Mark all devices lost on loss of fc port. [SCSI] qla2xxx: Handle RSCN's per master/slave vn-port basis. [SCSI] qla2xxx: Correctly set FCF_TAPE_PRESENT flag based on scsi-device. Sarah Sharp (23): USB: xhci: Work around for chain bit in link TRBs. USB: xhci: Fix slot and endpoint context debugging. USB: xhci: Configure endpoint code refactoring. USB: xhci: Set correct max packet size for HS/FS control endpoints. USB: xhci: Support full speed devices. USB: xhci: Handle stalled control endpoints. USB: xhci: Add quirk for Fresco Logic xHCI hardware. USB: xhci: Make TRB completion code comparison readable. USB: xhci: Handle babbling endpoints correctly. USB: xhci: Don't touch xhci_td after it's freed. USB: xhci: Check URB's actual transfer buffer size. USB: xhci: Check URB_SHORT_NOT_OK before setting short packet status. USB: xhci: Set -EREMOTEIO when xHC gives bad transfer length. USB: xhci: Support interrupt transfers. USB: Fix SS endpoint companion descriptor parsing. USB: xhci: Endpoint representation refactoring. USB: xhci: Refactor input device context setup. USB: xhci: Change how xHCI commands are handled. USB: xhci: Fix command wait list handling. USB: xhci: Set route string for all devices. USB: xhci: Set multi-TT field for LS/FS devices under hubs. USB: xhci: Support USB hubs. USB: Add hub descriptor update hook for xHCI Sarveshwar Bandi (1): be2net:Creating/destroying queues regardless of netif_running() in suspend/resume path Sascha Hauer (44): MXC: pass base/irq to mxc_timer_init system.c: runtime base address mxc: remove ARCH_NR_GPIOS MXC uncompress macros: determine uart base by machine type MXC: remove board specific setup of MXC_LL_UART_[PV]ADDR i.MX serial: do not use #ifdef CONFIG_ARCH_* mxc: remove do not include directly mxc: turn to soc specific init_irq functions MXC iomux-v3: Fix defines for PAD_CTL registers mx2: remove mxc_irda platform device mx2: Codingstyle: Let the compiler count arrays mx3: Codingstyle: Let the compiler count arrays mx1: Codingstyle: Let the compiler count arrays imxfb: calculate bpix value from bits_per_pixel imxfb: use resource_size() macro imxfb: Add support for multiple displays pcm037: Add support for SJA1000 on baseboard pcm038: Add support for SJA1000 on baseboard mxc gpio: CONFIG_ARCH_* -> cpu_is_*() MXC gpio interrupt support: move register definitions to .c file MXC: pwm driver fixes MXC PLL decoding: calculate mfn value with less magic [ARM] MXC: Switch MX1 to clkdev support [ARM] MXC: remove the now unused #ifndef CONFIG_COMMON_CLKDEV ehci mxc: Fix clocks ARM: mxc: Fix i2c_board_info definitions MXC: use variable for irq controller base in entry-macro.S MXC: i.MX25 timer support iomux-v3: Allow for a runtime base address mxc pwm: add mx25 support Add i.MX25 support Freescale i.MX25 PDK (3ds) board support fix mx35 wrong clock MX2: Add SPI devices/resources MX31: add spi controller devices/resources i.MX35 clock support: Add USB clocks mx3x: Fixup USB base addresses MX31 Fix spi clock names MX21: Compilation fix for devices.c mx21ads: Fix framebuffer platform data mfd: Add Freescale MC13783 driver regulator: Add Freescale MC13783 driver spi: remove i.MX SPI driver spi: add SPI driver for most known i.MX SoCs Sascha Hlusiak (1): sit: allow ip fragmentation when using nopmtudisc to fix package loss Sathya Perla (12): be2net: get rid of be_ctrl_info struct/abstraction be2net: remove pci_func field from be_adapter struct be2net: replace some printks with dev_err()/dev_warn() be2net: some name changes for consistency be2net: delete unnecessary code from be_cmd_POST() be2net: Clear pending tx completions before destroying tx queue be2net: fix bad queue traversal in be_rx_q_clean() be2net: clear & notify residual events before destroying event queues be2net: Set mac addr in hw regardless of netif_running() be2net: refactor be_msix_(un)register() code. be2net: destroy mcc queue before tx queues be2net: fix some cmds to use mccq instead of mbox Scott Feldman (11): enic: add support for multiple BARs enic: workaround A0 erratum enic: bug fix: split TSO fragments larger than 16K into multiple descs enic: use netdev_alloc_skb enic: bug fix: protect fw call i/f with spinlock enic: bug fix: included MAC drops in rx_dropped netstat enic: provision for multiple Rx/Tx queues; prepare for RSS support enic: bug fix: enable VLAN filtering enic: changes to driver/firmware interface enic: bug fix: check for zero port MTU before posting warning enic: organize device initialization/deinit into separate functions Scott James Remnant (1): proc connector: add event for process becoming session leader Sebastian Andrzej Siewior (6): kmemcheck: depend on HAVE_ARCH_KMEMCHECK crypto: ansi_prng - Use just a BH lock crypto: ansi_prng - alloc cipher just in init crypto: mv_cesa - Add support for Orion5X crypto engine powerpc/ipic: unmask all interrupt sources Revert "kmod: fix race in usermodehelper code" Sebastian Haas (4): can: sja1000: Add support for the new 4 channel EMS CPC-PCI cards cpc-usb: Removed driver from staging tree ems_usb: Added support for EMS CPC-USB/ARM7 CAN/USB interface ems_pci: fix size of CAN controllers BAR mapping for CPC-PCI v2 Sebastian Ott (16): [SCSI] zfcp: proper use of device register [S390] cio: fix not oper handling after failed [on|off]line processing [S390] cio: increase trace level [S390] cio: ensure to hold a reference for deferred deregistration [S390] cio: fix use after free in s390 debug feature [S390] cio: fix memleak in subchannel validation [S390] cio: remove subchannel init_name [S390] cio: move final put_device to ccw_device_unregister [S390] cio: remove ccw_device init_name [S390] proper use of device register [S390] cio: merge init calls [S390] cio: introduce css_eval_scheduled [S390] cio: introduce css_settle [S390] cio: dont kfree vmalloced memory [S390] cio: idset use actual number of ssids [S390] cio: introduce consistent subchannel scanning Sekhar Nori (1): davinci: make arch_idle and arch_reset as inline functions Senthil Balasubramanian (9): ath9k: remove unnecessary STATION mode check. ath9k: stop ani when the STA gets disconnected. ath9k: race condition in SCANNING state check during ANI calibration ath9k: Handle different TX and RX streams properly. ath9k: Manipulate and report the correct RSSI ath9k: RX stucks during heavy traffic in HT40 mode. ath9k: Fix TX hang issue with Atheros chipsets ath9k: Adjust the chainmasks properly ath9k: Fix bug in chain handling Serge E. Hallyn (1): KEYS: Make /proc/keys use keyid not numread as file position [try #6] Sergei Shtylyov (1): davinci: DM646x: pass correct MUSB IRQs Sergey Matyukevich (3): ARM: 5631/1: Platform data for CF/IDE support in AT91SAM9260 ARM: 5632/1: Board-specific data for IDE support on afeb9260 at91_ide: remove headers specific for at91sam9263 Sergey Senozhatsky (3): HID: Avoid double spin_lock_init on usbhid->lock kmemleak: Printing of the objects hex dump x86: Fix uaccess_32.h typo Sergio Aguirre (1): OMAP3: 3430SDP: Fix defconfig Shan Wei (3): cfq: fix the log message after dispatched a request Staging: usb-ip: vhci_hdc:Fix the returned error value ipv4: check optlen for IP_MULTICAST_IF option Shane Huang (3): libata: add SATA PMP revision information for spec 1.2 ahci: Add AMD SB900 SATA/IDE controller device IDs ahci: kill @force_restart and refine CLO for ahci_kick_engine() Shane Wang (2): x86, intel_txt: clean up the impact on generic code, unbreak non-x86 crypto: vmac - New hash algorithm for intel_txt support Shaohua Li (8): [libata] add DMA setup FIS auto-activate feature drm/i915: Support IGD EOS memory hotplug: update zone pcp at memory online memory hotplug: exclude isolated page from pco page alloc memory hotplug: make pages from movable zone always isolatable memory hotplug: alloc page from other node in memory online memory hotplug: migrate swap cache page writeback: move inodes from one super_block together Sheng Yang (6): KVM: Downsize max support MSI-X entry to 256 KVM: No disable_irq for MSI/MSI-X interrupt on device assignment KVM: Fix apic_mmio_write return for unaligned write KVM: Discard unnecessary kvm_mmu_flush_tlb() in kvm_mmu_load() KVM: VMX: Introduce KVM_SET_IDENTITY_MAP_ADDR ioctl KVM: VMX: Fix EPT with WP bit change during paging Shine Liu (3): ASoC: UDA134X: Fix mistaken mute/unmute code ASoC: S3C24XX : Align the peroid size to the buffer size ASoC: S3C platform: Fix s3c2410_dma_started() called at improper time Shyam Sundar (1): [SCSI] qla2xxx: Pad IOCB structure for size requirements. Siddarth Gore (2): [ARM] Kirkwood: Add support for 6281-A1 mtd: m25p80: add support for 3 Macronix flash chips Simon Farnsworth (1): solos: Show Interleaving details for ADSL2 and 2+ Simon Guinot (2): [ARM] orion5x: Add LaCie NAS d2Network support [ARM] orion5x: Add LaCie NAS 2Big Network support Simon Horman (1): ipvs: Use atomic operations atomicly Singh, Vimal (1): mtd: nand_base: allow drivers to choose ECC block size Sneha Narnakaje (3): mtd: nand: add "page" parameter to all read_page/read_page_raw APIs mtd: nand: add new ECC mode - ECC_HW_OOB_FIRST mtd: nand: DaVinci: Add 4-bit ECC support for large page NAND chips Solomon Peachy (1): powerpc/40x: Add support for the ESTeem 195E (PPC405EP) SBC Sonic Zhang (4): printk: Fix "printk: Enable the use of more than one CON_BOOT (early console)" Blackfin: unify duplicated SMP checks in L2 cache kconfig Blackfin: do not try displaying the end of the stack Blackfin: increase default async timings for parallel flashes Sophie Hamilton (1): ALSA: cs46xx - Fix minimum period size Sreenivasa Honnur (9): vxge: Removed ioremap of unused bar addresses and their references vxge: Fixed memory leak by freeing memory allocated for device_config vxge: check for card status before continuing in device close vxge: Corrected Register map entry for xmac_link registers vxge: Removed the code to bounds check the mss value vxge: Fixes in isr routine vxge: Disable fcs stripping. vxge: Printing the function's configured mode of operation vxge: Version update Sridhar Samudrala (8): udpv4: Handle large incoming UDP/IPv4 packets and support software UFO. udpv6: Fix HW checksum support for outgoing UFO packets udpv6: Fix gso_size setting in ip6_ufo_append_data udpv6: Remove unused skb argument of ipv6_select_ident() udpv6: Handle large incoming UDP/IPv6 packets and support software UFO virtio-net: Allow UFO feature to be set and advertised. tun: Allow tap device to send/receive UFO packets. ethtool: device independent rx_csum and get_flags routines Sriram (1): TI Davinci EMAC: Fix in vector definition for EMAC_VERSION_2 Stanislaw Gruszka (5): itimers: Merge ITIMER_VIRT and ITIMER_PROF itimers: Fix periodic tics precision itimers: Simplify arm_timer() code a bit cputime: Optimize jiffies_to_cputime(1) iwlagn: fix panic in iwl{5000,4965}_rx_reply_tx Stanley.Miao (1): omapfb: add support for the ZOOM MDK LCD Stefan Haberland (2): [S390] dasd: optimize cpu usage in goodcase [S390] dasd: fix message naming Stefan Pledl (2): Blackfin: fix BF548 UART0 DMA IRQ translation Blackfin: bf548-ezkit: fix incorrect LCD size parameters Stefan Richter (8): firewire: ohci: fix Self ID Count register mask (safeguard against buffer overflow) firewire: core: header file cleanup firewire: core: fix race with parallel PCI device probe firewire: core: fix topology map response handler firewire: sbp2: fix status reception firewire: sbp2: remove a workaround for Momobay FX-3A ieee1394: sbp2: remove a workaround for Momobay FX-3A V4L/DVB (12583): firedtv: combine some debug logging code Stefan Roese (8): powerpc: Add AMCC 460EX/460GT Rev. B support to cputable.c powerpc/44x: Add NAND support to Canyonlands dts powerpc/40x: Update Kilauea dts to support NAND, RTC and HWMON powerpc/44x: Update Canyonlands defconfig to support NOR, NAND and RTC powerpc/40x: Update kilauea defconfig to support NAND, RTC and HWMON powerpc/44x: Update Arches dts powerpc/44x: Update Arches defconfig mtd: jedec: fix compilation problem with I28F640C3B definition Stefan Steuerwald (1): rt2x00: Implement set_tim callback for all drivers Stefan Weil (1): wl12xx: fix spelling Stefan Weinhuber (2): [S390] dasd: fail requests when device state is less then ready [S390] dasd: tolerate devices that have no feature codes Stefani Seibold (2): ctags: usability fix procfs: provide stack information for threads Steffen Klassert (7): crypto: tcrypt - Test algorithms by name crypto: cryptd - Fix uninitialized return value crypto: ahash - Use GFP_KERNEL on allocation if the request can sleep crypto: shash - Test for the algorithms import function before exporting it crypto: authenc - Convert to ahash crypto: xcbc - Fix alignment calculation of xcbc_tfm_ctx crypto: ansi_cprng - Fix module initialization Stelian Pop (1): ALSA: hda - Enable HP output with Macbook Pro 5, 5 Sten Spans (1): security: fix security_file_lock cmd argument Stephane Marguet (Stemp) (1): V4L/DVB (12690): gspca - pac7311: Webcam 06f8:3009 added. Stephen Gildea (1): fujitsu-laptop: support led-class as module Stephen Hemminger (65): vlan: allow creating vlan when real device is not up sky2: hold spinlock around phy_power_down sky2: hold RTNL when doing suspend/shutdown operations sky2: cleanup restart operations sky2: lock less transmit completion sky2: fix pause negotiation sky2: version 1.24 sky2: remove restarting workaround flag sky2: use upper/lower 32 bits sky2: transmit ring 64 bit conservation sky2: simplify list element error sky2: dynamic size transmit ring sky2: optimize transmit completion sky2: no recycling sky2: version 1.25 bonding: use compare_ether_addr pktgen: minor cleanup pktgen: change inlining pktgen: mark read-only/mostly variables pktgen: stop_device cleanup pktgen: xmit logic reorganization pktgen: cleanup clone count test pktgen: use netdev_alloc_skb pktgen: reorganize transmit loop pktgen: avoid calling gettimeofday pktgen: convert to use ktime_t pktgen: spin using hrtimer pktgen: use common idle routine pktgen: cleanup checkpatch warnings pktgen: increase version netdev: change transmit to limited range type netdev: convert pseudo-devices to netdev_tx_t convert ATM drivers to netdev_tx_t convert hamradio drivers to netdev_txreturnt_t isdn: convert to netdev_tx_t usbnet: convert to netdev_tx_t tokenring: convert to netdev_tx_t wan: convert drivers to netdev_tx_t hdlc: convert to netdev_tx_t netdev: convert pcmcia drivers to netdev_tx_t irda: convert to netdev_tx_t netdev: convert pseudo drivers to netdev_tx_t uwb: convert to netdev_tx_t tulip: convert drivers to netdev_tx_t 3com: convert drivers to netdev_tx_t intel: convert drivers to netdev_tx_t appletalk: convert drivers to netdev_tx_t wireless: convert drivers to netdev_tx_t netdev: convert bulk of drivers to netdev_tx_t sky2: fix management of driver LED net: make neigh_ops constant netdev: drivers should make ethtool_ops const net: seq_operations should be const tcp: MD5 operations should be const inet: inet_connection_sock_af_ops const net: file_operations should be const sky2: only enable Vaux if capable of wakeup wan: dlci/sdla transmit return dehacking net: force bridge module(s) to be GPL dca: module load should not be an error message sky2: transmit ring accounting sky2: Make sure both ports initialize correctly trivial: typo in kernel-parameters.txt pktgen: T_TERMINATE flag is unused pktgen: better scheduler friendliness Stephen Kitt (1): Input: joydev - validate axis/button maps before clobbering current ones Stephen Rothwell (5): net: fix multiple definitions of setup_w6692 powerpc: use consistent types in mktree intel-iommu: include linux/dmi.h to use dmi_ routines KVM: powerpc: fix some init/exit annotations nfsd: return success for non-NFS4 nfs4_state_start Stephen Smalley (1): selinux: restore optimization to selinux_file_permission Steve Dickson (1): nfsd4: nfsv4 clients should cross mountpoints Steve French (4): [CIFS] potential NULL dereference in parse_DFS_referrals() [CIFS] Fix checkpatch warnings [CIFS] Fix build break when keys support turned off [CIFS] Remove build warning Steve Glendinning (3): smsc95xx: remove EEPROM loaded check smsc95xx: add additional USB product IDs smsc95xx: fix transmission where ZLP is expected Steve Holland (3): USB: usbtmc: Fix short reads in usbtmc_read() USB: usbtmc: inhibit corruption USB: usbtmc: correct termination condition for reads. Steve Sakoman (2): omapfb: add support for the OMAP3 EVM LCD omapfb: add support for the Gumstix Overo LCD Steve Wise (8): RDMA/cxgb3: iwch_unregister_device leaks memory RDMA/cxgb3: Set the appropriate IO channel in rdma_init work requests RDMA/cxgb3: Handle port events properly RDMA/cxgb3: Don't free endpoints early RDMA/cxgb3: Wake up any waiters on peer close/abort RDMA/cxgb3: Don't ignore insert_handle() failures RDMA/cxgb3: Clean up properly on FW mismatch failures RDMA/iwcm: Reject the connection when the cm_id is destroyed Steven A. Falco (2): pcmcia: Use phys_addr_t for physical addresses spi: add spi_ppc4xx driver Steven Rostedt (67): ring-buffer: make the buffer a true circular link list ring-buffer: make lockless ring-buffer: add design document sched: Check for pushing rt tasks after all scheduling sched: Add new prio to cpupri before removing old prio perf tools: Add trace event debugfs IO handler perf tools: Add trace event debugfs stream reader perf tools: Add trace event information parser kconfig: add streamline_config.pl to scripts kconfig: make localmodconfig to run streamline_config.pl kconfig: add make localyesconfig option kconfig: streamline_config.pl do not stop with no depends kconfig: do not warn about modules built in kconfig: enable CONFIG_IKCONFIG from streamline_config.pl kconfig: add check if end exists in extract-ikconfig kconfig: have extract-ikconfig read ELF files kconfig: keep config.gz around even if CONFIG_IKCONFIG_PROC is not set kconfig: search for a config to base the local(mod|yes)config on kconfig: unset IKCONFIG_PROC and clean up nesting kconfig: test for /boot/config-uname after /proc/config.gz in localconfig kconfig: make local .config default for streamline_config kconfig: test if a .config already exists kconfig: add missing dependency of conf to localyesconfig tracing/sched: show CPU task wakes up on in trace event tracing: add comments to explain TRACE_EVENT out of protection tracing: remove legacy select of MARKERS by context switch tracing tracing: only show tracing_max_latency when latency tracer configured ring-buffer: do not reset while in a commit ring-buffer: do not swap buffers during a commit ring-buffer: remove unnecessary cpu_relax ring-buffer: fix ring_buffer_read crossing pages ring-buffer: remove ring_buffer_event_discard ring-buffer: do not count discarded events ring-buffer: disable all cpu buffers when one finds a problem tracing: print out start and stop in latency traces tracing: disable update max tracer while reading trace tracing: disable buffers and synchronize_sched before resetting tracing: remove users of tracing_reset tracing: use timestamp to determine start of latency traces tracing: make tracing_reset safe for external use tracing: pass around ring buffer instead of tracer tracing: add trace_array_printk for internal tracers to use tracing: report error in trace if we fail to swap latency buffer ring-buffer: check for swapped buffers in start of committing ring-buffer: only enable ring_buffer_swap_cpu when needed tracing: do not grab lock in wakeup latency function tracing x86/tracing: comment need for atomic nop tracing: add latency format to function_graph tracer tracing: move tgid out of generic entry and into userstack tracing: add lock depth to entries tracing: consolidate code between trace_output.c and trace_function_graph.c tracing: allow filter predicates to handle ksym symbols tracing: use macros to create internal ftrace entry ring buffer structures tracing: show details of structures within the ftrace structures tracing: use the new trace_entries.h to create format files tracing: remove trace_event_types.h tracing: add filter event logic to special, mmiotrace and boot tracers ring-buffer: typecast cmpxchg to fix PowerPC warning tracing: add static to generated TRACE_EVENT functions tracing: have TRACE_EVENT macro use __flags to not shadow parameter tracing: make testing syscall events a separate configuration tracing: optimize global_trace_clock cachelines tracing: remove notrace from __kprobes annotation vsprintf: add %ps that is the same as %pS but is like %pf tracing: switch function prints from %pf to %ps vsnprintf: remove duplicate comment of vsnprintf libfs: make simple_read_from_buffer conventional Steven Toth (33): V4L/DVB (12304): cx23885: Remove hardcoded gpio bits from the encoder driver V4L/DVB (12305): cx23885: Convert existing HVR1800 GPIO calls into new format V4L/DVB (12306): cx23885: Add support for ATSC/QAM on Hauppauge HVR-1850 V4L/DVB (12307): cx23885: Modify hardware revision detection for newer silicon V4L/DVB (12347): cx25840: Bugfix for no DVB-T on the Hauppauge HVR-1700 V4L/DVB (12922): Add the SAA7164 I2C bus identifier V4L/DVB (12923): SAA7164: Add support for the NXP SAA7164 silicon V4L/DVB (12924): SAA7164: Fix some 32/64bit compile time warnings V4L/DVB (12925): SAA7164: Adjust I/F's to the TDA10048 enabling DVB-T lock V4L/DVB (12926): SAA7164: Email address change V4L/DVB (12927): SAA7164: Remove volatiles for PCI writes (coding style violation) V4L/DVB (12928): SAA7164: Increase firmware load tolerance V4L/DVB (12929): SAA7164: OOPS avoidance during interrupt handling V4L/DVB (12930): SAA7164: Removed spurious I2C errors during driver load with DVB-T boards. V4L/DVB (12931): SAA7164: Fix the 88021 definition to work with production boards. V4L/DVB (12932): SAA7164: Fixed the missing eeprom parse on a specific board. V4L/DVB (12933): SAA7164: Fix IRQ related system hang when firmware is not found. V4L/DVB (12934): SAA7164: Fix i2c eeprom read errors during load (some boards). V4L/DVB (12935): SAA7164: Ensure we specify I/F's for all bandwidths V4L/DVB (12936): SAA7164: Added waitsecs module parameter V4L/DVB (12937): SAA7164: Cleanup a printk V4L/DVB (12938): SAA7164: Increase the firmware command timeout to avoid firmware errors. V4L/DVB (12939): SAA7164: Removed a duplicate call to address any PCI quirks. V4L/DVB (12940): SAA7164: IRQ / message timeout related change V4L/DVB (12941): SAA7164: Removed spurious debug V4L/DVB (12942): SAA7164: HVR2250 changes related to attach time tuner configuration V4L/DVB (12943): SAA7164: Add a warning about addr usage V4L/DVB (12944): SAA7164: Minor i2c assignment cleanup V4L/DVB (12945): SAA7164: Ensure the HVR-2200 second tuner is configured in slave mode. V4L/DVB (12946): SAA7164: Add support for a new HVR-2250 hardware revision V4L/DVB (12974): SAA7164: Remove the SAA7164 bus id, no longer required. V4L/DVB (12975): SAA7164: Remove the i2c client_attach/detach support, no longer required. V4L/DVB (12976): SAA7164: Removed bus registration messages from driver startup Steven Whitehouse (13): GFS2: Add online uevent to GFS2 GFS2: Add some more info to uevents GFS2: Improve error handling in inode allocation GFS2: Replace assertion with proper error handling GFS2: Add sysfs link to device GFS2: Add a document explaining GFS2's uevents GFS2: Add explanation of extended attr on-disk format GFS2: Clean up of extended attribute support GFS2: Rename eattr.[ch] as xattr.[ch] GFS2: Remove no_formal_ino generating code GFS2: Be extra careful about deallocating inodes GFS2: Remove unused sysfs file GFS2: Whitespace fixes Stoyan Gaydarov (3): powerpc: ARRAY_SIZE changes in pasemi and powermac code ARRAY_SIZE changes Staging: ARRAY_SIZE changes Stuart Menefy (11): sh: Rework irqflags tracing to fix up CONFIG_PROVE_LOCKING. sh: Remove implicit sign extension from assembler immediates sh: Read from CCN_PVR instead of ROM for delay. sh: generic_in/outs{bwl} optimizations. sh: Optimise memcpy_to/fromio for SH4 sh: Improve comments int SH4 cache flushing code sh: Add sys_cacheflush() call for SH CPUs. sh: Fix underflow in SH udelay() code. sh: Fixes some write posting issues in the interrupt handling for SH sh: Fix overzealous checking in __ioremap() sh: Fix problems with cache flushing when cache is in write-through mode Subrata Modak (2): UBIFS: suppress compilation warning UBIFS: remove unused functions Sudhakar Rajashekhara (19): davinci: EDMA: multiple CCs, channel mapping and API changes davinci: EDMA: add support for dm646x davinci: Pass proper EDMA CC interrupt number for DA830/OMAP-L137 davinci: Rearrange the da830/omap-l137 macros and functions davinci: Add base DA850/OMAP-L138 SoC support davinci: Add support for DA850/OMAP-L138 EVM board davinci: Add EMAC support for da850/omap-l138 davinci: Configure MDIO pins for EMAC davinci: Correct the number of GPIO pins for da850/omap-l138 davinci: Macro to convert GPIO signal to GPIO pin number davinci: Add platform support for da850/omap-l138 GLCD davinci: Add MMC/SD support for da850/omap-l138 davinci: Add NAND flash support for DA850/OMAP-L138 davinci: Add NOR flash support for da850/omap-l138 davinci: Handle pinmux conflict between mmc/sd and nor flash Staging: panel: Add support for TI CLCD interface driver/Makefile: Initialize "mtd" and "spi" before "net" davinci: fb: Frame Buffer driver for TI DA8xx/OMAP-L1xx davinci-fb-frame-buffer-driver-for-ti-da8xx-omap-l1xx-v4 Sujith (37): mac80211: Add a few 802.11n defines for AMPDU parameters ath9k: Trivial fix in Kconfig ath9k: Fix a sparse warning ath9k: Remove redundant HT macros ath9k: Cleanup return values ath9k: Remove a few redundant variables/macros ath9k: Add debug counters for TX ath9k: Remove unneeded assignment of protocol field ath9k: Cleanup function return types ath9k: Try to fix whitespace damage ath9k: Remove a few DEBUG mesages ath9k: Split eeprom.c into manageable pieces ath9k: Cleanup ath9k_hw_4k_set_gain() interface ath9k: Add macros for Antenna Diversity ath9k: Clean antenna configuration for 4K EEPROM chips ath9k: Cleanup TX power calculation for 4K chips ath9k: Remove local chainmask variable ath9k: Update beacon RSSI ath9k: Remove has_hw_phycounters ath9k: Remove duplicate variables ath9k: Fix bug in PCI resume ath9k: Set HW state properly ath9k: Fix TX poll cancelling ath9k: Fix chainmask selection during scanning ath9k: Reduce the frequency of PA offset calibration ath9k: Fix bugs in programming registers during PA CAL ath9k: Handle PA cal usage properly ath9k: Update INITVALs for AR9285 ath9k: Wrap DMA dump function with PS wakeup/restore ath9k: Fix RX Filter handling for BAR ath9k: Fix channelFlags for 2GHZ ath9k: Fix bug in ANI channel handling ath9k: Fix bug in ANI channel handling ath9k: Restore TSF after RESET ath9k: Fix chip wakeup issue ath9k: Fix regression in PA calibration ath9k: Fix RFKILL bugs Sukadev Bhattiprolu (2): fork(): disable CLONE_PARENT for init pidns: deny CLONE_PARENT|CLONE_NEWPID combination Sunil Mushran (1): ocfs2: __ocfs2_abort() should not enable panic for local mounts Suresh Jayaraman (1): PATCH] cifs: fix broken mounts when a SSH tunnel is used (try #4) Suresh Siddha (4): generic-ipi: Allow cpus not yet online to call smp_call_function with irqs disabled x86, pat/mtrr: Rendezvous all the cpus for MTRR/PAT init x86, pat: don't use rb-tree based lookup in reserve_memtype() x86, apic: Use logical flat on intel with <= 8 logical cpus Suzuki Poulose (1): fix compat_sys_utimensat() Swen Schillig (12): [SCSI] zfcp: invalid usage after free of port resources [SCSI] zfcp: fix layering oddities between zfcp_fsf and zfcp_qdio [SCSI] zfcp: Replace fsf_req wait_queue with completion [SCSI] zfcp: Improve request allocation through mempools [SCSI] zfcp: Remove the useless ZFCP_REQ_AUTO_CLEANUP flag [SCSI] zfcp: Move workqueue to adapter struct [SCSI] zfcp: Separate qdio attributes from zfcp_fsf_req [SCSI] zfcp: Move qdio related data out of zfcp_adapter [SCSI] zfcp: Update dbf calls [SCSI] zfcp: introduce _setup, _destroy for qdio and FC [SCSI] zfcp: Apply common naming conventions to zfcp_fc [SCSI] zfcp: resolve false usage of dd_data in fc_rport Syed Rafiuddin (4): ARM: OMAP4: Add McBSP support ARM: OMAP4: Add UART4 support ARM: OMAP4: Update the GPIO support spi: McSPI support for OMAP4 Tai-hwa Liang (1): Input: add new driver for Sentelic Finger Sensing Pad Takashi Iwai (160): ALSA: Add new TLV types for dBwith min/max ALSA: usb-audio - Use the new TLV_DB_MINMAX type ALSA: usb-audio - Correct bogus volume dB information ALSA: hda - Don't call snd_hda_codec_configure in snd_hda_codec_new() ALSA: hda - Add patch module option ALSA: hda - Add description about patch loading ALSA: hda - More description about patch module option Merge branch 'for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into topic/asoc ALSA: hda - Check "beep" hint Merge branch 'fix/hda-samsung-p50' into topic/hda Merge branch 'fix/hda' into topic/hda Merge branch 'topic/hda-patch' into topic/hda ALSA: hda - Merge patch_alc882() and patch_alc883() ALSA: hda - Fix input pinctl for ALC882 auto mode ALSA: hda - Allow FLOAT PCM format Merge branch 'fix/hda' into topic/hda ALSA: hda - Add Cirrus Logic CS420x support ALSA: ice1724 - Fix section mismatch ALSA: hda - Add missing mixer amp initialization for ALC882 ALSA: hda - Manually expand alc882_init_verbs Merge branch 'fix/hda' into topic/hda ALSA: hda - Don't override maxbps for FLOAT sharing with linear formats Merge branch 'fix/hda' into topic/hda ALSA: hda - Fix cirrus codec parsing ALSA: hda - Force to initialize input mixer setup for CS420x ALSA: hda - Add CS420x-specific coef setup ALSA: info - Use krealloc() ALSA: hda - Fix double creation of SPDIF input controls ALSA: hda - Add quirk for MacBook Pro 5,5 with CS4206 ALSA: hda - Add GPIO setup for MacBook pro 5,5 with CS420x ALSA: hda - Fix the speaker volume control name ALSA: hda - Fix compile warnings in patch_cirrus.c ALSA: Fix SG-buffer DMA with non-coherent architectures ALSA: hda - don't build digital output controls if not exist Merge branch 'fix/hda' into topic/hda ALSA: hda - Fix the merge error ALSA: hda - Check codec errors in snd_hda_get_connections() ASoC: Kill direct accesses to driver_data ALSA: hda - Fix the previous sanity check in make_codec_cmd() ALSA: hda - Fix ALC268 parser for mono speaker Merge branch 'fix/hda' into topic/hda ALSA: ctxfi - Native timer support for emu20k2 Merge branch 'fix/ctxfi' into topic/ctxfi ALSA: hda - Reduce click noise at power-saving ALSA: hda - Fix ALC861 auto-mode parser Merge branch 'fix/ctxfi' into topic/ctxfi ALSA: ctxfi - Simple code clean up ALSA: hda - Add description of new models for ALC889/889A Merge branch 'fix/hda' into topic/hda ALSA: hda - Introduce get_wcaps_type() macro ALSA: hda - Add exception for volume-knob in snd_hda_get_connections() ALSA: hda - Reword information messages for BIOS auto-probing mode ALSA: hda - Don't create unneeded digital input source for IDT 92HD71x ALSA: hda - Create Capture controls dynamically ALSA: hda - Don't create analog mixer for IDT92HD71bxx ALSA: hda - Avoid overwrite of jack events with STAC/IDT ALSA: hda - Support auto-mic switching with IDT/STAC codec ALSA: hda - Remove static connection in IDT 92HD71bxx ALSA: hda - Add missing DMUX initialization for auto-mic with STAC/IDT ALSA: hda - No analog mix input source as default for IDT92HD71bxx ALSA: hda - Fix typos of Capture controls. ALSA: hda - Integrate Digital Input Source to Input Source ALSA: hda - Add line-out jack detection on IDT/STAC codecs Merge branch 'fix/hda' into topic/hda Merge branch 'topic/hda-cirrus' into topic/hda Merge branch 'fix/hda' into topic/hda ALSA: hda - Fix line-out jack detection ALSA: hda - Fix line-out jack handling with STAC/IDT codec ALSA: hda - Add quirks for some HP laptops ALSA: hda - Fix Oops due to STAC/IDT auto-mic changes Merge branch 'fix/hda' into topic/hda ALSA: hda - Add auto-mic support for Realtek codecs ALSA: hda - Use only one capture stream for auto-mic ALSA: usb-audio - Fix types taken in min() Merge branch 'fix/hda' into topic/hda ALSA: hda - Check connectivity for auto-mic of Realtek codecs ALSA: hda - Add a white-list for MSI option ALSA: hda - Add setup hook to ALC preset struct ALSA: hda - Clean up init and setup hooks for Realtek codecs ALSA: hda - Enable line-out detection only with speakers Merge branch 'topic/hda-dmic-fix' into topic/hda ALSA: hda - Fix / clean up IDT92HD83xxx codec parser ALSA: hda - Add missing num_adc_nids definition for IDT92HD8xxx ALSA: hda - Fix invalid capture mixers with some ALC268 models Merge branch 'fix/hda' into topic/hda Merge branch 'fix/hda' into topic/hda ALSA: pcm - Fix drain behavior in non-blocking mode ASoC: add missing inclusion of debugfs.h ASoC: Remove unneeded inclusion of linux/regulator/consumer.h ALSA: hda - Reuse ALC268 parser for ALC269 ALSA: hda - Generalize input pin parsing in patch_realtek.c ALSA: hda - Improve auto-cfg mixer name for ALC880 ALSA: hda - Improve auto-cfg mixer name for ALC260 ALSA: hda - Improve auto-cfg mixer name for ALC262 ALSA: hda - Improve auto-cfg mixer name for ALC861-VD ALSA: hda - Improve auto-cfg mixer name for ALC662 ALSA: hda - Add / fix model entries for HD-audio driver ALSA: core - strip too long file names in snd_print*() ALSA: hda - Add more quirk for HP laptops with AD1984A ALSA: Add debug module option ALSA: pcm - Increase protocol version ALSA: Fixed a typo of printk() ALSA: hda - Create "Digital Mic Capture Volume" correctly for IDT codecs ALSA: hda - Fix ALC268/ALC269 headphone pin routing Merge branch 'fix/hda' into topic/hda ALSA: hda - Add support of docking auto-mute/mic for AD1984A laptop model ALSA: hda - Add missing GPIO initialization for AD1984A laptop model ALSA: hda - Add another entry for Nvidia HDMI device ALSA: hda - Unmute docking line-out as default with AD1984A codec ALSA: hda - Fix obsolete CONFIG_SND_DEBUG_DETECT ALSA: hda - Fix input source selection of IDT92HD73xx ALSA: hda - Remove dead codes from patch_sigmatel.c ALSA: hda - Add support of Alienware M17x laptop ALSA: dummy - Support high-res timer mode ALSA: dummy - Better jiffies handling ALSA: dummy - Add more description ALSA: dummy - Fix the timer calculation in systimer mode ALSA: dummy - Fake buffer allocations ALSA: Remove struct snd_monitor_file from public sound/core.h ALSA: Remove unneeded ifdef from sound/core.h ALSA: hda - Use auto model for HP laptops with ALC268 codec ALSA: Re-export snd_pcm_format_name() function ALSA: Add const prefix to proc helper functions ALSA: dummy - Add debug proc file ALSA: dummy - Increase MAX_PCM_SUBSTREAMS to 128 Merge branch 'topic/ali5451-cleanup' into for-linus Merge branch 'topic/asoc' into for-linus Merge branch 'topic/azt3328' into for-linus Merge branch 'topic/cleanup' into for-linus Merge branch 'topic/cmi8330' into for-linus Merge branch 'topic/cs46xx' into for-linus Merge branch 'topic/ctl-add-remove-fixes' into for-linus Merge branch 'topic/ctxfi' into for-linus Merge branch 'topic/dma-sgbuf' into for-linus Merge branch 'topic/dummy' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'topic/hdsp' into for-linus Merge branch 'topic/ice1724-pm' into for-linus Merge branch 'topic/midi' into for-linus Merge branch 'topic/misc' into for-linus Merge branch 'topic/oss' into for-linus Merge branch 'topic/oxygen' into for-linus Merge branch 'topic/pcm-drain-nonblock' into for-linus Merge branch 'topic/pcm-estrpipe-in-pm' into for-linus Merge branch 'topic/snd-printk' into for-linus Merge branch 'topic/soundcore-preclaim' into for-linus Merge branch 'topic/tlv-minmax' into for-linus Merge branch 'topic/usb-audio' into for-linus Merge branch 'topic/ymfpci' into for-linus ALSA: hda - Add missing model=auto entry for ALC269 ALSA: hda - Set default GPIO for STAC/IDT codecs ALSA: hda - Set default GPIO for IDT92HD71bxx ALSA: hda - Fix HP/line-out initialization with IDT/STAC codecs ALSA: hda - Add support for HP dv6 ALSA: hda - Fix IDT92HD83* codec setup ALSA: hda - Fix Dell S14 pin setup ALSA: hda - Fix MSI GX620 mixer Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus ALSA: pcm - Simplify snd_pcm_drain() implementation Tao Ma (42): ocfs2: Define refcount tree structure. ocfs2: Add metaecc for ocfs2_refcount_block. ocfs2: Add ocfs2_read_refcount_block. ocfs2: Abstract caching info checkpoint. ocfs2: Add new refcount tree lock resource in dlmglue. ocfs2: Add caching info for refcount tree. ocfs2: Add refcount tree lock mechanism. ocfs2: Basic tree root operation. ocfs2: Wrap ocfs2_extent_contig in ocfs2_extent_tree. ocfs2: Abstract extent split process. ocfs2: Add refcount b-tree as a new extent tree. ocfs2: move tree path functions to alloc.h. ocfs2: Add support for incrementing refcount in the tree. ocfs2: Add support of decrementing refcount for delete. ocfs2: Add functions for extents refcounted. ocfs2: Decrement refcount when truncating refcounted extents. ocfs2: Add CoW support. ocfs2: CoW refcount tree improvement. ocfs2: Integrate CoW in file write. ocfs2: CoW a reflinked cluster when it is truncated. ocfs2: Add normal functions for reflink a normal file's extents. ocfs2: handle file attributes issue for reflink. ocfs2: Return extent flags for xattr value tree. ocfs2: Abstract duplicate clusters process in CoW. ocfs2: Add CoW support for xattr. ocfs2: Remove inode from ocfs2_xattr_bucket_get_name_value. ocfs2: Abstract the creation of xattr block. ocfs2: Abstract ocfs2 xattr tree extend rec iteration process. ocfs2: Attach xattr clusters to refcount tree. ocfs2: Call refcount tree remove process properly. ocfs2: Create an xattr indexed block if needed. ocfs2: Add reflink support for xattr. ocfs2: Modify removing xattr process for refcount. ocfs2: Don't merge in 1st refcount ops of reflink. ocfs2: Make transaction extend more efficient. ocfs2: Use proper parameter for some inode operation. ocfs2: Create reflinked file in orphan dir. ocfs2: Add preserve to reflink. ocfs2: Implement ocfs2_reflink. ocfs2: Enable refcount tree support. ocfs2: Add ioctl for reflink. ocfs2: Use buffer IO if we are appending a file. Tejun Heo (68): percpu: use dynamic percpu allocator as the default percpu allocator linker script: throw away .discard section percpu: cleanup percpu array definitions percpu: use DEFINE_PER_CPU_SHARED_ALIGNED() percpu: clean up percpu variable definitions percpu: implement optional weak percpu definitions alpha: kill unnecessary __used attribute in PER_CPU_ATTRIBUTES alpha: switch to dynamic percpu allocator s390: switch to dynamic percpu allocator sparc64: fix build breakage introduced by percpu-convert-most patchset percpu: use __weak only in the definition of weak percpu variables Merge branch 'master' into for-next x86: make pcpu_chunk_addr_search() matching stricter percpu: drop @unit_size from embed first chunk allocator x86,percpu: generalize 4k first chunk allocator percpu: make 4k first chunk allocator map memory x86,percpu: generalize lpage first chunk allocator percpu: simplify pcpu_setup_first_chunk() percpu: reorder a few functions in mm/percpu.c percpu: drop pcpu_chunk->page[] percpu: allow non-linear / sparse cpu -> unit mapping percpu: teach large page allocator about NUMA linker script: unify usage of discard definition percpu: add dummy pcpu_lpage_remapped() for !CONFIG_SMP x86, percpu: Fix DECLARE/DEFINE_PER_CPU_PAGE_ALIGNED() x86, percpu: Collect hot percpu variables into one cacheline chrdev: implement __[un]register_chrdev() sound: request char-major-* module aliases for missing OSS devices sound: make OSS device number claiming optional and schedule its removal Merge branch 'percpu-for-linus' into percpu-for-next percpu: fix pcpu_reclaim() locking percpu: improve boot messages percpu: rename 4k first chunk allocator to page percpu: build first chunk allocators selectively percpu: generalize first chunk allocator selection percpu: drop @static_size from first chunk allocators percpu: make @dyn_size mandatory for pcpu_setup_first_chunk() percpu: add @align to pcpu_fc_alloc_fn_t percpu: move pcpu_lpage_build_unit_map() and pcpul_lpage_dump_cfg() upward percpu: introduce pcpu_alloc_info and pcpu_group_info percpu: add pcpu_unit_offsets[] percpu: add chunk->base_addr vmalloc: separate out insert_vmalloc_vm() vmalloc: implement pcpu_get_vm_areas() percpu: use group information to allocate vmap areas sparsely percpu: update embedding first chunk allocator to handle sparse units x86,percpu: use embedding for 64bit NUMA and page for 32bit NUMA percpu: kill lpage first chunk allocator sparc64: use embedding percpu first chunk allocator powerpc64: convert to dynamic percpu allocator libata: clear eh_info on reset completion libata: remove spindown skipping and warning sata_sis: convert to slave_link libata: unbreak TPM filtering by reorganizing ata_scsi_pass_thru() dmi: fix date handling in dmi_get_year() dmi: extend dmi_get_year() to dmi_get_date() ahci: make ahci_asus_m2a_vm_32bit_only() quirk more generic ahci: Gigabyte GA-MA69VM-S2 can't do 64bit DMA libata: fix off-by-one error in ata_tf_read_block() PCI: apply nv_msi_ht_cap_quirk on resume too PCI: separate out pci_add_dynid() PCI: pci-stub: add pci_stub.ids parameter block: use the same failfast bits for bio and request block: implement mixed merge of different failfast requests scsi,block: update SCSI to handle mixed merge failures Merge branch 'for-next' into for-linus ahci: restore pci_intx() handling libata: fix spurious WARN_ON_ONCE() on port freeze Tero Kristo (4): OMAP: PM debug: Add PRCM register dump support OMAP: PM: Added suspend target state control to debugfs for OMAP3 OMAP: SDRC: Add several new register definitions spi: McSPI saves CHCONFx too Tetsuo Handa (3): TOMOYO: Move tomoyo_delete_domain(). TOMOYO: Remove next_domain from tomoyo_find_next_domain(). seq_file: return a negative error code when seq_path_root() fails. Thadeu Lima de Souza Cascardo (5): trivial: fix typo in ieee802154 documentation and add it to index trivial: remove duplicate "different" from comment leds: fix coding style in worker thread code for ledtrig-gpio. PM: Fix typo in label name s/Platofrm_finish/Platform_finish/ trivial: fix typo s/ketymap/keymap/ in comment Theodore Kilgore (2): V4L/DVB (12459): gspca - jeilinj: New subdriver for Jeilin chip. V4L/DVB (12618): gspca: mr97310a add support for CIF and more VGA camera's Theodore Ts'o (22): ext4: Avoid null pointer dereference when decoding EROFS w/o a journal ext4: Add configurable run-time mballoc debugging ext4: Display the mballoc flags in mb_history in hex instead of decimal ext4: Fix bugs in mballoc's stream allocation mode ext4: Avoid group preallocation for closed files ext4: fix extent sanity checking code with AGGRESSIVE_TEST ext4: Limit number of links that can be created by ext4_link() ext4: Fix spelling typo in the trace format for trace_ext4_da_writepages() ext4: Restore wbc->range_start in ext4_da_writepages() ext4: Add new tracepoint: trace_ext4_da_write_pages() ext4: fix tracepoint format string warnings ext4: Remove journal_checksum mount option and enable it by default ext4: print more sysadmin-friendly message in check_block_validity() ext4: Use bforget() in no journal mode for ext4_journal_{forget,revoke}() ext4: Assure that metadata blocks are written during fsync in no journal mode ext4: Don't update superblock write time when filesystem is read-only ext4: Fix async commit mode to be safe by using a barrier ext4: Fix initalization of s_flex_groups ext4: Fix include/trace/events/ext4.h to work with Systemtap ext4: store EXT4_EXT_MIGRATE in i_state instead of i_flags ext4: Add a tracepoint for ext4_alloc_da_blocks() ext4: Fix the alloc on close after a truncate hueristic Thierry Reding (2): backlight: Add support for the Avionic Design Xanthos backlight device. [WATCHDOG] Add support for the Avionic Design Xanthos watchdog timer. Thomas Abraham (3): ARM: S3C6410: use correct divider_shift in setrate_clksrc() ARM: S3C6410: update clk->parent when setting clock source ARM: S3C64XX: Fix divider value calculation in s3c64xx_roundrate_clksrc Thomas Gleixner (58): genirq: Remove obsolete defines and typedefs timekeeping: Move ktime_get() functions to timekeeping.c sched: Fix return value of migration_init() Merge branch 'linus' into timers/core clocksource: Call clocksource_change_rating() outside of watchdog_lock genirq: Add oneshot support genirq: Add buslock support genirq: Support nested threaded irq handling clocksource: Protect the watchdog rating changes with clocksource_mutex x86: Do not unregister PIT clocksource on PIT oneshot setup/shutdown Bluetooth: Convert hdev->req_lock to a mutex genirq: Do not mask oneshot edge type interrupts init: Move sched_clock_init after late_time_init Merge branch 'x86/paravirt' into x86/cleanups Merge branch 'sched/clock' into x86/cleanups x86: Add x86_init infrastructure x86: Add probe_roms to x86_init x86: Add request_standard_resources to x86_init x86: Add reserve_ebda_region to x86_init_ops x86: Move memory_setup to x86_init_ops x86: Sanitize smp_record and move it to x86_init_ops x86: Move ioapic_ids_setup to x86_init_ops x86: Move mpc_apic_id to x86_init_ops x86: Move smp_read_mpc_oem to x86_init_ops. x86: Move mpc_oem_pci_bus to x86_init_ops x86: Move oem_bus_info to x86_init_ops clocksource: Resolve cpu hotplug dead lock with TSC unstable Merge branch 'timers/posixtimers' into timers/tracing x86: Move get/find_smp_config to x86_init_ops x86: Move pre_intr_init to x86_init_ops x86: Move irq_init to x86_init_ops x86: Move traps_init to x86_init_ops x86: Replace ARCH_SETUP by a proper x86_init_ops x86: Move paravirt banner printout to x86_init_ops x86: Move paravirt pagetable_setup to x86_init_ops x86: Move xen_post_allocator_init into xen_pagetable_setup_done x86: Move percpu clockevents setup to x86_init_ops x86: Add timer_init to x86_init_ops x86: Remove do_timer hook x86: Prepare unification of time_32/64.c x86: Simplify timer_ack magic in time_32.c x86: Remove mca bus ifdef from timer interrupt x86: Make timer setup and global variables the same in time_32/64.c x86: Move calibrate_cpu to tsc.c x86: time_32/64.c unify profile_pc x86: Replace the now identical time_32/64.c by time.c x86: Move tsc_calibration to x86_init_ops x86: Move tsc_init to late_time_init x86: Add early platform detection x86: Add Moorestown early detection x86: Distangle ioapic and i8259 x86: apic namespace cleanup clocksource: clocksource_select must be called with mutex locked clocksource: Delay clocksource down rating to late boot time: Prevent 32 bit overflow with set_normalized_timespec() sfi: Remove unused code x86: platform: Fix section annotations fs: Make unload_nls() NULL pointer safe Thomas Hellstrom (6): drm: Enable drm drivers to add drm sysfs devices. drm/ttm: Add a virtual ttm sysfs device. drm/ttm: Memory accounting rework. ttm: Make parts of a struct ttm_bo_device global. drm/ttm: Fixes for "Make parts of a struct ttm_bo_device global" drm/ttm: Fixes for "Memory accounting rework." Thomas Ilnseher (1): b43: Add LP PHY Analog Switch Support Thomas Liu (6): selinux: clean up avc node cache when disabling selinux Move variable function in lsm_audit.h into SMACK private space security: Make lsm_priv union in lsm_audit.h anonymous security: Wrap SMACK and SELINUX audit data structs in ifdefs SELinux: Convert avc_audit to use lsm_audit.h SELinux: Convert avc_audit to use lsm_audit.h Thomas Renninger (3): [CPUFREQ] Bail out of cpufreq_add_dev if the link for a managed CPU got created [CPUFREQ] Introduce global, not per core: /sys/devices/system/cpu/cpufreq [CPUFREQ] ondemand - Use global sysfs dir for tuning settings Tiago Vignatti (1): PCI/VGA: add VGA arbitration documentation Tiejun Chen (2): powerpc/405ex: provide necessary fixup function to support cuImage powerpc/405ex: support cuImage via included dtb Tilman Schmidt (1): tty: gigaset: really fix chars_in_buffer Tim Abbott (33): sh: Clean up linker script using new linker script macros. sh: Clean up linker script using new BSS_SECTION macro. [S390] Use macros for .data.page_aligned. [IA64] Use .ref.text, not .text.init for start_ap. m68knommu: Make PAGE_SIZE available to assembly files. x86: convert compressed loader to use __HEAD and HEAD_TEXT macros. x86: convert to use __HEAD and HEAD_TEXT macros. x86: Use section .data.page_aligned for the idt_table. x86: Cleanup linker script using new linker script macros. kbuild: Don't define ALIGN and ENTRY when preprocessing linker scripts. Use macros for .bss.page_aligned section. Use macros for .data.page_aligned section. microblaze: Cleanup linker script using new linker script macros. m32r: make PAGE_SIZE available to assembly. m32r: Define THREAD_SIZE only once. m32r: Move GET_THREAD_INFO definition out of asm/thread_info.h. m32r: Remove unused .altinstructions and .exit.* code from linker script. m32r: Move the spi_stack_top and spu_stack_top into .init.data section. m32r: Cleanup linker script using new linker script macros. score: Make PAGE_SIZE available to assembly. score: Make THREAD_SIZE available to assembly files. score: Cleanup linker script using new macros. powerpc: Cleanup linker script using new linker script macros. Optimize the ordering of sections in RW_DATA_SECTION. parisc: Clean up linker script using new linker script macros. parisc: Remove useless altinstructions code copied from x86. xtensa: Cleanup linker script using new linker script macros. um: Clean up linker script using standard macros. h8300: Cleanup linker script using new linker script macros. mn10300: Clean up linker script using higher-level macros. blackfin: Cleanup linker script using new linker script macros. powerpc: Cleanup linker script using new linker script macros. alpha: use .data.init_task instead of .data.init_thread. Tim Blechmann (3): ALSA: hdsp - allow proc reporting with disconnected io box ALSA: lx6464es - cleanup of rmh message bus function ALSA: lx6464es - remove unused struct member Tim Small (1): USb: Break support for WinChipHead CH341 340 USB->Serial "chip" Timo Kokkonen (1): OMAP3: rx51_defconfig: add twl4030 to rx51 default configuration Timofei Bondarenko (1): mtd/maps: uclinux: fix building when partition support is disabled Tobias Doerffel (1): x86: add specific support for Intel Atom architecture Tobias Klauser (8): net: Rename lookup_neigh_params function netfilter: ebtables: Use %pM conversion specifier ext4: Declare seq_operations and file_operations structures as const RDMA/amso1100: Use %pM conversion specifier x86: Make memtype_seq_ops const niu: Use resource_size instead of private function dm9000: Remove unnecessary memset of netdev private data dm9000: Use resource_size instead of private macro Tobias Lorenz (4): V4L/DVB (12142): radio-si470x: Add suport for RDS endpoint interrupt mode V4L/DVB (12143): radio-si470x: cleanups V4L/DVB (12144): radio-si470x: removed v4l2_queryctrl in favor of v4l2_ctrl_query_fill V4L/DVB (12417): I2C cleanups and version checks Tom Picard (1): ioat3: ioat3.2 pci ids for Jasper Forest Tom Zanussi (2): tracing/filters: Don't use pred on alloc failure tracing/filters: add filter Documentation Tomas Kovacik (1): pcmcia: disable prefetch/burst for OZ6933 Tomas Winkler (4): iwlwifi: drop sw_crypto from hw_params. iwlwifi: unify iwl_setup_rxon_timing imwc3200: move iwmc3200 SDIO ids to sdio_ids.h rfkill: add the GPS radio type Tomáš ÄŚech (1): [ARM] pxa/treo680: move LCD power GPIO to proper place Tony Breeds (1): powerpc: Check for unsupported relocs when using CONFIG_RELOCATABLE Tony Lindgren (5): OMAP: Remove OMAP_IO_ADDRESS, use OMAP1_IO_ADDRESS and OMAP2_IO_ADDRESS instead OMAP: Rename OMAP_MPUIO_BASE to OMAP1_MPUIO_BASE OMAP: Remove ifdefs for io.h Merge branch 'pm-upstream/debug' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into for-next Merge branch '2_6_32_for_next' of git://git.pwsan.com/linux-2.6 into for-next Tony Luck (1): [IA64] implement ticket locks for Itanium Trent Piepho (7): V4L/DVB (12287): dvb-pll: Add Samsung TDTC9251DH0 DVB-T NIM V4L/DVB (12288): dvb-pll: Add support for Samsung TBDU18132 DVB-S NIM V4L/DVB (12289): dvb-pll: Add support for Samsung TBMU24112 DVB-S NIM V4L/DVB (12290): dvb-pll: Add support for Alps TDEE4 DVB-C NIM V4L/DVB (12292): b2c2: Use dvb-pll for AirStar DVB-T's tuner V4L/DVB (12293): b2c2: Use dvb-pll for Skystar2 rev 2.3 and rev 2.6 V4L/DVB (12294): b2c2: Use dvb-pll for Cablestar2 Trevor Keith (3): kbuild: add static to prototypes trivial: kbuild: remove extraneous blank line after declaration of usage() Fix all -Wmissing-prototypes warnings in x86 defconfig Trond Myklebust (39): NFSv4: Don't loop forever on state recovery failure... NFSv4: Add 'server capability' flags for NFSv4 recommended attributes NFSv4: Don't do idmapper upcalls for asynchronous RPC calls SUNRPC: convert some sysctls into module parameters NFSv4: Clean up the nfs.callback_tcpport option SUNRPC: Constify rpc_pipe_ops... SUNRPC: Allow rpc_pipefs_ops to have null values for upcall and downcall SUNRPC: Clean up rpc_pipefs lookup code... SUNRPC: Clean up file creation code in rpc_pipefs SUNRPC: Clean up rpc_unlink() SUNRPC: Clean up rpc_lookup_create SUNRPC: Clean up rpc_populate/depopulate SUNRPC: rpc_pipefs cleanup SUNRPC: Rename rpc_mkdir to rpc_create_client_dir() SUNRPC: Clean up rpc_create_client_dir() SUNRPC: Replace rpc_client->cl_dentry and cl_mnt, with a cl_path SUNRPC: clean up rpc_setup_pipedir() SUNRPC: One more clean up for rpc_create_client_dir() NFSD: Clean up the idmapper warning... SUNRPC: Ensure we initialise the cache_detail before creating procfs files SUNRPC: Remove the global temporary write buffer in net/sunrpc/cache.c SUNRPC: Allow the cache_detail to specify alternative upcall mechanisms SUNRPC: Move procfs-specific stuff out of the generic sunrpc cache code SUNRPC: Add an rpc_pipefs front end for the sunrpc cache code NFS: Add a ->migratepage() aop for NFS Merge branch 'patches_cel-for-2.6.32' into nfs-for-2.6.32 Merge branch 'sunrpc_cache-for-2.6.32' into nfs-for-2.6.32 Merge branch 'nfsv4_xdr_cleanups-for-2.6.32' into nfs-for-2.6.32 SUNRPC: Fix a typo in cache_pipefs_files NFS: Add a dns resolver for use with NFSv4 referrals and migration NFS: Use the DNS resolver in the mount code. SUNRPC: cache must take a reference to the cache detail's module on open() SUNRPC: Ensure that sunrpc gets initialised before nfs, lockd, etc... NFSD: Fix a bug in the NFSv4 'supported attrs' mandatory attribute NFSd: Fix filehandle leak in exp_pseudoroot() and nfsd4_path() NFSv4: Disallow 'mount -t nfs4 -overs=2' and 'mount -t nfs4 -overs=3' Merge branch 'nfs-for-2.6.32' SUNRPC: Defer the auth_gss upcall when the RPC call is asynchronous NFS: Get rid of the NFS_MOUNT_VER3 and NFS_MOUNT_TCP flags Troy Heber (1): pci/dmar: correct off-by-one error in dmar_fault() Troy Kisky (11): ASoC: DaVinci: i2s, remove MOD_REG_BIT macro ASoC: DaVinci: i2s toggle clock to complete reset ASoc: DaVinci: i2s, minor cleanup ASoC: DaVinci: i2s cleanup ASoC: DaVinci: i2s, only start sample generator if needed ASoC: DaVinci: i2s, minor cleanup of davinci_i2s_startup ASoC: DaVinci: i2s, fix mcbsp_word_length update ASoC: DaVinci: i2s, add davinci_i2s_prepare and shutdown ASoC: DaVinci: pcm, don't play 1st sound period twice ASoC: DaVinci: i2s: don't bounce through rtd to get dai ASoC: DaVinci: pcm, constrain buffer size to multiple of period Tushar Gohad (1): IPv6/addrconf: Fix minor addrlabel thinko Tyler Hicks (6): eCryptfs: Handle unrecognized tag 3 cipher codes eCryptfs: Check for O_RDONLY lower inodes when opening lower files eCryptfs: Filename encryption only supports password auth tokens eCryptfs: Validate global auth tok keys eCryptfs: Propagate vfs_read and vfs_write return codes eCryptfs: Prevent lower dentry from going negative during unlink Ulrich Drepper (1): perf tools: Avoid unnecessary work in directory lookups Ursula Braun (2): qeth: display "undefined" value of sysfs-attribute "layer2" iucv: suspend/resume error msg for left over pathes Uwe Bugla (1): V4L/DVB (12902): Documentation: synchronize documentation for Technisat cards Uwe Kleine-Koenig (3): trivial: fix typos "man[ae]g?ment" -> "management" trivial: Fix duplicated word "options" in comment trivial: fix typo in aic7xxx comment Uwe Kleine-König (20): [ARM] 5613/1: implement CALLER_ADDRESSx net: move sgiseeq's probe function to .devinit.text net: move jazzsonic's probe function to .devinit.text net: move meth's probe function to .devinit.text net: move sb1250-mac's probe function to .devinit.text net: move xtsonic's probe function to .devinit.text net: move macsonic's probe function to .devinit.text ASoC: s3c2443-ac97: convert semaphore to mutex netx: Use get_irqnr_preamble to initialize base register [ARM] support tracing when using newer compilers Complete irq tracing support for ARM Use kernel/Kconfig.preempt for ARM [ARM] let arch/arm/Kconfig source drivers/Kconfig fec: fix recursive locking of mii_lock fec: don't enable irqs in hard irq context backlight: move hp680-bl's probe function to .devinit.text leds: move leds-clevo-mail's probe function to .devinit.text Staging: fix typos "man[ae]g?ment" -> "management" mtd: nand: register orion_nand using platform_driver_probe() mmc: register mmci-omap-hs using platform_driver_probe Valentin Longchamp (7): mx31: added one more pin definition mx31moboard: added usb xcvr reset for mx31moboard mx31moboard: move usb otg support back to moboard common file mx31: define various GPIOs used on mx31moboard mx31moboard: support for the 4 leds used on mx31moboard mx31moboard: initialize 4 input gpios for mx31moboard mx31moboard: two GPIOS are used to reset other microcontrolers on the robot Vasanthakumar Thiagarajan (36): ath9k: Nuke unneccesary helper function to see if aggr is active ath9k: Remove unnecessary count for addba attempt ath9k: downgrade ASSERT() in ath_clone_txbuf() ath9k: Make sure we configure a non-zero beacon interval ath9k: Remove dead code in rate control ath9k: Remove unused members from rate control structure ath9k: Use probe interval instead of rssi reduce interval ath9k: Nuke struct ath_tx_ratectrl_state ath9k: Remove bogus assert in ath_clone_txbuf() ath9k: Handle tx desc shortage more appropriately ath9k: Remove pointless ath9k_ps_restore() in ath_detach() ath9k: Update rate control for 11NA HT40 mode ath9k: Maintain monotonicity of PER while going across different phy ath9k: Remove unused ath9k_hw_intrget() ath9k: Fix bug in retrieving average beacon rssi ath9k: Nuke struct ath9k_node_stats ath9k: Split ath9k_hw_btcoex_enable() into two logical pieces ath9k: Move btcoex stuff from hw.[ch] to new btcoex.[ch] ath9k: Configure btcoex register during every reset ath9k: Move btcoex related data to a separate struct ath9k: Determine btcoex scheme type based on chip version ath9k: Remove hw capability bit meant for btcoex ath9k: Add infrastructure for generic hw timers ath9k: Add Bluetooth Coexistence 3-wire support ath9k: Do an AHB reset before doing RTC reset ath9k: Move generic hw timer intr handler to bottom-half ath9k: Call spin_lock_bh() on btcoex_lock ath9k: Disable ASPM when btcoex is active ath9k: Remove unnecessary casting to u8 in pci_read_config_byte() call ath9k: Store subsystem id in struct hw_version ath9k: Enable btcoex based on the subsystem id of the device ath9k: Get rid of the modparam btcoex_enable ath9k: Initialize the priority gpio for BT coex 3-wire ath9k: Fix rx data corruption ath9k: Don't read NF when chip has gone through full sleep mode ath9k: Do a full reset for AR9280 Vasiliy Temnikov (1): V4L/DVB (12574): support AverMedia Studio 505 Vasu Dev (9): vlan: adds fcoe offload related net_device_ops and updates fcoe_ddp_xid field ixgbe: updates vlan feature flags to enable FCoE offloads on vlan interface [SCSI] fcoe, libfc: adds exchange manager(EM) anchor list per lport and related APIs [SCSI] fcoe, fnic, libfc: modifies current code paths to use EM anchor list [SCSI] fcoe: modifies fcoe_hostlist_lock uses as prep work to add shared offload EM [SCSI] fcoe, libfc: adds offload EM per eth device with only single xid range per EM [SCSI] fcoe: removes phys_dev and renames real_dev to netdev. [SCSI] fcoe, libfc: adds per cpu exch pool within exchange manager(EM) [SCSI] fcoe, libfc: fully makes use of per cpu exch pool and then removes em_lock Vegard Nossum (3): kmemcheck: remove useless check kmemcheck: update documentation fs: fix overflow in sys_mount() for in-kernel calls Venkatesh Pallipadi (10): x86, pat: Keep identity maps consistent with mmaps even when pat_disabled x86, pat: ioremap to follow same PAT restrictions as other PAT users x86, pat: New i/f for driver to request memtype for IO regions x86, pat: Add PAT reserve free to io_mapping* APIs x86, pat: Add rbtree to do quick lookup in memtype tracking x86, pat: Generalize the use of page flag PG_uncached x86, pat: Use page flags to track memtypes of RAM pages x86, pat: Add lookup_memtype to get the current memtype of a paddr x86, pat: Lookup the protection from memtype list on vm_insert_pfn() x86, pat: Sanity check remap_pfn_range for RAM region Vidhya Govindan (1): wl12xx: Assign value to rx msdu lifetime variable Vikram Kandukuri (2): Bluetooth: Fix missing scheduling when VIRTUAL_CABLE_UNPLUG is received Bluetooth: Improve USB driver throughput by increasing the frame size Vikram Pandita (7): OMAP2/3: Pass irqflags to 8250 driver OMAP3: MMC: Add mux for pins OMAP3: Zoom2: Add TWL4030 support OMAP3: Zoom2: Update board defconfig OMAP: Zoom2: update serial platform_data id for external UART OMAP: Zoom2: release debug board detect gpio line serial: 8250: add IRQ trigger support Ville Syrjala (1): atyfb: coding style cleanup Vincent Li (4): mm/vmscan: rename zone_nr_pages() to zone_nr_lru_pages() mm/vmscan: remove page_queue_congested() comment fs/proc/task_mmu.c v1: fix clear_refs_write() input sanity check fs/proc/base.c: fix proc_fault_inject_write() input sanity check Vipin Bhandari (1): mfd: Correct ro and cd implemantion on DM355 Vitaliy Gusev (2): [S390] hypfs: remove useless variable qname mlx4: Fix access to freed memory Vitaly Mayatskikh (2): do_wait: fix sys_waitid()-specific behaviour wait_noreap_copyout(): check for ->wo_info != NULL Vivek Goyal (1): cfq-iosched: no need to keep track of busy_rt_queues Vivek Natarajan (14): ath9k: Add AR9287 based chipsets' register information. ath9k: Add init values for AR9287 based chipsets. ath9k: Add support for AR9287 based chipsets. ath9k: Add open loop power control support for AR9287. ath9k: Set AR_WA for AR9287 as it improves consistency in throughput. ath9k: Enable LEDs for AR9287 chipsets. ath9k: Fix ref power interpolation logic for AR9287 chipsets. ath9k: Updates for AR9287_12 version of chipset. ath9k: Reconfigure beacon timers after the scan is completed. ath9k: Set default noise floor value for AR9287 ath9k: Revamp PCIE workarounds ath9k: Fix AHB reset for AR9280 ath9k: Disable autosleep feature by default. ath9k: Initialize txgain and rxgain for newer AR9287 chipsets. Vlad Yasevich (18): sctp: release cached route when the transport goes down. sctp: Disallow new connection on a closing socket sctp: Fix data segmentation with small frag_size sctp: Generate SACKs when actually sending outbound DATA sctp: Try to encourage SACK bundling with DATA. sctp: Send user messages to the lower layer as one sctp: Fix error count increments that were results of HEARTBEATS sctp: Clear fast_recovery on the transport when T3 timer expires. sctp: drop a_rwnd to 0 when receive buffer overflows. sctp: Try not to change a_rwnd when faking a SACK from SHUTDOWN. sctp: Nagle delay should be based on path mtu sctp: Don't do NAGLE delay on large writes that were fragmented small sctp: Fix SCTP_MAXSEG socket option to comply to spec. sctp: Failover transmitted list on transport delete sctp: Correctly track if AUTH has been bundled. sctp: Turn flags in 'sctp_packet' into bit fields sctp: Get rid of an extra routing lookup when adding a transport. sctp: Catch bogus stream sequence numbers Vladimir Geroy (1): V4L/DVB (13014): Add support for Compro VideoMate E800 (DVB-T part only) Vladimir Serbinenko (1): ACPI video: ignore buggy _BQC Vlastimil Labsky (1): V4L/DVB (12439): cx88: add support for WinFast DTV2000H rev. J WANG Cong (1): SLUB: Drop write permission to /proc/slabinfo Wan Wei (1): amd64_edac: Rewrite unganged mode code of f10_early_channel_count Wan ZongShun (7): Input: w90p910_ts - use clk API Input: add keypad driver for w90p910 Add support for w90p910 mac driver Input: w90p910_keypad - rename driver name to match platform [WATCHDOG] Add watchdog driver for NUC900 mtd: add nand support for w90p910 (v2) USB: Add nuvoton Ehci driver for w90p910 platform Wei Yongjun (11): svcrdma: fix error handling of rdma_alloc_frmr() sunrpc: reply AUTH_BADCRED to RPCSEC_GSS with unknown service sunrpc: move the close processing after do recvfrom method sctp: avoid overwrite the return value of sctp_process_asconf_ack() sctp: check the unrecognized ASCONF parameter before access it sctp: update the route for non-active transports after addresses are added sctp: drop SHUTDOWN chunk if the TSN is less than the CTSN sctp: fix check the chunk length of received HEARTBEAT-ACK chunk sctp: fix to reset packet information after packet transmit sctp: turn flags in 'struct sctp_association' into bit fields sctp: remove dup code in net/sctp/output.c Wending Weng (1): Bluetooth: Fix false errors from bcsp_pkt_cull function Wengang Wang (2): GFS2: free disk inode which is deleted by remote node -V2 ocfs2: add spinlock protection when dealing with lockres->purge. Wey-Yi Guy (44): iwlwifi: modify sensitivity value for 5150 iwlwifi: no need to refer to max_nrg_cck range value iwlwifi: remove disable_tx_power for device > 4965 iwlwifi: move show_qos to debugfs iwlagn: modify digital SVR for 1000 iwlwifi: fix rx signal quality reporting in dmesg iwlwifi: make led functions generic iwlwifi: add led debugfs function iwlwifi: Led blinking counting both tx and rx iwlwifi: checking unknown HW type iwlwifi: uCode Alive notification with timeout iwlwifi: change iwl_enable/disable_interrupts to "inline" iwlwifi: revert to active table when rate is not valid iwlwifi: critical temperature enter/exit condition iwlwifi: Thermal Throttling Management - Part 1 iwlwifi: Thermal Throttling Management - part 2 iwlwifi: Thermal Throttling debugfs function iwlwifi: Name fix for MPDU density for TX aggregation iwlwifi: debugFs to enable/disable HT40 support iwlwifi: Distinguish power amplifier for 6000 series iwlwifi: remove deprecated 6000 series adapters iwlwifi: name changed from "fat" to "ht40" iwlwifi: new debugging feature for dumping data traffic iwlwifi: Traffic type and counter for debugFs iwlwifi: tx/rx queue pointer information iwlwifi: uCode statistics notification counter iwlwifi: Display sensitivity and chain noise information iwlwifi: fix thermal throttling locking problem iwlwifi: fix legacy thermal throttling power index iwlwifi: handle the case when set power fail iwlwifi: display correct critical temperature infomation iwlwifi: traverse linklist to find the valid OTP block iwlwifi: add thermal throttling support to 5150 iwlwifi: set default tx power user limit to minimal iwlwifi: do not allow set tx power over channel power limit iwlwifi: name changes from "tx_power_channel_lmt" to "tx_power_device_lmt" iwlwifi: error checking for setting tx_power in sysfs iwlwifi: change IWL6000_UCODE_API_MAX to v4 iwlwifi: show current tx power iwlwifi: remove duplicated define iwlwifi: read enhanced tx power info from EEPROM image iwlwifi: fix unloading driver while scanning iwlwifi: find the correct first antenna iwlwifi: find the correct first antenna William Weston (1): ALSA: hda - Add quirks for RTL888 & RV630/M76 based MSI GX710 Willy Tarreau (1): i2c/scx200_acb: Provide more information on bus errors Wim Van Sebroeck (3): [WATCHDOG] ar7_wdt: Fix error handling during probe. [WATCHDOG] wdt_pci - use pci_request_region [WATCHDOG] sizeof cleanup Wolfgang Denk (1): fs_enet/mii-fec.c: fix MII speed calculation Wolfgang Grandegger (3): can: add can_free_echo_skb() for upcoming drivers can: sja1000: fix network statistics update can: sja1000: legacy SJA1000 ISA bus driver Wolfgang Muees (1): mmc_spi: fail gracefully if host or card do not support the switch command Wolfram Sang (19): mtd: physmap_of: use resource_size mtd: plat-ram: use resource_size powerpc/irq: Improve nanodoc pcmcia: fix incorrect argument order to list_add_tail() pcmcia: drop non-existant includes pcmcia: document return value of pcmcia_loop_config gpio/pcf857x: Copy i2c_device_id from old pcf8574 driver i2c/chips: Remove deprecated pcf8575 driver i2c/chips: Remove deprecated pca9539 driver i2c/chips: Remove deprecated pcf8574 driver MAINTAINERS: Add maintainer for AT24 and PCA9564/PCA9665 tty: serial/pcmcia: add ID for Advantech card mtd: maps: add mtd-ram support to physmap_of i2c-imx: make bus available early regulator: update a filename in documentation regulator: fix typos regulator: drop 'default n' regulator/lp3971: drop unnecessary initialization regulator/driver: be more specific in nanodoc for is_enabled Wu Fei (1): MIPS: Shrink the size of tlb handler Wu Fengguang (20): ALSA: hda - add bounds checking for the codec command fields ALSA: hda: add 2-channel mode to Intel ALC889/ALC889A models ALSA: hda: add HP automute support to Intel ALC889/ALC889A models ALSA: hda: add IbexPeak/Clarkdale HDMI model with static cvt/pin number slab: remove duplicate kmem_cache_init_late() declarations ALSA: hda: move open coded tricks into get_wcaps_channels() tcp: replace hard coded GFP_KERNEL with sk_allocation PM: Trivial fixes HWPOISON: check and isolate corrupted free pages v2 HWPOISON: Add invalidate_inode_page HWPOISON: shmem: call set_page_dirty() with locked page mm: count only reclaimable lru pages mm: do batched scans for mem_cgroup libfs: return error code on failed attr set page-types: add feature for walking process address space writeback: balance_dirty_pages() shall write more than dirtied pages writeback: stop background writeback when below background threshold writeback: kupdate writeback shall not stop when more io is possible writeback: cleanup writeback_single_inode() writeback: don't delay inodes redirtied by a fast dirtier Wu Zhangjin (17): ide: fixup for fujitsu disk MIPS: Loongson: Remove existing early_printk implementation MIPS: Loongson: Remove out-of-date board-specific kgdb source code MIPS: Loongson: Add new early_printk implmentation MIPS: Loongson: pm: Remove redundant source code MIPS: Loongson: pm: clean up the reboot support MIPS: Loongson: PCI: use existing mips_io_port_base MIPS: Loongson: Split the implementation of prom and setup parts MIPS: Loongson: clean up the coding style MIPS: Loongson: PCI: Clean up pcimap setup MIPS: Loongson: RTC: Enable legacy RTC driver on fulong MIPS: Loongson: Add oprofile support MIPS: Loongson: Change naming methods MIPS: Loongson: Split common loongson source code out MIPS: Loongson: Add a machtype kernel command line argument MIPS: Loongson: Add GCC 4.4 support for Loongson2E MIPS: Loongson: Update the default config file for fuloong2e Xiao Guangrong (16): tracing/filter: Remove preds from struct event_subsystem tracing/filter: Remove empty subsystem and its directory tracing/function: Simplify __ftrace_replace_code() tracing/trace_stack: Cleanup for trace_lookup_stack() tracing/function: Cleanup for function tracer tracing: cleanup for tracing_trace_options_read() x86: Fix system crash when loading with "reservetop" parameter tracing/events: fix the include file dependencies timers: Add tracepoints for timer_list timers hrtimer: Add tracepoint for hrtimers itimers: Add tracepoints for itimer drop_monitor: fix trace_napi_poll_hit() KVM: fix kvm_init() error handling perf_counter: Fix buffer overflow in perf_copy_attr() lguest: cleanup for map_switcher() generic-ipi: make struct call_function_data lockless Xiaotian Feng (4): slub: release kobject if sysfs_create_group failed in sysfs_slab_add PM: Reset transition_started at dpm_resume_noirq Documentation: update stale definition of file-nr in fs.txt cgroups: make unlock sequence in cgroup_get_sb consistent Yan Zheng (2): Btrfs: improve async block group caching Btrfs: hash the btree inode during fill_super Yan, Zheng (7): Btrfs: speed up snapshot dropping Btrfs: do not reuse objectid of deleted snapshot/subvol Btrfs: change how subvolumes are organized Btrfs: add snapshot/subvolume destroy ioctl Btrfs: check size of inode backref before adding hardlink Btrfs: don't rename file into dummy directory Btrfs: relocate file extents in clusters Yang Shi (1): edac: mpc85xx add P2020DS support Yang Xiaowei (1): xen: use stronger barrier after unlocking lock Yang Zhao (1): drm/radeon: Save and restore bios scratch regs during S/R Yanqing_Liu@Dell.com (1): [SCSI] scsi_dh_rdac: add support for next generation of Dell PV array Yeasah Pell (2): dm9000: add checksum offload support mtd: pxa3xx_nand: add single-bit error corrections reporting Yevgeny Petrilin (4): mlx4_en: Adaptive moderation policy change mlx4_en: Using real number of rings as RSS map size mlx4_en: Not using Shared Receive Queues mlx4_core: Avoid double free_icms Yi Li (8): Blackfin: bf537-stamp: declare SPI IRQ resources Blackfin: bf533-stamp: add resources for mmc_spi card Blackfin: update anomaly lists Blackfin: cleanup sync handling when enabling/disabling cplbs Blackfin: do not trace the exception handler Blackfin: use raw_smp_processor_id() in exception code Blackfin: fix BF54x SPI CS resources Blackfin: update ftrace for latest toolchain Yi Zou (20): net: Add NETIF_F_FCOE_MTU to indicate support for a different MTU for FCoE ixgbe: Add support for NETIF_F_FCOE_MTU to 82599 devices [SCSI] fcoe: Fix validation of mac address when checking for spma support [SCSI] libfcoe: Set fip_flags according to fcf and lport's capability of SPMA support [SCSI] fcoe: Call dev_ethtool_get_settings() in fcoe_link_ok [SCSI] fcoe: Remove ifdef for NETIF_F_FCOE_CRC and NETIF_F_FSO [SCSI] libfc: Remove FC_FRAME_SG_LEN in fc_fcp_send_data [SCSI] libfc: Remove page flags check for sglist net: Add ndo_fcoe_enable/ndo_fcoe_disable to net_device_ops vlan: Add support for net_devices_ops.ndo_fcoe_enable/_disable to VLAN ixgbe: Add support for the net_device_ops.ndo_fcoe_enable/disable to 82599 dcbnl: Add support for setapp/getapp commands to dcbnl dcbnl: Add support for setapp/getapp to netdev dcbnl_rtnl_ops dcbnl: Add netlink attributes for setapp/getapp to dcbnl dcbnl: Add implementations of dcbnl setapp/getapp commands ixgbe: Add support for dcbnl_rtnl_ops.setapp/getapp ixgbe: Add support for multiple Tx queues for FCoE in 82599 ixgbe: Distribute transmission of FCoE traffic in 82599 ixgbe: Add support for using FCoE DDP in 82599 as FCoE targets [SCSI] fcoe: Add sysfs parameter to fcoe for minimum DDP read I/O size Yinghai Lu (7): x86, apic: Move dmar_table_init() out of enable_IR() irq: Make sure irq_desc for legacy irq get correct node setting irq: Add irq_node() primitive pci/intr_remapping: Allocate irq_iommu on node x86: Use hard_smp_processor_id() to get apic id for AMD K8 cpus PCI: print out pref if mmio is prefetchable Revert 'x86: Fix system crash when loading with "reservetop" parameter' Yong Zhang (1): sched: Fix potential NULL derference of doms_cur Yoshihiro Shimoda (6): usb: fix hibernate in r8a66597-hcd dev_pm_ops conversion. usb: gadget: R8A66597 peripheral controller support. usb: r8a66597-udc: implement the set_wedge method sh: Add initial support for SH7757 CPU subtype sh: sh7785lcr: fix prototype board on 32bit MMU mode. net: sh_eth: add value of ether_link pin in platform_data Yossi Etigin (1): IB/core: Fix send multicast group leave retry Youquan Song (2): intel-iommu: Disallow interrupt remapping if not all ioapics covered intel-iommu: Fix kernel hang if interrupt remapping disabled in BIOS Yu Zhiguo (1): NFSv4: ACL in operations 'open' and 'create' should be used Yuri Tikhonov (5): md/raid5,6: common schedule_reconstruction for raid5/6 md/raid6: asynchronous handle_stripe_fill6 md/raid6: asynchronous handle_stripe_dirtying6 md/raid6: asynchronous handle_stripe6 md/raid6: remove synchronous infrastructure Yusuke Goda (1): sh: Fix the indication point of the liquid crystal of AP-325RXA(AP3300) Zhang Qiang (1): nilfs2: An unassigned variable is assigned to a never used structure member Zhang Rui (2): ACPI: video: remove unneeded memsets ACPI video: work-around BIOS AML bug in _BQC Zhang, Yanmin (1): slub: change kmem_cache->align to record the real alignment Zhao Yakui (18): ACPI: Make ACPI processor proc I/F depend on the ACPI_PROCFS drm/mode: add the CVT algorithm in kernel space drm/mode: add the GTF algorithm in kernel space drm/mode: get the modeline for standard timing in EDID by using CVT/GTF drm: Remove the unused prefix in DRM_DEBUG_KMS/DRIVER/MODE drm: Remove the macro defintion of DRM_DEBUG_MODE DRM: Add the explanation about DRM debug level drm: Add the debug info in generic drm mode by using DRM_DEBUG_KMS drm/kms: Parse the detailed time info in CEA-EDID drm/i915: Enable PAL and SECAM format and add the propery for SDVO-TV drm/kms: Add the default mode table drm/kms: try to find the std mode in DMT table drm/kms: add a function that can add the mode for the output device without EDID drm/i915: Add the enhancement property for SDVO-TV drm/i915: Add the brightness property for SDVO-LVDS drm/i915: Add the missing clone_mask for SDVO-VGA(RGB1) drm/i915: Write zero to DPLL_MD Reg for non-SDVO output ACPI: fix Compaq Evo N800c (Pentium 4m) boot hang regression Zhaolei (3): tracing: Rename set_tracer_flags()'s local variable trace_flags ftrace: Move setting of clock-source out of options time: add function to convert between calendar time and broken-down time for universal use Zhenyu Wang (12): agp: Add generic support for graphics dma remapping intel_agp: Use PCI DMA API correctly on chipsets new enough to have IOMMU drm/i915: update debugfs interrupt info on IGDNG drm/i915: fix tiling on IGDNG drm/i915: do dynamic clock freq control only in kernel modesetting V4L/DVB (12190): em28xx: Add support for Gadmei UTV330+ agp/intel: remove restore in resume drm/i915: Fix typo for wrong LVDS clock setting on IGDNG drm/i915: Fix SSC frequence for IGDNG drm/i915: Remove DAC disable in CRT force detect on IGDNG drm/i915: Fix LVDS panel fitting on Arrandale drm/i915: remove restore in resume Zhu Yanhai (1): nilfs2: add more check routines in mount process Zhu Yi (30): iwmc3200wifi: change coexist periodic calibration flag iwmc3200wifi: rfkill cleanup iwmc3200wifi: replace netif_rx with netif_rx_ni iwmc3200wifi: simplify calibration map iwmc3200wifi: remove B0 hardware support cfg80211: fix NULL dereference in IBSS SIOCGIWAP iwmc3200wifi: fix UMAC INIT_COMPLETE notification handling iwmc3200wifi: hardware does not support IP checksum iwmc3200wifi: set cipher_suites before registering wiphy iwmc3200wifi: use correct debug level iwmc3200wifi: remove setting WEP keys before setting essid support iwmc3200wifi: make iwm_send_wifi_if_cmd return 0 on success iwmc3200wifi: remove key caches in driver cfg80211: remove WARN_ON in __cfg80211_sme_scan_done cfg80211: set_default_key only for WEP cfg80211: fix typo of IWEVASSOCRESPIE iwmc3200wifi: use cfg80211_connect_result to send req/resp IE iwmc3200wifi: fix cfg80211_connect_result is called in IBSS iwmc3200wifi: fix a use-after-free bug cfg80211: avoid setting default_key if add_key fails iwmc3200wifi: fix set_wpa_version and set_auth_type order iwmc3200wifi: set WEP key static flag correctly iwmc3200wifi: avoid setting default key for 802.1X and RSNA wireless: display wext SSID when connected by cfg80211 iwlwifi: cleanup HT40 extension channels setup cfg80211: allow cfg80211_connect_result with bssid == NULL iwmc3200wifi: invalidate profile when necessary before connect iwmc3200wifi: use cfg80211_roamed to send roam event iwmc3200wifi: add disconnect work iwmc3200wifi: fix misuse of le16_to_cpu arun c (2): omapfb: add support for the OMAP2EVM LCD omapfb: fix coding style / remove dead line ddiaz@cenditel.gob.ve (1): ALSA: hda/realtek: Added support for CLEVO M540R subsystem, 6 channel + digital dmitry pervushin (2): spi: Freescale STMP driver rtc: add Freescale stmp37xx/378x driver fangxiaozhi (1): USB: usb-storage fails to attach to Huawei Datacard cdrom device fkan@amcc.com (1): powerpc/44x: Add Eiger AMCC (AppliedMicro) PPC460SX evaluation board support. françois romieu (6): r8169: fix r8101 quirk dupe r8169: differentiate close chipsets in the startup identification message r8169: phy init for the 8169sce r8169: phy init for the 8169scd r8169: phy init for the 8169s r8169: phy init for the 8102e gregor kowski (3): b43: remove wrong probe_resp_plcp write b43: remove wrong probe_resp_plcp write b43: add hardware tkip hermann pitton (2): V4L/DVB (12420): saa7134: fix the radio on Avermedia GO 007 FM V4L/DVB (12492): saa7134-input: don't probe for the Pinnacle remotes anymore jassi brar (1): ASoC: Debugged improper setting of PLL fields in WM8580 driver javier Martin (6): ASoC: Correct a bug with "ADC Inversion Switch" in wm8974 codec. ASoC: add DMA platform driver for MX1x and MX2x ASoC: add DAI platform ssi driver for MXC ASoC: add machine driver for i.mx27_visstrim_m10 board ASoC: Fix review issues in i.MX2x PCM driver MX27: Add USB platform devices and resources jie.yang@atheros.com (1): atl1c:remove compiling warning john stultz (4): time: Introduce CLOCK_REALTIME_COARSE alpha: convert to use arch_gettimeoffset() m32r: convert to use arch_gettimeoffset() m68k: convert to use arch_gettimeoffset() jolsa@redhat.com (5): tracing: Remove unused fields/variables tracing: Remove .globl in the scripts/recordmcount.pl doc tracing: create generic trace parser tracing: trace parser support for set_event tracing: trace parser support for function and graph kishore kadiyala (1): omap4: mmc driver support on OMAP4 linus.walleij@stericsson.com (1): spi: add default selection of PL022 for ARM reference platforms mail@rainerkeller.de (1): USB: add PIDs for FTDI based OpenDCC hardware markus.t.metzger@intel.com (3): x86, perf_counter, bts: Fail if BTS is not available x86, perf_counter, bts: Correct pointer-to-u64 casts x86, perf_counter, bts: Do not allow kernel BTS tracing for now maximilian attems (1): ramfs: move RAMFS_MAGIC to include/linux/magic.h miaofng (1): Staging: vt6656: disable wpa related function due to memory failure of this part of codes mingo (2): perf sched: Print PIDs too perf sched: Add support for sched:sched_stat_runtime events npiggin@suse.de (2): truncate: new helpers truncate: use new helpers oscar.medina@motorola.com (1): tipc: Add socket options to get number of queued messages roald (1): regulator: add initialization macro of regulator supply roel kluin (11): b44: strncpy does not null terminate string lmc: Read outside array bounds powerpc/cell: Replace strncpy by strlcpy powerpc: Missing tests for NULL after ioremap() powerpc/macio: Don't the address of an array element before boundchecking tipc: fix test of bearer_priority range in tipc_register_media() WAN: bit and/or confusion au1000_eth: possible NULL dereference of aup->mii_bus->irq in au1000_probe() WARNING: some request_irq() failures ignored in el2_open() atm: dereference of he_dev->rbps_virt in he_init_group() powerpc: kmalloc failure ignored in vio_build_iommu_table() sarveshwarb (1): be2net: Patch to perform function reset at initialization sedji gaouaou (1): ARM: 5640/1: This patch modifies the support of AC97 on the at91sam9263 ek board sfking@fdwdc.com (13): core generic GPIO support for Freescale Coldfire processors. generic GPIO support for the Freescale Coldfire 5206. generic GPIO support for the Freescale Coldire 5206e. generic GPIO support for the Freescale Coldfire 520x. generic GPIO support for the Freescale Coldfire 523x. generic GPIO support for the Freescale Coldfire 5249. generic GPIO support for the Freescale Coldfire 527x. generic GPIO support for the Freescale Coldfire 5272. generic GPIO support for the Freescale Coldfire 528x. generic GPIO support for the Freescale Coldfire 5307. generic GPIO support for the Freescale Coldfire 532x. generic GPIO support for the Freescale Coldfire 5407. generic GPIO support misc files. vimal singh (5): mtd: nand: remove repeated comment, fix spelling mtd: nand_base: use __func__ instead of typing names mtd: physmap_of: fix incorrect check mtd: omap: add support for nand prefetch-read and post-write mtd: omap: adding DMA mode support in nand prefetch/post-write walker@suse.cz (1): [ARM] pxa/treo680: pxamci simplify to use GPIO wanzongshun (17): [ARM] 5591/1: Add group irq enable/disable for w90p910 platform. [ARM] 5601/1: Add HAVE_CLK depends on for w90p910 platform [ARM] 5602/1: Add sub clock api for w90p910 platform [ARM] 5604/1: Add keypad multi-function pin api for w90p910 platform [ARM] 5610/1: Add fmi resource define for w90p910 platform [ARM] 5616/1: Add mac resource define for w90p910 mac driver [ARM] 5617/1: rename this spi device as w90p910-spi [ARM] 5618/1: Add spi resource define for w90p910 spi driver [ARM] 5619/1: Add spi mfp api for w90p910 spi driver ARM: 5633/1: Add wdt resource for w90p910 platform ARM: 5634/1: Add static setting cpu frequence for w90p910 platform ARM: 5674/1: Add clocksource/clockevent support for w90p910 platform ARM: 5675/1: The semaphore is used as mutex so make it a mutex ARM: 5676/1: Provide more useful introduction for w90x900 ARM: 5682/1: Add cpu.c and dev.c and modify some files of w90p910 platform ARM: 5683/1: Add nuc950 platform to w90x900 ARM: 5684/1: Add nuc960 platform to w90x900 ykzhao (1): drm/kms/i915: Add the default mode for CRT output without EDID ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:41 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_21,J_CHICKENPOX_33,J_CHICKENPOX_54 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLfBt143713 for ; Fri, 22 Jan 2010 16:21:41 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLe2u143674; Fri, 22 Jan 2010 16:21:40 -0600 Date: Fri, 22 Jan 2010 16:21:40 -0600 Message-Id: <201001222221.o0MMLe2u143674@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.32-rc3, created. v2.6.32-rc3 X-Git-Refname: refs/tags/v2.6.32-rc3 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 910eff4ec30f648f297700d43784b2159d35fb4f This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.32-rc3 has been created at 910eff4ec30f648f297700d43784b2159d35fb4f (tag) tagging 374576a8b6f865022c0fd1ca62396889b23d66dd (commit) replaces v2.6.32-rc1 tagged by Linus Torvalds on Sun Oct 4 17:14:37 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.32-rc3 . no -rc2. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkrJOnoACgkQF3YsRnbiHLvI5QCfRxC5cCMC1yu471y7aXFQBJ8y lrgAoJtSt1eGW4Q5hWsvzb2t8tRCKiBf =VGN3 -----END PGP SIGNATURE----- Aaro Koskinen (1): iop3xx: ATU and PCI memory configuration corrected Adam Jackson (4): drm/edid: const cleanup drm/edid: Ignore bad standard timings. drm/edid: Detailed standard timing blocks have six timings, not five. drm/edid: Fix standard timing parse for EDID <= 1.2 Ajay Kumar Gupta (1): omap: Add missing mux pin for EHCI phy reset line Ajit Khaparde (1): be2net: Workaround to fix a bug in Rx Completion processing. Alan Jenkins (3): sony-laptop: Don't unregister the SPIC driver if it wasn't registered sony-laptop: check for rfkill hard block at load time sony-laptop: re-read the rfkill state when resuming from suspend Albert Herranz (1): sdio: pass whitelisted cis funce tuples to sdio drivers Alex Chiang (1): ACPI: dock: fix "sibiling" typo Alex Deucher (5): drm/radeon/kms/r600: clamp vram to aperture size drm/radeon/kms: fix some bugs in vline reloc drm/radeon/kms/r600: add support for vline relocs drm/radeon/kms/r600: fix forcing pci mode on agp cards drm/radeon/r600: fix offset handling in CS parser Alexander Beregalov (1): cciss: fix build when !PROC_FS Alexey Dobriyan (4): cpqarray: switch to seq_file dac960: switch to seq_file const: constify remaining file_operations headers: remove sched.h from poll.h Alexey Starikovskiy (3): ACPI: EC: Restart command even if no interrupts from EC ACPI: EC: Rewrite DMI checks ACPI: EC: Don't parse DSDT for EC early init on Compal Amerigo Wang (1): drm: create gitignore file for radeon Andrew Morton (3): net/ipv4/tcp.c: fix min() type mismatch warning drivers/input/input.c: fix CONFIG_PM=n warning revert "m68k: convert to asm-generic/hardirq.h" Andrew Patterson (3): cciss: Remove sysfs entries for logical drives on driver cleanup. cciss: Use one scan thread per controller and fix hang during rmmod cciss: Allow triggering of rescan of logical drive topology via sysfs entry Andy Spencer (1): sscanf(): fix %*s%n Angelo Arrifano (2): omap: Fix wrong jtag_id for 850 omap: Fix a OMAP_MPUIO_VBASE typo for 850 Anton Vorontsov (1): 3c59x: Rework suspend and resume Arjan van de Ven (5): net: Add explicit bound checks in net/socket.c wext: Add bound checks for copy_from_user x86: Provide an alternative() based cmpxchg64() ACPI: Fix bound checks for copy_from_user in the acpi /proc code SFI: remove __init from sfi_verify_table Atis Elsts (1): net: Use sk_mark for routing lookup in more places Atsushi Nemoto (1): serial_txx9: use container_of() instead of direct cast Barry Song (1): ASoC: fix kconfig order of Blackfin drivers Ben Dooks (11): s3cmci: use resource_size() instead of local macro s3cmci: update probe to use new platform id list s3cmci: change GPIO to gpiolib from S3C24XX specific calls s3cmci: change to use dev_pm_ops s3cmci: fix direct write to interrupt mask s3cmci: add debugfs support for examining driver and hardware state s3cmci: add SDIO IRQ support s3cmci: Kconfig selection for PIO/DMA/Both s3cmci: DMA fixes s3cmci: make SDIO IRQ hardware IRQ support build-time configurable s3cmci: add better support for no card detect or write protect available Ben Greear (1): ixgbe patch to provide NIC's tx/rx counters via ethtool Bjorn Helgaas (1): ACPI: fix bus scanning memory leaks Breno Leitao (1): icom: convert space to tabs Chaithrika U S (1): ASoC: DaVinci: Correct McASP FIFO initialization Choi, David (1): drivers/net: ks8851_mll ethernet network driver Chris Ball (2): Btrfs: Fix setting umask when POSIX ACLs are not enabled Btrfs: Use CONFIG_BTRFS_POSIX_ACL to enable ACL code Chris Mason (3): Btrfs: take i_mutex before generic_write_checks Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable into for-linus Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable into for-linus Christian Lamparter (1): ar9170: fix bug in iq-auto calibration value calculation Christoph Hellwig (5): Btrfs: fix arguments to btrfs_wait_on_page_writeback_range Btrfs: remove duplicates of filemap_ helpers block: use normal I/O path for discard requests block: allow large discard requests afs: remove cache.h Chuck Ebbert (1): serial: add parameter to force skipping the test for the TXEN bug Cliff Cai (1): ASoC: Blackfin: fix inverted handling of SPORT0 on PORT F/G Curt Wohlgemuth (3): ext4: Make sure ext4_dirty_inode() updates the inode in no journal mode ext4: Handle nested ext4_journal_start/stop calls without a journal ext4: Fix build warning in ext4_dirty_inode() Dan Williams (2): iop33x: update defconfig (default atu to on) iop: downgrade maintenance status Daniel T Chen (3): ALSA: hda - Add HP Pavilion dv4t-1300 to MSI whitelist ALSA: intel8x0 - Mute External Amplifier by default for Sony VAIO VGN-T350P ALSA: intel8x0 - Mute External Amplifier by default for Sony VAIO VGN-B1VP Dave Airlie (11): drm/radeon/kms: enable r600 tv outputs. drm/radeon/kms: enable dac load detection by default. drm/radeon/kms: don't require up to 64k allocations. (v2) fb: change rules for global rules match. drm/kms: start adding command line interface using fb. drm/radeon/kms: remove unneeded master create/destroy functions. drm/r600: get values from the passed in IB not the copy. drm/kms: protect against fb helper not being created. drm/radeon/kms: fix for the extra pages copying. drm/kms: make fb helper work for all drivers. drm/r600: fix memory leak introduced with 64k malloc avoidance fix. David Brown (1): ARM: 5739/1: ARM: allow empty ATAG_CORE David S. Miller (3): Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 net: Make setsockopt() optlen be unsigned. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Dmitry Artamonow (1): ARM: 5734/1: arm: fix compilation of entry-common.S for older CPUs Don Skidmore (1): e1000: cleanup unused prototype Eric Dumazet (6): sched_clock: Fix atomicity/continuity bug by using cmpxchg64() net: Fix sock_wfree() race net: restore tx timestamping for accelerated vlans pktgen: Fix delay handling tg3: Remove prev_vlan_tag from struct tx_ring_info net: splice() from tcp to pipe should take into account O_NONBLOCK Eric Sandeen (2): ext4: drop ext4dev compat ext4: retry failed direct IO allocations Frank Mayhar (1): ext4: Avoid updating the inode table bh twice in no journal mode Frans Pop (1): e1000e/igb/ixgbe: Don't report an error if devices don't support AER Giuliano Pochini (1): ALSA: echoaudio - Re-enable the line-out control for the Mia card Greg Ungerer (1): ARM: 5740/1: fix valid_phys_addr_range() range check H Hartley Sweeten (1): fs/bio.c: move EXPORT* macros to line after function Hartley Sweeten (1): ARM: 5735/1: sa1111: CodingStyle cleanups Hirokazu Takata (5): m32r: fix tme_handler m32r: export delay loop symbols m32r: define ioread* and iowrite* macros m32r: add rtc_lock variable m32r: Fix set_memory() for DISCONTIGMEM Hiroshi DOYU (3): omap: mailbox: Execute softreset at startup omap: mailbox: Flush posted write when acking mailbox irq omap: Fix wrong condition check in while loop for mailbox and iommu2 Huang Shijie (1): mm/rmap.c: fix comment Huang Weiyi (2): MIPS: BCM63xx: Remove duplicated #include MIPS: Remove duplicated #include Igor Perminov (1): mac80211: Fix [re]association power saving issue on AP side Jan Kara (1): ext4: Update documentation about quota mount options Jarek Poplawski (1): ax25: Fix possible oops in ax25_make_new Jarkko Nikula (1): omap: Fix MMC gpio_wp for BeagleBoard C2 and above Jaswinder Singh Rajput (2): ARM: Remove unused CONFIG SA1100_H3XXX ARM: includecheck fix: mach-davinci, board-dm365-evm.c Jean Delvare (12): sound: Make keywest_driver static net: Fix wrong sizeof i2c: Move misc devices documentation max6875: Discard obsolete detect method ds2482: Discard obsolete detect method ltc4215/ltc4245: Discard obsolete detect methods leds: leds-pca9532 - Drop unused module parameters Staging: IIO: tsl2561: Drop unused module parameters mfd: AB3100 drop unused module parameters i2c: Minor documentation update i2c: Hide probe errors caused by ACPI resource conflicts macintosh: Don't assume i2c device probing always succeeds Jeff Hansen (1): bridge: Fix double-free in br_add_if. Jens Axboe (7): cciss: cciss_host_attr_groups should be const cfq-iosched: add a knob for desktop interactiveness cfq-iosched: implement slower async initiate and queue ramp up cfq-iosched: rename 'desktop' sysfs entry to 'low_latency' cfq-iosched: use assigned slice sync value, not default cfq-iosched: don't delay async queue if it hasn't dispatched at all Revert "Seperate read and write statistics of in_flight requests" Jerome Glisse (2): drm/radeon/kms: Convert RV515 to new init path and associated cleanup drm/radeon/kms: Convert R520 to new init path and associated cleanup Jesse Brandeburg (12): e1000: drop dead pcie code from e1000 e1000: remove unused functions e1000: use netif_tx_disable e1000: stop timers at appropriate times e1000: test link state conclusively e1000: fix tx waking queue after queue stopped during shutdown e1000: two workarounds were incomplete, fix them e1000: remove races when changing mtu e1000: drop redunant line of code, cleanup e1000: updated whitespace and comments e1000: drop unused functionality for eeprom write/read e1000: fix namespacecheck warnings Jiri Pirko (2): ixgbe: correct the parameter description bonding: set primary param via sysfs Jiri Slaby (1): Char: vt_ioctl, fix BKL imbalance Joe Perches (1): MAINTAINERS: ARM/Palm file patterns Johannes Berg (5): cfg80211: wext: don't display BSSID unless associated cfg80211: don't set privacy w/o key cfg80211: always get BSS mac80211: improve/fix mlme messages wext: add back wireless/ dir in sysfs for cfg80211 interfaces John Fastabend (3): net: fix vlan_get_size to include vlan_flags size net: fix nlmsg len size for skb when error bit is set. net: fix double skb free in dcbnl Josef Bacik (2): Btrfs: proper -ENOSPC handling Btrfs: fix data space leak fix Josh Stone (1): ext4: Add a stub for mpage_da_data in the trace header Jouni Malinen (1): mac80211_hwsim: Fix initial beacon timer configuration Juha Leppanen (1): atm: dereference of he_dev->rbps_virt in he_init_group() Julia Lawall (3): arch/arm/plat-iop: Use DIV_ROUND_CLOSEST Btrfs: introduce missing kfree MIPS: SMTC: Remove duplicate structure field initialization Jun'ichi Nomura (1): Add a tracepoint for block request remapping KAMEZAWA Hiroyuki (4): memcg: fix refcnt going negative cgroup: catch bad css refcnt at css_put memcg: some modification to softlimit under hierarchical memory reclaim. memcg: reduce check for softlimit excess Kevin Cernekee (1): MIPS: MIPSxx SC: Avoid destructive invalidation on partial L2 cachelines. Kirill A. Shutemov (2): ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() ARM: 5728/1: Proper prefetch abort handling on ARMv6 and ARMv7 Len Brown (4): acpi_pad: build only on X86 Merge branches 'sony-laptop', 'bugzilla-14247' and 'bugzilla-14271' into release Merge branch 'bugzilla-14081' into release Merge branch 'misc' into release Leo Chen (2): ARM: 5732/1: remove redundant include file ARM: 5733/1: fix bcmring compile error Linus Torvalds (26): Revert "x86, mce: do not compile mcelog message on AMD" pty: reconnect the BSD TIOCSPTLCK handling to legacy ptys Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu Merge branch 'drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 tty: Avoid dropping ldisc_mutex over hangup tty re-initialization Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'sfi-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-sfi-2.6 Merge branch 'acpi-pad' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Linux 2.6.32-rc3 Linus Walleij (2): ARM: 5731/2: Fix U300 generic GPIO, remove ifdefs from MMCI v3 ARM: 5738/1: Correct TCM documentation Lukasz Marcinowski (1): ALSA: hda - CD-audio sound for hda-intel conexant benq laptop Manoj Iyer (1): ALSA: hda - Added quirk to enable sound on Toshiba NB200 Mark Brown (1): Merge remote branch 'takashi/fix/asoc' into for-2.6.32 Mark Mason (1): MIPS: Sibyte: Fix compilation error. Mark Salter (1): mn10300: fix kernel build failures when using gcc-4.x Martin K. Petersen (3): block: Set max_sectors correctly for stacking devices block: Do not clamp max_hw_sectors for stacking devices block: Topology ioctls Mattia Dongili (3): sony-laptop: remove device_ctrl and the SPIC mini drivers sony-laptop: SPIC unset IRQF_SHARED, set IRQF_DISABLED sony-laptop: remove _INI call at init time Maxime Bizon (2): MIPS: BCM63xx: Add serial driver for bcm63xx integrated UART. MIPS: BCM63xx: Add PCMCIA & Cardbus support. Michael Buesch (1): b43: Always use block-I/O for the PIO data registers Michael Chan (1): cnic: Fix NETDEV_UP event processing. Michal Schmidt (1): skge: use unique IRQ name Michal Szalata (1): rt2x00: Thrustmaster FunAccess WIFI USB and rt73usb Miguel de Barros (1): ALSA: hda - Analog Devices AD1984A add HP Touchsmart model Mikael Pettersson (2): drm: fix drm_fb_helper warning when !CONFIG_MAGIC_SYSRQ drm: fix radeon DRM warnings when !CONFIG_DEBUG_FS Mike Frysinger (1): asm-generic/gpio.h: pull in linux/kernel.h for might_sleep() Mike McCormack (1): skge: Make sure both ports initialize correctly Mingming Cao (4): ext4: release reserved quota when block reservation for delalloc retry ext4: Split uninitialized extents for direct I/O ext4: Use end_io callback to avoid direct I/O fallback to buffered I/O ext4: async direct IO for holes and fallocate support OGAWA Hirofumi (2): fat/nls: Fix handling of utf8 invalid char fat: Check s_dirt in fat_sync_fs() Ori Finkelman (1): IPv4 TCP fails to send window scale option when window scale is zero Paul Mundt (1): module: fix up CONFIG_KALLSYMS=n build. Paul Wise (1): vfat: change the default from shortname=lower to shortname=mixed Peter P Waskiewicz Jr (4): ixgbe: Fix disabling of relaxed ordering with Tx DCA ixgbe: Fix backplane flow control autoneg ixgbe: Bump driver version number ixgbe: Remove ATR computation for UDP traffic Philipp Reisner (8): connector: Keep the skb in cn_callback_data connector: Provide the sender's credentials to the callback connector/dm: Fixed a compilation warning connector: Removed the destruct_data callback since it is always kfree_skb() dm/connector: Only process connector packages from privileged processes dst/connector: Disallow unpliviged users to configure dst pohmelfs/connector: Disallow unpliviged users to configure pohmelfs uvesafb/connector: Disallow unpliviged users to send netlink packets Rafael J. Wysocki (2): PM / PCMCIA: Drop second argument of pcmcia_socket_dev_suspend() PM / yenta: Fix cardbus suspend/resume regression Rakib Mullick (1): SFI: fix section mismatch warnings in sfi_core.c Ralf Baechle (11): ax25: Add missing dev_put in ax25_setsockopt MIPS: BCM1480: Re-apply patch lost due to bad resolution of merge conflict. MIPS: SMP: Fix build. MIPS: SMP: Inline arch_send_call_function_{single_ipi,ipi_mask} MIPS: Sibyte: Get rid of BKL. MIPS: Excite: Get rid of BKL. MIPS: VPE: Fix build after the credential changes a while ago. MIPS: VPE: Get rid of BKL. MIPS: Avoid spurious make includecheck message NET: mkiss: Fix typo Kconfig: STRIP: Remove stale bits of STRIP help text Randy Dunlap (3): isdn: fix netjet/isdnhdlc build errors cciss: fix schedule_timeout() parameters docs: update patch size in SubmittingPatches Reinette Chatre (3): iwlwifi: fix debugfs buffer handling iwlwifi: fix memory leak in command queue handling iwlwifi: fix 3945 ucode info retrieval after failure Richard Röjfors (1): uartlite: allow building for timberdale MFD Roel Kluin (4): MIPS: Decrease size of au1xxx_dbdma_pm_regs[][] MIPS: MSP71xx: request_irq() failure ignored in msp_pcibios_config_access() cyclades: fix read buffer overflow serial167: fix read buffer overflow Roland Dreier (1): ACPI: kill overly verbose "throttling states" log messages Ron Mercer (5): qlge: Fix bad bit definitions. qlge: Fix out of sync hardware semaphore. qlge: Fix spin_lock warning. qlge: Protect reset recovery with rtnl_lock(). qlge: Fix error exit for probe call. Russell King (10): ARM: Fix section mismatch warning in Integrator pci_v3 ARM: Fix SA1100 Assabet/Neponset PCMCIA section mismatch warnings ARM: Fix SA1100 Neponset serial section mismatch ARM: Fix SA11x0 clocksource warning ARM: Fix warning: #warning syscall migrate_pages not implemented ARM: Fix warning: unused variable 'highmem' ARM: Don't allow highmem on SMP platforms without h/w TLB ops broadcast ARM: Fix __cpuexit section mismatch warnings ARM: Ensure do_cache_op takes mmap_sem Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/xscaleiop Ryusuke Konishi (2): nilfs2: fix missing zero-fill initialization of btree node cache nilfs2: fix missing initialization of i_dir_start_lookup member RĂ©mi Denis-Courmont (1): Phonet: fix mutex imbalance Sage Weil (2): Btrfs: fix error cases for ioctl transactions Btrfs: fix deadlock with free space handling and user transactions Samuel Thibault (1): x86: fix csum_ipv6_magic asm memory clobber Sanjeev Premi (1): omap: iovmm: Fix compiler warning Sascha Hauer (3): spi-imx: update state correctly spi-imx: fix initial chipselect settings spi-imx: setup mode_bits we can handle Sascha Hlusiak (2): Revert "sit: stateless autoconf for isatap" sit: fix off-by-one in ipip6_tunnel_get_prl Shaohua Li (1): ACPI: create Processor Aggregator Device driver Stephen Hemminger (1): sky2: irqname based on pci address Stephen M. Cameron (17): cciss: Remove some unused code in rebuild_lun_table() cciss: Dynamically allocate struct device for each logical drive as needed. cciss: Rearrange logical drive sysfs code to make the "changing a disk" path work. cciss: Handle failure of blk_init_queue gracefully in cciss_add_disk. cciss: Handle cases when cciss_add_disk fails. cciss: Handle special case for sysfs attributes of the first logical drive. cciss: Clear all sysfs-exposed data for deleted logical drives. cciss: Fix usage_count check in rebuild_lun_table when triggered via sysfs. cciss: Fix excessive gendisk freeing bug on driver unload. cciss: Silence noisy per-disk messages output by cciss_read_capacity cciss: Preserve all 8 bytes of LUN ID for logical drives. cciss: Don't check h->busy_initializing in cciss_open(). cciss: Add lunid attribute to each logical drive in /sys cciss: fix some magic numbers in the raid-level decoding cciss: Add a "raid_level" attribute to each logical drive in /sys cciss: Add usage_count attribute to each logical drive in /sys cciss: Dynamically allocate the drive_info_struct for each logical drive. Suresh Jayaraman (1): swapfile: avoid NULL pointer dereference in swapon when s_bdev is NULL Sven Eckelmann (1): ALSA: ctxfi: Swapped SURROUND-SIDE mute Takashi Iwai (9): ALSA: hda - Resurrect input-source mixer of ALC268 model=acer ALSA: Don't assume i2c device probing always succeeds ASoC: Fix dependency of CONFIG_SND_PXA2XX_SOC_IMOTE2 ALSA: hda - Fix digita/analog mic auto-switching with IDT codecs ALSA: hda - Fix / improve ALC66x parser ALSA: Fix invalid __exit in sound/mips/*.c ALSA: usb - Use strlcat() correctly Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus Tejun Heo (6): percpu: fix unit_map[] verification in pcpu_setup_first_chunk() percpu: make pcpu_build_alloc_info() clear static buffers sparc64: implement page mapping percpu first chunk allocator percpu: make embedding first chunk allocator check vmalloc space size percpu: make pcpu_setup_first_chunk() failures more verbose percpu: make allocation failures more verbose Theodore Ts'o (9): ext4: Use ext4_msg() for ext4_da_writepage() errors ext4: Fix hueristic which avoids group preallocation for closed files ext4: Adjust ext4_da_writepages() to write out larger contiguous chunks ext4: EXT4_IOC_MOVE_EXT: Check for different original and donor inodes first ext4, jbd2: Drop unneeded printks at mount and unmount time ext4: Use tracepoints for mb_history trace file jbd2: Use tracepoints for history file ext4: Fix time encoding with extra epoch bits ext4: fix a BUG_ON crash by checking that page has buffers attached to it Tobias Klauser (1): omap: rng: Use resource_size instead of manual calculation Tony Lindgren (4): omap: Fix compile for arch/arm/mach-omap2 omap: Fix mcspi compile for 2420 omap: Fix 44xx compile omap: Fix matrix_keymap_data usage Toshihiro HANAWA (1): m32r: Fix IPI function calls for SMP Troy Kisky (2): ASoC: DaVinci: Fix divide by zero error during 1st execution ASoC: Davinci: Fix race with cpu_dai->dma_data Uwe Kleine-König (8): MIPS: Loongson2: Fix typo "enalbe" -> "enable" don't use __devexit_p to wrap meth_remove don't use __devexit_p to wrap sgiseeq_remove move virtnet_remove to .devexit.text spi-imx: rename source file to spi_imx.c spi-imx: no need to assert bits_per_word being initialized spi-imx: initialize complete config struct spi-imx: strip down chipselect function to only drive the chipselect Vivek Goyal (1): cfq-iosched: delay async IO dispatch, if sync IO was just done Zdenek Kabelac (1): Add missing blk_trace_remove_sysfs to be in pair with blk_trace_init_sysfs roel kluin (1): bcm63xx_enet: timeout off by one in do_mdio_op() ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:45 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_21 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLjox143789 for ; Fri, 22 Jan 2010 16:21:45 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLhEU143752; Fri, 22 Jan 2010 16:21:43 -0600 Date: Fri, 22 Jan 2010 16:21:43 -0600 Message-Id: <201001222221.o0MMLhEU143752@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.32-rc5, created. v2.6.32-rc5 X-Git-Refname: refs/tags/v2.6.32-rc5 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: c6add0a844533aeaa7bf86dcd4f924dca085d287 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.32-rc5 has been created at c6add0a844533aeaa7bf86dcd4f924dca085d287 (tag) tagging 012abeea669ea49636cf952d13298bb68654146a (commit) replaces v2.6.32-rc4 tagged by Linus Torvalds on Thu Oct 15 17:42:05 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.32-rc5 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkrXwWEACgkQF3YsRnbiHLt6gACfbxBANzywJAFhWBGq36hBNNIn kV4An30ZBdtQVsWnbkOcv0jFm2GXkvj4 =mvSr -----END PGP SIGNATURE----- Aaro Koskinen (1): omap: RX-51: Drop I2C-1 speed to 2200 Alan Cox (5): libertas: fix build libertas: fix build ethoc: fix warning from 32bit build Staging: et131x: Correct WRAP bit handling Staging: et131x: Fix the add_10bit macro Albert Herranz (1): b43: do not stack-allocate pio rx/tx header and tail buffers Alek Du (1): kbuild: Fix size_append issue for bzip2/lzma kernel Alok Kataria (1): x86, vmi: Mark VMI deprecated and schedule it for removal Amerigo Wang (1): kbuild,scripts: use non-builtin echo for '-e' Andreas Krebbel (1): [S390] Add highgprs facility to /proc/cpuinfo Andreas Schwab (1): tty: fix vt_compat_ioctl Anton Blanchard (1): powerpc: Fix hypervisor TLB batching Anton Vorontsov (2): powerpc/kgdb: Fix build failure caused by "kgdb.c: unused variable 'acc'" net: Fix OF platform drivers coldplug/hotplug when compiled as modules Antonio Ospite (1): [ARM] pxamci: fix printing gpio numbers in pxamci_probe Anuj Aggarwal (1): omap: SDMA: Fixing bug in omap_dma_set_global_params() Arnd Bergmann (1): warn about use of uninstalled kernel headers Ashwin Chaugule (1): perf tools: Remove static debugfs path from parse-events Ben Hutchings (1): acenic: Pass up error code from ace_load_firmware() Benjamin Herrenschmidt (4): powerpc/pmac: Fix issues with sleep on some powerbooks powerpc/mm: Fix hang accessing top of vmalloc space usb-storage: Workaround devices with bogus sense size Merge commit 'ftrace/ppc' into merge Bjorn Helgaas (3): PCI: PCIe portdrv: remove "-driver" from driver name PCI: remove pci_assign_resource_fixed() iwlwifi: use %pM for formatted MAC addresses Brian Niebuhr (1): USB: gadget: Fix EEM driver comments and VID/PID Catalin Marinas (2): ARM: 5746/1: Handle possible translation errors in ARMv6/v7 coherent_user_range ARM: 5747/1: Fix the start_pg value in free_memmap() Chris Mason (5): Btrfs: only write one super copy during fsync Btrfs: avoid tree log commit when there are no changes Btrfs: streamline tree-log btree block writeout Btrfs: fix btrfs acl #ifdef checks Btrfs: always pin metadata in discard mode Chris Rankin (1): net: Teach pegasus driver to ignore bluetoother adapters with clashing Vendor:Product IDs Christoph Hellwig (2): Btrfs: add -o discard option Btrfs: enable discard support Cornelia Huck (1): sysfs: Allow sysfs_move_dir(..., NULL) again. Corrado Zoccolo (3): cfq-iosched: fix possible problem with jiffies wraparound cfq-iosched: fix think time allowed for seekers cfq-iosched: avoid probable slice overrun when idling Darren Salt (2): eeepc-laptop: Prevent a panic when disabling RT2860 wireless when associated Staging: rt2860sta: prevent a panic when disabling when associated Dave Mitchell (1): ibm_newemac: Added 16K Tx FIFO size support for EMAC4 David Henningsson (1): ALSA: ice1724 - Make call to set hw params succeed on ESI Juli@ David Howells (1): KEYS: get_instantiation_keyring() should inc the keyring refcount in all cases David Rientjes (1): oprofile: fix race condition in event_buffer free David S. Miller (7): znet: Don't claim DMA lock around free_dma() calls. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 sparc64: Fix niagara2 perf IRQ bits. net: Link in PHY drivers before others. sparc64: Fix D-cache flushing on swapin from SW devices. sparc64: Set IRQF_DISABLED on LDC channel IRQs. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 David Teigland (2): dlm: fix lowcomms_connect_node for sctp dlm: fix socket fd translation David Vrabel (3): USB: rename Documentation/ABI/.../sysfs-class-usb_host USB: whci-hcd: handle early deletion of endpoints USB: whci-hcd: always do an update after processing a halted qTD David Woodhouse (5): intel-iommu: Yet another BIOS workaround: Isoch DMAR unit with no TLB space Rename pci_init() to pci_apply_final_quirks(), move it to quirks.c Mark pci_apply_final_quirks() __init rather than __devinit Run pci_apply_final_quirks() sooner. x86: Move pci_iommu_init to rootfs_initcall() Dennis O'Brien (1): [ARM] pxa: workaround errata #37 by not using half turbo switching Dhananjay Phadke (1): netxen: fix pci bar mapping Dmitry Artamonow (2): ARM: 5752/1: SA1100: fix building of h3100 irda/sa1100_ir: check return value of startup hook Dragos Tatulea (1): powerpc/oprofile: Add ppc750 CL as supported by oprofile Eric Dumazet (3): net: Add patchwork URL to MAINTAINERS net: Fix struct sock bitfield annotation udp: Fix udp_poll() and ioctl() Felipe Contreras (2): kbuild: fix warning when domainname is not available kbuild: mkcompile_h: trivial cleanups Felix Fietkau (1): mac80211: fix logic error ibss merge bssid check Frans Pop (1): kbuild: fix the binrpm-pkg target to work with KBUILD_OUTPUT set Gabe Black (1): PCI quirk: TI XIO200a erroneously reports support for fast b2b transfers Giuseppe Cavallaro (1): net: add support for STMicroelectronics Ethernet controllers. Greg Kroah-Hartman (4): Staging: comedi: fix sched.h build breakage Staging: b3dfg: fix sched.h build breakage Staging: poch: fix sched.h build breakage Staging: vme: fix sched.h build breakage H. Peter Anvin (1): x86: fix kernel panic on 32 bits when profiling Hartley Sweeten (6): ARM: 5744/1: ep93xx: add remaining phys offset selections ARM: 5745/1: Change ep93xx gpio_irq static inlines to macros ARM: 5729/1: ep93xx: define EP93XX_*_PHYS_BASE with macros ARM: 5753/1: ep93xx: remove old EP93XX_GPIO_* defines ARM: 5754/1: ep93xx: update i2c support ARM: 5756/1: ep93xx: introduce clk parent Heiko Carstens (1): [S390] call home support: fix proc handler Heiko Schocher (1): powerpc/pci: Fix MODPOST warning Hubert Feurstein (3): ARM: 5749/1: ep93xx/micro9: Update maintainer ARM: 5750/1: ep93xx/micro9: Update platform code ARM: 5751/1: ep93xx/micro9: Add Micro9-Slim Huzaifa Sidhpurwala (1): USB: option: Support for AIRPLUS MCD650 Datacard Imre Deak (1): ARM: 5742/1: ARM: add debug check for invalid kernel page faults Ingo Molnar (6): Revert "x86, timers: Check for pending timers after (device) interrupts" perf tools: Fix the NO_64BIT build on pure 64-bit systems Merge branch 'urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into core/urgent headers: Fix build after removal Merge branch 'linus' into x86/urgent Revert "x86: linker script syntax nits" Jan Beulich (1): x86: Fix Suspend to RAM freeze on Acer Aspire 1511Lmi laptop Jan Kara (1): ext3: Update documentation about ext3 quota mount options Jarkko Nikula (1): omap: McBSP: Fix incorrect receiver stop in omap_mcbsp_stop Jay Sternberg (1): iwlwifi: incorrect method used for finding valid OTP blocks Jeff Mahoney (2): staging: Complete sched.h removal from interrupt.h staging: more sched.h fixes Jens Axboe (6): cfq-iosched: fix issue with rq-rq merging and fifo list ordering block: get rid of kblock_schedule_delayed_work() block: use proper BLK_RW_ASYNC in blk_queue_start_tag() cfq-iosched: abstract out the 'may this cfqq dispatch' logic cfq-iosched: fix the slice residual sign cfq-iosched: apply bool value where we return 0/1 Jeremy Fitzhardinge (1): x86/paravirt: Use normal calling sequences for irq enable/disable Jesse Barnes (1): ACPI button: don't try to use a non-existent lid device Jiri Kosina (2): HID: fix kerneldoc comment for hid_input_report() HID: fix possible deadlock in hidraw_read Jiri Pirko (1): netlink: fix typo in initialization Jiri Slaby (1): ACPI: Kconfig, fix proc aggregator text Johannes Berg (5): mac80211: fix vlan and optimise RX cfg80211: fix netns error unwinding bug mac80211: fix ibss race b43: fix ieee80211_rx() context mac80211: document ieee80211_rx() context requirement Johannes Weiner (1): ARM: boolean bit testing John Bonesio (1): net/fec_mpc52xx: Fix kernel panic on FEC error Jonathan Cameron (1): Staging: iio: Fix missing include Jonathan Corbet (1): Update flex_arrays.txt Jonathan Woithe (1): fujitsu-laptop: address missed led-class ifdef fixup Josef Bacik (1): Btrfs: fix possible ENOSPC problems with truncate Julia Lawall (1): [ARM] pxa/csb726: adjust duplicate structure field initialization Justin P. Mattock (1): ieee1394: update URLs in debugging-via-ohci1394.txt KOSAKI Motohiro (1): elv_iosched_store(): fix strstrip() misuse Kalle Jokiniemi (1): OMAP: Fix race condition with autodeps Ken Kawasaki (1): 3c574_cs: spin_lock the set_multicast_list function Kenji Kaneshige (1): PCI: Prevent AER driver from being loaded on non-root port PCIE devices Krzysztof Halasa (1): WAN: fix Cisco HDLC handshaking. Larry Finger (1): b43: Fix PPC crash in rfkill polling on unload Len Brown (4): Merge branch 'bugzilla-14129' into release Merge branch 'eeepc-laptop' into release Merge branch 'launchpad-333386' into release Merge branch 'misc' into release Leo Chen (1): ARM: 5748/1: bcmring: fix build warning messages Li Hong (1): x86, perf_event: Rename 'performance counter interrupt' Li Zefan (1): tracing/filters: Fix memory leak when setting a filter Linus Torvalds (43): Revert "USB: Work around BIOS bugs by quiescing USB controllers earlier" tty, serial: Fix race and NULL check in uart_close() Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.infradead.org/~dwmw2/iommu-2.6.32 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Make flush_to_ldisc properly handle parallel calls workqueue: add 'flush_delayed_work()' to run and wait for delayed work tty: use the new 'flush_delayed_work()' helper to do ldisc flush tty: Make flush_to_ldisc() locking more robust workqueue: add 'flush_delayed_work()' to run and wait for delayed work tty: use the new 'flush_delayed_work()' helper to do ldisc flush Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sh/for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'topic/x86-lds-nits' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland Merge branch 'tty-fixes' Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge the right tty-fixes branch Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge branch 'docs-next' of git://git.lwn.net/linux-2.6 Linux 2.6.32-rc5 Mark Langsdorf (1): ACPI: add AC/DC notifier Michael Buesch (2): b43: Don't use struct wldev after detach. b43: Protect sanity check against physical device removal Michael Ellerman (1): powerpc: Fix memory leak in axon_msi.c Michael Holzheu (3): [S390] hypfs: Use subcode 6 if subcode 7 is not available [S390] tape390: Fix request queue handling in block driver [S390] sclp_vt220 build fix Mike Frysinger (1): USB: musb: invert arch depend string Mike Galbraith (1): sched: Update the clock of runqueue select_task_rq() selected Neil Brown (1): sysfs: Allow sysfs_notify_dirent to be called from interrupt context. Nikanth Karthikesan (1): block: Seperate read and write statistics of in_flight requests v2 Nitin Gupta (1): ARM: force dcache flush if dcache_dirty bit set Paul Mundt (8): sh: update die() output. sh: force dcache flush if dcache_dirty bit set. sh: ftrace: Fix up syscall tracepoint support. sh: Use boot_cpu_data for FPU tests in sigcontext paths. sh: Tidy up SMP cpuinfo. sh: Populate initial secondary CPU info from boot_cpu_data. sh: Optimize the setup_rt_frame() I-cache flush. sh: Fix a TRACE_IRQS_OFF typo. Paul Walmsley (1): OMAP2xxx clock: set up clockdomain pointer in struct clk Peter Huewe (1): HID: add __init/__exit macros to twinhan.c Peter Oberparleiter (1): [S390] cio: change misleading console logic Peter Zijlstra (1): lockdep: Use cpu_clock() for lockstat Philby John (1): ALSA: aaci: ARM1176 aaci-pl041 AC97 register read timeout Rafael J. Wysocki (2): PCI PM: Read device power state from register after updating it ACPI / PCI: Fix NULL pointer dereference in acpi_get_pci_dev() (rev. 2) Rakib Mullick (1): eeepc-laptop: Properly annote eeepc_enable_camera(). Randy Dunlap (6): PCI: pci.c: fix kernel-doc notation blk-settings: fix function parameter kernel-doc notation perf tools: Fix const char type propagation sched: Fix missing kernel-doc notation net: ks8851_mll uses mii interfaces vmxnet: fix 2 build problems Reinette Chatre (2): iwlwifi: fix compile warning iwlagn: fix compile warning in iwl5000_gain_computation Robert Hancock (1): ALSA: ice1724: Fix surround on Chaintech AV-710 Robert Richter (1): oprofile: warn on freeing event buffer too early Roel Kluin (2): mac80211: fix ADM8211_SYNCTL_RFtype define mac80211: use kfree_skb() to free struct sk_buff pointers Roger Quadros (1): mfd: Fix twl4030 boot with twl4030 usb transceiver enabled Roland Dreier (2): intel-iommu: Make "Unknown DMAR structure" message more informative intel-iommu: Decode (and ignore) RHSA entries Roland McGrath (1): x86: linker script syntax nits Ron Mercer (7): qlge: Fix RSS hashing values. qlge: Fix frame routing issue related to bonding. qlge: Fix frame routing for multicast frames. qlge: Fix RX multicast filter settings. qlge: Fix chip reset process. qlge: Restore rx mode after internal reset. qlge: Add disable/enable firmare irqs to handler. Russell King (5): ARM: Dump memory and backtrace as one printk per line ARM: Dump code/mem oops lines with the appropriate log level ARM: update die() output ARM: Add kmap_atomic type debugging Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Sam Ravnborg (1): kbuild: revert "save ARCH & CROSS_COMPILE ..." Sanjeev Premi (1): omap: CONFIG_ISP1301_OMAP redefined in Beagle defconfig Sarah Sharp (1): USB: ehci: Fix IST boundary checking interval math. Sean MacLennan (1): powerpc: warning: allocated section `.data_nosave' not in segment Shreyas Bhatewara (1): net: VMware virtual Ethernet NIC driver: vmxnet3 Srinidhi Kasagar (1): ARM: 5741/1: pl022: fix peripheral id for ST vendor Sriram (1): TI DaVinci EMAC: Clear statistics register properly. Stefan Bader (1): ACPI: video: Loosen strictness of video bus detection code Stefan Haberland (2): [S390] dasd: fix locking bug [S390] dasd: use idal for device characteristics Stefan Richter (3): ieee1394: add documentation entry to MAINTAINERS NFS: suppress a build warning firewire: sbp2: provide fallback if mgt_ORB_timeout is missing Stefano Panella (1): USB: wusb: don't use the stack to read security descriptor Stephen M. Cameron (2): cciss: Fix multiple calls to pci_release_regions cciss: Add cciss_allow_hpsa module parameter Steven Rostedt (3): tracing: fix trace_vprintk call powerpc/ftrace: show real return addresses in modules powerpc64/ftrace: use PACA to retrieve TOC in mod_return_to_handler Takashi Iwai (7): ALSA: hda - Add full rates/formats support for Nvidia HDMI ALSA: hda - Fix overflow of spec->init_verbs in patch_realtek.c ALSA: bt87x - Add a whitelist for Pinnacle PCTV (11bd:0012) ALSA: hda - Fix mute sound with STAC9227/9228 codecs ALSA: hda - Fix volume-knob setup for Dell laptops with STAC9228 ALSA: hda - Allow all formats as default for Nvidia HDMI Merge branch 'fix/hda' into for-linus Teerth Reddy (1): omap: Initialization of SDRC params on Zoom2 Tejun Heo (1): percpu: fix compile warnings Theodore Ts'o (1): ext3: Don't update superblock write time when filesystem is read-only Thomas Gleixner (1): watchdog: Fix rio watchdog probe function Tony Lindgren (1): Merge branch '2_6_32rc4_fixes' of git://git.pwsan.com/linux-2.6 into omap-fixes-for-linus Vincent Legoll (1): perf events: Update MAINTAINERS entry file patterns Vincent Sanders (1): net: Fix IXP 2000 network driver building. Wey-Yi Guy (2): iwlwifi: fix EEPROM enhance tx power offset iwlwifi: change the order of freeing memory Willy Tarreau (1): tcp: fix tcp_defer_accept to consider the timeout Wolfram Sang (1): include/linux/netdevice.h: fix nanodoc mismatch Wu Fengguang (2): writeback: account IO throttling wait as iowait writeback: kill space in debugfs item name Yan, Zheng (1): Btrfs: properly wait log writers during log sync Yinghai Lu (1): PCI: get larger bridge ranges when space is available françois romieu (1): r8169: partial support and phy init for the 8168d jamal (1): pkt_sched: pedit use proper struct ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:43 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_13,J_CHICKENPOX_65 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLhtV143747 for ; Fri, 22 Jan 2010 16:21:43 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLg1b143719; Fri, 22 Jan 2010 16:21:42 -0600 Date: Fri, 22 Jan 2010 16:21:42 -0600 Message-Id: <201001222221.o0MMLg1b143719@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.32-rc4, created. v2.6.32-rc4 X-Git-Refname: refs/tags/v2.6.32-rc4 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 742a213497d587595f23674eafad1e520c5af6bd This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.32-rc4 has been created at 742a213497d587595f23674eafad1e520c5af6bd (tag) tagging 161291396e76e0832c08f617eb9bd364d1648148 (commit) replaces v2.6.32-rc3 tagged by Linus Torvalds on Sun Oct 11 14:44:13 2009 -0700 - Log ----------------------------------------------------------------- Linux 2.6.32-rc4 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkrSUbMACgkQF3YsRnbiHLusagCfRTccSO8BYKidDpWUYqbkVATv q+oAn3iROdBaz57tmQAJzxLzep+oGd/T =Hnn0 -----END PGP SIGNATURE----- Aaro Koskinen (1): panic: Fix panic message visibility by calling bust_spinlocks(0) before dying Adam Jackson (1): drm/i915: Initialize HDMI outputs as HDMI connectors, not DVI. Ajit Khaparde (4): be2net: Fix a bug in preparation of mcc wrb which was causing flash operation to fail be2net: Bug Fix while accounting of multicast frames during netdev stats update be2net: Fix a typo in be_cmds.h be2net: Bug fix to properly update ethtool tx-checksumming after ethtool -K tx off Alan Stern (3): USB: serial: don't call release without attach USB: ipaq: fix oops when device is plugged in USB: storage: When a device returns no sense data, call it a Hardware Error Alex Deucher (1): drm/radeon/kms: add support for "Surround View" Alex Elder (1): Merge branch 'master' into for-linus Alexander Duyck (1): e1000e: swap max hw supported frame size between 82574 and 82583 Alexey Dobriyan (2): Btrfs: constify dentry_operations headers: remove sched.h from interrupt.h Amit Kucheria (1): Input: fix rx51 board keymap Anil Ravindranath (1): [SCSI] pmcraid: Changed driver prints to scmd/sdev_printk Anil Veerabhadrappa (1): [SCSI] bnx2i: Fix context mapping issue for architectures with PAGE_SIZE != 4096 Anirban Chakraborty (1): [SCSI] qla2xxx: Fix NULL ptr deref bug in fail path during queue create Anton Blanchard (1): futex: Fix typo in FUTEX_WAIT/WAKE_BITSET_PRIVATE definitions Arjan van de Ven (3): perf timechart: Add a power-only mode x86: Simplify bound checks in the MTRR code x86, timers: Check for pending timers after (device) interrupts Arnaldo Carvalho de Melo (2): perf top: Add poll_idle to the skip list perf tools: elf_sym__is_function() should accept "zero" sized functions Artem Bityutskiy (1): OMAP3: PM: introduce a new powerdomain walk helper Aurelien Jarno (1): KVM: fix LAPIC timer period overflow Avi Kivity (1): KVM: Prevent overflow in KVM_GET_SUPPORTED_CPUID Barry Song (1): Blackfin: BF51x: add PTP MMR defines Bart Van Assche (1): IB: Fix typo in udev rule documentation Bartlomiej Zolnierkiewicz (5): pata_atp867x: fix it to not claim MWDMA support pata_atp867x: PIO support fixes pata_atp867x: add Power Management support sis5513: fix PIO setup for ATAPI devices Revert "Revert "ide: try to use PIO Mode 0 during probe if possible"" Ben Hutchings (2): net: Support inclusion of before nfs: Avoid overrun when copying client IP address string Bernd Schmidt (1): ROMFS: fix length used with romfs_dev_strnlen() function Borislav Petkov (9): initcalls: Add early_initcall() for modules x86: EDAC: carve out AMD MCE decoding logic amd64_edac: fix driver instance lookup table allocation amd64_edac: fix DRAM base and limit address extraction amd64_edac: fix interleave enable tests amd64_edac: fix K8 intlv_sel check amd64_edac: fix chip select handling amd64_edac: fix DRAM base and limit extraction amd64_edac: beef up DRAM error injection Brian Rogers (1): drm/i915: Don't call intel_update_fbc from intel_crtc_cursor_set Catalin Marinas (1): kmemleak: Check for NULL pointer returned by create_object() Chris Mason (5): Btrfs: fix deadlock on async thread startup Btrfs: cleanup extent_clear_unlock_delalloc flags Btrfs: delay clearing EXTENT_DELALLOC for compressed extents Btrfs: fix uninit compiler warning in cow_file_range_nocow Btrfs: fix file clone ioctl for bookend extents Chris Wilson (4): drm/i915: Record device minor rather than pointer in TRACE_EVENT drm/i915: batch submit seqno off-by-one. drm/i915: Enable irq to trace batch buffer completion. perf: Propagate term signal to child Christian Borntraeger (4): KVM: s390: fix memsize >= 4G [S390] module: fix memory leak in s390 module loader [S390] Fix memory leak in /proc/cio_ignore [S390] Fix enabled udelay for short delays. Christof Schmitt (6): [SCSI] sg: Free data buffers after calling blk_rq_unmap_user [SCSI] zfcp: correctly initialize unchained requests [SCSI] zfcp: Fix initial device and cfdc for delayed adapter allocation [SCSI] zfcp: Fix oops during shutdown of offline device [SCSI] zfcp: Fix lockdep warning when offlining device with offline chpid [SCSI] zfcp: Fix hang when offlining device with offline chpid Christoph Hellwig (5): parisc: convert to asm-generic/hardirq.h sparc32: convert to asm-generic/hardirq.h xfs: implement ->dirty_inode to fix timestamp handling xfs: cleanup ->sync_fs xfs: stop calling filemap_fdatawait inside ->fsync Chuck Ebbert (1): perf_events: Make ABI definitions available to userspace Clemens Ladisch (1): sound: via82xx: move DXS volume controls to PCM interface Daniel Walker (1): omap: iovmm: Add missing mutex_unlock Darren Hart (1): futex: fix requeue_pi key imbalance Dave Airlie (7): drm/radeon/kms: respect single crtc cards, only create one crtc. (v2) drm/fb: add setcmap and fix 8-bit support. drm/fb: add more correct 8/16/24/32 bpp fb support. drm/ttm: fix refcounting in ttm global code. drm/radeon: use list_for_each_entry instead of list_for_each drm/radeon/kms: fix vline register for second head. Merge branch 'drm-next' of ../drm-next into drm-linus Dave Chinner (3): xfs: fix xfs_quiesce_data xfs: mark inodes dirty before issuing I/O xfs: make sure xfs_sync_fsdata covers the log David J. Wilder (1): RDMA/addr: Fix resolution of local IPv6 addresses David Jeffery (1): [SCSI] st: fix possible memory use after free after MTSETBLK ioctl David Miller (1): mm, perf_event: Make vmalloc_user() align base kernel virtual address to SHMLBA David S. Miller (11): sparc: Support HW cache events. sparc: Support all ultra3 and ultra4 derivatives. sparc: Add Niagara2 HW cache event support. sparc: Niagara1 perf event support. sparc64: Add initial perf event conflict resolution and checks. sparc64: Increase vmalloc size to fix percpu regressions. sparc64: Add a basic conflict engine in preparation for multi-counter support. sparc64: Minor coding style fixups in perf code. sparc64: Fix comment typo in perf_event.c sparc64: Cache per-cpu %pcr register value in perf code. Revert "ide: try to use PIO Mode 0 during probe if possible" David Vrabel (1): mmc: sdio: don't require CISTPL_VERS_1 to contain 4 strings Dirk Hohndel (1): pata_ali: trivial fix of a very frequent spelling mistake Dmitry Torokhov (2): Input: libps2 - fix dependancy on i8042 Input: i8042 - print debug data when testing AUX IRQ delivery Don Skidmore (2): ixgbe: add support for 82599 Combined Backplane ixgbe: add support for 82599 based X520 10G Dual KX4 Mezz card Eero Nurkkala (1): NOHZ: update idle state also when NOHZ is inactive Elina Pasheva (1): USB: serial: sierra driver version change to 1.3.8 Eric Anholt (1): Merge commit 'ickle/for-anholt' into drm-intel-next Eric Dumazet (3): x86: Don't generate cmpxchg8b_emu if CONFIG_X86_CMPXCHG64=y pktgen: Fix multiqueue handling pktgen: restore nanosec delays Eric Sandeen (1): fix readahead calculations in xfs_dir2_leaf_getdents() Felix Beck (2): [S390] zcrypt: Fix sparse warning. [S390] zcrypt: Improve some comments Frank Mori Hess (2): Staging: comedi: ni_pcimio: Added device id for pxi-6225. Staging: comedi: pcmcia irq fixes Frederic Weisbecker (2): tracing: Check total refcount before releasing bufs in profile_enable failure tracing: Use free_percpu instead of kfree Gerald Schaefer (1): [S390] Add EX_TABLE for addressing exception in usercopy functions. Gergely Imreh (1): USB: usbtmc: fix timeout increase Graf Yang (1): Blackfin: fix missed cache config renames Greg Kroah-Hartman (4): Staging: comedi: serial2002: fix include build issue Staging: remove agnx driver Staging: remove cowloop driver Staging: comedi: fix build on arches that don't want comedi drivers Greg Ungerer (1): m68knommu: fix rename of pt_regs offset defines breakage H Hartley Sweeten (1): Input: rotary_encoder - fix relative axis support Hannes Reinecke (1): [SCSI] Retry ADD_TO_MLQUEUE return value for EH commands Heiko Carstens (6): [S390] Enable kmemleak on s390. [S390] Provide arch specific mdelay implementation. [S390] compat: fix truncate system call wrapper [S390] ftrace: drop nmi protection [S390] perf_counter: fix vdso detection [S390] 64-bit register support for 31-bit processes Helge Deller (3): parisc: rename parisc's vmalloc_start to parisc_vmalloc_start parisc: Fix linker script breakage. agp: parisc-agp.c - use correct page_mask function HighPoint Linux Team (1): [SCSI] hptiop: Add RR44xx adapter support Hiroshi DOYU (1): omap: iovmm: Fix incorrect spelling Hiroshi Shimamoto (1): trace: Fix missing assignment in trace_ctxwake_* Huang Weiyi (1): m68knommu: remove duplicated #include Hugh Dickins (1): ksm: more on default values Ian Abbott (9): Staging: comedi: Corrected type of a printk argument in resize_async_buffer(). Staging: comedi: jr3_pci: Initialize transf variable fully in jr3_pci_poll_subdevice(). Staging: comedi: cb_pcidio: fix "section mismatch" error Staging: comedi: s526: Fix number of channels on DIO subdevice Staging: comedi: s526: Get rid of global variable 'cmReg'. Staging: comedi: s526: Take account of arch's byte order. Staging: comedi: s526: fixes for pulse generator Staging: comedi: ni_65xx.c: fix insn_bits shift calculation. Staging: comedi: ni_65xx.c: fix output inversion problem. Ingo Molnar (1): x86: EDAC: MCE: Fix MCE decoding callback logic Izik Eidus (3): KVM: MMU: dont hold pagecount reference for mapped sptes pages KVM: MMU: add SPTE_HOST_WRITEABLE flag to the shadow ptes KVM: add support for change_pte mmu notifiers James Bottomley (1): parisc: add me to Maintainers Jan Beulich (2): x86: Don't leak 64-bit kernel register values to 32-bit processes iSCSI/iBFT: use proper address translation Jason Wessel (1): x86: earlyprintk: Fix regression to handle serial,ttySn as 1 arg Jaswinder Singh Rajput (7): parisc: includecheck fix: signal.c x86, SLUB: Remove unused CONFIG FAST_CMPXCHG_LOCAL Blackfin: includecheck fix: mach-bf548, ezkit.c mm: includecheck fix: vmalloc.c fs: includecheck fix: proc, kcore.c video: includecheck fix: msm, mddi.c video: includecheck fix: da8xx-fb.c Jayamohan Kallickal (3): [SCSI] be2iscsi: add 10Gbps iSCSI - BladeEngine 2 driver [SCSI] libiscsi: iscsi_session_setup to allow for private space [SCSI] be2iscsi: Moving to pci_pools v3 Jean Delvare (1): MAINTAINERS: Fix Riku Voipio's address Jeff Mahoney (3): Staging: winbond: implement prepare_multicast and fix API usage Staging: iio: Don't build on s390 Staging: rtl8192e: Add #include Jerome Glisse (14): drm/radeon/kms: Convert RS400/RS480 to new init path & fix legacy VGA (V3) drm/radeon/kms: Convert R300 to new init path drm/radeon/kms: Convert R100 to new init path (V2) drm/radeon/kms: Convert RS690/RS740 to new init path (V2). drm/radeon/kms: Convert RS600 to new init path drm/radeon/kms: Remove old init path as no hw use it anymore drm/radeon/kms: Fix R600 write back buffer drm/radeon/kms: Fix R600/RV770 startup path & reset drm/radeon/kms: Fix R600/RV770 disable acceleration path drm/radeon/kms: R600/RV770 remove dead code and print message for wrong BIOS drm/radeon/kms: Fix irq handling on AVIVO hw drm/radeon/kms: Fix RS600/RV515/R520/RS690 IRQ drm/radeon/kms: Fallback to non AGP when acceleration fails to initialize (v2) drm/radeon/kms: Fix AGP support for R600/RV770 family (v2) Jing Huang (1): [SCSI] bfa: Brocade BFA FC SCSI driver Jiri Slaby (1): USB: usblcd, fix memory leak Joerg Roedel (2): KVM: SVM: Fix tsc offset adjustment when running nested KVM: SVM: Handle tsc in svm_get_msr/svm_set_msr correctly Johan Hovold (6): USB: ftdi_sio: remove tty->low_latency USB: ftdi_sio: remove unused rx_byte counter USB: ftdi_sio: clean up read completion handler USB: ftdi_sio: re-implement read processing USB: pl2303: fix error characters not being reported to ldisc USB: digi_acceleport: Fix broken unthrottle. Johannes Berg (1): wext: let get_wireless_stats() sleep John W. Linville (1): rndis_host: support ETHTOOL_GPERMADDR John(Jung-Ik) Lee (1): pata_atp867x: clarifications in timings calculations and cable detection Jon Hunter (1): OMAP3: PM: Prevent hang in prcm_interrupt_handler Jonathan Cameron (1): ASoC: wm8940: Fix check on error code form snd_soc_codec_set_cache_io Joris van Rantwijk (1): USB: Fix throttling in generic usbserial driver Josef Bacik (4): Btrfs: fix possible softlockup in the allocator Btrfs: release delalloc reservations on extent item insertion Btrfs: async delalloc flushing under space pressure Btrfs: optimize fsync for the single writer case Julia Lawall (1): parisc: correct use of SHF_ALLOC Kashyap, Desai (9): [SCSI] mpt2sas: Update driver to MPI2 REV K headers. [SCSI] mpt2sas: Added mpi2_history.txt for MPI2 headers. [SCSI] mpt2sas: Copyright change to 2009. [SCSI] mpt2sas: Added SCSIIO, Internal and high priority memory pools to support multiple TM [SCSI] mpt2sas: Target Reset will be issued from Interrupt context. [SCSI] mpt2sas: Call init_completion on a per request basis. [SCSI] mpt2sas: Timeout occurred within the HANDSHAKE logic while waiting on firmware to ACK. [SCSI] mpt2sas: Support dev remove when phy status is MPI2_EVENT_SAS_TOPO_PHYSTATUS_VACANT [SCSI] mpt2sas: Bump version 02.100.03.00 Keith Mannthey (1): amd64_edac: simple fix to allow reporting of CECC errors Ken Kawasaki (1): pcnet_cs: add cis of National Semicondoctor's multifunction pcmcia card Kevin Hilman (1): OMAP3: PM: Enable GPIO module-level wakeups Krzysztof Helt (1): ALSA: opl3: circular locking in the snd_opl3_note_on() and snd_opl3_note_off() Kuninori Morimoto (3): sh: mach-ecovec24: Add TouchScreen support sh: mach-ecovec24: modify 1st MTD area to read only sh: mach-ecovec24: Document DS2 switch settings. Kyle McMartin (7): parisc: tracehook_report_syscall parisc: tracehook_signal_handler parisc: add missing TI_TASK macro in syscall.S parisc: split syscall_trace into two halves parisc: stop using task->ptrace for {single,block}step flags parisc: add skeleton syscall.h parisc: HAVE_ARCH_TRACEHOOK Lennart Sorensen (1): m68knommu: show KiB rather than pages in "Freeing initrd memory:" message Linus Torvalds (42): x86: Optimize cmpxchg64() at build-time some more Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge branch 'fixes-for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'kvm-updates/2.6.32' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sparc-perf-events-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'sh/for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Linux 2.6.32-rc4 Lubomir Rintel (1): sh: Build fix: export __movmem Luca Tettamanti (2): hwmon: (asus_atk0110) Refactor the code hwmon: (asus_atk0110) Enable the EC Magnus Damm (2): usb: r8a66597-udc unaligned fifo fix sh: enable sleep state LEDs on Ecovec24 Marcelo Tosatti (1): KVM: VMX: flush TLB with INVEPT on cpu migration Marcin Slusarz (1): ide: use printk_once Marin Mitov (1): x86, pci: Correct spelling in a comment Mark Brown (5): Merge branch 'for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into for-2.6.32 ASoC: Remove absent SYNC and TDM DAI format options from i.MX SSI ASoC: WM8350 capture PGA mutes are inverted Merge branch 'upstream/wm8350' into for-2.6.32 hwmon: (s3c-hwmon) Disable build for S3C64xx Markus Trippelsdorf (1): ahci: Add ifdef wrapper to ahci_gtf_filter_workaround Martin K. Petersen (5): [SCSI] Deprecate SCSI_PROT_*_CONVERT operations [SCSI] sd: Detach DIF from block integrity infrastructure [SCSI] Fix protection scsi_data_buffer leak [SCSI] sd: Support disks formatted with DIF Type 2 [SCSI] scsi_debug: Implement support for DIF Type 2 Martin Schwidefsky (2): [S390] fix build breakage with CONFIG_AIO=n [S390] pm: ignore time spend in suspended state Matt Carlson (1): tg3: Fix phylib locking strategy Matt Fleming (6): sh: Don't enable interrupts in the page fault path tracing: Fix infinite recursion in ftrace_update_pid_func() sh: Sprinkle __uses_jump_to_uncached sh: Plug PMB alloc memory leak sh: Try PMB mapping based on physical address, not mapping size sh: Don't allocate smaller sized mappings on every iteration Michael Ernst (1): [S390] cio: channel path memory leak Michael Hennerich (3): Input: ad7879 - pass up error codes from probe functions Blackfin: convert adv7393 resources to new i2c framework Blackfin: convert to GENERIC_HARDIRQS_NO__DO_IRQ Michael Holzheu (1): [S390] hibernate: Use correct place for CPU address in lowcore Michal Simek (2): microblaze: UMS is used only for MMU kernel microblaze: Clear sticky FSR register after saving it to func parametr Mike Frysinger (7): Blackfin: asm/irq.h: pull in mach/anomaly.h for anomaly defines Blackfin: cplbinfo: drop d_path() hacks Blackfin: bf533-ezkit: convert to physmap/jedec_probe Blackfin: drop cs_change_per_word setting Blackfin: drop all simple-gpio board resources USB: musb: make HAVE_CLK support optional USB: isp1362: fix build warnings on 64-bit systems Mimi Zohar (1): ima: ecryptfs fix imbalance message Moger, Babu (1): [SCSI] scsi_dh_rdac: Fix for returning correct mode select cmd return info Mulyadi Santosa (1): perf tools: Run generate-cmdlist.sh properly Neil Horman (1): add maintainer for network drop monitor kernel service Nick Cheng (1): [SCSI] mvsas: Support Areca SAS/SATA HBA, ARC-1300/1320 Oliver Neukum (7): USB: visor: fix trivial accounting bug in visor driver USB: small fix in error case of suspend in generic usbserial code USB: serial: fix race between unthrottle and completion handler in opticon USB: serial: fix race between unthrottle and completion handler in symbolserial USB: serial: fix assumption that throttle/unthrottle cannot sleep USB: serial: fix race between unthrottle and completion handler in visor USB: serial: no unnecessary GFP_ATOMIC in oti6858 Paul E. McKenney (10): rcu: Clean up code based on review feedback from Josh Triplett rcu: Clean up code based on review feedback from Josh Triplett, part 2 rcu: Clean up code to address Ingo's checkpatch feedback rcu: Fix rcu_lock_map build failure on CONFIG_PROVE_LOCKING=y rcu: Clean up code based on review feedback from Josh Triplett, part 3 rcu: Clean up code based on review feedback from Josh Triplett, part 4 rcu: Replace the rcu_barrier enum with pointer to call_rcu*() function rcu: Move rcu_barrier() to rcutree rcu: Make hot-unplugged CPU relinquish its own RCU callbacks rcu: Place root rcu_node structure in separate lockdep class Paul Menage (1): cgroups: update documentation of cgroups tasks and procs files Paul Mundt (5): sh: Handle ioport_map() cases for >= P1SEG addresses. sh: Set the default I/O port base to P2SEG. sh: magicpanelr2 and dreamcast can use the generic I/O base. sh: Disable unaligned kernel access printks by default. kmemtrace: Fix up tracer registration Paul Walmsley (2): OMAP3: PM: PRCM interrupt: check MPUGRPSEL register OMAP3: PM: PRCM interrupt: only handle selected PRCM interrupts Pavel Hofman (1): ALSA: ICE1712/24 - Change the Multi Track Peak control (level meters) from MIXER to PCM type Pekka Enberg (1): Staging: w35und: Fix ->beacon_int breakage Peter Magdina (1): USB: option: Toshiba G450 device id Peter Oberparleiter (3): [S390] cio: make disconnected handling consistent [S390] cio: make not operational handling consistent [S390] cio: allow setting boxed devices offline Peter Ujfalusi (1): ASoC: Fix SND_SOC_DAPM_LINE handling Peter Williams (1): sched: Set correct normal_prio and prio values in sched_fork() Peter Zijlstra (2): perf_event: Provide vmalloc() based mmap() backing futex: Nullify robust lists after cleanup Rajendra Nayak (1): omap: Lock DPLL5 at boot Rajiv Andrade (1): TPM: fix pcrread Rakib Mullick (1): hwmon: (sht15) Fix spurious section mismatch warning Ralf Baechle (1): IRQ: Change __softirq_pending to unsigned int in asm-generic/hardirq.h. Randy Dunlap (2): [SCSI] scsi_transport_fc: fix missing kernel-doc ecryptfs: depends on CRYPTO Robert Hancock (2): ahci: display all AHCI 1.3 HBA capability flags (v2) ALSA: ice1724: increase SPDIF and independent stereo buffer sizes Robert Noland (1): drm/r600: avoid assigning vb twice in blit code Robin Getz (1): Blackfin: mass clean up of copyright/licensing info Roel Kluin (2): drm/radeon: Fix setting of bits netxen: Fix Unlikely(x) > y Roland Dreier (2): hrtimer: Remove overly verbose "switch to high res mode" message Merge branches 'cxgb3', 'misc' and 'mlx4' into for-next Ron Mercer (3): qlge: Fix some bit definitions for reset register. qlge: Fix queueing of firmware handler in ISR. qlge: Fix lock/mutex warnings. Ronnie Furuskog (1): USB: option: Patch for Huawei Mobile Broadband E270+ Modem Samu Onkalo (1): lis3lv02d_spi: module unload didn't remove sysfs entry Samuel Thibault (1): x86: Fix csum_ipv6_magic asm memory clobber Sarah Sharp (5): USB: xhci: Stop debugging polling loop when HC dies. USB: xhci: Handle canceled URBs when HC dies. USB: xhci: Don't wait for a disable slot cmd when HC dies. USB: xhci: Fix dropping endpoints from the xHC schedule. USB: ehci: Fix isoc scheduling boundary checking. Sebastian Frei (1): Input: wistron_btns - add DMI entry for Medion WIM2030 laptop Sebastian Ott (1): [S390] 3270 console build fix Serge E. Hallyn (1): Staging: p9auth: a few fixes Sergey Pinaev (1): USB: storage: iRiver P7 UNUSUAL_DEV patch Sergio Aguirre (1): omapfb: Condition mutex acquisition Stefan Haberland (1): [S390] dasd: fix race condition in resume code Stephen Boyd (1): connector: Fix incompatible pointer type warning Stephen Hemminger (1): ipv4: arp_notify address list bug Stephen Rothwell (1): sparc: using HZ needs an include of linux/param.h Steve Wise (2): RDMA/iwcm: Don't call provider reject func with irqs disabled RDMA/cxgb3: Handle NULL inetdev pointer in iwch_query_port() Steven Rostedt (3): tracing: fix transposed numbers of lock_depth and preempt_count ftrace: check for failure for all conversions tracing: user local buffer variable for trace branch tracer Takashi Iwai (6): ALSA: hda - Fix invalid initializations for ALC861 auto mode ALSA: hda - Add a workaround for ASUS A7K ALSA: hda - Don't pick up invalid HP pins in alc_subsystem_id() ALSA: hda - Fix yet another auto-mic bug in ALC268 Merge branch 'fix/hda' into for-linus Merge branch 'fix/misc' into for-linus Tejun Heo (7): [SCSI] sr: consider the last written sector when determining media size ahci: disable 64bit DMA by default on SB600s libata: cosmetic updates libata: implement more acpi filtering options libata: make gtf_filter per-dev ahci: filter FPDMA non-zero offset enable for Aspire 3810T libata: fix incorrect link online check during probe Tetsuo Handa (1): kmemleak: Use GFP_ATOMIC for early_alloc(). Thomas Chou (6): ethoc: fix typo to compute number of tx descriptors ethoc: fix buffer address mapping ethoc: align received packet to make IP header at word boundary ethoc: use system memory as buffer ethoc: limit the number of buffers to 128 Blackfin: fix framebuffer mmap bug for nommu Thomas Gleixner (2): futex: Fix locking imbalance futex: Move exit_pi_state() call to release_mm() Thomas Gruber (1): Input: xpad - add BigBen Interactive XBOX 360 Controller Tilman Schmidt (12): Documentation: expand isdn/INTERFACE.CAPI document isdn: accept CAPI Informational Info values as success isdn: avoid races in capidrv isdn: make capidrv module parameter "debugmode" writeable gigaset: fix reject/hangup handling gigaset: linearize skb gigaset: handle isoc frame errors more gracefully gigaset: announce if built with debugging gigaset: fix device ERROR response handling gigaset: improve error recovery gigaset: correct debugging output selection gigaset: add kerneldoc comments Tim Abbott (1): parisc: Make THREAD_SIZE available to assembly files and linker scripts. Tobias Klauser (1): USB: gadget: imx_udc: Use resource size Tom Zanussi (3): perf trace: Remove unused code in builtin-trace.c perf trace: Update eval_flag() flags array to match interrupt.h tracing/syscalls: Use long for syscall ret format and field definitions Tommi Rantala (2): omapfb: Blizzard: fix pointer to be const omapfb: Blizzard: constify register address tables Tony Lindgren (2): omap: Fix incorrect 730 vs 850 detection Merge branch 'pm-fixes-32' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into omap-fixes-for-linus Trond Myklebust (5): NFS: Fix a default mount regression... NFS: Fix port and mountport display in /proc/self/mountinfo NFS: Fix port initialisation in nfs_remount() NFSv4: Fix the referral mount code NFSv4: Kill nfs4_renewd_prepare_shutdown() Tyler Hicks (1): eCryptfs: Remove Kconfig NET dependency and select MD5 Uwe Kleine-König (1): Input: sparkspkr - move remove() functions to .devexit.text Valentine Barshak (1): pasemi_mac: ethtool get settings fix Vikram Pandita (1): OMAP3: PM: USBHOST: clear wakeup events on both hosts Wu Fengguang (8): pagemap: export KPF_HWPOISON pagemap: document KPF_KSM and show it in page-types page-types: add GPL note page-types: introduce checked_open() page-types: make standalone pagemap/kpageflags read routines page-types: make voffset local variables page-types: introduce kpageflags_flags() page-types: add hwpoison/unpoison feature Xiao Guangrong (2): perf_event: Fix event group handling in __perf_event_sched_*() perf_event: Clean up perf_event_init_task() Yan, Zheng (2): Btrfs: remove negative dentry when deleting subvolumne Btrfs: optimize back reference update during btrfs_drop_snapshot Yevgeny Petrilin (1): mlx4_core: Add 40GigE device ID Yinghai Lu (1): pci: increase alignment to make more space for hidden code Zhao Yakui (2): drm/i915: Multiply the refresh by 1000 in TV mode validatiion drm: Delete the DRM_DEBUG_KMS in drm_mode_cursor_ioctl Zhenwen Xu (1): tracing: fix warning on kernel/trace/trace_branch.c andtrace_hw_branches.c john stultz (1): Blackfin: convert to use arch_gettimeoffset() jolsa@redhat.com (1): tracing: correct module boundaries for ftrace_release roel kluin (1): au1000_eth: Duplicate test of RX_OVERLEN bit in update_rx_stats() ye janboe (1): omap: SRAM: flush the right address after memcpy in omap_sram_push Éric Piel (1): USB: cp210x: Add support for the DW700 UART ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:48 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_44,J_CHICKENPOX_64,J_CHICKENPOX_82 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLm0l143838 for ; Fri, 22 Jan 2010 16:21:48 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLjAC143796; Fri, 22 Jan 2010 16:21:45 -0600 Date: Fri, 22 Jan 2010 16:21:45 -0600 Message-Id: <201001222221.o0MMLjAC143796@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.32-rc6, created. v2.6.32-rc6 X-Git-Refname: refs/tags/v2.6.32-rc6 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 53a1963436f23ee8b6fa29a5ebcd925a9912594b This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.32-rc6 has been created at 53a1963436f23ee8b6fa29a5ebcd925a9912594b (tag) tagging b419148e567728f6af0c3b01965c1cc141e3e13a (commit) replaces v2.6.32-rc5 tagged by Linus Torvalds on Tue Nov 3 11:37:59 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.32-rc6 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkrwhp8ACgkQF3YsRnbiHLtUXQCgi6R4is2JwwzPSpSEkPYETv/U 5HcAoK+OhOsjs8AN17rm8GFVLJaEXdb1 =lAa/ -----END PGP SIGNATURE----- Alan Cox (4): pata_sc1200: Fix crash on boot dpt_i2o: Fix up copy*user ray_cs: Fix copy_from_user handling tty: Mark generic_serial users as BROKEN Alex Chiang (7): Documentation: ABI: rename sysfs-devices-cache_disable properly Documentation: ABI: document /sys/devices/system/cpu/ Documentation: ABI: /sys/devices/system/cpu/ topology files Documentation: ABI: /sys/devices/system/cpu/cpu#/ topology files Documentation: ABI: /sys/devices/system/cpu/sched_[mc|smt]_power_savings Documentation: ABI: /sys/devices/system/cpu/cpuidle/ Documentation: ABI: /sys/devices/system/cpu/cpu#/node Alex Elder (1): Merge branch 'master' of ssh://oss.sgi.com/oss/git/xfs/xfs into for-linus Alexander Duyck (3): igb: fix memory leak when setting ring size while interface is down ixgbe: fix memory leak when resizing rings while interface is down igbvf: fix memory leak when ring size changed while interface down Alexey Dobriyan (2): loop: fix NULL dereference if mount fails sysctl: fix false positives when PROC_SYSCTL=n Amit Kumar Salecha (1): netxen: fix tx timeout handling on firmware hang Andi Kleen (4): HWPOISON: Clean up PR_MCE_KILL interface HWPOISON: Add brief hwpoison description to Documentation HWPOISON: Fix page count leak in hwpoison late kill in do_swap_page HWPOISON: Allow schedule_on_each_cpu() from keventd Andreas Gruenbacher (1): dnotify: ignore FS_EVENT_ON_CHILD Andreas Schwab (2): powerpc: Fix segment mapping in vdso32 powerpc: Align vDSO base address Andrew Morton (2): dm log: userspace fix incorrect luid cast in userspace_ctr revert "mm: oom analysis: add buffer cache information to show_free_areas()" Andrey Yurovsky (1): mac80211: trivial: fix spelling in mesh_hwmp Andy Whitcroft (7): checkpatch: possible types -- prevent illegal modifiers being added checkpatch: correctly stop scanning at the bottom of a hunk checkpatch: update copyright dates checkpatch: fix false errors due to macro concatenation checkpatch: fix __attribute__ matching checkpatch: fix false EXPORT_SYMBOL warning checkpatch: version 0.30 Anton Vorontsov (1): USB: fsl_udc_core: Fix kernel oops on module removal Arjan van de Ven (4): perf timechart: Fix the wakeup-arrows that point to non-visible processes perf timechart: Improve the visual appearance of scheduler delays net: use WARN() for the WARN_ON in commit b6b39e8f3fbbb x86: Remove STACKPROTECTOR_ALL Arnaud Patard (1): MIPS: O32: Fix ppoll Artem Bityutskiy (2): ARM: 5759/1: Add register information of threads to coredump UBI: fix backward compatibility Atsushi Nemoto (1): MIPS: TXx9: Fix spi-baseclk value Barry Song (1): ASoC: Fix possible codec_dai->ops NULL pointer problems Bartlomiej Zolnierkiewicz (2): MAINTAINERS: rt2x00 list is moderated MAINTAINERS: rt2x00 list is moderated Ben Dooks (12): KS8851: Add soft reset at probe time KS8851: Fix MAC address write order KS8851: Fix ks8851_set_rx_mode() for IFF_MULTICAST DM9000: Fix revision ID for DM9000B ARM: S3C: Add info for supporting circular DMA buffers ARM: S3C2410: Fix link if CONFIG_S3C2410_IOTIMING is not set ARM: Merge fixes-s3c64xx ARM: Merge fixes-s3c64xx-dma ARM: S3C2440: mini2440: Fix missing CONFIG_S3C_DEV_USB_HOST ARM: S3C24XX: Fix warnings in arch/arm/plat-s3c24xx/gpio.c ARM: S3C2440: mini2440: Fix spare warnings ARM: S3C2410: Fix sparse warnings in arch/arm/mach-s3c2410/gpio.c Ben Hutchings (2): sfc: Set ip_summed correctly for page buffers passed to GRO hfsplus: refuse to mount volumes larger than 2TB Benjamin Herrenschmidt (3): powerpc/ppc64: Use preempt_schedule_irq instead of preempt_schedule Merge commit 'gcl/merge' into merge 8250_pci: add IBM Saturn serial card Benoit PAPILLAULT (1): rt2x00: Fix crypto in TX frame for rt2800usb Björn Smedman (1): mac80211: fix for incorrect sequence number on hostapd injected frames Bo Liu (1): mm: remove incorrect swap_count() from try_to_unuse() Borislav Petkov (1): amd64_edac: fix DRAM base and limit extraction masks, v2 Brandon Philips (1): sky2: set carrier off in probe Brice Goglin (1): myri10ge: improve port type reporting in ethtool Bruce Allan (9): e1000e: reset the PHY on 82577/82578 when going to Sx e1000e: clear PHY wakeup bit after LCD reset on 82577/82578 e1000e: increase swflag acquisition timeout for ICHx/PCH e1000e: 82577/82578 requires a different method to configure LPLU e1000e: separate mutex usage between NVM and PHY/CSR register for ICHx/PCH e1000e: allow for swflag to be held over consecutive PHY accesses e100: e100_phy_init() isolates selected PHY, causes 10 second boot delay e1000e: config PHY via software after resets e1000e: rework disable K1 at 1000Mbps for 82577/82578 Bryan Wu (1): USB: option: TLAYTECH TUE800 support Catalin Marinas (1): ARM: 5757/1: Thumb-2: Correct "mov.w pc, lr" instruction which is unpredictable Chris Dearman (4): MIPS: MTI: Fix accesses to device registers on MIPS boards MIPS: SPRAM: Clean up support code a little MIPS: CMP: Fix memory barriers for correct operation of amon_cpu_start MIPS: GIC: Random fixes and enhancements. Christian Borntraeger (2): virtio: let header files include virtio_ids.h connector: fix regression introduced by sid connector Christof Schmitt (4): [SCSI] zfcp: Handle WWPN mismatch in PLOGI payload [SCSI] zfcp: Warn about storage devices with broken PLOGI data [SCSI] zfcp: Fix timer initialization for ct and els requests [SCSI] zfcp: Flush SCSI registration work when adding unit Christoph Hellwig (2): xfs: fix double IRELE in xfs_dqrele_inode virtio_blk: revert QUEUE_FLAG_VIRT addition Claudio Scordino (1): ARM: 5776/1: Check compiler version and EABI support when adding ARM unwind support. Clemens Ladisch (1): sound: via82xx: deactivate DXS controls of inactive streams Daisuke Nishimura (1): mm: don't call pte_unmap() against an improper pte Dan Williams (6): md/raid5: initialize conf->device_lock earlier md/raid456: downlevel multicore operations to raid_run_ops md/raid6: kill a gcc-4.0.1 'uninitialized variable' warning async_pq: kill a stray dma_map() call and other cleanups async_pq: rename scribble page async_tx: fix asynchronous raid6 recovery for ddf layouts Daniel T Chen (1): ALSA: hda: Use quirk mask for Dell Inspiron Mini9/Vostro A90 using ALC268 Darren Hart (2): futex: Check for NULL keys in match_futex futex: Move drop_futex_key_refs out of spinlock'ed region Darrick J. Wong (2): KVM: Prevent kvm_init from corrupting debugfs structures hwmon: enhance the sysfs API for power meters Dave Airlie (2): drm/radeon/kms: ignore vga arbiter return. drm/kms: fix kms/fbdev colormap support properly. Dave Young (2): bluetooth: scheduling while atomic bug fix bluetooth: static lock key fix David Daney (3): MIPS: Octeon: Fix compile error in arch/mips/cavium-octeon/smp.c MIPS: Octeon: Use write_{un,}lock_irq{restore,save} to set irq affinity MIPS: Octeon: Use lockless interrupt controller operations when possible. David Howells (1): NOMMU: Don't pass NULL pointers to fput() in do_mmap_pgoff() David Härdeman (1): Input: winbond-cir - select LEDS_TRIGGERS David S. Miller (3): Revert "tcp: fix tcp_defer_accept to consider the timeout" Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 David Woodhouse (1): libertas if_usb: Fix crash on 64-bit machines Dhananjay Phadke (2): netxen: fix i2c init netxen: avoid undue board config check Dmitry Eremin-Solenikov (1): Input: gpio-keys - use IRQF_SHARED Dmitry Torokhov (10): Input: synaptics - add another Protege M300 to rate blacklist Input: i8042 - make pnp_data_busted variable boolean instead of int Input: atkbd - restore resetting LED state at startup Input: atkbd - postpone restoring LED/repeat rate at resume Input: fix locking issue in /proc/bus/input/ handlers Input: i8042 - add Sony Vaio VGN-FZ240E to the nomux list Input: logips2pp - model 73 is actually TrackMan FX Driver core: allow certain drivers prohibit bind/unbind via sysfs Merge commit 'v2.6.32-rc5' into for-linus Input: i8042 - try to get stable CTR value when initializing Dominik Brodowski (3): pcmcia: pccard_read_tuple and TUPLE_RETURN_COMMON cleanup pcmcia: do not try to store more than 4 version strings ALSA: pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (sound) Earl Chew (1): fs: pipe.c null pointer dereference Eero Nurkkala (1): ASoC: Serialize access to dapm_power_widgets() Eli Cohen (1): mlx4_core: Add a new supported 40 GigE device ID Elina Pasheva (2): USB: serial: sierra driver send_setup() autopm fix USB: serial: sierra driver autopm fixes Eric Dumazet (7): virtio_net: use dev_kfree_skb_any() in free_old_xmit_skbs() net: Fix IP_MULTICAST_IF net: Fix struct inet_timewait_sock bitfield annotation ifb: should not use __dev_get_by_index() without locks pktgen: Dont leak kernel memory net: fix kmemcheck annotations net: fix sk_forward_alloc corruption Eric Paris (2): fsnotify: do not set group for a mark before it is on the i_list inotify: deprecate the inotify kernel interface Eric Sandeen (1): xfs: free temporary cursor in xfs_dialloc Eric Van Hensbergen (1): 9p: fix readdir corner cases Feng Tang (1): x86: Make EFI RTC function depend on 32bit again Florian Fainelli (6): MIPS: BCM63xx: Fix soft-reset lockup on BCM6345 MIPS: AU1000: Fix build failure for db1x00 configured for Au1100 SoC MIPS: BCM63xx: Make bcm63xx_uart_register an initfunc MIPS: BCM63xx: Prepare for watchdog support MIPS: AR7: register watchdog device only if enabled in hw configuration MIPS: bcm63xx: Set the correct BCM3302 CPU name Frans Pop (1): pcmcia: properly close previous dev_printk if kzalloc fails in do_io_probe Frederik Deweerdt (1): KVM: MMU: fix pointer cast Gabor Gombas (1): net: Fix 'Re: PACKET_TX_RING: packet size is too long' George Nassar (1): USB: rndis_host: debug info clobbered before it is logged Grant Likely (2): powerpc/5200: Update defconfigs MAINTAINERS: add Open Firmware / Flattened Device Tree entry Greg Kroah-Hartman (3): Staging: remove stlc45xx driver Staging: android: mark subsystem as broken Staging: wireless drivers Kconfig change Guennadi Liakhovetski (2): fix compilation of i.MX31 platforms fix pcm037_eet compilation with the new SPI driver Gwendal Grignou (1): sata_mv: Prevent PIO commands to be defered too long if traffic in progress. Haavard Skinnemoen (1): atmel_serial: fix bad BUILD_BUG_ON() usage Haiyang Zhang (1): Staging: hv: Fix null pointer error after vmbus loading Hank Janssen (1): Staging: hv: Fix vmbus load hang caused by faulty data packing Harald Welte (1): ARM: S3C24XX: Introduce S3C2442B CPU Hartley Sweeten (4): ARM: 5760/1: ep93xx: fix build error in edb93xx.c ARM: 5767/1: ep93xx: remove ep93xx_init_time() prototype ARM: 5768/1: ep93xx: remove dead code in ep93xx_gpio_ab_irq_handler() ARM: 5769/1: CPU_ARM920T: remove dead Maverick EP9312 URL Heiko Carstens (6): [SCSI] zfcp: fix kfree handling in zfcp_init_device_setup [S390] smp: fix prefix handling of offlined cpus [S390] call home: fix error handling in init function [S390] call home: fix string length handling [S390] smp: fix sigp stop handling [S390] smp: fix sigp sense handling Heiko Schocher (2): mpc5200: support for the MAN mpc5200 based board uc101 mpc5200: support for the MAN mpc5200 based board mucmc52 Herbert Xu (3): crypto: padlock-sha - Fix stack alignment tcp: Try to catch MSG_PEEK bug gre: Fix dev_addr clobbering for gretap Herton Ronaldo Krzesinski (2): Input: atkbd - consolidate force release quirks for volume keys Staging: rtl8187se/rtl8192e/rtl8192su: allow module unload Hiroshi DOYU (1): omap: iommu: fix wrong condition check for SUPERSECTION Holger Schurig (1): libertas spi: fix sparse errors Huang Ying (1): crypto: aesni-intel - Fix irq_fpu_usable usage Huaxu Wan (1): hwmon: (coretemp) Maintainer update Hugh Dickins (4): HWPOISON: fix oops on ksm pages HWPOISON: fix/proc/meminfo alignment hwpoison: fix oops on ksm pages hwpoison: fix/proc/meminfo alignment Ian Campbell (1): Correct nr_processes() when CPUs have been unplugged Ian E. Morgan (1): lis3: add support for the HP HDX 18 Ilkka Koskinen (1): mfd: Do not dereference null pointer in twl4030 error path Ingo Molnar (2): x86: Document linker script ASSERT() quirk perf tools: Bump version to 0.0.2 Ira W. Snyder (1): edac: i5400 fix missing CONFIG_PCI define Jaidev Patwardhan (2): MIPS: GCMP: Avoid accessing registers when they are not present MIPS: SMTC: Avoid queing multiple reschedule IPIs James Bottomley (1): [SCSI] fix memory leak in initialization Jamie Lentin (1): Input: atkbd - add a quirk for OQO 01+ multimedia keys Jan Beulich (1): x86-64: Fix register leak in 32-bit syscall audting Janusz Krzysztofik (5): omap: Fix omap-keypad by restoring old keypad.h without breaking omap2 boards that use matrix_keypad omap1: Fix redundant UARTs pin muxing that can break other hardware support omap1: Fix DSP public peripherals support for ams-delta ASoC: Amstrad Delta: add info about the line discipline requirement to Kconfig help text netdev: usb: dm9601.c can drive a device not supported yet, add support for it Jasper Spaans (1): bonding: Modify hash transmit policies to use the packet's source MAC address Jean Delvare (2): hwmon: (dme1737) No vid attributes for SCH311x hwmon: (it87) Fix VID reading on IT8718F/IT8720F Jeff Mahoney (1): hfs: fix oops on mount with corrupted btree extent records Jeff Roberson (1): edac: i5400 fix csrow mapping Jens Axboe (1): backing-dev: ensure that a removed bdi no longer has super_block referencing it Jeremy Fitzhardinge (1): xen: set up mmu_ops before trying to set any ptes Jesse Barnes (1): Revert "PCI: get larger bridge ranges when space is available" Jiri Bohac (1): bonding: fix a race condition in calls to slave MII ioctls Jiri Kosina (2): percpu: allow pcpu_alloc() to be called with IRQs off sched: move rq_weight data array out of .percpu Jiri Olsa (4): tracing: Update *ppos instead of filp->f_pos tracing: Fix trace_seq_printf() return value tracing: Fix comment typo and documentation example tracing: Remove cpu arg from the rb_time_stamp() function Jiri Slaby (4): x86: crash_dump: Fix non-pae kdump kernel memory accesses PM / Hibernate: Fix blkdev refleaks PM / Hibernate: Fix error handling in save_image() PM / Hibernate: Add newline to load_image() fail path Joakim Tjernlund (1): i2c-mpc: Do not generate STOP after read. Joe Perches (13): MAINTAINERS: update GENERIC UIO FOR PCI DEVICES MAINTAINERS: update TRACING section MAINTAINERS: update OMAP Tony Lindgren email name MAINTAINERS: change ATM mailing list to moderated MAINTAINERS: use tab not spaces after field types MAINTAINERS: update Kernel Janitors after mismerge MAINTAINERS: update SCORE architecture name style and add file pattern MAINTAINERS: SIMPLE FIRMWARE INTERFACE: update email style MAINTAINERS: WINBOND CIR - Integrate P:/M: lines, fixup David Härdeman's name MAINTAINERS: fix up PERIPHERAL spelling MAINTAINERS: update WOLFSON MICROELECTRONICS scripts/get_maintainer.pl: add patch/file search for keywords MAINTAINERS: document new "K:" entry type Johannes Berg (7): mac80211: keep auth state when assoc fails cfg80211: sme: deauthenticate on assoc failure mac80211: fix BSS leak mac80211: fix addba timer mac80211: fix reason code output endianness cfg80211: fix NULL ptr deref mac80211: check interface is down before type change Johannes Weiner (1): vmscan: order evictable rescue in LRU putback Jonathan Brassow (1): dm snapshot: free exception store on init failure JosephChan@via.com.tw (1): pata_via: extend the rev_max for VT6330 Josh Boyer (1): powerpc/booke: Fix xmon single step on PowerPC Book-E Joyce Yu (1): niu: VLAN_ETH_HLEN should be used to make sure that the whole MAC header was copied to the head buffer in the Vlan packets case Julia Lawall (4): drivers/serial/mpc52xx_uart.c: Use UPIO_MEM rather than SERIAL_IO_MEM ARM: S3C24XX: arch/arm/plat-s3c24xx: Move dereference after NULL test ALSA: sound: Move dereference after NULL test and drop unnecessary NULL tests ALSA: sound/parisc: Move dereference after NULL test Julian Anastasov (3): tcp: accept socket after TCP_DEFER_ACCEPT period tcp: reduce SYN-ACK retrans for TCP_DEFER_ACCEPT tcp: fix TCP_DEFER_ACCEPT retrans calculation JĂ©rĂ´me Pouiller (1): of: Remove nested function KOSAKI Motohiro (5): congestion_wait(): don't use WRITE cgroup: fix strstrip() misuse strstrip(): mark as as must_check mbind(): fix leak of never putback pages do_mbind(): fix memory leak Keith Mannthey (1): edac: i5100 fix initialization code Ken Kawasaki (1): pcnet_cs: add cis of PreMax PE-200 ethernet pcmcia card Kevin Cernekee (1): MIPS: Fix machine check exception in kmap_coherent() Kevin Hilman (2): omap3: PM: enable UART3 module wakeups cpuidle: always return with interrupts enabled Kiyoshi Ueda (1): dm: dec_pending needs locking to save error value Komuro (1): pcmcia: do not load the pd6729 driver if io_base is NULL Krauth.Julien (1): serial: add ADDI-DATA GmbH PCI-Express communication cards in 8250_pci.c and pci_ids.h Kukjin Kim (1): ARM: S3C64XX: Fix S3C64XX_CLKDIV0_ARM_MASK value Kumar Gala (7): powerpc: Add a Book-3E 64-bit defconfig powerpc: Fix compile errors found by new ppc64e_defconfig powerpc: Limit hugetlbfs support to PPC64 Book-3S machines powerpc: Limit memory hotplug support to PPC64 Book-3S machines powerpc: Minor cleanup to init/Kconfig powerpc: Minor cleanup to sound/ppc/Kconfig powerpc: Minor cleanup to lib/Kconfig.debug Larry Finger (1): b43: Fix Bugzilla #14181 and the bug from the previous 'fix' Leo Chen (1): ARM: 5764/1: bcmring: add oprofile pmu support Linus Torvalds (63): Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'sh/for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Merge branch 'kvm-updates/2.6.32' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.infradead.org/users/eparis/notify Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'urgent-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'for-linus' of git://git.infradead.org/ubi-2.6 Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'hwpoison-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'sh/for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-param-fixes Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge branch 'bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'for-linus' of git://git.kernel.org/pub/scm/fs/xfs/xfs Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 i915: fix intel graphics suspend breakage due to resume/lid event confusion Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm Revert "ext4: Remove journal_checksum mount option and enable it by default" Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'i2c-fixes' of git://git.fluff.org/bjdooks/linux Merge branch 'fixes-s3c-2632-rc5' of git://git.fluff.org/bjdooks/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge branch 'for-linus' of git://github.com/at91linux/linux-2.6-at91 Linux 2.6.32-rc6 Linus Walleij (1): ARM: 5765/1: Updated U300 defconfig Lubomir Rintel (1): sh: Build fix: define more __movmem* symbols Luis R. Rodriguez (1): ath9k: fix misplaced semicolon on rate control Magnus Damm (3): sh: disabled cache handling fix. sh: rsk7203 CONFIG_MTD=n fix sh: add uImage.bin target Manuel Lauss (2): net: au1000_eth: add missing capability.h MIPS: Alchemy: Fix hang with high-frequency edge interrupts Marcelo Tosatti (1): KVM: use proper hrtimer function to retrieve expiration time Marcin Slusarz (1): [IA64] use printk_once() unaligned.c/io_common.c Mark Brown (2): ARM: S3C64XX: Set rate of crystal mux mfd: Always initialise WM831x IRQ mutex Mark Hills (3): ALSA: snd-usb-caiaq: Missing lock around use of buffer positions ALSA: snd-usb-caiaq: Lock on stream start/unpause ALSA: snd-usb-caiaq: Bump version number to 1.3.20 Mark McLoughlin (1): block: silently error unsupported empty barriers too Marti Raudsepp (1): perf tools: Fix compatibility with libelf 0.8 and autodetect Martin Schwidefsky (2): [S390] s/r: cmm resume fix [S390] cputime: fix overflow on 31 bit systems Martin Stava (2): 9p: fix a small bug in readdir for long directories 9p: fix readlink Matt Fleming (1): sh: Check for return_to_handler when unwinding the stack Matthew Wilcox (1): [IA64] Require SAL 3.2 in order to do extended config space ops Michael Buesch (1): b43: Fix DMA TX bounce buffer copying Michael Chan (1): cnic: Fix L2CTX_STATUSB_NUM offset in context memory. Michael Neuling (1): powerpc/perf_events: Fix priority of MSR HV vs PR bits Michael S. Tsirkin (3): virtio-net: fix data corruption with OOM virtio-pci: fix per-vq MSI-X request logic virtio: order used ring after used index read Michal Ostrowski (1): PPPoE: Fix flush/close races. Miguel Boton (1): b43: add 'struct b43_wl' missing declaration Mike Frysinger (1): twl4030-gpio: remove __devexit markings from remove func Mike Rapoport (1): [ARM] pxa/cm-x300: fix mmc numbering Mikulas Patocka (7): dm snapshot: sort by chunk size to fix race dm snapshot: require non zero chunk size by end of ctr dm exception store: fix failed set_chunk_size error path dm snapshot: lock snapshot while supplying status dm snapshot: use unsigned integer chunk size dm snapshot: allow chunk size to be less than page size ide: Serialize CMD643 and CMD646 to fix a hardware bug with SSD Milan Dadok (3): Staging: hv: fix oops in vmbus - udev events Staging: hv: fix oops in vmbus - netvsc list_head Staging: hv: fix oops in vmbus - missing #include Neil Brown (1): block: use after free bug in __blkdev_get Neil Horman (1): AF_RAW: Augment raw_send_hdrinc to expand skb to fit iphdr->ihl (v2) NeilBrown (8): Revert "md: do not progress the resync process if the stripe was blocked" md/raid1/raid10: add a cond_resched md: raid1/raid10: handle allocation errors during array setup. md: remove clumsy usage of do_sync_mapping_range from bitmap code md: fix problems with RAID6 calculations for DDF. md: Fix handling of raid5 array which is being reshaped to fewer devices. md/async: don't pass a memory pointer as a page pointer. raid6/async_tx: handle holes in block list in async_syndrome_val Nicolas Ferre (2): avr32: add two new at91 to cpu.h definition at91: at91sam9g45 family: identify several chip versions Nigel Stephens (1): MIPS: Fix abs.[sd] and neg.[sd] emulation for NaN operands Nobuhiro Iwamatsu (1): sh_eth: Add asm/cacheflush.h OGAWA Hirofumi (1): dpt_i2o: Fix typo of EINVAL Paul E. McKenney (3): rcu: Prevent RCU IPI storms in presence of high call_rcu() load rcu: Stopgap fix for synchronize_rcu_expedited() for TREE_PREEMPT_RCU rcu: Fix TREE_PREEMPT_RCU CPU_HOTPLUG bad-luck hang Paul Mackerras (1): perf_event: Adjust frequency and unthrottle for non-group-leader events Paul Mundt (5): sh: Kill off stray HAVE_FTRACE_SYSCALLS reference. sh: __irq_entry annotate do_IRQ(). perf tools: Remove -Wcast-align sh: Document uImage.bin target in archhelp. sh: Fix hugetlbfs dependencies for SH-3 && MMU configurations. Pavel Herrmann (1): lis3: better support for hp 6730x Pavel Machek (1): PM: Remove some debug messages producing too much noise Peter Huewe (1): Staging: Panel: prevent driver from calling misc_deregister twice on same ressource Peter Zijlstra (2): sched: Disable SD_PREFER_LOCAL for MC/CPU domains sched: Do less agressive buddy clearing Philby John (1): ARM: 5774/1: Fix Realview ARM1176PB board reboot Rafael J. Wysocki (2): PM: Make warning in suspend_test_finish() less likely to happen PM / yenta: Split resume into early and late parts (rev. 4) Raimonds Cicans (1): r8169: Fix card drop incoming VLAN tagged MTU byte large jumbo frames Ralf Baechle (11): MIPS: Extend COMMAND_LINE_SIZE MIPS: Don't write ones to reserved entryhi bits. MIPS: Cleanup CONFIG_DEBUG_STACK_USAGE version of alloc_thread_info. MIPS: IP27: Fix build MIPS: VPE: Remove stray unlock_kernel. MIPS: MTX-1: Fix build if CONFIG_PCI is disabled. MIPS: Kconfig: Fix duplicate default value for MIPS_L1_CACHE_SHIFT. MIPS: Malta: Enable PCI 2.1 compatibility in PIIX4 MIPS: 1004K: Enable SPRAM support. MIPS: Set S-cache linesize to 64-bytes for MTI's S-cache MIPS: Avoid potential hazard on Context register Ralf Roesch (1): MIPS: TXx9: Fix error handling / Fix for noenexisting gpio_remove. Ramax Lo (1): ARM: S3C24XX: Define a macro to avoid compilation error Randy Dunlap (5): [IA64] fix percpu warnings vmxnet3: use dev_dbg, fix build for CONFIG_BLOCK=n pcmcia: fix controller printk format warnings cpufreq: add cpufreq_get() stub for CONFIG_CPU_FREQ=n Staging: fix wireless drivers depends Reinette Chatre (1): mac80211: fix ibss joining Richard Zhao (3): i2c: imx: check busy bit when START/STOP i2c: imx: only imx1 needs disable delay i2c: imx: disable clock when it's possible to save power. Robin Holt (3): x86, UV: Fix information in __uv_hub_info structure x86, UV: Fix and clean up bau code to use uv_gpa_to_pnode() x86, UV: Set DELIVERY_MODE=4 for vector=NMI_VECTOR in uv_hub_send_ipi() Roel Kluin (6): [IA64] unsigned cannot be less than 0 in sn_hwperf_ioctl() Input: hp_sdc_rtc - fix test in hp_sdc_rtc_read_rt() UBI: fix check on unsigned long hwmon: (fschmd) Fix check on unsigned in watchdog_write() airo: Reorder tests, check bounds before element frv: fix check on unsigned in do_signal() Roger Quadros (1): omap_hsmmc: add missing probe handler hook Roland Dreier (1): x86: Don't print number of MCE banks for every CPU Romit Dasgupta (1): PM: Fix warning on suspend errors Ron Mercer (2): qlge: Fix EEH handling. qlge: Fix firmware mailbox command timeout. Russell King (10): Merge branch 'for-rmk-rc' of git://git.pengutronix.de/git/imx/linux-2.6 Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 ARM: Fix lubbock defconfig build ARM: Fix signal restart issues with NX and OABI compat ARM: integrator: allow Integrator to be built with highmem ARM: Use GFP_DMA only for masks _less_ than 32-bit mm: fix sparsemem configuration ARM: Fix sparsemem with SPARSEMEM_EXTREME enabled ARM: Fix errata 411920 workarounds ARM: ensure initial page tables are setup for SMP systems Rusty Russell (5): virtio_blk: Revert serial number support x86: Side-step lguest problem by only building cmpxchg8b_emu for pre-Pentium param: fix lots of bugs with writing charp params from sysfs, by leaking mem. param: fix NULL comparison on oom param: fix setting arrays of bool Ryan Mallon (1): ARM: S3C: Fix adc function exports Ryota Yamauchi (1): xfs: fix xfs_quota remove error Ryusuke Konishi (3): nilfs2: fix dirty page accounting leak causing hang at write nilfs2: fix irregular checkpoint creation due to data flush nilfs2: add zero-fill for new btree node buffers Santosh Shilimkar (4): ARM: 5763/1: ARM: SMP: Fix the BUG with CONFIG_PREEMPT enabled omap: SDMA: Fix omap_stop_dma() API for channel linking omap4: Allow omap_serial_early_init() for OMAP4430 board omap4: Fix UART4 platform data on omap4 Sascha Hauer (6): i.MX27 clock: rename spi clocks to match device mx25 devices: Add missing include mx25pdk: remove nand support as it is not present in current tree mx25: Add missing copyright / license header pcm038: Add SPI/MC13783 support pcm970 mmc: Fix ro switch Sathya Perla (2): be2net: fix promiscuous and multicast promiscuous modes being enabled always be2net: fix support for PCI hot plug Sebastian Ott (1): [S390] call home: fix local buffer usage in proc handler Shane Huang (1): ahci / atiixp / pci quirks: rename AMD SB900 into Hudson-2 Simon Wunderlich (1): r8169: fix Ethernet Hangup for RTL8110SC rev d Soeren Sandmann (2): perf events: Fix swevent hrtimer sampling by keeping track of remaining time when enabling/disabling swevent hrtimers perf events: Don't generate events for the idle task when exclude_idle is set Stanislav Brabec (1): [ARM] pxa/spitz: add gpio button support (fixes regression) Stas Sergeev (2): ALSA: pcsp - Fix nforce workaround Driver core: fix driver_register() return value Stephen Hemminger (1): Staging: hv TODO patches Stephen Rothwell (1): powerpc/iseries: Remove compiler version dependent hack Steve French (1): [CIFS] Fixing to avoid invalid kfree() in cifs_get_tcp_session() Steven King (1): net: fix section mismatch in fec.c Takao Indoh (1): [IA64] Restore registers in the stack on INIT Takashi Iwai (5): ALSA: hda - Fix capture source checks for ALC662/663 codecs ALSA: dummy - Fix descriptions of pcm_substreams parameter ALSA: hda - Don't check invalid HP pin Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus Tejun Heo (3): sata_nv: make sure link is brough up online when skipping hardreset libata: fix PMP initialization libata: fix internal command failure handling Terry Loftin (1): nfs: Panic when commit fails Thomas Chou (2): ethoc: inline regs access ethoc: clear only pending irqs Thomas Gleixner (3): futex: Handle spurious wake up sh: Remove BKL from landisk gio. futex: Fix spurious wakeup for requeue_pi really Tim Blechmann (1): perf top: Fix --delay_secs 0 division by zero Tomoki Sekiyama (1): AF_UNIX: Fix deadlock on connecting to shutdown socket Tony Lindgren (2): omap2: Fix detection of n8x0 omap2: Fix console serial port number for n8x0 Tony Luck (6): [IA64] Squeeze ticket locks back into 4 bytes. [IA64] Re-implement spinaphores using ticket lock concepts [IA64] SMT friendly version of spin_unlock_wait() Pull ticket4byte into release branch Pull ticket-spinaphore into release branch Revert "[IA64] fix percpu warnings" Trond Myklebust (3): NFSv4: Fix a bug when the server returns NFS4ERR_RESOURCE NFSv4: Fix two unbalanced put_rpccred() issues. NFSv4: The link() operation should return any delegation on the file Uwe Kleine-König (3): mmc: at91_mci: Don't include asm/mach/mmc.h move virtballoon_remove to .devexit.text move virtrng_remove to .devexit.text Valentin Longchamp (1): MXC: fix reset for mx31, mx35 and mx27 SoCs Valentin Sitdikov (1): sh: Fix up single page flushing to use PAGE_SIZE. Vladimir Dronnikov (1): md: drivers/md/unroll.pl replaced with awk analog Wei Yongjun (1): inotify: fix coalesce duplicate events into a single event in special case Wolfram Sang (2): powerpc/boot/dts: drop obsolete 'fsl5200-clocking' pcmcia: Fix possible printk format warnings Wu Fengguang (3): HWPOISON: return early on non-LRU pages HWPOISON: fix invalid page count in printk output vmscan: limit VM_EXEC protection to file pages Wu Zhangjin (6): ALSA: SND_CS5535AUDIO: Remove the X86 platform dependency MIPS: Loongson: Remove redundant local_irq_disable() MIPS: Add IRQF_TIMER flag for timer interrupts MIPS: 64-bit: Fix o32 lookup_dcookie syscall MIPS: Add IRQF_TIMER flag for timer interrupts MIPS: Oprofile: Rename cpu_type from godson2 to loongson2 Xiaotian Feng (1): isdn: fix possible circular locking dependency Xose Vazquez Perez (1): rt73usb.c : more ids Yegor Yefremov (1): ARM: 5766/1: Fix watchdog enabling for AT91SAM9G45 Yinghai Lu (1): nfs: Fix nfs_parse_mount_options() kfree() leak Yoshihiro Shimoda (1): USB: r8a66597-hcd: fix cannot detect a device when uses_new_polling is set Zdenek Kabelac (1): dm: add missing del_gendisk to alloc_dev error path Zhang Le (1): MIPS: Loongson 2: Set cpu_has_dc_aliases and cpu_icache_snoops_remote_store Zhao Yakui (1): drm: Add the basic check for the detailed timing in EDID Zhu Yi (1): ipw2200: fix oops on missing firmware jamal (1): net: Fix RPF to work with policy routing miaofng (1): Staging: vt6656: fix the memory free bug in vntwusb_disconnect() peer chen (2): ahci: Add the AHCI controller Linux Device ID for NVIDIA chipsets. ALSA: hda_intel: Add the Linux device ID for NVIDIA HDA controller roel kluin (1): ibmtr: possible Read buffer overflow? Éric Piel (1): lis3: add support for the HP EliteBook 8530w ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_13,J_CHICKENPOX_21,J_CHICKENPOX_54 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLpKl143879 for ; Fri, 22 Jan 2010 16:21:51 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLnuF143846; Fri, 22 Jan 2010 16:21:49 -0600 Date: Fri, 22 Jan 2010 16:21:49 -0600 Message-Id: <201001222221.o0MMLnuF143846@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.32-rc7, created. v2.6.32-rc7 X-Git-Refname: refs/tags/v2.6.32-rc7 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 5946e9740318d61b3d1c3d7bfdc3b54fc3ac181c This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.32-rc7 has been created at 5946e9740318d61b3d1c3d7bfdc3b54fc3ac181c (tag) tagging 156171c71a0dc4bce12b4408bb1591f8fe32dc1a (commit) replaces v2.6.32-rc6 tagged by Linus Torvalds on Thu Nov 12 16:46:18 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.32-rc7 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkr8rF8ACgkQF3YsRnbiHLsj1ACfU6LX9lItKuhlyh6qD2Cc3Cu1 qvEAoLR0LxI+TmBQqdczqWfiZusRIDyC =4bDN -----END PGP SIGNATURE----- Ajit Khaparde (2): be2net: fix to set proper flow control on resume be2net: Bug fix to send config commands to hardware after netdev_register Alberto Bertogli (2): bio_put(): add bio_clone() to the list of functions in the comment Fix bio_alloc() and bio_kmalloc() documentation Alex Deucher (32): drm/radeon/kms: make sure LVDS panel is valid in detect() drm/radeon/kms/atom: reorder crtc dpms drm/radeon/kms/atom: add support for AdjustDisplayPll drm/radeon/kms/atom: rework crtc modeset drm/radeon/kms: use drm_mode directly for panel modes drm/radeon/kms: also check for edid in lvds detect drm/radeon/kms: properly handle mode id with native mode changes drm/radeon/kms: move active_device setup into encoder fixup() drm/radeon/kms: fix internal tmds setup on legacy display engine drm/radeon/kms: fix connector edid handling drm/radeon/kms/atom: fix tv-out drm/radeon/kms: limit default tv modes to <= 1024x768 drm/radeon/kms: fix legacy quirk handling drm/radeon/kms: fix support for original r100 drm/radeon/kms: fix vram_width calculation on r6xx/r7xx drm/radeon/kms: add quirk for acer 5102 drm/radeon/kms/r7xx: add regs for 40 bit CUR/GRPH addresses drm/radeon/kms/atom: add support for spread spectrum (v2) drm/radeon/kms: add support for msi drm/radeon/kms/atom: loosen pll min output limits drm/radeon/kms/atom: Fix DVO support drm/radeon/kms/atom: fix potential oops in spread spectrum code drm/radeon/kms: add quirk for hp dc5750 drm/radeon/kms: Don't RMW CP_RB_CNTL drm/radeon/kms: remove some misleading debugging output drm/radeon/kms/r700: fix some typos in chip init drm/radeon/kms/r600: fix rs880 support v2 drm/radeon/kms/atom/dce3: fix up usPixelClock calculation for Transmitter tables drm/radeon/kms: store detailed connector info drm/radeon/kms/atom/dce3: call transmitter init on mode set drm/radeon/kms: initial mode validation support drm/radeon/r600: CS parser updates Amit Kucheria (1): acpi: thermal: Add EOL to the trip_point_N_type strings Anand V. Avati (1): fuse: prevent fuse_put_request on invalid pointer Andre Detsch (1): powerpc/pci: Fix regression in powerpc MSI-X Andrew Morton (1): alpha: move THREAD_SIZE definition outside #ifndef ASSEMBLY Andy Lutomirski (1): drm/i915: Fix render reclock availability detection. Aneesh Kumar K.V (1): ext4: discard preallocation when restarting a transaction during truncate Anton Blanchard (1): exec: setup_arg_pages() fails to return errors Anton Vorontsov (2): powerpc/85xx: Fix USB GPIOs for MPC8569E-MDS boards powerpc/83xx: Fix u-boot partion size for MPC8377E-WLAN boards Arjan van de Ven (1): ACPI: clean up video.c boundary checks and types Atsushi Nemoto (1): mtd/maps: Fix accidental removal in Makefile Ben Dooks (2): ARM: S3C64XX: Tidy definition and comments in s3c_dma_has_circular() ARM: S3C: Merge fixes-s3c64xx-dma Ben Hutchings (1): ALSA: snd-aica: declare MODULE_FIRMWARE Benjamin Herrenschmidt (5): powerpc: Cleanup Kconfig selection of hugetlbfs support powerpc/mm: Remove debug context clamping from nohash code powerpc: Avoid giving out RTC dates below EPOCH powerpc/kvm: Remove problematic BUILD_BUG_ON statement Merge commit 'kumar/merge' into merge Bob Moore (1): ACPICA: avoid "Info: mapping multiple BARs. Your kernel is fine." Borislav Petkov (2): amd64_edac: fix CECCs reporting x86, amd-ucode: Check UCODE_MAGIC before loading the container file Catalin Marinas (3): Check whether the SCU was already initialised RealView: Add default memory configuration RealView: Add sparsemem support for the RealView PBX platform Chris Lalancette (1): x86: Make sure get_user_desc() doesn't sign extend. Chris Mason (1): Btrfs: allow more metadata chunk preallocation Chris Wilson (1): drm/i915: Install a fence register for fbc on g4x Clemens Ladisch (3): sound: rawmidi: fix double init when opening MIDI device with O_APPEND sound: rawmidi: fix checking of O_APPEND when opening MIDI device sound: rawmidi: fix MIDI device O_APPEND error handling Colin Tuckley (1): RealView: Remove duplicated #define REALVIEW_SYS_FLAGS* statements Corentin Chary (1): Revert "eeepc-laptop: Prevent a panic when disabling RT2860 wireless when associated" Crane Cai (1): i2c-piix4: Modify code name SB900 to Hudson-2 Cyrill Gorcunov (1): sched: Use root_task_group_empty only with FAIR_GROUP_SCHED Dan Carpenter (2): misdn: Fix reversed 'if' in st_own_ctrl Btrfs: avoid null deref in unpin_extent_cache() Daniel Drake (2): ALSA: hda - Add OLPC XO-1.5 PCI ID ALSA: hda - Tweak OLPC XO-1.5 microphone bias Daniel T Chen (2): ALSA: intel8x0: Mute External Amplifier by default for another Sony model ALSA: hda: Use model=auto quirk for Sony VAIO VGN-FW170J using ALC262 Darrick J. Wong (1): acpi-power-meter: Don't leak ACPI error codes to userspace Dave Airlie (8): drm/radeon/kms: don't refuse LUT because no framebuffer. drm/radeon: Revert "drm/r600: avoid assigning vb twice in blit code" drm/radeon/kms: fix use of index before proper initialisation. drm/kms: fix kms/fbdev colormap support properly. drm/radeon/kms: fix rc410 suspend/resume. drm/radeon/kms: fix coherency issues on AGP cards. drm/radeon/kms: disable D1VGA and D2VGA if enabled drm/radeon/kms: stop putting VRAM at 0 in MC space on r600s. Dave Jones (1): x86: Fix printk message typo in mtrr cleanup code David S. Miller (4): sparc64: Add a comment about why we only use certain memory barriers these days. Revert "ide: try to use PIO Mode 0 during probe if possible" Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 sparc: Move of_set_property_mutex acquisition outside of devtree_lock grab. Denis Turischev (1): [WATCHDOG] SBC-FITPC2 watchdog driver registration fix Devin Heitmueller (1): V4L/DVB (13190): em28xx: fix panic that can occur when starting audio streaming Don Skidmore (1): ixgbe: fix traffic hangs on Tx with ioatdma loaded Eric Dumazet (3): rose: device refcount leak decnet: netdevice refcount leak can: should not use __dev_get_by_index() without locks Eric Sandeen (1): ext3: retry failed direct IO allocations Eric W. Biederman (1): sysfs: Don't leak secdata when a sysfs_dirent is freed. Erik AndrĂ©n (3): V4L/DVB (13255): gspca - m5602-s5k4aa: Add vflip quirk for the Bruneinit laptop V4L/DVB (13256): gspca - m5602-s5k4aa: Add another MSI GX700 vflip quirk V4L/DVB (13257): gspca - m5602-s5k4aa: Add vflip for Fujitsu Amilo Xi 2528 Finn Thain (1): macsonic: fix crash on PowerBook 520 Francisco Jerez (1): drm/kms: Init the CRTC info fields for modes forced from the command line. Frans Pop (2): thermal: sysfs-api.txt - reformat for improved readability thermal: sysfs-api.txt - document passive attribute for thermal zones Gleb Natapov (1): KVM: get_tss_base_addr() should return a gpa_t Gottfried Haider (1): x86: Add reboot quirk for 3 series Mac mini Grazvydas Ignotas (2): omap3: pandora: Fix keypad keymap omap3: update Pandora defconfig Guennadi Liakhovetski (4): V4L/DVB (13129): sh_mobile_ceu_camera: fix cropping for scaling clients V4L/DVB (13131): pxa_camera: fix camera pixel format configuration V4L/DVB (13132): fix use-after-free Oops, resulting from a driver-core API change fb: put framebuffer drivers back under the "frame buffer devices" menu Gustavo Maciel Dias Vieira (1): ACPI: add DMI entry for SCI_EN resume quirk on HP dv4 HIRANO Takahito (1): V4L/DVB (13167): pt1: Fix a compile error on arm Hans de Goede (1): V4L/DVB (13122): gscpa - stv06xx + ov518: dont discard every other frame Haojian Zhuang (1): [ARM] pxa: fix resume failure by saving/restoring IPRx registers Heiko Carstens (1): fs: add missing compat_ptr handling for FS_IOC_RESVSP ioctl Henrik Kurelid (1): V4L/DVB (13237): firedtv: length field corrupt in ca2host if length>127 Herbert Xu (1): ipip: Fix handling of DF packets when pmtudisc is OFF Hirokazu Takata (3): m32r: add NOTES to vmlinux.lds.S to remove .note.gnu.build-id section m32r: bzip2/lzma kernel compression support m32r: fix arch/m32r/boot/compressed/Makefile Hugh Dickins (1): ksm: cond_resched in unstable tree Ingo Molnar (1): Merge branch 'iommu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent James Simmons (1): drm/kms: typo fix Jan Beulich (1): x86/PCI: Adjust GFP mask handling for coherent allocations Jan Engelhardt (1): netfilter: xt_connlimit: fix regression caused by zero family value Jan Kara (1): ext3: Wait for proper transaction commit on fsync Jan Kiszka (1): KVM: x86: Catch potential overrun in MCE setup Janusz Krzysztofik (3): ASoC: OMAP: Don't try to set unsupported OMAP_DMA_DATA_BURST_16 on OMAP1 omap: Fix omapfb/lcdc on OMAP1510 broken when PM set omap1: Amstrad Delta defconfig fixes Jarkko Nikula (1): omap3: beagle: Fix USB host port power control Jassi Brar (6): ASoC: S3C64XX I2S: Enable audio-bus clock ARM: S3C64XX: DMA: Protect buffer pointers while manipulation ARM: S3C64XX: DMA: Unify callback functions for success/failure ARM: S3C64XX: DMA: Make src and dst transfer size same ARM: S3C64XX: DMA: Callback with correct buffer pointer ARM: S3C64XX: DMA: Free node for non-circular queues Jaswinder Singh Rajput (1): mtd: nand: fix htmldocs warnings Jean Delvare (2): i2c: Add an interface to lock/unlock an I2C bus segment V4L/DVB (13287): ce6230 - saa7164-cmd: Fix wrong sizeof Jean-Christop PLAGNIOL-VILLARD (1): ARM: 5779/1: ep93xx/micro9.c: fix implicit declaration of function __raw_readl and IOMEM Jeff Layton (2): cifs: clean up handling when server doesn't consistently support inode numbers cifs: don't use CIFSGetSrvInodeNumber in is_path_accessible Jens Axboe (3): backing-dev: bdi sb prune should be in the unregister path, not destroy cfq-iosched: fix bad return value cfq_should_preempt() fuse: fix kunmap in fuse_ioctl_copy_user Jeremy Fitzhardinge (2): xen/hvc: make sure console output is always emitted, with explicit polling xen: mask extended topology info in cpuid Jesse Barnes (5): drm/i915: Save and restore the GM45 FBC regs on suspend and resume. drm/i915: save/restore BLC histogram control reg across suspend/resume drm/i915: add FIFO watermark support for G4x drm/i915: update watermarks before enabling PLLs drm/i915: kill warning in intel_find_pll_g4x_dp Jiri Slaby (4): isdn: hisax: Fix lock imbalance. isdn: eicon: Use offsetof isdn: eicon: Return on error NET: cassini, fix lock imbalance Joe Perches (8): MAINTAINERS: Add git net-next-2.6 MAINTAINERS: ASUS ACPI EXTRAS - remove F:arch/x86/kernel/acpi/boot.c MAINTAINERS: BROCADE BFA - Use single line M: and tabs MAINTAINERS: SERVER ENGINES 10Gbps iSCSI - Use single line M: MAINTAINERS: VMWARE VMXNET3 - Quote name with comma and period, use tabs MAINTAINERS: correct 9P FILE SYSTEM git entry MAINTAINERS: correct NETFILTER git entry format MAINTAINERS: correct SECURITY SUBSYSTEM git entry Joerg Roedel (4): x86/amd-iommu: Workaround for erratum 63 x86/amd-iommu: Un__init function required on shutdown dma-debug: Fix compile warning with PAE enabled Merge branches 'amd-iommu/fixes' and 'dma-debug/fixes' into iommu/fixes John W. Linville (1): Revert "ipw2200: fix oops on missing firmware" Jonathan Cameron (1): V4L/DVB (13286): pxa-camera: Fix missing sched.h Josef Bacik (7): Btrfs: fix data allocation hint start Btrfs: cleanup transaction starting and fix journal_info usage Btrfs: fix how we set max_size for free space clusters Btrfs: fix some metadata enospc issues Btrfs: find ideal block group for caching Btrfs: fallback on uncompressed io if compressed io fails Btrfs: fix panic when trying to destroy a newly allocated JosephChan@via.com.tw (1): sata_via: Remove redundant device ID for VIA VT8261 Jozsef Kadlecsik (1): netfilter: nf_nat: fix NAT issue in 2.6.30.4+ Julia Lawall (3): drivers/ata/libata: Move dereference after NULL test arch/m32r: Use DIV_ROUND_CLOSEST ACPI: Move dereference after NULL test Julian Anastasov (1): ALSA: usb-audio: fix combine_word problem KAMEZAWA Hiroyuki (1): memcg: fix wrong pointer initialization at page migration when memcg is disabled. Kenji Kaneshige (1): PCI ASPM: fix oops on root port removal Kim Phillips (1): powerpc/8xxx: enable IPsec ESP by default on mpc83xx/mpc85xx Krzysztof Helt (2): fb: remove fb_save_state() and fb_restore_state operations savagefb: fix blanking mode on CRT display Kumar Gala (1): powerpc: 2.6.32 update of defconfigs for embedded 6xx/7xxx, 8xx, 8{3,5,6}xxx Ladislav Michl (1): mmci-omap: free irq resource Lai Jiangshan (1): ring-buffer: Synchronize resizing buffer with reader lock Larry Finger (1): rtl8187: Fix kernel oops when device is removed when LEDS enabled Laurent Pinchart (2): V4L/DVB (13309): uvcvideo: Ignore the FIX_BANDWIDTH for compressed video V4L/DVB (13311): uvcvideo: Fix compilation warning with 2.6.32 due to type mismatch with abs() Len Brown (2): Merge branches 'misc', 'eeepc-laptop' and 'bugzilla-14445' into release Merge branch 'bugzilla-13449' into release Lennert Buytenhek (5): [ARM] properly report mv78100 stepping A1 [ARM] kirkwood: fix PCI I/O port assignment [ARM] Kirkwood: clarify PCIe MEM bus/physical address distinction serial: fix printk format specifiers for struct uart_port::iobase serial: add support for the Lava Quattro PCI quad-port 16550A card Li Dongyang (1): Btrfs: skip btrfs_release_path in btrfs_update_root and btrfs_del_root Li Hong (1): amd64_edac: fix a wrong goto clause in amd64_edac.c Li Jie (1): [ARM] kirkwood: fix section mismatch Li Zefan (1): ftrace: Fix unmatched locking in ftrace_regex_write() Linus Torvalds (45): Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel sgi-gru: decrapfiy options_write() function Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge git://git.infradead.org/users/dwmw2/mtd-2.6.32 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Merge branch 'kvm-updates/2.6.32' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev Merge branch 'sh/for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'fixes-s3c-2632-rc6' of git://git.fluff.org/bjdooks/linux Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 btusb bluetooth driver: wait for 'waker' work too before closing Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Linux 2.6.32-rc7 Luca Niccoli (1): eeepc-laptop: don't enable camera at startup if it's already on. Magnus Damm (1): serial: sh-sci: disable callback typo fix Mark Brown (2): ARM: SMDK6410: Configure GPIO pull up for WM835x IRQ line ARM: SMDK6410: Allocate more GPIO space for WM1190-EV1 Mark Nelson (1): ahci: Enable SB600 64bit DMA on MSI K9A2 Platinum v2 Martin Michlmayr (1): hisax: remove bad udelay call to fix build error on ARM Martin Samek (1): V4L/DVB (13079): dib0700: fixed xc2028 firmware loading kernel oops Mathias Fröhlich (3): drm/radeon/kms: fix cs parser tex bit 11 check drm/radeon/kms/atom: get better min pixel clock info drm/radeon/kms/atom: Make card_info per device Matt Fleming (1): sh: Account for cache aliases in flush_icache_range() Matt Turner (1): drm/radeon/kms: use RADEON_GPU_PAGE_SIZE instead of 4096 Maurus Cuelenaere (1): ARM: S3C64XX: Remove duplicate s3c_dma_has_circular() definition for S3C64xx. Mel Gorman (2): page allocator: always wake kswapd when restarting an allocation attempt after direct reclaim failed page allocator: Do not allow interrupts to use ALLOC_HARDER Michael Krufky (5): V4L/DVB (13048): dib0070: fix build dependency when driver is disabled V4L/DVB (13107): tda18271: fix overflow in FM radio frequency calculation V4L/DVB (13202): smsusb: add autodetection support for three additional Hauppauge USB IDs V4L/DVB (13313): saa7134: add support for FORCE_TS_VALID mode for mpeg ts input V4L/DVB (13314): saa7134: set ts_force_val for the Hauppauge WinTV HVR-1150 Michel Dänzer (2): drm/radeon/kms: Update memory bandwidth requirements in mode_set_base hook. drm/radeon/kms: Fix apparent typo in legacy CRTC memory bandwidth calculation. Mike Frysinger (2): mtd/maps: gpio-addr-flash: pull in linux/ headers rather than asm/ mtd/maps: gpio-addr-flash: depend on GPIO arch support Mike Galbraith (3): sched: Strengthen buddies and mitigate buddy induced latencies sched: Disable SD_PREFER_LOCAL at node level sched: Fix kthread_bind() by moving the body of kthread_bind() to sched.c Mike Hommey (1): __generic_block_fiemap(): fix for files bigger than 4GB Mike Isely (3): V4L/DVB (13169): bttv: Fix potential out-of-order field processing V4L/DVB (13170): bttv: Fix reversed polarity error when switching video standard V4L/DVB (13230): s2255drv: Don't conditionalize video buffer completion on waiting processes Mike Turquette (1): omap3: Decrease cpufreq transition latency Miklos Szeredi (1): fuse: invalidate target of rename Mingming (4): ext4: fix ext4_ext_direct_IO()'s return value after converting uninit extents ext4: skip conversion of uninit extents after direct IO if there isn't any ext4: code clean up for dio fallocate handling ext4: Fix return value of ext4_split_unwritten_extents() to fix direct I/O NeilBrown (2): md: don't clear endpoint for resync when resync is interrupted. md/raid5: make sure curr_sync_completes is uptodate when reshape starts Nicolas Ferre (1): atmel_lcdfb: new alternate pixel clock formula Nicolas Pitre (3): [ARM] Kirkwood: update defconfig [ARM] orion5x: update defconfig ARM: 5784/1: fix early boot machine ID mismatch error display Olof Johansson (1): powerpc: pasemi_defconfig update Ondrej Zajicek (1): [ARM] pxa/palm: fix incorrect initialization of Palm Tungsten C keyboard Patrick Boettcher (1): V4L/DVB (13050): DIB0700: fix-up USB device ID for Terratec/Leadtek Paul E. McKenney (1): rcu: Fix long-grace-period race between forcing and initialization Paul Gortmaker (1): powerpc/85xx: sbc8548 - fixup of PCI-e related DTS fields Paul Mundt (1): sh: unwinder: Fix up invalid PC refetch in dwarf unwinder. Pavel Machek (1): drivers/video/msm: update to new kernel Pekka Enberg (1): perf tools: Fix permission checks Peter Zijlstra (1): alpha: fix F_SETOWN_EX and F_GETLK64 conflict RafaĹ‚ MiĹ‚ecki (1): drm/radeon/kms: add debugfs for power management for AtomBIOS devices Rakib Mullick (1): ACPI: add __cpuinit to acpi_processor_add() Randy Dunlap (4): sound: Use KERN_WARNING instead of KERN_WARN, which does not exist ALSA: hda, move hp_bseries_system sched: Fix kernel-doc function parameter name MAINTAINERS: openipmi list is moderated Rask Ingemann Lambertsen (1): rtc: pcf50633: fix month off-by-one error Robert Noland (2): drm/radeon/r600: Replace repeated calculations with variable. drm/radeon/r600: only assign vb after we know space is available. Rodolfo Giometti (2): pps: locking scheme fix up for PPS_GETPARAMS pps: events reporting fix up Roel Kluin (7): m32r: Should index be positive? isdn: hisax: Fix test in waitforxfw isdn: hfc_usb: Fix read buffer overflow powerpc/82xx: kmalloc failure ignored in ep8248e_mdio_probe() sparc64: replace parentheses in pmul() ALSA: hda - possible read past array alc88[02]_parse_auto_config() get_maintainer: fix usage comment Ron Mercer (2): qlge: Fix early exit from mbox cmd complete wait. qlge: Set PCIe reset type for EEH to fundamental. Russell King (5): Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'for-rmk' of git://git.marvell.com/orion [ARM] Fix test for unimplemented ARM syscalls ARM: Use a definition for the userspace cmpxchg emulation syscall Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6 Rusty Russell (1): sched: Fix boot crash by zalloc()ing most of the cpu masks Ryusuke Konishi (2): nilfs2: fix kernel oops in error case of nilfs_ioctl_move_blocks nilfs2: fix missing cleanup of gc cache on error cases Sathya Perla (1): be2net: Fix CQE_STATUS_EXTD_SHIFT define Scott Valentine (1): rtc: v3020: fix v3020_mmio_read_bit() Sean Cross (1): rt2x00: Don't queue ieee80211 work after USB removal Sebastian Haas (1): ems_usb: Fix byte order issues on big endian machines Sebastian Siewior (1): net/fsl_pq_mdio: add module license GPL Sergei Shtylyov (1): gpiolib: fix device_create() result check Sergio Aguirre (1): omap3: 3430sdp: Enable Linux Regulator framework Seth Barry (1): V4L/DVB (13109): tda18271: fix signedness issue in tda18271_rf_tracking_filters_init Shaohua Li (2): drm/i915: disable FBC for Pineview, fixing a boot hang. cfq-iosched: limit coop preemption Simon Kagstrom (2): [ARM] OpenRD base: Initialize PCI express and i2c x86: Add Phoenix/MSC BIOSes to lowmem corruption list Soeren Sandmann (2): highmem: Fix race in debug_kmap_atomic() which could cause warn_count to underflow highmem: Fix debug_kmap_atomic() to also handle KM_IRQ_PTE, KM_NMI, and KM_NMI_PTE Stanislav Brabec (1): [ARM] pxa/zaurus: fix NAND flash OOB layout for Borzoi Stefan Richter (1): V4L/DVB (13240): firedtv: fix regression: tuning fails due to bogus error return Stefan Schmidt (1): fs/jbd: Export log_start_commit to fix ext3 build. Stefani Seibold (1): x86, fs: Fix x86 procfs stack information for threads on 64-bit Stephen Hemminger (1): bridge: prevent bridging wrong device Sukadev Bhattiprolu (1): pidns: fix a leak in /proc dentries and inodes with pid namespaces. Takashi Iwai (5): ALSA: hda - Don't initialize CORB/RIRB for single_cmd mode Merge branch 'fix/misc' into for-linus Merge branch 'fix/hda' into for-linus ALSA: hda - Avoid quirk for HP dc5750 Merge branch 'fix/hda' into for-linus Tao Hu (1): omap: Fix race condition in omap dma driver Tao Ma (1): JBD/JBD2: free j_wbuf if journal init fails. Thadeu Lima de Souza Cascardo (1): perf_events: Fix some typo in the perf events config description Theodore Kilgore (1): V4L/DVB (13264): gspca_mr97310a: Change vstart for CIF sensor type 1 cams Theodore Ts'o (1): ext4: partial revert to fix double brelse WARNING() Thomas Gleixner (3): uids: Prevent tear down race sound: Replace old style lock initializer sh: Replace old style lock initializer Tobias Klauser (1): omap: Use resource_size Tony Thompson (1): ARMv7: Check whether the SMP/nAMP mode was already enabled Tonyliu (1): DaVinci EMAC: correct param for ISR Torgny Johansson (1): cdc_ether: additional Ericsson MBM PID's to the whitelist Uwe Kleine-König (1): virtio_net: rename driver struct to please modpost Vaibhav Verma (1): ACPI: sleep: another HP/Compaq DMI entries for init_set_sci_en_on_resume Vitaliy Kulikov (1): ALSA: hda - Enable GPIO control for mute LED on HP systems Werner Almesberger (1): rtc: pcf50633: consider alrm->enable in pcf50633_rtc_set_alarm Wolfgang Grandegger (1): can: fix WARN_ON dump in net/core/rtnetlink.c:rtmsg_ifinfo() Xiaotian Feng (1): x86: Fix error return sequence in __ioremap_caller() Yi Zou (2): ixgbe: Fix gso_max_size for 82599 when DCB is enabled ixgbe: Fix checking TFCS register for TXOFF status when DCB is enabled Yoichi Yuasa (1): rtc-vr41xx: fix do_div() warning Yong Zhang (1): genirq: try_one_irq() must be called with irq disabled Zhao Yakui (2): drm/i915: Set the LVDS_BORDER when using LVDS scaling mode drm: Add the basic check for the detailed timing in EDID Zhenyu Wang (6): drm/i915: disable powersave feature for Ironlake currently drm/i915: Fix FDI M/N setting according with correct color depth drm/i915: fix to setup display reference clock control on Ironlake drm/i915: fix panel fitting filter coefficient select for Ironlake drm/i915: quiet DP i2c init drm/i915: Ironlake suspend/resume support zeal (1): ARM: 5780/1: KS8695: Fix macro definition bug in regs-switch.c ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:53 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_51,J_CHICKENPOX_75 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLrea143916 for ; Fri, 22 Jan 2010 16:21:53 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLpi7143884; Fri, 22 Jan 2010 16:21:51 -0600 Date: Fri, 22 Jan 2010 16:21:51 -0600 Message-Id: <201001222221.o0MMLpi7143884@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.32-rc8, created. v2.6.32-rc8 X-Git-Refname: refs/tags/v2.6.32-rc8 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: de8a4af91ab6fa3cde2618f4021b5faabdcd95ea This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.32-rc8 has been created at de8a4af91ab6fa3cde2618f4021b5faabdcd95ea (tag) tagging 648f4e3e50c4793d9dbf9a09afa193631f76fa26 (commit) replaces v2.6.32-rc7 tagged by Linus Torvalds on Thu Nov 19 14:32:50 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.32-rc8 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEABECAAYFAksFx5cACgkQF3YsRnbiHLtbBgCdEFleXMBTisniZVfaQAyMEyIU zcgAoJBupOcLurJuqoTHZuDoK8rymqrD =ZdVS -----END PGP SIGNATURE----- Abner Holsinger (1): Input: lifebook - fix settings for CF-72 Alan Cox (3): tty_port: If we are opened non blocking we still need to raise the carrier tty: cp210x: Fix carrier handling vt: Fix use of "new" in a struct field Alan Stern (1): USB: usbmon: fix bug in mon_buff_area_shrink Alex Williamson (1): intel-iommu: Obey coherent_dma_mask for alloc_coherent on passthrough Andi Kleen (1): mm: allow memory hotplug and hibernation in the same kernel Andrei Emeltchenko (1): Bluetooth: Set general bonding security for ACL by default Anil Ravindranath (1): [SCSI] pmcraid: Fix ppc64 driver build for using cpu_to_le32 on U8 data type Anuj Aggarwal (1): ASoC: Modifying the license string GPLv2 for OMAP3 EVM Atsushi Nemoto (2): MIPS: Make local arrays with CL_SIZE static __initdata MIPS: TXx9: Update rbtx49xx_defconfig Ben Dooks (1): hwmon: (s3c-hwmon) Ignore invalid divider settings Ben Hutchings (1): [SCSI] bfa: declare MODULE_FIRMWARE Ben McKeegan (1): ppp: fix BUG on non-linear SKB (multilink receive) Bing Zhao (2): Libertas: coding style cleanup in ethtool.c Libertas: fix issues while configuring host sleep using ethtool wol Bob Copeland (3): ath5k: don't reset mcast filter when configuring the mode ath5k: add LED support for HP Compaq CQ60 ath5k: add LED definition for BenQ Joybook R55v Breno Leitao (2): s2io: fixing a ethtool test that is broken ixgbe: Fixing EEH handler to handle more than one error Brian King (1): [SCSI] scsi_transport_fc: Fix WARN message for FC passthru failure paths Christian Borntraeger (1): [S390] s390: fix single stepping on svc0 Chuck Lever (1): SUNRPC: Address buffer overrun in rpc_uaddr2sockaddr() Dan Carpenter (3): ipmr: missing dev_put() on error path in vif_add() ALSA: ice1724 - make some bitfields unsigned dereferencing freed memory regulator_fixed_voltage_remove() Daniel J Blueman (1): ALSA: hda - Dell Studio 1557 hd-audio quirk Daniel T Chen (1): ALSA: hda: Use model=mb5 for MacBookPro 5,2 Dave Jones (1): [SCSI] gdth: Prevent negative offsets in ioctl CVE-2009-3080 Dave Mitchell (1): ibm_newemac: Fix EMACx_TRTR[TRT] bit shifts David Daney (1): MIPS: Fix emulation of 64-bit FPU on FPU-less 64-bit CPUs. David S. Miller (4): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6 Revert "isdn: isdn_ppp: Use SKB list facilities instead of home-grown implementation." Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 sungem: Fix Serdes detection. David Woodhouse (3): intel-iommu: Check for 'DMAR at zero' BIOS error earlier. agp/intel-agp: Set dma_mask for capable chipsets before agp_add_bridge() Fix handling of the HP/Acer 'DMAR at zero' BIOS error for machines with <4GiB RAM. Divy Le Ray (1): cxgb3: fix premature page unmap Dmitry Eremin-Solenikov (1): leds-gpio: fix possible crash on OF device unbinding Dmitry Monakhov (1): [CPUFREQ] Fix use after free on governor restore Dmitry Torokhov (3): Input: fix locking in memoryless force-feedback devices Input: force LED reset on resume Input: atkbd - restore LED state at reconnect Eric Dumazet (2): net: Fix the rollback test in dev_change_name() vlan: Fix register_vlan_dev() error path Eric Miao (1): [ARM] pxa: fix incorrect mfp_to_gpio() conversion Felix Fietkau (1): b43: work around a locking issue in ->set_tim() Fenghua Yu (1): intel-iommu: Support PCIe hot-plug Florian Fainelli (1): r6040: fix version printing Francesco Lavra (1): USB: cdc_acm: Fix memory leak after hangup Gerald Schaefer (1): [S390] monreader: fix use after free bug with suspend/resume Gertjan van Wingerde (1): rt2x00: Update MAINTAINERS Grazvydas Ignotas (1): ASoC: OMAP3 Pandora: update for TWL4030 codec changes Gustavo F. Padovan (2): Bluetooth: Select Basic Mode as default for SOCK_SEQPACKET Bluetooth: Fix regression with L2CAP configuration in Basic Mode Henry Gebhardt (1): USB: cdc_acm: Fix race condition when opening tty Herbert Xu (1): gro: Fix illegal merging of trailer trash Hidetoshi Seto (1): mm/memory_hotplug: fix section mismatch Ilpo Järvinen (1): tcp: provide more information on the tcp receive_queue bugs Ivo van Doorn (1): rt2x00: update MAINTAINERS Jan Rekorajski (1): XFS bug in log recover with quota (bugzilla id 855) Javier Kohen (1): ALSA: usb - Quirk to disable master volume control in PCM2702 Jean Delvare (4): hwmon: (adt7475) Fix temperature fault flags hwmon: (adt7475) Cache limits for 60 seconds hwmon: (adt7475) Fix sysfs file names backlight: lcd - Fix wrong sizeof Jiri Kosina (1): Input: psmouse - fix breakage introduced by b7802c5c1ea Jiro SEKIBA (2): nilfs2: deleted struct nilfs_dat_group_desc nilfs2: deleted inconsistent comment in nilfs_load_inode_block() Joe Perches (2): MAINTAINERS: RFKILL - Fix pattern entry missing colon MAINTAINERS: KMEMCHECK: add file patterns, use M: for Pekka's name and address John Villalovos (1): [CPUFREQ] acpi-cpufreq: blacklist Intel 0f68: Fix HT detection and put in notification message John W. Linville (1): Revert "libipw: initiate cfg80211 API conversion" Josh Triplett (12): kconfig: Make zconf.y work with current bison kconfig: Mark various internal functions static genksyms: Mark is_reserved_word static Documentation/vm/page-types.c: Declare checked_open static arch/alpha/boot/tools/objstrip.c: Mark "usage" static arch/powerpc/boot/addRamDisk.c: Mark several internal functions static arch/sparc/boot/*.c: Mark various internal functions static drm: radeon: Mark several functions static in mkregtable dtc: Set "noinput" in the lexer to avoid an unused function dtc: Mark various internal functions static oss: Mark loadhex static in hex2hex.c Makefile: Add -Wmising-prototypes to HOSTCFLAGS Kevin D. Kissell (1): MIPS: SMTC: Fix lockup in smtc_distribute_timer Krzysztof Helt (1): [CPUFREQ] longhaul: select Longhaul version 2 for capable CPUs Kuninori Morimoto (1): uio: pm_runtime_disable is needed if failed Larry Finger (2): rtl8187: Fix sparse warnings p54usb: Remove DMA buffer from stack Lennert Buytenhek (1): [ARM] Kirkwood: disable propagation of mbus error to the CPU local bus Libin Yang (1): USB: ohci: quirk AMD prefetch for USB 1.1 ISO transfer Linus Torvalds (30): Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.infradead.org/users/dwmw2/iommu-2.6.32 Merge branch 'hostprogs-wmissing-prototypes' of git://git.kernel.org/pub/scm/linux/kernel/git/josh/linux-misc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'for-linus' of git://github.com/at91linux/linux-2.6-at91 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge branch 'sh/for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'agp-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6 strcmp: fix overflow and possibly signedness error Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Linux 2.6.32-rc8 Linus Walleij (1): ARM: 5787/1: U300 COH 901 331 fixes Marc Zyngier (1): [ARM] pxa: fix interrupts number calculation when CONFIG_PXA_HAVE_ISA_IRQS=y Marek Vasut (1): [ARM] pxa/colibri: fix AC97 ifdefs and add missing include Mark Brown (1): regulator: Handle missing constraints in _regulator_disable() Martin Fuzzey (1): ssb-pcmcia: Fix 32bit register access in early bus scanning Martin K. Petersen (1): [SCSI] Fix incorrect reporting of host protection capabilities Martin Schwidefsky (2): [S390] reset cputime accounting after IPL from NSS [S390] sclp: undo quiesce handler override on resume Mimi Zohar (1): ima: replace GFP_KERNEL with GFP_NOFS Nathaniel W. Turner (1): xfs: copy li_lsn before dropping AIL lock NeilBrown (4): md: factor out updating of 'recovery_offset'. md: allow v0.91 metadata to record devices as being active but not in-sync. Don't unconditionally set in_sync on newly added device in raid5_reshape md/raid5: Allow dirty-degraded arrays to be assembled when only party is degraded. Nicolas Ferre (1): at91: at91sam9g20ek modify dual slot evaluation kit Oliver Hartkopp (1): can: Fix driver Kconfig structure Oliver Neukum (1): fix memory leak in fixed btusb_close Pallipadi, Venkatesh (1): [CPUFREQ] Resolve time unit thinko in ondemand/conservative govs Paul Parsons (1): [ARM] pxa/hx4700: fix hx4700 touchscreen pressure values Pavel Machek (1): backlight: Fix backlight limiting on spitz/corgi devices Peter Zijlstra (1): fcntl: rename F_OWNER_GID to F_OWNER_PGRP Petr Vandrovec (1): Fix memory corruption caused by nfsd readdir+ Prarit Bhargava (1): [CPUFREQ] Fix stale cpufreq_cpu_governor pointer Raimonds Cicans (1): r8169: Fix receive buffer length when MTU is between 1515 and 1536 Rajendra Nayak (1): omap3: clock: Fix the DPLL freqsel computations Roel Kluin (10): [SCSI] bfa: fix test in bfad_os_fc_host_init() [ARM] pxa: fix missing underscores in mfp-pxa910.h mISDN: fix error return in HFCmulti_init() regulator: Fix check of unsigned return value and transmit errors in wm831x_gp_ldo_get_mode() [ARM] pxa: ensure mfp is in correct range in mfp_{read,write} spi: error status should be negative drivers/video/da8xx-fb.c: fix error return [CPUFREQ] powernow-k8: Fix test in get_transition_latency() omap: fix unlikely(x) < y OMAP: cs should be positive in gpmc_cs_free() Russell King (3): ARM: Fix warning in sa1100-flash.c Merge branch 'for-rmk' of git://git.marvell.com/orion Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Rusty Russell (1): [CPUFREQ] speedstep-ich: fix error caused by 394122ab144dae4b276d74644a2f11c44a60ac5c Ryusuke Konishi (1): nilfs2: fix lock order reversal in chcp operation Sarah Sharp (3): USB: xhci: Fix bug memory free after failed initialization. USB: xhci: Fix TRB physical to virtual address translation. USB: xhci: Fix scratchpad deallocation. Sriram (2): smsc911x: Fix Console Hang when bringing the interface down. TI Davinci EMAC : Fix Console Hang when bringing the interface down Stanislav O. Bezzubtsev (1): forcedeth: mac address fix Stefani Seibold (1): procfs: fix /proc//stat stack pointer for kernel threads Stephen Rothwell (2): net: fix mdio section mismatch warning fcntl: Use consistent values for F_[GS]ETOWN_EX Suresh Jayaraman (1): cifs: clear server inode number flag while autodisabling Takashi Iwai (7): ALSA: hda - Add another Nvidia HDMI codec id (10de:0005) Input: psmouse - remove unneeded '\n' from psmouse.proto parameter ALSA: ice1724 - Fix section mismatch in prodigy_hd2_resume() Merge branch 'fix/hda' into for-linus ALSA: hda - Fix quirk for VAIO type G Merge branch 'fix/hda' into for-linus Merge branch 'fix/asoc' into for-linus Tejun Heo (2): percpu: restructure pcpu_extend_area_map() to fix bugs and improve readability workqueue: fix race condition in schedule_on_each_cpu() Tero Kristo (1): omap3: clock: Fixed dpll3_m2x2 rate calculation Thomas Gleixner (1): sh: Fixup last users of irq_chip->typename Trond Myklebust (1): NFSv4: Fix a cache validation bug which causes getcwd() to return ENOENT Troy Kisky (1): ASoC: tlv320aic23 fix rate selection Vimal Singh (1): omap: Fix keymap for zoom2 according to matrix keypad framwork Vlad Yasevich (3): sctp: Set source addresses on the association before adding transports sctp: Fix regression introduced by new sctp_connectx api sctp: Set socket source address when additing first transport Wayne Boyer (1): [SCSI] ipr: add workaround for MSI interrupts on P7 Wey-Yi Guy (2): iwlwifi: Use RTS/CTS as the preferred protection mechanism for 6000 series iwlwifi: Fix issue on file transfer stalled in HT mode Wolfgang Grandegger (1): can: add the missing netlink get_xstats_size callback Yoichi Yuasa (1): MIPS: Add DMA declare coherent memory support Zhang Le (1): USB: option.c: add support for D-Link DWM-162-U5 jack wang (1): [SCSI] libsas: do not set res = 0 in sas_ex_discover_dev() ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:21:58 2010 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLwCQ143975 for ; Fri, 22 Jan 2010 16:21:58 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLrYv143921; Fri, 22 Jan 2010 16:21:53 -0600 Date: Fri, 22 Jan 2010 16:21:53 -0600 Message-Id: <201001222221.o0MMLrYv143921@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.33-rc1, created. v2.6.33-rc1 X-Git-Refname: refs/tags/v2.6.33-rc1 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: d14e040a3592de665407269688d70296955c5f14 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.33-rc1 has been created at d14e040a3592de665407269688d70296955c5f14 (tag) tagging 55639353a0035052d9ea6cfe4dde0ac7fcbb2c9f (commit) replaces v2.6.32 tagged by Linus Torvalds on Thu Dec 17 17:15:07 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.33-rc1 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEABECAAYFAksq158ACgkQF3YsRnbiHLuTpQCgoim/ifG7mc6XVzmSJzFqStwq HNcAn1J+zkSNoK5gHhPgIB6ytbY0N+gM =6SHR -----END PGP SIGNATURE----- Aaro Koskinen (3): OMAP: PM: Clear DMA channel state after a wakeup OMAP3: PM: Fix INTC context save/restore mfd: fix undefined twl4030-power resconfig value checks Abhijeet Joglekar (5): [SCSI] fnic: Process all cq entries per ISR [SCSI] fnic: Set max_cmd_len to driver supported CDB length [SCSI] fnic: Pad the unused bytes of CDB to 0s [SCSI] fnic: Allocate OS interrupt resources just before enabling interrupts [SCSI] libfc: remote port gets stuck in restart state without really restarting Abhijeet Kolekar (7): iwlwifi/iwl3945 : unify apm stop operation iwlwifi: replace iwl_poll_direct_bit with iwl_poll_bit for CSR access iwlwifi/iwl3945: unify rts_tx_cmd_flag iwl3945: rename tx to tx_cmd iwlwifi/iwl3945: remove data_retry_limit iwl3945: rearrange the code. iwl3945: disable all tx fifos Abylay Ospan (5): V4L/DVB (13271): TS speed check. Logging transport stream speed in Kbits per second V4L/DVB (13334): stv6110: add configurable gain V4L/DVB (13335): stv0900: fix diseqc support for NetUP card V4L/DVB (13630): Print bitrate measured by stv0900 demod in stv0900_read_status V4L/DVB (13676): configurable IRQ mode on NetUP Dual DVB-S2 CI; IRQ from CAM processing (CI interface works faster) Adam Buchbinder (2): reiserfs: fix misspelling of "journaled" tree-wide: fix misspelling of "definition" in comments Adam Jackson (13): drm/modes: Limit fallback modes to 60Hz drm/edid: Retry EDID fetch up to four times drm/edid: Fix up partially corrupted headers drm/modes: Fall back to 1024x768 instead of 800x600 drm/i915: Fix LVDS presence check drm/i915: disable the interrupt hotplug for integrated TV output drm/edid: Unify detailed block parsing between base and extension blocks drm/modes: Add drm_mode_hsync() drm/edid: Add DMT modes to the pool if the monitor is GTF-capable drm/edid: Add new detailed block types from EDID 1.4 drm/edid: Decode 3-byte CVT codes from EDID 1.4 agp/intel: Fix product names and #defines drm/i915: Fix product names and #defines Adrian Taylor (1): USB: Exposing second ACM channel as tty for Nokia S60 phones. Adrien Demarez (1): hwmon: New driver for the National Semiconductor LM73 Aguilar Pena, Leed (1): USB: twl4030: Enable USB regulators before enabling USB charging Ajay Kumar Gupta (2): omap3evm: Add board revision function omap3evm: ehci: Update EHCI support on OMAP3EVM (Rev >= E) Ajit Khaparde (26): be2net: Get rid of net_device_stats from adapter. e1000e: Use the instance of net_device_stats from net_device. netxen: Use the instance of net_device_stats from net_device. myri10ge: Use the instance of net_device_stats from net_device. ixgbe: Use the instance of net_device_stats from net_device. igb: Use the instance of net_device_stats from net_device. e1000: Use the instance of net_device_stats from net_device. qlge: Use the instance of net_device_stats from net_device. ixgb: Use the instance of net_device_stats from net_device. ixgbe: Fix erroneous display of stats by ethtool -S e1000e: Fix erroneous display of stats by ethtool -S e1000: Fix erroneous display of stats by ethtool -S igb: Fix erroneous display of stats by ethtool -S ixgb: Fix erroneous display of stats by ethtool -S be2net: Add support for next generation of BladeEngine device. be2net: Add the new PCI IDs to PCI_DEVICE_TABLE. be2net: set netdev->vlan_features appropriately be2net: initialize netdev->perm_addr be2net: check for valid ether address be2net: fix to allow port beacon when device is closed be2net: Add be_rx_polls counter be2net: fix unnecessary access to hardware to get link, port info be2net: Changes to print fw command opcode when command is failed by controller. be2net: Support for WoL using magic packet after suspend. be2net: Bump up the driver version number be2net: fix error in rx completion processing. Akihiro Tsukada (3): V4L/DVB (13293): dvb-usb-friio: return the correct DTV_DELIVERY_SYSTEM V4L/DVB (13294): dvb-usb-friio: cleaning up unnecessary functions V4L/DVB (13577): [PATCH] dvb-usb-friio: accept center-shifted frequency Akinobu Mita (20): mtd: cleanup mtd_oobtest ALSA: ice1712: Use bitrev8 ieee1394: Use hweight32 ALSA: sound: usbmidi: Use hweight16 mtd: vmu-flash: Use hweight_long mtd: Add __nand_calculate_ecc() to NAND ECC functions mtd: add nand_ecc test module mtd: alauda: Use hweight8 IB/ipath: Use bitmap_weight() hpfs: use hweight32 hpfs: use bitmap_weight() qnx4: use hweight8 bitmap: introduce bitmap_set, bitmap_clear, bitmap_find_next_zero_area iommu-helper: use bitmap library isp1362-hcd: use bitmap_find_next_zero_area mlx4: use bitmap_find_next_zero_area sparc: use bitmap_find_next_zero_area ia64: use bitmap_find_next_zero_area genalloc: use bitmap_find_next_zero_area MIPS: Sibyte: Use hweight8 instead of counting bits Akira Fujita (7): ext4: fix the returned block count if EXT4_IOC_MOVE_EXT fails ext4: fix lock order problem in ext4_move_extents() ext4: fix possible recursive locking warning in EXT4_IOC_MOVE_EXT ext4: fix spelling typos in move_extent.c ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT ext4: move_extent_per_page() cleanup ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT Al Viro (47): untangling do_mremap(), part 1 do_mremap() untangling, part 2 do_mremap() untangling, part 3 fix checks for expand-in-place mremap fix the arch checks in MREMAP_FIXED case fix pgoff in "have to relocate" case of mremap() kill useless checks in sparc mremap variants file ->get_unmapped_area() shouldn't duplicate work of get_unmapped_area() arm: add arch_mmap_check(), get rid of sys_arm_mremap() Kill ancient crap in s390 compat mmap arch_mmap_check() on mn10300 Cut hugetlb case early for 32bit on ia64 Unify sys_mmap* fix a struct file leak in do_mmap_pgoff() Take arch_mmap_check() into get_unmapped_area() switch do_brk() to get_unmapped_area() sparc_brk() is not needed anymore Get rid of open-coding in ia64_brk() fix broken aliasing checks for MAP_FIXED on sparc32, mips, arm and sh Add missing alignment check in arch/score sys_mmap() sanitize do_pipe_flags() callers in arch switch shmem_file_setup() to alloc_file() switched inotify_init1() to alloc_file() unexport get_empty_filp() reorder alloc_fd/attach_fd in socketpair() merge sock_alloc_fd/sock_attach_fd into a new helper 9p connect fixes switch sock_alloc_file() to alloc_file() get rid of init_file() switch nilfs2 to deactivate_locked_super() switch alloc_file() to passing struct path switch create_read_pipe() to alloc_file() lift path_put(path) to callers of __do_follow_link() kill __link_path_walk()/link_path_walk() distinction fix the crap in dst/dcore switch cachefiles to kern_path() fix mismerge with Trond's stuff (create_mnt_ns() export is gone now) Take hash recalculation into do_lookup() Kill path_lookup_open() Kill cached_lookup() and real_lookup() Sanitize exec_permission_lite() O_TRUNC open shouldn't fail after file truncation Untangling ima mess, part 1: alloc_file() Untangling ima mess, part 2: deal with counters Untangling ima mess, part 3: kill dead code in ima Fix breakage in shmem.c dio: fix use-after-free Alan Carvalho de Assis (2): mx27: Add basic support for Maxtrack i-MXT TD60 mx27: mxt_td60: Add support to SD/MMC Alan Cox (98): cosa: Kill off the use of the old ioctl path wm831x_backup: Remove unused variables selinux: Fix warnings pata_via: Blacklist some combinations of Transcend Flash and via pata_sis: Implement MWDMA for the UDMA 133 capable chips pata_cmd64x: implement serialization as per notes [libata] PATA: Update experimental tags pata_ali: Fix regression with old devices pata_piccolo: Driver for old Toshiba chipsets Staging: et131x: kill SUCCESS and FAILURE defines Staging: et131x: tidy eeprom code up Staging: et131x: extract the eeprom setup logic from initpci Staging: et131x: Kill the NoPhyAccess variable Staging: et131x: tidy up initpci code Staging: et131x: kill NMI hacks Staging: et131x: PHY loopback cannot be set (and isn't useful for us anyway) Staging: et131x: rxstat is not used Staging: et131x: clean up word 3 definition Staging: et131x: clean up WORD2 usage Staging: et131x: tidy up names for the TX structures Staging: et131x: the stuck descriptor copy is never used Staging: et131x: pci_alloc_consistent DMA alignment is guaranteed Staging: et131x: first pass RX cleanup Staging: et131x: Clean up the receive arrays Staging: et131x: fold up simple wrapper functions Staging: et131x: Remove old SendWaitQueue code Staging: et131x: tidy up a bit further Staging: et131x: Clean up the tx ring init Staging: et131x: Clean up tx naming Staging: et131x: kill unused tcb fields Staging: et131x: Bring tx into coding style Staging: et131x: tx ring mac error is only used as a local Staging: et131x: Kill the RX pending list Staging: et131x: Kill the RX skb list element - it isn't used Staging: et131x: Clean the IPG types up Staging: et131x: Clean up the half duplex control reg types Staging: et131x: Clean up the MII_MGMT type Staging: et131x: Clean up MAC_CFG types Staging: et131x: clean up MAX_FM type Staging: et131x: kill off MAC_TEST_t Staging: et131x: Clean up MII control Staging: et131x: phy clean up Staging: et131x: Clean up the phy code, especially dup stuff Staging: et131x: Kill MAC_IF_CTRL typedefs Staging: et131x: clean up MAC_STAT register Staging: et131x: clean up mac stat names Staging: et131x: kill TXTEST and TXFILL, clean up CF_PARAM Staging: et131x: kill TxMacTest field Staging: et131x: kill TX_PR_NUM_DES_t Staging: et131x: Another typedef solely used to write 0 to a register Staging: et131x: kill TX_SHADOW Staging: et131x: kill RX_DMA_MAX_PKT_TIME Staging: et131x: Clean up number fields Staging: et131x: clean up the avail fields in the rx registers tty: esp: remove broken driver tty: istallion: Kill off the BKL ioctl tty: stallion: kill BKL ioctl tty_port: add "tty_port_open" helper tty_port: coding style cleaning pass usb_serial: Use the shutdown() operation usb_serial: Kill port mutex opticon: Fix resume logic tty_port: Move hupcl handling sdio_uart: use tty_port sdio_uart: refcount the tty objects sdio_uart: Move the open lock tty: sdio_uart: Switch to the open/close helpers tty: sdio_uart: Fix termios handling tty: sdio_uart: Style fixes tty: sdio_uart: add modem functionality tty: sdio_uart: Fix the locking on "func" for new code tty: tty_port: Change the buffer allocator locking tty: riscom8: switch to the tty_port_open API tty: tty_port: Add IO_ERROR bit handling tty: tty_port: Move the IO_ERROR clear tty: stallion: Convert to the tty_port_open/close methods tty: istallion: tty port open/close methods tty: tty_port: Add a kref object to the tty port tty: isicom: switch to the new tty_port_open helper tty: isicom: sort out the board init logic tty: mxser: use the tty_port_open method tty: mxser: Use the new locking rules to fix setserial properly tty: isicom: fix deadlock on shutdown tty: moxa: Use more tty_port ops tty: moxa: rework the locking a bit tty: moxa: Locking clean up tty: moxa: Kill off the throttle method tty: moxa: Fix modem op locking tty: moxa: Kill the use of lock_kernel tty: moxa: split open lock tty: push the BKL down into the handlers a bit tty: Push the lock down further into the ldisc code tty: Push the bkl down a bit in the hangup code tty: Move the leader test in disassociate tty: split the lock up a bit further tty: Fix BKL taken under a spinlock bug introduced in the BKL split mfd: Fix twl4030 warning matroxfb: fix problems with display stability Alan Jenkins (35): Input: keyboard - fix theoretical race on vt switch eeepc-laptop: disp attribute should be write-only asus-laptop: Remove redundant NULL checks asus-acpi: Remove redundant NULL checks asus-laptop: Remove uneccesary acpi_disabled check asus-acpi: Remove uneccesary acpi_disabled checks asus-acpi: set acpi_driver.owner asus-laptop: set acpi_driver.owner eeepc-laptop: Remove redundant NULL checks eeepc-laptop: Remove uneccesary acpi_disabled check eeepc-laptop: set acpi_driver.owner eeepc-laptop: fix value of pwm1_enable to match documentation eeepc-laptop: fix led initialization order eeepc-laptop: fix potential leak (led_init() failure) eeepc-laptop: fix set_acpi() to return non-zero on failure eeepc-laptop: remove redundant NULL checks eeepc-laptop: no need to check argument of set_brightness() eeepc-laptop: simplify acpi initialization eeepc-laptop: simplify how the hwmon device reads values from the EC eeepc-laptop: refactor notifications eeepc-laptop: move platform driver registration out of eeepc_hotk_add() eeepc-laptop: move platform device initialisation to a separate function eeepc-laptop: code movement eeepc-laptop: revise names eeepc-laptop: callbacks should use "driver data" parameter or field eeepc-laptop: re-add check for eeepc->backlight == NULL hp-wmi: improve rfkill support dell-laptop: fix a use-after-free error on the failure path dell-laptop: fix rfkill memory leak on unload and failure paths dell-laptop: create a platform device as a parent for the rfkill devices etc. dell-laptop: add __init to init functions dell-laptop: remove duplicate Kconfig entry under drivers/misc ARM: use unified discard definition in linker script ARM: unexport symbols used to implement floating point emulation module: make MODULE_SYMBOL_PREFIX into a CONFIG option Alan Stern (13): PM / Runtime: Export the PM runtime workqueue PM / Runtime: Use deferred_resume flag in pm_request_resume Driver core: fix race in dev_driver_string USB: don't use a fixed DMA mapping for hub status URBs USB: add a "remove hardware" sysfs attribute USB: fix a bug in the scatter-gather library USB: EHCI: add native scatter-gather support USB: add scatter-gather support to usbmon USB: remove the auto_pm flag USB: prepare for changover to Runtime PM framework USB: usb-storage: add BAD_SENSE flag USB: usb-storage: fix bug in fill_inquiry PM: allow for usage_count > 0 in pm_runtime_get() Alasdair G Kergon (3): dm: rename dm_get_table to dm_get_live_table dm: bind new table before destroying old dm: keep old table until after resume succeeded Alban Browaeys (1): wireless : use a dedicated workqueue for cfg80211. Albert Herranz (27): powerpc: gamecube/wii: usbgecko bootwrapper console support powerpc: gamecube: device tree powerpc: gamecube: bootwrapper bits powerpc: gamecube/wii: introduce GAMECUBE_COMMON powerpc: gamecube/wii: declare as non-coherent platforms powerpc: gamecube/wii: do not include PCI support powerpc: gamecube/wii: udbg support for usbgecko powerpc: gamecube/wii: flipper interrupt controller support powerpc: gamecube: platform support powerpc: gamecube: default config powerpc: wii: device tree powerpc: wii: bootwrapper bits powerpc: broadway processor support powerpc: wii: hollywood interrupt controller support powerpc: wii: platform support powerpc: wii: default config powerpc: reserve fixmap entries for early debug powerpc: gamecube/wii: early debugging using usbgecko wii: bootwrapper: add fixup to calc useable mem2 wii: use both mem1 and mem2 as ram powerpc: allow ioremap within reserved memory regions powerpc: wii: allow ioremap within the memory hole sdio: rework cis tuple parsing sdhci: protect header file against multi inclusion sdhci-of: rename main driver file prior to reorganization sdhci-of: reorganize driver to support additional hardware sdhci-of: add support for the wii sdhci controller Alberto Bertogli (2): Do not __always_inline bvec_kmap_irq() and bvec_kunmap_irq() fs/debugfs/inode.c: fix comment typos Alberto Panizzo (5): Armadillo500 Add support for onboard GPIO Buttons. Armadillo500 Correct bus length for SMSC9118 on board chip. Armadillo500 Add i2c second bus support. Armadillo500 Add support for Seiko Instruments S-35390A rtc over i2c. regulator: mc13783-regulator: correct the probing time. Albin Tonnerre (1): ARM: 5778/1: AT91: Add cpuidle support Albrecht DreĂź (5): powerpc: tiny memcpy_(to|from)io optimisation mpc5200/gpt: tiny fix for gpt period limitation mpc52xx/wdt: OF property to enable the WDT on boot mpc52xx/wdt: merge WDT code into the GPT driver mpc52xx/wdt: remove obsolete old WDT implementation Aleksandr V. Piskunov (2): V4L/DVB (13232): cx25840 6.5MHz carrier detection fixes V4L/DVB (13441): ivtv: Added FM radio support to Avermedia AVerTV MCE 116 Plus card Aleksey Kunitskiy (1): ALSA: ice1724 - Patch for suspend/resume for ESI Juli@ Alessandro Rubini (4): mtd: use bbm.h in nand.h mtd: unify status enum from three headers ARM Nomadik: use new OneNand name and pdata ARM: 5846/1: MAINTAINERS: Add arm Nomadik support Alessandro Zummo (1): rtc: fix driver data issues in several rtc drivers Alex Chiang (20): ACPI: dock: convert sysfs attributes to an attribute_group PCI Hotplug: acpiphp: clean up list traversals cciss: Make device attributes static cciss: change Cmd_sg_list.sg_chain_dma type to dma_addr_t [CPUFREQ] Documentation: ABI: /sys/devices/system/cpu/cpu#/cpufreq/ [CPUFREQ] make internal cpufreq_add_dev_* static x86/PCI: remove early PCI pr_debug statements page-types: learn to describe flags directly from command line page-types: whitespace alignment page-types: exit early when invoked with -d|--describe mm: add numa node symlink for memory section in sysfs mm: refactor register_cpu_under_node() mm: refactor unregister_cpu_under_node() mm: add numa node symlink for cpu devices in sysfs Documentation: ABI: /sys/devices/system/cpu/cpu#/node ACPI: dock: combine add|alloc_dock_dependent_device (v2) ACPI: dock: remove global 'dock_device_name' ACPI: dock: dock_add - hoist up platform_device_register_simple() ACPI: dock: add struct dock_station * directly to platform device data ACPI: dock: minor whitespace and style cleanups Alex Deucher (46): drm/radeon/kms: dont't pass a radeon_connector to radeon_i2c_do_lock() drm/radeon/kms: clean up i2c drm/radeon/kms: add support for external tmds on legacy boards drm/radeon/kms: fix typo in legacy internal tmds mode fixup drm/radeon/kms: rework scaler handling drm/radeon/kms: add quirk for Acer laptop drm/radeon/kms: deal with connectors sourced to the same encoder drm/radeon/kms: add quirk for MSI S270 drm/radeon/kms: fix LVDS setup on r4xx drm/radeon/kms/atom: pull misc mode info for lvds from bios tables drm/radeon/kms: add tv standard property to tv connectors drm/radeon/kms: Add support for interrupts on r6xx/r7xx chips (v3) drm/radeon/kms: don't use bios dividers for lvds on r4xx drm/radeon/kms: Add quirk for HIS X1300 board drm/radeon/kms: handle vblanks properly with dpms on drm/radeon/kms: fix legacy crtc2 dpms drm/radeon/kms: fix vram setup on rs600 drm/radeon/kms: rs6xx/rs740: clamp vram to aperture size drm/radeon/kms: fix up gart setup on rs600 drm/radeon/kms/legacy: set overscan regs on modeset drm/radeon/kms/legacy: set common regs to sane value drm/radeon/kms: more r4xx lvds fixes drm/radeon/kms: fix vram setup on rs600/rs690/rs740 drm/radeon/kms: DP fixes and cleanup from the ddx drm/radeon/kms: i2c reorg drm/radeon/kms: store sink type in atom dig connector drm/radeon/kms: handle dp sinks in atom encoder/transmitter tables drm/radeon/kms: add support for DP modesetting drm/radeon/kms: free aux channel i2c adapter on destroy drm/radeon/kms: fix DP detect drm/radeon/kms: clean up DP debugging drm/radeon/kms: get HPD info for connectors drm/radeon/kms: add regs and irq tracking bits for hpd drm/radeon/kms: add hpd support for r1xx-r4xx asics drm/radeon/kms: add hpd support for r5xx/rs600/rs690/rs740 asics drm/radeon/kms: add hpd support for r6xx/r7xx/rs780/rs880 asics drm/radeon/kms: add asic callbacks for hpd drm/radeon/kms: enable hpd support drm/radeon/kms: connector fixes drm/radeon/kms: make sure ss id matches drm/radeon/kms: make sure i2c id matches drm/radeon/kms/avivo: fix some bugs in the display bandwidth setup drm/radeon/kms/avivo: add support for new pll selection algo drm/radeon/kms/r600/r700: fallback gracefully on ucode failure drm/radeon/kms/avivo: fix typo in new_pll module description drm/radeon/kms: make sure mc is initialized before mapping blit bo Alex Williamson (1): PCI: Always set prefetchable base/limit upper32 registers Alexander Duyck (81): igb: remove unused temp variable from stats clearing path igb: update comments for serdes config and update to handle duplex igb: update the approach taken to acquiring and releasing the phy lock igb: add locking to reads of the i2c interface igb: add combined function for setting rar and pool bits igb: make use of the uta to allow for promiscous mode filter igb: add support for 82576NS SerDes adapter igb: add function to handle mailbox lock igb: fix a few items where weren't correctly setup for mbx timeout igb: change how we handle alternate mac addresses igb: remove microwire support from igb igb: move the generic copper link setup code into e1000_phy.c igb: add code to retry a phy read in the event of failure on link check igb: add additional error handling to the phy code igb: add flushes between RAR writes when setting mac address igb: add new data structure for handling interrupts and NAPI igb: remove rx checksum good counter igb: increase minimum rx buffer size to 1K igb: move the tx and rx ring specific config into seperate functions igb: remove rx_ps_hdr_len igb: move SRRCTL register configuration into ring specific config igb: change the head and tail offsets into pointers igb: add pci device pointer to ring structure igb: move rx_buffer_len into the ring structure igb: move alloc_failed and csum_err stats into per rx-ring stat igb: add a flags value to the ring igb: place a pointer to the netdev struct in the ring itself igb: move the multiple receive queue configuration into seperate function igb: delay VF reset notification until after interrupts are enabed igb: setup vlan tag replication stripping in igb_vmm_control igb: re-use ring configuration code in ethtool testing igb: make tx ring map and free functionality non-static igb: make ethtool use core xmit map and free functionality igb: add single vector msi-x testing to interrupt test igb: cleanup "todo" code found in igb_ethtool.c igb: add support for seperate tx-usecs setting in ethtool igb: cleanup some of the code related to hw timestamping igb: misc cleanups within igb_ethtool.c igb: use packet buffer sizes from RXPBS register igb: replace the VF clear_to_send with a flags value igb: rework use of VMOLR in regards to PF and VFs igb: rework handling of the vfta and vlvf registers in relation to mng_vlan igb: move vf init into a seperate function igb: only process global stats in igb_update_stats igb: move global_quad_port_a from global into local static define igb: make tx hang check multiqueue, check eop descriptor igb: cleanup code related to ring resource allocation and free igb: change queue ordering for 82576 based adapters igb: cleanup interrupt enablement in regards to msix_other igb: Remove invalid stats counters igb: cleanup igb.h header whitespace and some structure formatting igb: cleanup igb xmit frame path igb: cleanup clean_rx_irq_adv and alloc_rx_buffers_adv igb: replace unecessary &adapter->hw with just hw where applicable igb: add pci_dev in few spots to clean up use of dev_err/info/warn igb: limit minimum mtu to 68 to keep ip bound to interface igb: open up SCTP checksum offloads to all MACs 82576 and newer igb: cleanup whitespace issues in igb_main.c igb: change type for ring sizes to u16 in igb_set_ring_param igb: move timesync init into a seperate function igb: when number of CPUs > 4 combine tx/rx queues to allow more queues igb: Rework how netdev->stats is handled igb: removed unused tx/rx total bytes/packets from adapter struct igb: check for packets on all tx rings when link is down igb: only recycle page if it is on our numa node igb: add support for the 82580 phy igb: add support for 82580 MAC igb: Add full support for 82580 devices ixgbe: Only set/clear VFE in ixgbe_set_rx_mode e1000e: remove use of skb_dma_map from e1000e driver e1000: remove use of skb_dma_map from e1000 driver ixgb: remove use of skb_dma_map from ixgb ixgbe: remove skb_dma_map/unmap calls from driver igb: remove use of skb_dma_map from driver igbvf: remove skb_dma_map/unmap call from drivers bnx2: remove skb_dma_map/unmap calls from driver be2net: remove use of skb_dma_map/unmap tg3: remove use of skb_dma_map/unmap skbuff: remove skb_dma_map/unmap igb: fix handling of mailbox collisions between PF/VF igbvf: avoid reset storms due to mailbox issues Alexander Graf (30): Move dirty logging code to sub-arch Pass PVR in sregs Add Book3s definitions Add Book3s fields to vcpu structs Add asm/kvm_book3s.h Add Book3s_64 intercept helpers Add book3s_64 highmem asm code Add SLB switching code for entry/exit Add interrupt handling code Add book3s.c Add book3s_64 Host MMU handling Add book3s_64 guest MMU Add book3s_32 guest MMU Add book3s_64 specific opcode emulation Add mfdec emulation Add desktop PowerPC specific emulation Make head_64.S aware of KVM real mode code Add Book3s_64 offsets to asm-offsets.c Export symbols for KVM module Split init_new_context and destroy_context Export KVM symbols for module Add fields to PACA Export new PACA constants in asm-offsets Include Book3s_64 target in buildsystem Fix trace.h Use Little Endian for Dirty Bitmap Use hrtimers for the decrementer KVM: Activate Virtualization On Demand KVM: SVM: Notify nested hypervisor of lost event injections powerpc/kvm: Sync guest visible MMU state Alexander Potashev (1): x86, boot: Simplify setting of the PAE bit Alexander Schmidt (1): IB/ehca: Rework destroy_eq() Alexander Shishkin (3): omap: Eliminate OMAP_MAX_NR_PORTS ARM: 5841/1: a driver for on-chip ETM and ETB ARM: 5843/1: OMAP3: add AMBA devices for ETM and ETB Alexander Strakh (2): V4L/DVB (13378): konicawc.c: possible buffer overflow while use strncat V4L/DVB (13379): quickcam_messenger: possible buffer overflow while use strncat Alexandre Cassen (1): IPv6: Fix 6RD typo Alexandros Batsakis (19): nfs41: add support for callback with RPC version number 4 nfs4: minor delegation cleaning nfs4: V2 return/expire delegations depending on their type nfs41: V2 initial support for CB_RECALL_ANY nfs41: check if session exists and if it is persistent nfs41: add support for the exclusive create flags nfs41: remove server-only EXCHGID4_FLAG_CONFIRMED_R flag from exchange_id nfs41: V2 adjust max_rqst_sz, max_resp_sz w.r.t to rsize, wsize nfs41: check SEQUENCE status flag nfs41: v2 fix cb_recall bug nfs: minor cleanup of session draining nfs: do not do a LOOKUP after open nfs: change nfs4_do_setlk params to identify recovery type rpc: add rpc_queue_empty function nfs: remove rpc_task argument from nfs4_find_slot rpc: add a new priority in RPC task nfs: enforce FIFO ordering of operations trying to acquire slot nfs: make recovery state manager operations privileged nfs: run state manager in privileged mode Alexey Dobriyan (30): Convert /proc/device-tree/ to seq_file genirq: switch /proc/irq/*/spurious to seq_file net: convert /proc/net/rt_acct to seq_file r8169: move PHY regs tables to .rodata ray_cs: convert to proc_fops ipw2x00: convert to seq_file sh: convert /proc/cpu/aligmnent, /proc/cpu/kernel_alignment to seq_file powerpc/via-pmu: Convert to proc_fops/seq_file const: struct quota_format_ops tty: const: constify remaining tty_operations Blackfin: convert kgdbtest to proc_fops bsdacct: fix uid/gid misreporting alpha: convert srm code to seq_file const: constify remaining dev_pm_ops uml: convert to seq_file/proc_fops Make DEBUG_BUGVERBOSE default to y V4L/DVB (13590): cpia: convert it to use proc_fops parisc: convert /proc/pdc/{lcd,led} to seq_file thinkpad-acpi: convert to seq_file proc: rename de_get() to pde_get() and inline it clps711xfb: convert to proc_fops pnpbios: convert to seq_file const: constify remaining pipe_buf_operations ufs: pass qstr instead of dentry where necessary for NFS ufs: NFS support reiserfs: remove /proc/fs/reiserfs/version reiserfs: don't compile procfs.o at all if no support proc: remove docbook and example seq_file: use proc_create() in documentation MIPS: Lasat: Convert to proc_fops / seq_file Alexey Fisher (5): ALSA: usb - Fix mixer map for Hercules Gamesurround Muse Pocket LT ALSA: document: Add direct git link to grub hda-analyzer ext2: Unify log messages in ext2 ext3: Unify log messages in ext3 ALSA: hda - Overwrite pin config on intel DG45ID board. Ali Gholami Rudi (1): ixgbe: r_idx not used in ixgbe_msix_clean_rx() Alistair Buxton (16): OMAP7XX: Serial: Remove duplicate omap850 code OMAP7XX: GPIO: Remove duplicate omap850 code OMAP7XX: IO: Remove duplicate omap850 code OMAP7XX: Mux: Remove duplicate omap850 code OMAP7XX: USB: Remove duplicate omap850 code OMAP7XX: IRQ: Remove duplicate omap850 code OMAP7XX: PM: Add omap850 support OMAP7XX: Clocks: Add omap850 support OMAP7XX: McBSP: Add omap850 support OMAP7XX: Create omap7xx.h OMAP7XX: Update core omap1 files to use omap7xx.h OMAP7XX: Replace omap730 references in irqs.h and all users OMAP7XX: Rename all the rest of the omap730 references in omap1 core OMAP7XX: omap_uwire.c: Convert to omap7xx.h OMAP850: PM: Add an ARCH_OMAP850 check OMAP850: Fix zImage booting Allen Kay (2): PCI: acs p2p upsteram forwarding enabling PCI: add xen dom0 checking before ACS initialization Allison Randal (1): Staging: comdi: ni_at_ao.c: fix coding style error Alok Kataria (1): [SCSI] vmw_pvscsi: SCSI driver for VMware's virtual HBA. Amauri Magagna (1): V4L/DVB (13197): gspca - sonixj: Adjust colors and autogain for sensor om6802. Amerigo Wang (10): fix URL in hpet.txt sctp: remove deprecated SCTP_GET_*_OLD stuffs hfs: fix a potential buffer overflow 'sysctl_max_map_count' should be non-negative rwsem-spinlock: remove useless function exports rwsem: fix rwsem_is_locked() bugs kallsyms: remove deprecated print_fn_descriptor_symbol() ipc: remove unreachable code in sem.c ipc: HARD_MSGMAX should be higher not lower on 64bit kexec: premit reduction of the reserved memory size Amit Kucheria (8): Staging: iio: Fix typos in documentation Staging: iio: tsl2563 ambient light sensor driver mfd: twl4030-power: Rename DEVGROUP to DEV_GRP mfd: Add comments for the twl4030-power register and bit layout mfd: Add support for remapping twl4030-power power states mfd: Optimised twl4030-power power scripts for the rx51 mfd: Fix more undefined twl4030-power resconfig value checks mfd: Clarify twl4030 return value for read and write Amit Kumar Salecha (12): netxen: remove sub 64-bit mem accesses netxen: defines for next revision netxen: 128 memory controller support netxen: reset sequence changes netxen: onchip memory access change netxen: support for new firmware file format netxen: update MAINTAINERS netxen: remove PCI IDs of CNA device netxen: fix merge 9b963e5d0e01461099a netxen: fix failure cases for fw hang recovery netxen: protect device reset by rtnl_lock netxen:fix napi intr enable check Amit Shah (1): hvc_console: Export (GPL'ed) hvc_remove Amitkumar Karwar (4): libertas: Add auto deep sleep support for SD8385/SD8686/SD8688 libertas: Use lbs_is_cmd_allowed() check in command handling routines. libertas: Check return status of command functions Bluetooth: Enable auto sleep mode for btmrvl driver Amul Kumar Saha (2): mtd: Standardising prints in onenand_base.c mtd: OneNAND OTP support rework Anand Gadiyar (5): omap: update plat/usb.h to allow ehci driver to build omap3: Update 3430SDP defconfig USB: ehci: Allow EHCI to be built on OMAP3 USB: MUSB: save hardware revision at init omap3: zoom2/3: make MMC slot work again Anant Gole (1): can: add TI CAN (HECC) driver Ananth N Mavinakayanahalli (2): kprobes: Prevent re-registration of the same kprobe kprobes: Sanitize struct kretprobe_instance allocations Anatolij Gustschin (1): ppc440spe-adma: adds updated ppc440spe adma driver Anders Larsen (2): qnx4fs: add missing KERN_xxx to printk() calls qnx4fs: remove remains of the (defunct) write support Andi Kleen (16): futex: Take mmap_sem for get_user_pages in fault_in_user_writeable HWPOISON: Add Andi Kleen as hwpoison maintainer to MAINTAINERS HWPOISON: Be more aggressive at freeing non LRU caches HWPOISON: Turn ref argument into flags argument HWPOISON: add memory cgroup filter HWPOISON: Use get_user_page_fast in hwpoison madvise HWPOISON: mention HWPoison in Kconfig entry HWPOISON: Use correct name for MADV_HWPOISON in documentation HWPOISON: Use new shake_page in memory_failure HWPOISON: Undefine short-hand macros after use to avoid namespace conflict HWPOISON: Add soft page offline support HWPOISON: Add a madvise() injector for soft page offlining HWPOISON: Don't do early filtering if filter is disabled HWPOISON: Try to allocate migration page on the same node HWPOISON: Remove stray phrase in a comment [sysctl] Fix breakage on systems with older glibc Andre Herms (1): USB: usbtmc: repeat usb_bulk_msg until whole message is transfered Andrea Odetti (1): V4L/DVB (13593): PWC: parameter trace is only available in debug Andreas Herrmann (8): x86, apic: Clear APIC Timer Initial Count Register on shutdown PCI: derive nearby CPUs from device's instead of bus' NUMA information x86, amd-ucode: Remove needless log messages x86: ucode-amd: Load ucode-patches once and not separately of each CPU x86: ucode-amd: Don't warn when no ucode is available for a CPU revision x86: ucode-amd: Convert printk(KERN_*...) to pr_*(...) x86, ucode-amd: Ensure ucode update on suspend/resume after CPU off/online cycle x86: ucode-amd: Move family check to microcde_amd.c's init function Andreas Petlund (1): net: Corrected spelling error heurestics->heuristics Andreas Regel (10): V4L/DVB (13351): stv090x: increases search range based on symbol rate V4L/DVB (13352): stv090x: fixes errors and typos in register definitions V4L/DVB (13353): stv090x: fixes STR and SNR calculation and normalizes the value into the 0..0xFFFF range V4L/DVB (13354): stv090x: fixes some typos like wrong register or variable names V4L/DVB (13355): stv090x: fixes calculation of AGC2 and uses a different AGC2 threshold for cut 3 chips V4L/DVB (13356): stv090x: fixes signal lock logic V4L/DVB (13357): stv090x: adds an additional check for signal presence based on AGC1 V4L/DVB (13358): stv090x: add an additional check for packet delineator lock in stv090x_read_status in case of a tuned DVB-S2 signal V4L/DVB (13359): stv090x: adds corrections of some register values V4L/DVB (13360): stv090x: fix the calculation of the r divider in stv6110x_set_frequency Andreas Schwab (2): m68k: use generic code for ptrace requests m68k: ptrace fixes Andrei Pelinescu-Onciul (4): sctp: allow setting path_maxrxt independent of SPP_PMTUD_ENABLE sctp: limit maximum autoclose setsockopt value sctp: fix integer overflow when setting the autoclose timer sctp: fix sctp_setsockopt_autoclose compile warning Andres Salomon (13): drm: kill some unused DRM_PROC macros from drmP.h drm: kill more unused DRM macros drm: replace DRM_COPY macro w/ a function drm: check return values in drm_version cs5535-gpio: add AMD CS5535/CS5536 GPIO driver support ALSA: cs5535audio: free OLPC quirks from reliance on MGEODE_LX cpu optimization cs5535: add a generic MFGPT driver cs5535: add a generic clock event MFGPT driver cs5535: move the DIVIL MSR definition into linux/cs5535.h cs5535: move VSA2 checks into linux/cs5535.h cs5535: define lxfb/gxfb MSRs in linux/cs5535.h cs5535: drop the Geode-specific MFGPT/GPIO code lxfb: add copyright/license info Andrew G. Morgan (1): Silence the existing API for capability version compatibility check. Andrew Hendry (1): X25: Enable setting of cause and diagnostic fields Andrew Lunn (1): staging: batman-adv meshing protocol Andrew Lutomirski (1): drm/i915: restore render clock gating on resume Andrew Morton (9): drivers/atm/solos-pci.c: fix warning/bug, clean up code kernel/hw_breakpoint.c: Fix local/global shadowing include/linux/compiler-gcc4.h: Fix build bug - gcc-4.0.2 doesn't understand __builtin_object_size net/rfkill/core.c: work around gcc-4.0.2 silliness amd64_edac: fix use-uninitialised bug + drivers-staging-wlags49_h2-remove-cvs-metadata.patch added to -mm tree mm: memory_hotplug: make offline_pages() static drivers/scsi/sym53c8xx_2/sym_glue.c: rename skip_spaces() to sym_skip_spaces() acpi_pad: squish warning Andrew Patterson (6): PCI: add pci_get_domain_bus_and_slot function PCI: add support for PCI domains to aer_inject PCI: use better error return values in aer_inject PCI: fix memory leak in aer_inject PCI: unconditionally clear AER uncorr status register during cleanup PCI: remove ifdefed pci_cleanup_aer_correct_error_status Andrew Sharp (1): fix my email address. Andrew Vasquez (5): [SCSI] qla2xxx: Add firmware-dump kobject uevent notification. [SCSI] qla2xxx: Display additional mailbox registers during AEN handling. [SCSI] qla2xxx: Retrieve firmware's maximum number of supported FCFs. [SCSI] qla2xxx: Properly check FCP_RSP response-info field after TMF completion. [SCSI] qla2xxx: Properly re-register FC4/FDMI after physical and logical link disruptions. Andrew Victor (1): ARM: 5637/1: [KS8695] Don't reference CLOCK_TICK_RATE in drivers Andrey Porodko (1): davinci: Initial support for Neuros OSD2 platform. Andrey Yurovsky (1): libertas: remove internal buffers from GSPI driver AndrĂ© Goddard Rosa (20): tree-wide: fix assorted typos all over the place Staging: fix assorted typos all over the place serial: fix NULL pointer dereference serial: cascade needless conditionals serial, 8250: calculate irqflags bitmask before loop vsprintf: factorize "(null)" string vsprintf: pre-calculate final string length for later use vsprintf: give it some care to please checkpatch.pl vsprintf: use TOLOWER whenever possible vsprintf: reduce code size by avoiding extra check vsprintf: move local vars to block local vars and remove unneeded ones vsprintf: factor out skip_space code in a separate function vsprintf: reuse almost identical simple_strtoulX() functions ctype: constify read-only _ctype string string: factorize skip_spaces and export it to be generally available string: on strstrip(), first remove leading spaces before running over str tree-wide: convert open calls to remove spaces to skip_spaces() lib function parser: remove unnecessary strlen() pid: tighten pidmap spinlock critical section by removing kfree() pid: reduce code size by using a pointer to iterate over array Andy Adamson (15): nfsd41: use sv_max_mesg for forechannel max sizes nfs41: add create session into establish_clid nfs41: rename cl_state session SETUP bit to RESET nfs41: nfs4_get_lease_time will never session reset nfs41: call free slot from nfs4_restart_rpc nfs41: free the slot on unhandled read errors nfs41: fix switch in nfs4_handle_exception nfs41: fix switch in nfs4_recovery_handle_error nfs41: don't clear tk_action on success nfs41: remove nfs4_recover_session nfs41: nfs41: fix state manager deadlock in session reset nfs41: drain session cleanup nfs41: only state manager sets NFS4CLNT_SESSION_SETUP nfs41: do not zero seqid portion of stateid on close nfs41: fix session fore channel negotiation Andy Gospodarek (1): net: export device speed and duplex via sysfs Andy Grover (5): RDS: Add GET_MR_FOR_DEST sockopt RDS: Fix potential race around rds_i[bw]_allocation RDS: Fix panic on unload RDS: Do not send congestion updates to loopback connections RDS/IB+IW: Move recv processing to a tasklet Andy Isaacson (2): x86: Factor duplicated code out of __show_regs() into show_regs_common() x86: Print DMI_BOARD_NAME as well as DMI_PRODUCT_NAME from __show_regs() Andy Poling (1): xfs: Wrapped journal record corruption on read at recovery Andy Shevchenko (2): V4L/DVB (13231): pwc: Use kernel's simple_strtol() fbdev: drop custom atoi from drivers/video/modedb.c Andy Walls (29): V4L/DVB (13084): v4l2-chip-ident: Add ID's needed for the cx23885 and cx25840 modules V4L/DVB (13085): cx23885: Fix support for v4l2-dbg access to CX2388[578] and CX23417 regs V4L/DVB (13086): cx23885: Add skeleton v4l2_subdev for the CX23888 integrated IR controller V4L/DVB (13087): cx25840: Improve detection of CX2388[578] A/V cores V4L/DVB (13088): cx25840: Convert chip/core family checks to static inline functions V4L/DVB (13089): cx25840: Separate set_audclk_freq functionality for the different chips V4L/DVB (13090): cx25840: Init PLLs properly for CX2388[578] A/V cores V4L/DVB (13091): cx23885: Enable HVR-1850 CX23888 A/V core to get VID_CLK running for IR V4L/DVB (13096): v4l2-subdev: Add v4l2_subdev_ir_ops and IR notify defines for v4l2_device V4L/DVB (13097): cx23885: Complete CX23888 IR subdev implementation for Rx & almost for Tx V4L/DVB (13098): cx23885: Add integrated IR subdevice interrupt and notification handling V4L/DVB (13099): ir-functions: Export ir_rc5_decode() for use by the cx23885 module V4L/DVB (13100): cx23885: Add IR input keypress handling and enable for the HVR-1850 V4L/DVB (13253): cx23885: CodingStyle fix V4L/DVB (13426): cx18: Rename struct cx18_mdl to struct cx18_mdl_ent V4L/DVB (13427): cx18: Rename struct cx18_queue.buffers to struct cx18_queue.depth V4L/DVB (13428): cx18: Rename mdl_offset to mdl_base_idx or free_mdl_idx as appropriate V4L/DVB (13429): cx18: Add Memory Descriptor List (MDL) layer to buffer handling V4L/DVB (13430): cx18: Fix YUV capture so that encoder passes a single frame per transfer V4L/DVB (13431): cx18: Adjust an MDL's final buffer size to force encoder transfer size V4L/DVB (13432): cx18: Adjust encoder VBI MDL size to be exactly frame's worth of VBI data V4L/DVB (13433): cx18: Remove duplicate list traversal when processing incoming MDLs V4L/DVB (13434): cx18: Bump version number due to significant buffer handling changes. V4L/DVB (13440): ivtv: Update the cards definitions to add another AVerMedia M113 variant V4L/DVB (13442): ivtv: Add module parameter to adjust I2C SCL clock period per board V4L/DVB (13443): ivtv: Defer legacy I2C IR probing until after setup of known I2C devices V4L/DVB (13444): ivtv: Add explicit IR controller initialization for the AVerTV M116 V4L/DVB (13445): cx18: Use per cx18 instance init data for ir-kbd-i2c instead of const data V4L/DVB (13446): ivtv: Add more explicit detection of known IR devices for Hauppauge cards Angelo Arrifano (1): OMAP7XX: Clocks: Add ck_ref and armxor Anil Ravindranath (1): [SCSI] pmcraid: support SMI-S object model of storage pool Anil Veerabhadrappa (5): [SCSI] bnx2i: Add 5771E device support to bnx2i driver [SCSI] bnx2i: Adjust sq_size module parametr to power of 2 only if a non-zero value is specified [SCSI] bnx2i: update CQ arming algorith for 5771x chipsets [SCSI] bnx2i: Task management ABORT TASK fixes [SCSI] bnx2i: minor code cleanup and update driver version Anirban Chakraborty (1): [SCSI] qla2xxx: fix for multiqueue in MISX disabled case Anisse Astier (7): msi-wmi: remove useless includes msi-wmi: rework init msi-wmi: remove custom runtime debug implementation msi-wmi: remove unused field 'instance' in key_entry structure msi-wmi: replace one-condition switch-case with if statement msi-wmi: switch to using input sparse keymap library msi-wmi: depend on backlight and fix corner-cases problems Anssi Hannula (1): HID: pidff - fix unnecessary loop iterations on reset Antoine Jacquet (1): V4L/DVB (13438): zr364xx: add support for Trust Powerc@m 910Z Anton Blanchard (17): perf stat: Add branch performance metric powerpc: perf_event: Log invalid data addresses as all 1s powerpc: perf_event: Enable SDAR in continous sample mode perf_event: Add alignment-faults and emulation-faults software events powerpc: Create PPC_WARN_ALIGNMENT to match PPC_WARN_EMULATED powerpc: perf_event: Add alignment-faults and emulation-faults software events powerpc: tracing: Add powerpc tracepoints for interrupt entry and exit powerpc: tracing: Add powerpc tracepoints for timer entry and exit powerpc: tracing: Add hypervisor call tracepoints powerpc: tracing: Give hypervisor call tracepoints access to arguments powerpc: Disable HCALL_STATS by default powerpc: Export powerpc_debugfs_root powerpc: perf_event: Cleanup copy_page output by hiding setup symbol powerpc: perf_event: Hide iseries_check_pending_irqs powerpc: perf_event: Cleanup output by adding symbols powerpc: Move ehea hcall definitions into hvcall.h softlockup: Fix hung_task_check_count sysctl Anton Vorontsov (43): gianfar: Some cleanups for startup_gfar() gianfar: Simplify skb resources freeing code gianfar: Don't needlessly set the wrap bit for the last RX BD gianfar: Split allocation and initialization steps out of startup_gfar() gianfar: Move tbase/rbase initialization to gfar_init_mac() gianfar: Factor out RX BDs initialization from gfar_new_rxbdp() gianfar: Factor out gfar_init_bds() from gfar_alloc_skb_resources() gianfar: Add support for hibernation powerpc: Make it possible to select hibernation on all PowerPCs of/platform: Implement support for dev_pm_ops fsl_pq_mdio: Fix compiler/sparse warnings (part 1) fsl_pq_mdio: Fix compiler/sparse warnings (part 2) gianfar: Fix compiler and sparse warnings skbuff: Do not allow skb recycling with disabled IRQs gianfar: Remove 'Interrupt problem!' warning gianfar: Fix build with CONFIG_PM=y gianfar: Fix thinko in gfar_set_rx_stash_index() gianfar: Fix race between gfar_error() and gfar_start_xmit() gianfar: Revive SKB recycling powerpc/qe: Increase MAX_QE_RISC to 4 powerpc/qe: Add qe_upload_firmware() stub for non-QE builds powerpc/qe: Make qe_reset() code path safe for repeated invocation powerpc/qe: QE also shuts down on MPC8568 powerpc/cpm: Remove SPI defines and spi structs powerpc/qe&cpm2: Avoid redefinitions in CPM2 and QE headers powerpc/cpm: Move CPMFCR_* defines into cpm.h powerpc/qe&cpm: Implement static inline stubs for non-QE/CPM builds spi_mpc8xxx: Fix uninitialized variable spi_mpc8xxx: Factor out SPI mode change steps into a call spi_mpc8xxx: Turn qe_mode into flags spi_mpc8xxx: Add support for QE DMA mode and CPM1/CPM2 chips powerpc/qe: Implement QE driver for handling resume on MPC85xx powerpc/85xx/86xx: Add suspend/resume support powerpc/85xx: Add power management support for MPC85xxMDS boards powerpc/86xx: Add power management support for MPC8610HPCD boards powerpc/83xx: Add power management support for MPC83xx QE boards powerpc/fsl: Make fsl_deep_sleep() usable w/ modules and non-83xx builds mtd: m25p80: Convert to device table matching mtd: m25p80: Rework probing/JEDEC code mtd: m25p80: Add support for CAT25xxx serial EEPROMs power_supply_sysfs: Handle -ENODATA in a special way gianfar: Fix build with CONFIG_NET_POLL_CONTROLLER=y rtc: set wakeup capability for I2C and SPI RTC drivers Antonio Ospite (11): [ARM] pxa/ezx: add camera support for A780 and A910 EZX phones [ARM] pxa/ezx: add leds-lp3944 support for A910 EZX phone [ARM] pxa/ezx: update ezx_defconfig now that ezx-pcap is in [ARM] pxa/em-x270: don't use pxa_camera init() callback [ARM] pxa/pcm990: don't use pxa_camera init() callback mfd: ezx-pcap: Don't pass pcap pointer as subdev drvdata. mfd: Remove ezx-pcap defines for custom led gpio encoding V4L/DVB (13564): gspca - main: Implement vidioc_enum_frameintervals. leds: Add LED class driver for regulator driven LEDs. leds: leds-pca9532.h- indent with tabs, not spaces leds: leds-lp3944.h - remove unneeded includes Antti Palosaari (7): V4L/DVB (13054): af9015: add USB ID for KWorld PlusTV DVB-T PCI Pro Card (DVB-T PC160-T) V4L/DVB (13055): af9015: fix few typos V4L/DVB (13056): af9015: add LeadTek Y04G0051 remote buttons V4L/DVB (13057): af9015: add MSI DIGIVOX mini III remote V4L/DVB (13058): af9015: enable remote polling when eeprom contains 0x04 V4L/DVB (13363): ec100: add new driver for E3C EC100 DVB-T demodulator V4L/DVB (13364): ec168: add new driver for E3C EC168 DVB USB Anuj Aggarwal (3): ASoC: OMAP3EVM: Use the twl4030_setup_data for headset pop-removal ASoC: Adding OMAP3517 / AM3517 EVM support in ASOC ASoC: Modifying Kconfig/Makefile for AM3517 EVM Aristeu Rozanski (1): [S390] ftrace: build ftrace.o when CONFIG_FTRACE_SYSCALLS is set for s390 Arjan van de Ven (13): x86: Use __builtin_object_size() to validate the buffer size for copy_from_user() x86: Use __builtin_memset and __builtin_memcpy for memset/memcpy x86: Turn the copy_from_user check into an (optional) compile time warning x86: Add a Kconfig option to turn the copy_from_user warnings into errors x86: Relegate CONFIG_PAT and CONFIG_MTRR configurability to EMBEDDED x86: Don't use the strict copy checks when branch profiling is in use capabilities: simplify bound checks for copy_from_user() perf timechart: Add a process filter x86: Make sure we also print a Code: line for show_regs() perf/core: Provide a kernel-internal interface to get to performance counters perf_event: Fix invalid type in ioctl definition floppy: Add an extra bound check on ioctl arguments PM: Add initcall_debug style timing for suspend/resume Arnaldo Carvalho de Melo (132): perf tools: Use rb_tree for maps perf sched: Remove dead code perf trace: Remove dead code perf top: Remove dead {min,max}_ip unused variables perf tools: Rewrite and improve support for kernel modules perf tools: Move hist_entry__add common code to hist.c perf tools: Remove show_mask bitmask perf top: Keep the default of asking for kernel module symbols perf tools: Create maps for modules when processing kallsyms perf tools: /proc/modules names don't always match its name perf report: Use kernel_maps__find_symbol as fallback to find vdsos, etc perf tools: Up the verbose level for some really verbose stuff perf tools: Improve kernel/modules symbol lookup net: Introduce recvmmsg socket syscall perf tools: Move threads & last_match to threads.c ia64: Fix up the syscall table for recvmmsg perf tools: Add missing tools/perf/util/include/string.h perf tools: Add bunch of missing headers to LIB_H perf tools: Add ->unmap_ip operation to struct map net: Avoid compiler warning for mmsghdr when CONFIG_COMPAT is not selected perf annotate: Use the sym_priv_size area for the histogram perf annotate: Remove requirement of passing a symbol name perf top: Fix symbol annotation perf tools: Unify debug messages mechanisms perf probe: Print debug messages using pr_*() perf record: Fix race where process can disappear while reading its /proc/pid/tasks perf tools: Generalize event synthesizing routines perf top: Support userspace symbols too perf tools: Delay loading symtabs till we hit a map with it perf tools: Factor out the map initialization perf tools: Simplify the symbol priv area mechanism perf tools: Improve message about missing symtabs for deleted DSOs perf probe: Annotate variable initialization perf symbols: Initialize dso->loaded perf symbols: Factor out buildid reading routine perf symbols: Use the buildids if present alpha: Fixup recvmmsg syscall glue perf symbols: Call the symbol filter in dso__synthesize_plt_symbols() perf symbols: Pass the offset to perf_header__read_build_ids() perf tools: Debug.h needs to include event.h for event_t perf tools: Generalize perf_header__adds_read() perf tools: Introduce dsos__fprintf_buildid perf buildid-list: New plumbing command perf tools: Don't die in perf_header_attr__new() perf top: Use all the lines in the screen perf top: Introduce --hide_{user,kernel}_symbols perf buildid-list: Always show the DSO name perf tools: Don't die() in perf_header__add_attr() perf tools: Don't die() in perf_header_attr__add_id() perf tools: Don't die() in perf_header__new() perf tools: Don't die() in do_write() perf symbols: Add a long_name_len member to struct dso perf top: Auto adjust symbol and dso widths perf top: Suppress DSO column if only one is present perf top: Introduce helper function to access symbol from sym_entry perf top: Allocate space only for the number of counters used perf top: Don't allocate the source parsing members upfront perf symbols: Fix comparision of build_ids perf symbols: Kill struct build_id_list and die() another day perf symbols: Record the build_ids of kernel modules too perf symbols: Capture the running kernel buildid too perf tools: perf_header__read() shouldn't die() perf tools: Eliminate some more die() uses in library functions perf tools: Don't die() in mmap_dispatch_perf_file perf symbols: Remove unrelated actions from dso__load_kernel_sym perf symbols: Filename__read_build_id should look at .notes section too perf symbols: Introduce dso__build_id_equal perf symbols: Do lazy symtab loading for the kernel & modules too perf symbols: Check vmlinux buildid perf symbols: Change the kernel DSO name if it comes from kallsyms perf symbols: Fixup kernel_maps__fixup_end end map perf symbols: Old versions of elf.h don't have NT_GNU_BUILD_ID perf trace: Read_tracing_data should die() another day perf symbols: Show messages about module loading only if verbose >= 1 perf report: Do map lookups in resolve_callchain() perf symbols: Look for vmlinux in more places perf tools: Move graph_line and graph_dotted_line from top perf kmem: Resolve symbols perf top: Always show the DSO column, even if its all the same perf symbols: Simplify symbol machinery setup perf tools: Introduce zalloc() for the common calloc(1, N) case perf tools: Remove unused wrapper routines perf symbols: Rename find_symbol routines to find_function perf symbols: Avoid annoying message about loading symbols perf symbols: Rename kernel_mapto kernel_map[s]__functions perf symbols: Split the dsos list into kernel and user parts perf symbols: Unexport kernel_map__functions perf symbols: Add a 'type' field to struct map perf symbols: Better support for multiple symbol tables per dso perf symbols: Make the kallsyms loading routines part of the dso class perf symbols: Kernel_maps should be an array of MAP__NR_TYPES entries perf symbols: Support multiple symtabs in struct thread perf symbols: When not using modules, discard its symbols perf tools: Reorganize event processing routines, lotsa dups killed perf tools: Consolidate symbol resolving across all tools MIPS: Wire up recvmmsg syscall perf buildid-list: Fix copy'n'paste help message perf symbols: dsos__read_build_ids() should read both user and kernel buildids perf symbols: perf_header__read_build_ids() offset'n'size should be u64 perf symbols: Rename kthreads to kmaps, using another abstraction for it perf symbols: Introduce symbol_type__is_a perf symbols: Introduce ELF counterparts to symbol_type__is_a perf symbols: Add support for 'variable' symtabs perf symbols: Add missing "Variables" entry to map_type__name perf symbols: Allow lookups by symbol name too perf symbols: Ditch dso->find_symbol perf tools: Introduce perf_session class perf session: Pass the perf_session to the event handling operations perf session: Ditch register_perf_file_handler perf session: Register the idle thread in perf_session__process_events perf session: Reduce the number of parms to perf_session__process_events perf session: Move the global threads list to perf_session perf session: Move kmaps to perf_session perf tools: No need for three rb_trees for sorting hist entries perf session: Move the hist_entries rb tree to perf_session perf session: Adopt resolve_callchain perf session: Adopt the sample_type variable perf session: Event statistics also are per session perf util: Remove setup_sorting dups perf record: Rename perf.data to perf.data.old if --force/-f is used perf diff: Introduce tool to show performance difference perf diff: Fix documentation perf symbols: Make symbol_conf global perf symbols: Adopt the strlists for dso, comm perf symbols: Move symbol filtering to event__preprocess_sample() perf report: Generalize perf_session__fprintf_hists() perf tools: Move hist entries printing routines from perf report perf session: Move perf report specific hits out of perf_session__fprintf_hists perf report: Fix cut'n'paste error recently introduced perf diff: Use perf_session__fprintf_hists just like 'perf record' perf diff: Change the default sort order to "dso,symbol" perf diff: Percent calcs should use double values Arnaud Patard (2): Input: add S3C24XX touchscreen driver mfd: Move pcf50633 messages to appropriate log levels Arnd Bergmann (39): lib/checksum.c: use 32-bit arithmetic consistently lib/checksum.c: make do_csum optional lib/checksum: fix one more thinko compat: add struct compat_ifreq etc to compat.h net/tun: handle compat_ioctl directly net, compat_ioctl: handle socket ioctl abuses in tty drivers net: copy socket ioctl code to net/socket.h appletalk: handle SIOCATALKDIFADDR compat ioctl compat: move sockios handling to net/socket.c net, compat_ioctl: handle more ioctls correctly net/appletalk: push down BKL into a atalk_dgram_ops net/ipx: push down BKL into a ipx_dgram_ops net/irda: push BKL into proto_ops net/x25: push BKL usage into x25_proto net: kill proto_ops wrapper net, compat_ioctl: fix SIOCGMII ioctls net/compat_ioctl: support SIOCWANDEV net/compat: fix dev_ifsioc emulation corner cases net/atm: move all compat_ioctl handling to atm/ioctl.c hamradio/mkiss: fix typo in compat_ioctl veth: move loopback logic to common location macvlan: cleanup rx statistics macvlan: implement bridge, VEPA and private mode macvlan: export macvlan mode through netlink KVM: Enable 32bit dirty log pointers on 64bit host [S390] tty3270: move keyboard compat ioctls perf events: hw_breakpoints: Don't include asm/hw_breakpoint.h in user space asm-generic: add sys_accept4 to unistd.h asm-generic: add sys_recvmmsg to unistd.h compat_ioctl: remove all VT ioctl handling compat_ioctl: Remove BKL compat_ioctl: inline all conversion handlers compat_ioctl: simplify calling of handlers compat_ioctl: simplify lookup table compat_ioctl: pass compat pointer directly to handlers lp: move compat_ioctl handling into lp.c usbdevfs: move compat_ioctl handling to devio.c md: move compat_ioctl handling into md.c x25: Update maintainer. Artem Bityutskiy (3): MAINTAINERS: change e-mail of Artem Bityutskiy mtd: make pagetest work mtd: mtdoops: several minor cleanups Asier Llano (1): net/mpc5200: Fix locking on fec_mpc52xx driver Atis Elsts (1): net: Add sk_mark route lookup support for IPv4 listening sockets Atsushi Nemoto (11): tc35815: Fix return value of tc35815_do_interrupt when NAPI enabled tc35815: Enable NAPI tc35815: Kill non-napi code tc35815: Kill unused code mtd: txx9ndfmc: Use nand_release to free resources rtc-ds1511: fix races around device registration rtc-tx4939: fix races around device registration rtc-ds1553: fix races around device registration rtc-ds1742: fix races around device registration rtc-stk17ta8: fix races around device registration rtc: do not use container_of macro as an argument for to_platform_device Aurelien Jacobs (1): V4L/DVB (13243): gscpa_mr97310a: Add Trust Spyc@m 100 USB ID Avi Cohen Stuart (1): pcmcia: correct handling for Zoomed Video registers in topic.h Avi Kivity (18): core, x86: Add user return notifiers x86: Fix user return notifier build core: Fix user return notifier on fork() core: Clean up user return notifers use of per_cpu Merge remote branch 'tip/x86/entry' into kvm-updates/2.6.33 KVM: Don't wrap schedule() with vcpu_put()/vcpu_load() KVM: Don't pass kvm_run arguments KVM: Return -ENOTTY on unrecognized ioctls KVM: Move assigned device code to own file KVM: VMX: Move MSR_KERNEL_GS_BASE out of the vmx autoload msr area KVM: x86 shared msr infrastructure KVM: VMX: Use shared msr infrastructure KVM: VMX: Remove vmx->msr_offset_efer KVM: Allow internal errors reported to userspace to carry extra data KVM: VMX: Report unexpected simultaneous exceptions as internal errors KVM: x86 emulator: limit instructions to 15 bytes KVM: Drop user return notifier when disabling virtualization on a cpu KVM: VMX: Fix comparison of guest efer with stale host value BRAGA, Bruno (1): Staging: comedi: adl_pci8164 coding style fixes Balaji Rao (1): pcf50633: introduces battery charging current control Balaji T K (5): mfd: Rename all twl4030_i2c* mfd: Rename twl4030_ routines in rtc-twl.c mfd: Add support for twl6030 irq framework rtc: Add twl6030 RTC support mfd: twl: fix twl4030 rename for remaining driver, board files Barry Song (16): ASoC: Provide API for reordering channels ASoC: use set_channel_map api to reorder channels for AD1938 and AD1836 ASoC: Blackfin I2S: use dai state rather than local counter ASoC: move setting ac97 platformdata earlier than ac97 read/write can: add the driver for Analog Devices Blackfin on-chip CAN controllers Blackfin: add some bounds checking to peripheral_request Blackfin: bf537-stamp: need io.h for writeb() funcs Blackfin: support smaller uncached DMA chunks for memory constrained systems Blackfin: drop 4KB reserve at end of memory Blackfin: MPU: support XIP in async flash memory Blackfin: workaround anomaly 05000310 Blackfin: dma-mapping.h: flesh out missing DMA mapping functions Blackfin: convert to asm-generic pci headers Blackfin: bf537-stamp: add CAN resources Blackfin: add support for TIF_NOTIFY_RESUME timecompare: fix half-Y2K38 problem in timecompare_update while calculating offset Bart Massey (4): Staging: comedi: ni_labbc_cs: cleaned up debug define a bit Staging: comedi: ni_labpc_cs: removed null initialization of static Staging: comedi: ni_labpc_cs: removed null check from kfree Staging: comedi: ni_labpc_cs: wrapped long comments Bart Van Assche (2): IB: Clarify the documentation of ib_post_send() IB: Fix typo in ipoib.txt Bartlomiej Zolnierkiewicz (123): rt2800usb: make Kconfig help entry more helpful rt2800pci: make Kconfig help entry more helpful rt2800usb: fix rt2800usb_rfcsr_read() rt2800pci: fix crypto in TX frame rt2800pci: fix comment about register access rt2800pci: fix comment about IV/EIV fields rt2x00: fix rt2x00usb_register_read() comment rt2800usb: use rt2x00usb_register_multiwrite() to set key entries rt2800usb: fix comments in rt2800usb.h rt2x00: remove needless ifdefs from rt2x00leds.h rt2800usb: add rt2800_register_[read,write]() wrappers rt2800pci: add rt2800_register_[read,write]() wrappers rt2800usb: add rt2800_register_multi[read,write]() wrappers rt2800pci: add rt2800_register_multi[read,write]() wrappers rt2800usb: add rt2800_regbusy_read() wrapper rt2800pci: add rt2800_regbusy_read() wrapper rt2800usb: add rt2800_bbp_[read,write]() wrappers rt2800pci: add rt2800_bbp_[read,write]() wrappers rt2800usb: add rt2800_rfcsr_[read,write]() wrappers rt2800pci: add rt2800_rfcsr_[read,write]() wrappers rt2800usb: add rt2800_rf_[read,write]() wrappers rt2800pci: add rt2800_rf_[read,write]() wrappers rt2800usb: add rt2800_mcu_request() wrapper rt2800pci: add rt2800_mcu_request() wrapper rt2x00: add driver private field to struct rt2x00_dev rt2800usb: convert to use struct rt2800_ops methods rt2800pci: convert to use struct rt2800_ops methods rt2x00: fix rt2x00usb_register_multiwrite() arguments rt2x00: fix rt2x00usb_regbusy_read() arguments rt2x00: fix rt2x00pci_register_multi[read,write]() arguments rt2800: add rt2800lib.h rt2800usb: add RXINFO_DESC_SIZE definition rt2800: fix duplication in header files rt2800: fix comments in rt2800.h rt2x00: add support for different chipset interfaces rt2800: prepare for rt2800lib addition rt2800: add rt2800lib (part one) rt2800: add rt2800lib (part two) rt2x00: move REGISTER_BUSY_* definitions to rt2x00.h rt2800: add rt2800lib (part three) rt2800: add rt2800lib (part four) rt2800: prepare for unification of EEPROM support code rt2800: unify EEPROM support code rt2800pci: add missing RF values to rf_vals table rt2800usb: reorganize code in rt2800usb_probe_hw_mode() rt2800: prepare for rt2800*_probe_hw_mode() unification rt2800: unify rt2800*_probe_hw_mode() rt2800usb: fix RX descriptor naming rt2800: add eFuse EEPROM support code to rt2800lib rt2800usb: add eFuse EEPROM support rt2500usb: remove dead link tuning code hpt366: remove dead old timing tables slc90e66: fix UDMA handling cs5535: add pci id for AMD based CS5535 controllers pata_hpt37x: add proper cable detection methods pata_hpt37x: unify ->pre_reset methods pata_hpt3x2n: fix cable detection pata_hpt{37x,3x2n}: add debounce delay to cable detection methods alim15x3: remove obsolete and dangerous wdc_udma parameter cmd64x: remove no longer needed debugging code cy82c693: remove no longer needed debugging code pdc202xx_old: remove no longer needed debugging code sis5513: remove stale TODO sl82c105: remove no longer needed debugging code libata: add comment documenting PIO latency issues on UP libata: add private driver field to struct ata_device ata_piix: fix MWDMA handling on PIIX3 pata_efar: fix wrong PIO timings being programmed pata_efar: fix wrong MWDMA timings being programmed pata_cs5520: remove dead VDMA support pata_hpt3x3: Power Management fix pata_it8213: fix UDMA handling pata_it8213: fix wrong PIO timings being programmed pata_it8213: fix PIO2 underclocking pata_it8213: fix wrong MWDMA timings being programmed pata_it8213: fix it8213_pre_reset() documentation pata_legacy: fix QDI6580DP support pata_legacy: fix access to control register for QDI6580 pata_legacy: add pointers to QDI65x0 documentation pata_marvell: fix marvell_pre_reset() documentation pata_ns87415: Power Management fix pata_radisys: fix UDMA handling pata_rz1000: Power Management fix pata_sis: Power Management fix pata_via: clear UDMA transfer mode bit for PIO and MWDMA [libata] MWDMA0 is unsupported on PIIX-like PATA controllers pata_it8213: MWDMA0 is unsupported pata_hpt3x2n: fix overclocked MWDMA0 timing Staging: rt3090: disable HAS_ATE option Staging: rt3090: disable HAS_ANTENNA_DIVERSITY_SUPPORT option Staging: rt3090: remove private debugging ioctls Staging: rt3090: remove private ioctls Staging: rt28x0: updates from vendor's V2.1.0.0 drivers Staging: rt28x0: remove unused code from common/dfs.c Staging: rt2860: add RT3090 chipset support Staging: remove no longer needed rt3090 driver Staging: rt28x0: remove unused ->eewrite methods Staging: rt28x0: remove unused code from common/ee_efuse-c Staging: rt28x0: remove private RTPRIV_IOCTL_SET ioctl Staging: rt28x0: remove private RTPRIV_IOCTL_GSITESURVEY ioctl Staging: rt28x0: remove private WEXT handlers Staging: rt28x0: remove support for private driver parameters Staging: rt28x0: remove optional loading of EEPROM from file in eFuse mode Staging: rt28x0: fix some build warnings Staging: rt28x0: remove optional cmm profile parameters Staging: rt28x0: remove dead code from rtmp_phy.h Staging: rt28x0: remove unused SHA256 code Staging: rt28x0: remove dead code Staging: rt28x0: remove __LINE__ instances Staging: rt28x0: run *.c files through Lindent Staging: rt28x0: run common/*.c files through Lindent Staging: rt28x0: run sta/*.c files through Lindent Staging: rt28x0: run *.h files through Lindent Staging: rt28x0: fix comments in *.c files Staging: rt28x0: fix comments in common/*.c files Staging: rt28x0: fix comments in sta/*.c files Staging: rt28x0: fix comments in *.h files Staging: rt28x0: remove typedefs (part one) Staging: rt28x0: remove typedefs (part two) Staging: rt28x0: remove typedefs (part three) Staging: rt28x0: Add proper selection of WIRELESS_EXT and WEXT_PRIV Staging: rt28x0: fix comments in chip/mac_pci.h Staging: rt28x0: remove no longer needed common/cmm_data_2860.c Becky Bruce (1): powerpc: Fix DEBUG_HIGHMEM build break from d4515646699 Beholder Intl. Ltd. Dmitry Belimov (2): V4L/DVB (13075): xc5000: add FM radio support V4L/DVB (13080): saa7134: add support for the digital side of the Behold X7 Ben Cahill (23): iwl3945: update iwl3945_apm_init() iwlwifi: turn off device when not used. iwl3945: remove unnecessary call to apm_ops.reset() iwlagn, iwl3945: remove apm_reset() functions iwl3945: streamline iwl3945_rfkill_poll() iwl3945: move iwl_power_initialize() iwlwifi: consolidate apm_init() functions iwlwifi: make sure device is reset when unloading driver iwlwifi: remove unneeded locks from apm_stop() and stop_master() iwlwifi: remove power-wasting calls to apm_ops.init() iwlagn: invoke L0S workaround for 6000/1000 series iwlagn: Clarify FH_TX interrupt iwlagn: update write pointers for all tx queues after wakeup iwlwifi: Limit size of Event Log dump iwlwifi: speed up event log dumps iwlwifi: Update comments for struct iwl_ssid_ie iwlwifi: Add comments about MAC_ACCESS_REQ iwlagn: update write pointers in iwl_irq_tasklet() iwlwifi: MAC_ACCESS_REQ cleanup iwl3945: Reset saved POWER_TABLE_CMD in "up" iwlwifi: Add comments about CSR registers iwlwifi: Add iwl_write8() iwlagn: Use iwl_write8() for CSR_INT_COALESCING register Ben Dooks (31): ASoC: S3C: Remove DM9000: Wake on LAN support Input: gpio_keys - use dev_ macros to report information Input: gpio_keys - use instead of Input: gpio_keys - seperate individual button setup to make code neater mtd: nand: add option to quieten off the no device found messgae mtd: s3c2410: propagate nand options from the platform data ARM: SAMSUNG: Add plat-samsung as starting point for plat-s3c* moves ARM: S3C24XX: machine support for Simtec Audio ARM: OSIRIS: DVS (Dynamic Voltage Scaling) supoort. ARM: S3C24XX: Add documentation for arch/arm/plat-s3c24xx/include/plat/mci.h ARM: S3C: Fix Simtec copyright statements in Documentation/S3C24XX ARM: S3C: Update Simtec copyright statements from , to - ARM: S3C: Update Simtec copyright statements from , to - [2] ARM: H1940: Correct name of the local platform devices for LED and Bluetooth ARM: S3C: Add NAND device platform data set call ARM: AT2440EVB: Remove duplicated s3c_device_sdi.name set ARM: N30: Use s3c_i2c0_set_platdata() to set I2C platform data ARM: Merge next-s3c24xx-simtec ARM: Merge next-s3c24xx-dev-rtp ARM: Merge next-s3c64xx-updates [WATCHDOG] CPUFREQ: S3C24XX Watchdog frequency scaling support. ARM: S3C24XX: Export s3c24xx_set_fiq for modules. hwmon: (s3c-hwmon) Fix build error mfd: Allow the board to choose any GPIO base for tps65010 mfd: Allow configuration of VDCDC2 for tps65010 s3cmci: convert missed s3c2410_gpio calls to gpiolib calls sm501: fix missing uses of resource_size() sm501: fix use of old instead of backlight: Pass device through notify callback in the pwm driver spi_s3c24xx: add FIQ pseudo-DMA support Ben Hutchings (133): qeth: Convert ethtool get_stats_count() ops to get_sset_count() tehuti: Convert ethtool get_stats_count() ops to get_sset_count() net: Convert ethtool {get_stats, self_test}_count() ops to get_sset_count() ethtool: Remove support for obsolete string query operations ethtool: Add reset operation mdio: Advertise pause (flow control) settings even if autoneg is off mdio: Expose pause frame advertising flags to ethtool sfc: 10Xpress: Initialise pause advertising flags sfc: 10Xpress: Report support for pause frames sfc: Remove redundant header gmii.h sfc: Remove redundant hardware initialisation sfc: Rename Falcon-specific board code and types sfc: Merge sfe4001.c into falcon_boards.c sfc: Remove boards.h, moving last remaining declaration to falcon.h sfc: Remove versioned bitfield macros sfc: Move RX data FIFO thresholds out of struct efx_nic_type sfc: Update hardware definitions for Siena sfc: Rename register I/O header and functions used by both Falcon and Siena sfc: Eliminate indirect lookups of queue size constants sfc: Define DMA address mask explicitly in terms of descriptor field width sfc: Move all TX DMA length limiting into tx.c sfc: Merge struct efx_blinker into struct efx_board sfc: Change order of device removal to reverse of probe order sfc: Remove declarations of nonexistent functions sfc: Move efx_xmit_done() declaration into correct stanza sfc: Move shared members of struct falcon_nic_data into struct efx_nic sfc: Maintain interrupt moderation values in ticks, not microseconds sfc: Removed kernel-doc for nonexistent member of efx_phy_operations sfc: Remove pointless abstraction of memory BAR number sfc: Merge falcon_probe_phy() into falcon_probe_port() sfc: Remove incorrect assertion from efx_pci_remove_main() sfc: Remove unnecessary tests of efx->membase sfc: Move MTD probe after netdev registration and name allocation sfc: Merge efx_fc_resolve() into efx_mdio_get_pause() sfc: Remove unused code for non-autoneg speed/duplex switching sfc: Rename 'xfp' file and functions to reflect reality sfc: Really allow RX checksum offload to be disabled via-velocity: Remove private device list gro: Name the GRO result enumeration type gro: Change all receive functions to return GRO result codes sfc: Feed GRO result into RX allocation policy and interrupt moderation sfc: Enable heuristic selection between page and skb RX buffers netx: declare MODULE_FIRMWARE solos-pci: declare MODULE_FIRMWARE ambassador: declare MODULE_FIRMWARE bnx2x: declare MODULE_FIRMWARE cxgb3: declare MODULE_FIRMWARE myri10ge: declare MODULE_FIRMWARE spider-net: declare MODULE_FIRMWARE tms380tr: declare MODULE_FIRMWARE pcnet-cs: declare MODULE_FIRMWARE speedfax: declare MODULE_FIRMWARE usbnet: Set link down initially for drivers that update link state at76c50x-usb: declare MODULE_FIRMWARE atmel: declare MODULE_FIRMWARE ipw2100: declare MODULE_FIRMWARE ipw2200: declare MODULE_FIRMWARE iwmc3200wifi: declare MODULE_FIRMWARE libertas: declare MODULE_FIRMWARE libertas_tf_usb: declare MODULE_FIRMWARE mwl8k: declare MODULE_FIRMWARE orinoco: declare MODULE_FIRMWARE prism54: declare MODULE_FIRMWARE wl12xx: declare MODULE_FIRMWARE zd1201: declare MODULE_FIRMWARE zd1211rw: declare MODULE_FIRMWARE sfc: Remove pointless abstraction of memory BAR number (2) sfc: Remove redundant gotos from __efx_rx_packet() sfc: Remove ridiculously paranoid assertions sfc: Move assertions and buffer cleanup earlier in efx_rx_packet_lro() sfc: Record RX queue number on GRO path sfc: SFT9001: Reset LED configuration correctly after blinking sfc: Use a single blink implementation sfc: Rename efx_board::init_leds to init_phy and use for SFN4111T sfc: Make board information explicitly Falcon-specific sfc: Move definition of struct falcon_nic_data into falcon.h sfc: Move struct falcon_board into struct falcon_nic_data sfc: Move all I2C stuff into struct falcon_board sfc: Gather link state fields in struct efx_nic into new struct efx_link_state sfc: Remove unnecessary casts to struct sk_buff * sfc: Remove redundant efx_xmit() function sfc: Combine high-level header files sfc: Log interrupt and reset type names, not numbers sfc: Fix descriptor cache sizes sfc: Treat all MAC registers as 128-bit sfc: Strengthen EFX_ASSERT_RESET_SERIALISED sfc: Comment corrections sfc: Remove unused constant sfc: Clean up struct falcon_board and struct falcon_board_data sfc: Fix bugs in RX queue flushing sfc: Remove unused function efx_flush_queues() sfc: Hold MAC lock for longer in efx_init_port() sfc: Split MAC stats DMA initiation and completion sfc: Move Falcon board/PHY/MAC monitoring code to falcon.c sfc: Simplify XMAC link polling sfc: Change MAC promiscuity and multicast hash at the same time sfc: Move inline comment into kernel-doc sfc: Do not set net_device::trans_start in self-test sfc: Limit some hardware workarounds to Falcon sfc: Remove another unused workaround macro sfc: Remove some redundant whitespace sfc: Decouple NIC revision number from Falcon PCI revision number sfc: Move descriptor cache base addresses to struct efx_nic_type sfc: Clean up RX event handling sfc: Remove redundant writes to INT_ADR_KER sfc: Remove duplicate hardware structure definitions sfc: Turn pause frame generation on and off at the MAC, not the RX FIFO sfc: Move Falcon NIC operations to efx_nic_type sfc: Refactor link configuration sfc: Add power-management and wake-on-LAN support sfc: Implement ethtool reset operation sfc: Add efx_nic_type operation for register self-test sfc: Add efx_nic_type operation for NVRAM self-test sfc: Add efx_nic_type operation for identity LED control sfc: Separate shared NIC code from Falcon-specific and rename accordingly sfc: Fold falcon_probe_nic_variant() into falcon_probe_nic() sfc: Extend loopback mode enumeration sfc: Remove static PHY data and enumerations sfc: Extend MTD driver for use with new NICs sfc: Allow for additional checksum offload features sfc: Rename falcon.h to nic.h sfc: Move shared NIC code from falcon.c to new source file nic.c sfc: Add support for SFC9000 family (1) sfc: Add support for SFC9000 family (2) sfc: Implement TSO for TCP/IPv6 sfc: Update version, copyright dates, authors atl1e: Allow TX checksum offload and TSO to be disabled and reenabled atl1e: Remove redundant definitions of ethtool operations atl1e: Remove non-implementation of ethtool set_msglevel() operation Bluetooth: Declare MODULE_FIRMWARE for Marvell SDIO driver mmc: add module parameter to set whether cards are assumed removable V4L/DVB (13680a): DocBook/media: copy images after building HTML V4L/DVB (13680b): DocBook/media: create links for included sources Ben Kero (1): Staging: comedi: 8255: Fix coding style error Ben Nizette (1): atmel_spi: fix dma addr calculation for len > BUFFER_SIZE Ben Skeggs (5): drm/kms: fix fb cmap allocation to use modeset->crtc not crtc drm/ttm: export some functions useful to drivers using ttm drm/nouveau: Add DRM driver for NVIDIA GPUs drm/nouveau: fix build with CONFIG_AGP=n drm/nouveau: remove use of -ERESTART Benjamin Gilbert (3): crypto: hash - Remove legacy hash/digest code crypto: api - Remove digest case from procfs show handler crypto: hash - Remove cra_u.{digest,hash} Benjamin Herrenschmidt (23): powerpc: Move /proc/ppc64 to /proc/powerpc and add symlink powerpc/chrp: Use the same RTAS daemon as pSeries powerpc/8xx: Fix build breakage with sparse irq changes powerpc/kvm: Remove problematic BUILD_BUG_ON statement Merge branch 'kvm' into next powerpc/kvm: Fix non-modular build Merge commit 'origin/master' into next Merge commit 'jwb/next' into next powerpc: kill the obsolete code under is_global_init() powerpc: Fix build of some FSL platforms Merge commit 'origin/master' into next Revert "powerpc/mm: Fix bug in pagetable cache cleanup with CONFIG_PPC_SUBPAGE_PROT" libata/sff: Use ops->bmdma_stop instead of ata_bmdma_stop() powerpc/macio: Add devres support to macio_device powerpc/macio: Add dma_parms support to macio powerpc/macio: Rework hotplug media bay support libata/sff: Use ops->bmdma_stop instead of ata_bmdma_stop() libata/drivers: Add driver for Apple "MacIO" IDE controller Merge commit 'gcl/next' into next Merge commit 'jwb/next' into next Merge commit 'origin/master' into next powerpc: Fix usage of 64-bit instruction in 32-bit altivec code nouveau: Fix endianness with new context program loader Benjamin Marzinski (3): GFS2: Improve statfs and quota usability GFS2: remove division from new statfs code GFS2: drop rindex glock to refresh rindex list Benny Halevy (1): nfsd: use STATEID_FMT and STATEID_VAL for printing stateids Benoit PAPILLAULT (2): zd1211rw: Fix TX status reporting in order to have proper rate control ath9k: This patch fix RX unpadding for any received frame. Benoit Papillault (1): ath9k: Proper padding/unpadding for the TX/RX path. Bernd Porr (1): Staging: comedi: fix usbdux timeout bug Bernd Schmidt (1): Blackfin: improve async bank access checking (for cross-banks & XIP) Bernhard Walle (2): vt: introduce and use vt_kmsg_redirect() function vt: don't export vt_kmsg_redirect() to userspace Bjorn Helgaas (42): vsprintf: fix io/mem resource width vsprintf: add %pR support for IRQ and DMA resources vsprintf: add %pRt, %pRf to print struct resource details PCI: print resources consistently with %pRt x86/PCI: print resources consistently with %pRt ia64/PCI: print resources consistently with %pRt PNP: print resources consistently with %pRt x86/PCI: allow MMCONFIG above 4GB x86/PCI: use -DDEBUG when CONFIG_PCI_DEBUG set PCI hotplug: move IOAPIC support from acpiphp to ioapic driver vsprintf: use %pR, %pr instead of %pRt, %pRf PCI: make PME# messages KERN_DEBUG x86/PCI: print domain:bus in conventional format PCI: replace pr_debug with dev_dbg PCI: improve discovery/configuration messages x86/PCI: for debuggability, show host bridge windows even when ignoring _CRS x86/PCI: fix bogus host bridge window start/end alignment from _CRS resources: when allocate_resource() fails, leave resource untouched x86/PCI: remove 64-bit division x86/PCI: MMCONFIG: remove unused definitions x86/PCI: MMCONFIG: count MCFG structures with local variable x86/PCI: MMCONFIG: step through MCFG table, not pci_mmcfg_config[] x86/PCI: MMCONFIG: centralize MCFG structure management x86/PCI: MMCONFIG: simplify tests for empty pci_mmcfg_config table x86/PCI: MMCONFIG: reject MMCONFIG apertures at address zero x86/PCI: MMCONFIG: add PCI_MMCFG_BUS_OFFSET() to factor common expression x86/PCI: MMCONFIG: use a private structure rather than the ACPI MCFG one x86/PCI: MMCONFIG: rename pci_mmcfg_region structure members x86/PCI: MMCONFIG: use pointer to simplify pci_mmcfg_config[] structure access x86/PCI: MMCONFIG: add resource to struct pci_mmcfg_region x86/PCI: MMCONFIG: trivial is_mmconf_reserved() interface simplification x86/PCI: MMCONFIG: add virtual address to struct pci_mmcfg_region x86/PCI: MMCONFIG: remove typeof so we can use a list x86/PCI: MMCONFIG: manage pci_mmcfg_region as a list, not a table x86/PCI: MMCONFIG: add pci_mmconfig_remove() to remove MMCONFIG region x86/PCI: MMCONFIG: clean up printks x86/PCI: MMCONFIG: add lookup function PNPACPI: save struct acpi_device, not just acpi_handle PNP: add interface to retrieve ACPI device from a PNPACPI device ipmi: remove unused PCI probe code ipmi: refer to table as "SPMI", not "ACPI" ipmi: add PNP discovery (ACPI namespace via PNPACPI) Boaz Harrosh (31): sparc: remove unused nfsd #includes [SCSI] libosd: osd_dev_is_ver1 - Minor API cleanup [SCSI] libosd: osd_sense: OSD_CFO_PERMISSIONS [SCSI] osduld: Ref-counting bug fix [SCSI] osduld: Use device->release instead of internal kref [SCSI] libosd: osd_dev_info: Unique Identification of an OSD device [SCSI] libosd: bug in osd_req_decode_sense_full() [SCSI] libosd: Bugfix of error handling in attributes-list decoding [SCSI] libosd: Error handling revamped [S390] s390: remove unused nfsd #includes exofs: More sane debug print exofs: dbg-print less exofs: refactor exofs_i_info initialization into common helper exofs: Prints on mount and unmout exofs: statfs blocks is sectors not FS blocks exofs: move osd.c to ios.c exofs: Move all operations to an io_engine exofs: Multi-device mirror support [SCSI] libosd: Fix blk_put_request locking again nfsd: Remove unused dprintk sunrpc: Clean never used include files nfsd: Fix independence of a few nfsd related headers nfsd: Headers Independence and include cleanups nfsd: Source files #include cleanups compat.c: Remove dependence on nfsd private headers parsic: remove un-used nfsd #includes sparc: remove un-used nfsd #includes s390: remove un-used nfsd #includes lockd: Remove un-used nfsd headers #includes vfs: nfsctl.c un-used nfsd #includes nfsd: Move private headers to source directory Bob Copeland (2): ath5k: use noise calibration from madwifi hal ath5k: allow setting txpower to 0 Bob Liu (1): memcg: code clean, remove unused variable in mem_cgroup_resize_limit() Bob Moore (22): ACPICA: Add repair for bad _BIF/_BIX packages ACPICA: Update version to 20091013 ACPICA: Reduce severity of predefined repair messages, Warning to Info ACPICA: Change package length error message to an info message ACPICA: Fix possible fault if return Package objects contain NULL elements ACPICA: Add repair for predefined methods that must return sorted lists ACPICA: New internal utility function to create Integer objects ACPICA: Deploy new create integer interface where appropriate ACPICA: Update version to 20091112. ACPICA: Fix two Scope type error messages ACPICA: Fix two additional Scope override error messages ACPICA: Add repair for bad _FDE/_GTM buffers ACPICA: Update internal namespace node/handle interfaces ACPICA: Add more conversions to predefined name repair module ACPICA: Update function headers, no functional change ACPICA: Fix mutex errors when running _REG methods ACPICA: Move Package-to-Buffer repair code into common ToBuffer function ACPICA: Remove messages if predefined repair(s) are successful ACPICA: Update function headers and comments, no functional change ACPICA: Conditionally perform complex per-predefined-name repairs ACPICA: Predefined name repair: automatically remove null package elements ACPICA: Update version to 20091214 Bolko Maass (1): powerpc/windfarm: Add detection for second cpu pump Borislav Petkov (28): x86, msr: Unify rdmsr_on_cpus/wrmsr_on_cpus mce, edac: Use an atomic notifier for MCEs decoding x86, mce: Fix up MCE naming nomenclature x86, mce: Add a global MCE init helper ide-tape: remove the BKL x86, cpu: mv display_cacheinfo -> cpu_detect_cache_sizes amd64_edac: clarify DRAM CTL debug reporting amd64_edac: make DRAM regions output more human-readable amd64_edac: unify MCGCTL ECC switching amd64_edac: wrap-up pci config read error handling amd64_edac: cleanup DRAM cfg low debug output amd64_edac: cleanup rest of amd64_dump_misc_regs amd64_edac: dump DIMM sizes on K8 too amd64_edac: cleanup f10_early_channel_count amd64_edac: enhance address to DRAM bank mapping amd64_edac: remove superfluous dbg printk amd64_edac: rename StinkyIdentifier amd64_edac: remove unneeded extract_error_address wrapper edac, mce: update AMD F10h revD check edac: add memory types strings for debugging amd64_edac: detect DDR3 memory type amd64_edac: remove early hw support check amd64_edac: add a leaner syndrome decoding algorithm amd64_edac: correct sys address to chip select mapping amd64_edac: bump driver version x86, msr: Add support for non-contiguous cpumasks edac, mce: correct corenum reporting edac, mce, amd: silence GART TLB errors Brandon Philips (1): sky2: fix sky2_link_down copy/paste comment error Breno Leitao (3): bnx2: EEH is failing with timeout cxgb3: Fixing EEH handlers jsm: adding EEH handlers Breno LeitĂŁo (7): jsm: IRQ handlers doesn't need to have IRQ_DISABLED enabled jsm: Rewriting a bad log message jsm: remove the ch_custom_speed field jsm: removing ch_old_baud field jsm: Remove ch_cpstime field jsm: Removing unused jsm_channel->ch_wopen field jsm: removing the field jsm_board->intr_count Brian Gerst (15): x86, 64-bit: Move K8 B step iret fixup to fault entry asm x86, 64-bit: Fix bstep_iret jump x86: Optimize loadsegment() x86, 64-bit: Set data segments to null after switching to 64-bit mode x86-32: Add new pt_regs stubs x86: Merge sys_iopl x86: Merge sys_execve x86: Merge sys_sigaltstack x86, 32-bit: Convert sys_vm86 & sys_vm86old x86: Merge sys_clone x86, 64-bit: Move kernel_thread to C x86, 64-bit: Use user_mode() to determine new stack pointer in copy_thread() x86, 32-bit: Use same regs as 64-bit for kernel_thread_helper x86: Sync 32/64-bit kernel_thread x86: Merge kernel_thread() Brian Haley (5): Use sk_mark for IPv6 routing lookups IPv6: Fix 6RD build error IPv6: use ipv6_addr_copy() in ip6_route_redirect() IPv6: use ipv6_addr_set_v4mapped() IPv6: use ipv6_addr_v4mapped() Brian King (7): powerpc: Add kdump support to Collaborative Memory Manager [SCSI] ibmvfc: Fixup TMF response handling [SCSI] ibmvfc: Fix locking in ibmvfc_remove [SCSI] ibmvfc: Remove unnecessary parameter to ibmvfc_init_host [SCSI] ibmvfc: Fix adapter cancel flags for terminate_rport_io [SCSI] ibmvfc: Add FC Passthru support [SCSI] ibmvfc: Driver version 1.0.7 Brice Goglin (1): myri10ge: use src+dst for rss hashing Bruce Allan (38): e1000e: flow control doesn't re-enable e1000e: check WoL mode is among set of supported modes e1000e: add missing tests for 82583 in ethtool functions e1000e: clearing interrupt timers causes descriptors to get flushed e1000e: function pointers for ethtool set/get offloads e1000e: don't clean Rx ring while resetting e1000e: link reporting problems e1000e: improper return code signage e1000e: disable K1 on PCH LOM when in PHY loopback mode e1000e: Incorrect MII Link beat reporting. e1000e: cleanup redundant #include's e1000e: consolidate two dbug macros into one simpler one e1000e: cleanup ops function pointers e1000e: update copyright information e1000e: remove comments regarding a non-existent api module e1000e: provide comment for 82571 workaround e1000e: set bools to true/false instead of 1/0 e1000e: cleanup - shift indentation left by exiting early in e1000_tso e1000e: cleanup functions that clear hardware statistics e1000e: set pm_qos DMA latency requirement per interface when needed e1000e: do not error out on identification LED init failure e1000e: remove redundant might_sleep() e1000e: cosmetic - group local variables of the same type e1000e: update Tx Unit hang detection message e1000e: provide family-specific functions to manage VLAN filter arrays e1000e: guard against buffer overflow in cable length tables e1000e: provide family-specific PHY power up/down operations e1000e: ensure the link state is correct for serdes links e1000e: enable new 82567V-3 device e1000e: comment corrections e1000e: add debug messages e1000e: PHY type cleanups in e1000e_check_downshift() e1000e: check_polarity function pointers not set for 8257x e1000e: refactor PHY ID detection workaround e1000e: correct ICH/PCH PHY operations function pointers e1000e: minor correction to name of bit in CTRL_EXT register e1000e: replace incorrect use of GG82563_REG macro e1000e: only perform ESB2 MDIC workaround on certain configurations Bruce Jones (8): Staging: comedi: ni_atmio16d: fix formating errors Staging: comedi: ni_atmio16d: brace fixes Staging: comedi: nt_atmio16d: space and tab fixes Staging: comedi: ni_atmio16d: printk fixups Staging: comedi: vmk80xx: cleanup formatting Staging: comedi: acl7225b.c: CodingStyle printk fixups Staging: comedi: adl_pci7296: CodingStyle cleanup Staging: comedi: adl_pci7432: coding style cleanup Bryan Wu (3): USB: musb: kill compile warning for Blackfin systems USB: musb: kill some useless comments in Blackfin driver USB: musb: fix musb_platform_set_mode() definition C A Subramaniam (6): omap: mailbox: Add build specific changes to support omap mailbox omap: mailbox: Add resources and mailbox register base address for OMAP4 mailbox omap: mailbox: remove unnecessary arg for omap_mbox_msg_send omap: mailbox: Adds code changes to support OMAP4 mailbox omap: mailbox: OMAP4 Mailbox Patch to change the IRQ flag from IRQF_DISABLED to IRQF_SHARED omap: mailbox: OMAP4 Mailbox-driver Patch to support tasklet implementation CHENG Renquan (1): USB: add remove_id sysfs attr for usb drivers Carsten Emde (2): tracing: Fix trace_marker output tracing: Remove comparing of NULL to va_list in trace_array_vprintk() Carsten Otte (2): KVM: s390: Make psw available on all exits, not just a subset KVM: s390: Fix prefix register checking in arch/s390/kvm/sigp.c Catalin Marinas (9): kmemleak: Do not use off-slab management with SLAB_NOLEAKTRACE kmemleak: Simplify the kmemleak_scan_area() function prototype kmemleak: Scan the _ftrace_events section in modules kmemleak: Release the object lock before calling put_object() kmemleak: Show the age of an unreferenced object kmemleak: Reduce the false positives by checking for modified objects ARM: 5794/1: Flush the D-cache during copy_user_highpage() ARM: Add an earlyprintk debug console ARM: RealView: Fix typo in the RealView/PBX Kconfig entry Cesar Eduardo Barros (1): WARN_ONCE(): use bool for boolean flag Chaithrika U S (12): ASoC: DaVinci: McASP FIFO related updates davinci: DA850/OMAP-L138 EVM expander setup and UI card detection davinci: RMII support for DA850/OMAP-L138 EVM davinci: DA850/OMAP-L138: Set ASYNC3 domain flag for McASP DA8xx/OMAP-L1xx: Add high speed SD/MMC capabilities davinci: mmc: add cpufreq support davinci: fb: calculate the clock divider from pixel clock info davinci: fb: add cpufreq support davinci: fb: update the driver in preparation for addition of power management features davinci: fb : add suspend/resume suuport for DA8xx/OMAP-L1xx fb driver davinci: fb: add framebuffer blank operation da850/omap-l138: add callback to control LCD panel power Chandra Seetharaman (5): [SCSI] scsi_dh: Change the scsidh_activate interface to be asynchronous [SCSI] scsi_dh: Make rdac hardware handler's activate() async [SCSI] scsi_dh: Make hp hardware handler's activate() async [SCSI] scsi_dh: Make alua hardware handler's activate() async [SCSI] scsi_dh: create sysfs file, dh_state for all SCSI disk devices Changli Gao (4): sendfile(): check f_op.splice_write() rather than f_op.sendpage() netfilter: nf_conntrack: avoid additional compare. act_mirred: cleanup act_mirred: optimization. Charulatha V (1): omap: GPIO module enable/disable Chen Liqin (4): asm-generic: Fix typo in asm-generic/unistd.h. score: add flush_dcahce_page and PG_dcache_dirty define score: fixed pfn_valid define. score: include asm-generic/param.h in asm/delay.h. Chien Tung (7): RDMA/nes: Add support for IB_WR_*INV RDMA/nes: Correct fast memory registration implementation RDMA/nes: Add additional SFP+ PHY uC status check and PHY reset RDMA/nes: Implement IB_SIGNAL_ALL_WR as an iWARP extension RDMA/nes: Clean up struct nes_qp RDMA/nes: Add max_cqe check to nes_create_cq() RDMA/nes: Update copyright and branding string Chris Leech (18): [SCSI] libfc: fix memory corruption caused by double frees and bad error handling [SCSI] libfc: changes to libfc_host_alloc to consolidate initialization with allocation [SCSI] libfc: add some generic NPIV support routines to libfc [SCSI] libfc: vport link handling and fc_vport state managment [SCSI] libfc, libfcoe: FDISC ELS for NPIV [SCSI] libfcoe, fcoe: libfcoe NPIV support [SCSI] fcoe: add a separate scsi transport template for NPIV vports [SCSI] fcoe: NPIV vport create/destroy [SCSI] libfc: RPN_ID is obsolete and unnecessary [SCSI] libfc: RNN_ID may be required before RSNN_NN with some switches [SCSI] libfc: Register Symbolic Node Name (RSNN_NN) [SCSI] libfc: Register Symbolic Port Name (RSPN_ID) [SCSI] libfc: combine name server registration response handlers [SCSI] libfc: combine name server registration request functions [SCSI] fcoe: vport symbolic name support [SCSI] libfc, fcoe: fixes for highmem skb linearize panics [SCSI] fcoe: allow SCSI-FCP to be processed directly in softirq context [SCSI] libfc: reduce hold time on SCSI host lock Chris Mason (3): Merge branch btrfs-master into for-linus Btrfs: make sure fallocate properly starts a transaction Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable into for-linus Chris Wilson (8): drm/i915: Use a single thread workqueue drm/i915: debugfs interface to manually reset the GPU drm/i915: Avoid NULL dereference with component_only tv_modes drm/i915: Don't update the render-clock for every bo. drm/i915: Drop a some common DRM_ERROR() drm/i915: Report purgeable status in buffer lists. drm/i915: Set the error code after failing to insert new offset into mm ht. drm/i915: Remove a debugging printk from hangcheck Chris Wright (3): PCI: add pci_request_acs intel-iommu: Detect DMAR in hyperspace at probe time. intel-iommu: ignore page table validation in pass through mode Christian Borntraeger (5): ratelimit: Make suppressed output messages more useful [S390] dasd: remove dead code [S390] use generic termbits.h header file [S390] use generic sockios.h header file [S390] s390: use change recording override for kernel mapping Christian Ehrhardt (3): sched: Fix missing sched tunable recalculation on cpu add/remove sched: Make tunable scaling style configurable sched: Update normalized values on user updates via proc Christian Koenig (1): drm/radeon/kms: HDMI support for R600 KMS Christian Lamparter (6): iwlwifi: drop lib80211 dependency ar9170: atomic pending A-MPDU counter ar9170usb: atomic pending urbs counter ar9170: don't filter BlockACK frames p54: disable channels with incomplete calibration data sets ar9170: do not discard valuable DUPOFDM frames Christian Pellegrin (2): can: Driver for the Microchip MCP251x SPI CAN controllers can: fix setting mcp251x bit timing on open Christian Schulte (1): hwmon: (w83627hf) Fix for "No such device" Christof Schmitt (18): [SCSI] zfcp: Adapt change_queue_depth for queue full tracking [SCSI] scsi_transport_fc: Introduce helper function for blocking scsi_eh [SCSI] libfc: Add target reset flag to FCP header file [SCSI] zfcp: Access ports and units with container_of in sysfs code [SCSI] zfcp: Merge trace code for fsf requests in one function [SCSI] zfcp: Implement module unloading [SCSI] zfcp: Dont fail SCSI commands when transitioning to blocked fc_rport [SCSI] zfcp: Update FCP protocol related code [SCSI] zfcp: Use common code definitions for FC ELS structs [SCSI] zfcp: Use common code definitions for FC CT structs [SCSI] zfcp: Move WKA port to zfcp FC code [SCSI] zfcp: Remove ZFCP_DID_MASK [SCSI] zfcp: Simplify handling of ct and els requests [SCSI] zfcp: Improve ELS ADISC handling [SCSI] zfcp: Update FSF error reporting [SCSI] zfcp: Block scsi_eh thread for rport state BLOCKED [SCSI] zfcp: Activate fc4s attributes for zfcp in FC transport class [SCSI] zfcp: Remove flag ZFCP_STATUS_FSFREQ_TMFUNCNOTSUPP Christoph Hellwig (40): block: use normal I/O path for discard requests block: allow large discard requests blkdev: flush disk cache on ->fsync fat: make discard a mount option UBIFS: remove manual O_SYNC handling libata: add translation for SCSI WRITE SAME (aka TRIM support) GFS2: add barrier/nobarrier mount options vfs: Implement proper O_SYNC semantics kill wait_on_page_writeback_range afs: remove manual O_SYNC handling ubifs: remove manual O_SYNC handling xfs: simplify inode teardown xfs: fix mmap_sem/iolock inversion in xfs_free_eofblocks xfs: I/O completion handlers must use NOFS allocations xfs: reset the i_iolock lock class in the reclaim path xfs: use WRITE_SYNC_PLUG for synchronous writeout xfs: cleanup data end I/O handlers xfs: remove IO_ISAIO xfs: simplify xfs_buf_get / xfs_buf_read interfaces xfs: rename xfs_attr_fetch to xfs_attr_get_int xfs: uninline xfs_get_extsz_hint xfs: kill the STATIC_INLINE macro xfs: remove incorrect sparse annotation for xfs_iget_cache_miss xfs: cleanup dmapi macros in the umount path avr32: convert to asm-generic/hardirq.h xfs: cleanup bmap extent state macros xfs: change the xfs_iext_insert / xfs_iext_remove xfs: event tracing support elf: kill USE_ELF_CORE_DUMP direct-io: cleanup blockdev_direct_IO locking sanitize xattr handler prototypes make generic_acl slightly more generic cleanup blockdev_direct_IO locking ocfs: stop using do_sync_mapping_range direct I/O fallback sync simplification xfs: check for not fully initialized inodes in xfs_ireclaim xfs: kill xfs_bmbt_rec_32/64 types fix up O_SYNC comments fold do_sync_file_range into sys_sync_file_range kill I_LOCK Christoph Lameter (13): this_cpu: Introduce this_cpu_ptr() and generic this_cpu_* operations this_cpu: Implement X86 optimized this_cpu operations this_cpu: Use this_cpu operations for SNMP statistics this_cpu: Use this_cpu operations for NFS statistics this_cpu: Use this_cpu ops for network statistics this_cpu: Straight transformations this_cpu: Eliminate get/put_cpu this_cpu: xfs_icsb_modify_counters does not need "cpu" variable this_cpu: Use this_cpu_ptr in crypto subsystem this_cpu: Use this_cpu ops for VM statistics this_cpu: Use this_cpu operations in RCU this_cpu: Use this_cpu_xx in nmi handling this_cpu: Use this_cpu_xx for ftrace Chuck Lever (11): SUNRPC: Display compressed (shorthand) IPv6 presentation addresses NFS: Display compressed (shorthand) IPv6 in /proc/mounts NFS: Revert default r/wsize behavior SUNRPC: Check explicitly for tk_status == 0 in call_transmit_status() SUNRPC: Allow RPCs to fail quickly if the server is unreachable SUNRPC: Simplify synopsis of rpcb_local_clnt() SUNRPC: Use a cached RPC client and transport for rpcbind upcalls SUNRPC: Use TCP for local rpcbind upcalls SUNRPC: Use soft connects for autobinding over TCP SUNRPC: Use soft connect semantics when performing RPC ping SUNRPC: soft connect semantics for UDP Cindy H Kao (9): wimax/i2400m: fix the bootmode RX deadlock in SDIO driver wimax/iwmc3200: overwrite SDIO IOR timeout value to avoid platform hang wimax/iwmc3200: don't disable the SDIO function if enable fails wimax/iwmc3200: increase wait time before enable retry wimax/i2400m/sdio: clear the INTR status bit after reading size wimax/i2400m: don't write to memory allocated by request_firmware() wimax/iwmc3200: add new sdio device ID to support iwmc3200 2.5GHz sku wimax/i2400m: use JUMP cmd for last FW chunk indication wimax/i2400m: change the bcf_len to exclude the extended header size Clark Williams (2): perf tools: Add debugfs utility routines for perf perf tools: Modify perf routines to use new debugfs routines Claudio Scordino (2): mtd: atmel_nand: unused variable removed atmel_lcdfb.c: fix printk() type mismatch Clemens Ladisch (28): sound: oxygen: do not try to restore nonexistent EEPROM sound: oxygen: fix for PI7C9X110 compatibility sound: virtuoso: split virtuoso.c sound: virtuoso: fix Xonar Essence ST support sound: oxygen: better defaults for upmixing control sound: oxygen: add stereo upmixing to center/LFE channels sound: oxygen: more hardware documentation sound: oxygen: cache codec registers sound: virtuoso: add headphone impedance control sound: oxygen: allow custom MCLK rates sound: virtuoso: add PCM1796 oversampling control sound: oxygen: add digital filter control sound: oxygen: add high-pass filter control sound: oxygen: fix input monitor control names control: remove snd_konctrol_volatile::owner_pid field control: use reference-counted pid sound: rawmidi: fix opened substreams count sound: pcm: record a substream's owner process sound: rawmidi: record a substream's owner process drm/fb: fix FBIOGET/PUT_VSCREENINFO pixel clock handling drm: set the type of the drm_framebuffer::fbdev field drm/kms: allocate framebuffer cmap sound: usb-audio: add Roland UA-1G support sound: usb-audio: allow switching altsetting on Roland USB MIDI devices sound: usb: make the USB MIDI module more independent sound: usxxx: cleanup chip field vt: make the default cursor shape configurable hwmon: New driver for AMD Family 10h/11h CPUs Cliff Brake (2): USB: ftdi_sio: add USB device ID's for B&B Electronics line USB: mos7840: add device IDs for B&B electronics devices Cliff Cai (5): USB: musb: clear the Blackfin interrupt pending bits early in the ISR USB: musb: Blackfin code needs NOP_USB_XCEIV too Blackfin: bf537-stamp: add adau1371 i2c address Blackfin: bf537-stamp: add adau1761 i2c address mmc: Blackfin SD Host Controller Driver Cliff Wickman (2): x86: SGI UV: Fix BAU initialization x86: Fix duplicated UV BAU interrupt vector Corentin Chary (9): UBI: Add ubi_open_volume_path UBIFS: support mounting of UBI volume character devices eeepc-laptop: add touchpad led asus-laptop: use KEY_F13 to map "Disable Touchpad" event asus-laptop: Add wlan switch found on V6V eeepc-laptop: map keys found on newer eeepc eeepc-laptop: fix coding style asus-laptop: schedule display_get and lcd_switch for removal asus-laptop: change light sens default values. Corrado Zoccolo (14): cfq-iosched: adapt slice to number of processes doing I/O cfq-iosched: preparation to handle multiple service trees cfq-iosched: reimplement priorities using different service trees cfq-iosched: enable idling for last queue on priority class cfq-iosched: fairness for sync no-idle queues cfq-iosched: simplify prio-unboost code cfq-iosched: fix next_rq computation cfq-iosched: cleanup unreachable code cfq-iosched: fix ncq detection code cfq-iosched: fix no-idle preemption logic cfq-iosched: idling on deep seeky sync queues cfq-iosched: fix corner cases in idling logic cfq-iosched: reduce write depth only if sync was delayed cfq-iosched: commenting non-obvious initialization Cory Maccarrone (8): omap1: mmc: Add platform init for omap7xx omap1: omap_udc: Add clocking and disable vbus sense for omap7xx omap1: Add board support and LCD for HTC Herald omap1: Add default kernel configuration for Herald omap1: Add omap7xx USB support omap1: I2C mux and clocks for omap7xx omap1: htcherald: Update defconfig to include mux support Add OMAP spi100k driver Cosmin Ratiu (1): ipv6: fix devconf after adding force_tllao option Curt Wohlgemuth (1): ext4: remove blocks from inode prealloc list on failure Curtis Wald (1): powerpc/44x: Fix PCI node in Yosemite DTS Cyrill Gorcunov (15): x86, apic: Introduce the NOOP apic driver x86, apic: Use apic noop driver x86, apic: Limit apic dumping, introduce new show_lapic= setup option x86, apic: Explain show_lapic= in kernel parameters list x86: apic: Allow noop operations to be called almost at any time net,socket: introduce DECLARE_SOCKADDR helper to catch overflow at build time irq: Do not attempt to create subdirectories if /proc/irq/ failed x86, apic: Use PAGE_SIZE instead of numbers x86, ioapic: Use snrpintf while set names for IO-APIC resourses x86, apic: Get rid of apicid_to_cpu_present assign on 64-bit x86: apic: Do not use stacked physid_mask_t net: netlink_getname, packet_getname -- use DECLARE_SOCKADDR guard x86: io-apic: IO-APIC MMIO should not fail on resource insertion x86, perf events: Check if we have APIC enabled x86, mce: Thermal monitoring depends on APIC being enabled Daisuke Nishimura (4): memcg: add mem_cgroup_cancel_charge() memcg: cleanup mem_cgroup_move_parent() memcg: avoid oom-killing innocent task in case of use_hierarchy memcg: remove memcg_tasklist Damian Lukowski (2): tcp: Stalling connections: Fix timeout calculation routine tcp: Stalling connections: Move timeout calculation routine Dan Carpenter (8): ALSA: remove unnecessary null check drm/ttm: fix small memory leak in ttm_memory.c USB: r8a66597: clean up. remove unneeded null checks USB: fix possible null deref in init_usb_class() mfd: Fix incorrect error check for wm8350-core ACPICA: Move check for valid Thread ID structure V4L/DVB (13596): ov511.c typo: lock => unlock drivers/video/via/viafbdev.c: fix oops with no /proc Dan Williams (3): i2400m: minimal ethtool support md: rcu_read_lock() walk of mddev->disks in md_do_sync() md: add 'recovery_start' per-device sysfs attribute Daniel C Halperin (5): iwlwifi: clean up rs_tx_status iwlwifi: do not clear TX info flags when receiving BlockAckResponse iwlwifi: add aggregation tables to the rate scaling algorithm iwlwifi: fix bugs in beacon configuration iwlwifi: make iwlwifi send beacons Daniel Drake (1): sdio: fix reference counting in sdio_remove_func() Daniel J Blueman (2): mfd: twl4030: fix ELF section mismatch... hwmon: w83627ehf updates Daniel Mack (25): ASoC: CS4270: export de-emphasis filter as ALSA control ARM: MX3: remove I2C defintions from mx31lilly.c ARM: MX3: add SPI functions for lilly1131-db ARM: MX3: add support for mc13783 on lilly-db ARM: MX3: Add pad config for MMC pins on lilly-db ARM: MX3: add MX3X_UART1_BASE_ADDR for uncompression on lilly1131 MXC: Add support for ULPI Viewports ARM: MX3: modularize 'mx31lite' code ARM: MX3: add MMC/SDHC support to mx31lite-db.c ARM: MX3: add SPI devices for mx31lite ARM: MX3: add USB functions for mx31litekit ARM: MX3: add support for GPIO LEDs on litekit db ARM: MX3: add NOR flash support via physmap mtd driver ARM: MX3: lilly1131: move MC13783 device registration ARM: MX3: fix CPU revision number detection ALSA: ARM: add Raumfeld audio support Input: gpio_keys - scan gpio state at probe and resume time ASoC: pxa/raumfeld: adopt new snd_soc_dai_set_pll() API spi/i.mx: drain MXC SPI transfer buffer when probing device USB OTG: add support for ulpi connected external transceivers USB OTG: Add generic driver for ULPI OTG transceiver USB: Add EHCI support for MX27 and MX31 based boards drivers/misc: add driver for Texas Instruments DAC7512 leds: leds-alix2c - take port address from MSR leds: Add driver for LT3593 controlled LEDs Daniel Patrick Johnson (4): Staging: comedi: ni_mio_cs.c: coding style cleanup Staging: Comedi: pcm_common: Fixed all checkpatch issues Staging: comedi: pcmmio: Coding style cleanup Staging: comedi: pcmmio: more coding style cleanup Daniel Ritz (1): backlight: mbp_nvidia_bl - add two more MacBookPro variants Daniel Silverstone (1): Input: usbtouchscreen - add support for Zytronic capacitive touchscreen Daniel T Chen (4): ALSA: intel8x0: Mute External Amplifier by default for Gateway 4525GZ ALSA: hda: Fix max PCM level to 0 dB for Fujitsu-Siemens laptops using CX20549 (Venice) ALSA: hda: Use ALC260_WILL quirk for another Acer model (0x1025007f) ALSA: hda: Fix max PCM level to 0 dB for AD1981_HP Daniel Vetter (13): drm: make drm_mode_object_find typesafe drm/i915: add i915_lp_ring_sync helper drm/i915: kill superflous IS_I855 macro drm/i915: implement drmmode overlay support v4 drm/i915: fully switch off overlay when not in use drm/i915: implement fastpath for overlay flip waiting drm/i915: implement interruptible sleeps in the overlay code drm/i915: kill i915_lp_ring_sync drm/i915: overlay: kill one more unnecessary uninterruptible sleep drm/i915: fix get_core_clock_speed for G33 class desktop chips drm/i915: overlay: extract some duplicated code drm/i915: fixup interrupted overlay switch off calls kbuild: specify absolute paths for cscope Daniel Walker (1): Add arm msm maintainer entry Danny Wood (1): V4L/DVB (13168): Add support for Asus Europa Hybrid DVB-T card (SAA7134 SubVendor ID: 0x1043 Device ID: 0x4847) Darrick J. Wong (2): x86, Calgary IOMMU quirk: Find nearest matching Calgary while walking up the PCI tree powerpc/therm_adt746x: Record pwm invert bit at module load time] Dave Airlie (44): Merge branch 'drm-next' of ../drm-2.6 into drm-next Merge branch 'drm-next' of ../drm-2.6 into drm-next Merge branch 'drm-next' of ../drm-2.6 into drm-next Merge branch 'drm-next' of ../drm-2.6 into drm-next Merge branch 'drm-core-next' of ../linux-2.6 into drm-next drm/radeon/kms: AGP systems need PCI bus mastering enabled drm/radeon/kms: add support for encoder cloning. drm/radeon/kms: pick 8bpp console when 32MB or less VRAM drm/radeon/kms: add HDP flushing for all GPUs. drm/radeon/kms: fix divide by 0 in clocks code drm/radeon/kms: ignore unposted GPUs with no BIOS. drm/radeon/kms: call correct atom table for digital output dpms. drm/radeon/kms: add irq mitigation code for sw interrupt. drm/mm: fixup typo in debug functions. drm/radeon/kms: quirk for Gigabyte RV515 card, DVI+VGA not 2xDVI. drm/radeon/kms: fix RS600 MC setup. Merge remote branch 'origin/drm-core-next' into test drm/radeon/kms: add support to atom parser for FB read/write drm/intel: refactor DP i2c support and DP common header to drm helper drm/ttm: fix unreachable code. drm/radeon/kms: initial radeon displayport porting drm/radeon/kms/dp: fix return in dpcd retrival. drm/radeon/kms: make displayport work by reorganising vsemph setup. drm/radeon/kms: do dp link training at dpms on time not mode set. drm/radeon/kms: drop unused array to fix warning. Merge branch 'drm-core-next' into drm-linus Merge remote branch 'anholt/drm-intel-next' into drm-linus Merge remote branch 'korg/drm-radeon-next' into drm-linus Merge remote branch 'korg/drm-radeon-dp' into drm-linus drm/ttm: fix memory leak noticed by kmemleak. offb: Add support for framebuffer handoff to offb. drm/radeon/kms: fix avivo tiling regression since radeon object rework drm/radeon/kms: fix return value from fence function. drm/radeon/kms: restore surface registers on resume. Merge remote branch 'anholt/drm-intel-next' into drm-linus Merge remote branch 'korg/drm-radeon-next' of into drm-linus drm/radeon/kms: fix warning about cur_placement being uninitialised. drm/ttm: fix incorrect logic in ttm_bo_io path drm/ttm: fix two bugs in new placement routines. drm/radeon/kms: don't report allocate failure on ERESTARTSYS drm/radeon/gem: don't leak a gem object if reserve fails on get tiling (v2) Merge remote branch 'nouveau/for-airlied' of /ssd/git/drm-nouveau-next into drm-linus Merge remote branch 'korg/drm-radeon-next' into drm-linus drm/radeon/kms: fix r100->r500 CS checker for compressed textures. (v2) Dave Chinner (2): xfs: improve metadata I/O merging in the elevator XFS: Free buffer pages array unconditionally Dave Hansen (2): leds: LED driver for Intel NAS SS4200 series (v5) leds-ss4200: Check pci_enable_device return Dave Jones (5): x86/PCI: Use generic cacheline sizing instead of per-vendor tests. x86: Add new Intel CPU cache size descriptors x86: Fix typo in Intel CPU cache size descriptor x86: Remove the CPU cache size printk's x86: Minimise printk spew from per-vendor init code Dave Mitchell (1): powerpc/4xx: Add 16K FIFO size DTS entries on supported platforms David A. Griego (2): davinci: Add MMC/SD support for DA830/OMAP-L137 EVM davinci: Add NAND support for DA830/OMAP-L137 EVM platform David Altobelli (1): hpilo: add locking comment David Daney (17): Add support for GCC-4.5's __builtin_unreachable() to compiler.h (v2) x86: Convert BUG() to use unreachable() MIPS: Convert BUG() to use unreachable() s390: Convert BUG() to use unreachable() avr32: Convert BUG() to use unreachable() Blackfin: Convert BUG() to use unreachable() parisc: Convert BUG() to use unreachable() MIPS: Reorder operations in stackframe.h for better scheduling MIPS: Octeon: Add platform device for MDIO buses. NET: Add driver for Octeon MDIO buses. MIPS: Octeon: Add platform devices MGMT Ethernet ports. MIPS: Octeon: Add register definitions for MGMT Ethernet driver. NET: Add Ethernet driver for Octeon MGMT devices. Staging: octeon-ethernet: Convert to use PHY Abstraction Layer. MIPS: Add drotr and dins instructions to uasm. MIPS: Put PGD in C0_CONTEXT for 64-bit R2 processors. MIPS: Collect FPU emulator statistics per-CPU. David Ellingsworth (14): V4L/DVB (13060): radio-mr800: implement proper locking V4L/DVB (13061): radio-mr800: simplify video_device allocation V4L/DVB (13062): radio-mr800: simplify error paths in usb probe callback V4L/DVB (13063): radio-mr800: remove unnecessary local variable V4L/DVB (13064): radio-mr800: simplify access to amradio_device V4L/DVB (13065): radio-mr800: simplify locking in ioctl callbacks V4L/DVB (13066): radio-mr800: remove device removed indicator V4L/DVB (13067): radio-mr800: fix potential use after free V4L/DVB (13068): radio-mr800: remove device initialization from open/close V4L/DVB (13069): radio-mr800: ensure the radio is initialized to a consistent state V4L/DVB (13070): radio-mr800: fix behavior of set_stereo function V4L/DVB (13071): radio-mr800: preserve radio state during suspend/resume V4L/DVB (13072): radio-mr800: simplify device warnings V4L/DVB (13073): radio-mr800: set radio frequency only upon success David Gibson (9): powerpc/mm: Make hpte_need_flush() correctly mask for multiple page sizes powerpc/mm: Cleanup management of kmem_caches for pagetables powerpc/mm: Allow more flexible layouts for hugepage pagetables powerpc/mm: Cleanup initialization of hugepages on powerpc powerpc/mm: Split hash MMU specific hugepage code into a new file powerpc/mm: Bring hugepage PTE accessor functions back into sync with normal accessors powerpc/mm: Fix bug in pagetable cache cleanup with CONFIG_PPC_SUBPAGE_PROT powerpc/mm: Fix bug in gup_hugepd() powerpc/mm: Fix pgtable cache cleanup with CONFIG_PPC_SUBPAGE_PROT David Graham (1): e100: Fix to allow systems with FW based cards to resume from STD David Howells (5): FRV: Fix no-hardware-breakpoint case PCI: Global variable decls must match the defs in section attributes V4L/DVB: lgs8gxx: Use shifts rather than multiply/divide when possible FS-Cache: Avoid maybe-used-uninitialised warning on variable NOMMU: Optimise away the {dac_,}mmap_min_addr tests David Hunter (1): mtd: pxa3xx_nand: Fix PIO data transfer David J. Wilder (1): IPoIB: Clear ipoib_neigh.dgid in ipoib_neigh_alloc() David Kilroy (2): orinoco: use cfg80211 ethtool ops orinoco: remove spare KERN_DEBUG David Miller (1): perf sched: Fix build failure on sparc David Rientjes (11): x86: Clean up and add missing log levels for k8 x86: Export k8 physical topology x86: Export srat physical topology x86: Interleave emulated nodes over physical nodes slub: allow stats to be cleared oom: dump stack and VM state when oom killer panics nodemask: make NODEMASK_ALLOC more general mm: clear node in N_HIGH_MEMORY and stop kswapd when all memory is offlined mm: add gfp flags for NODEMASK_ALLOC slab allocations mm: slab-allocate memory section nodemask for large systems ACPI: remove NID_INVAL David S. Miller (68): Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Revert "af_packet: add interframe drop cmsg (v6)" cnic: Need to include net/ip6_checksum.h Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 sparc: Add missing __NR_recvmmsg define. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 igb: Fix warnings in igb_set_ringparam() Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 apbuart: Fix build warning. apbuart: Kill dependency on deprecated Sparc-only PROM interfaces. net: Fix build warning in sock_bindtodevice(). apbuart: Fix build and missing driver unregister. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'linux-2.6.33.y' of git://git.kernel.org/pub/scm/linux/kernel/git/inaky/wimax Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan net: compat: No need to define IFHWADDRLEN and IFNAMSIZ twice. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 ipv6: Remove unused var in inet6_dump_ifinfo() clocksource/timecompare: Fix symbol exports to be GPL'd. Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 tcp: Don't make syn cookies initial setting depend on CONFIG_SYSCTL Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Revert "sparc: Make atomic locks raw" sparc64: Faster early-boot framebuffer console. Merge branch 'net-next' of git://git.kernel.org/pub/scm/linux/kernel/git/vxy/lksctp-dev Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 ide: Increase WAIT_DRQ to accomodate some CF cards and SSD drives. Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/ide-2.6 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 tcp: Fix warning on 64-bit. tcp: sysctl_tcp_cookie_size needs to be exported to modules. Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 Merge branch 'ide-dcr' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/misc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ sparc: Set UTS_MACHINE correctly. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 tcp: Remove runtime check that can never be true. sparc64: Fix overly strict range type matching for PCI devices. sparc64: Fix stack debugging IRQ stack regression. sparc64: Don't specify IRQF_SHARED for LDC interrupts. sparc: Validate that kprobe address is 4-byte aligned. sparc64: Use kprobes_built_in() to avoid ifdefs in fault_64.c sparc64: Add some missing __kprobes annotations to kernel fault paths. sparc: Use __builtin_object_size() to validate the buffer size for copy_from_user() sparc: Stop trying to be so fancy and use __builtin_{memcpy,memset}() sparc64: Add syscall tracepoint support. sparc: Add alignment and emulation fault perf events. sparc64: Use free_bootmem_late() in mdesc_lmb_free(). Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ sparc64: Use clock{source,events}_calc_mult_shift(). sparc64: Fix clock event multiplier printf format. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ tcp: Revert per-route SACK/DSACK/TIMESTAMP changes. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 David Santinoli (1): ALSA: hda/realtek: quirk for D945GCLF2 mainboard David T. L. Wong (1): V4L/DVB (13375): cx23885: Add support for Mygica X8558Pro DMB-TH David T.L. Wong (9): V4L/DVB (13206): cx25840: add component support V4L/DVB (13207): cx23885: add component input type V4L/DVB (13208): cx23885: fix uninitialized member bug V4L/DVB (13209): cx23885: card mygica x8506 add analog video input support V4L/DVB (13210): cx23885: card Mygica X8506 better GPIO setup V4L/DVB (13211): cx23885: card Mygica X8506 analog TV support V4L/DVB (13212): fix gcc-4.3.3 compilation error at dib7000p_pid_filter(): missing parameter name V4L/DVB (13373): Maxium MAX2165 silicon tuner V4L/DVB (13374): AltoBeam ATBM8830 GB20600-2006(DMB-TH) demodulator David Teigland (1): dlm: always use GFP_NOFS David VomLehn (1): MIPS: PowerTV: Base files for Cisco PowerTV platform David Vrabel (9): USB: make urb scatter-gather support more generic USB: whci-hcd: support urbs with scatter-gather lists USB: allow interrupt transfers to WUSB devices USB: whci-hcd: fix type and format warnings in sg code usb: whci-hcd: decode more QHead fields in the debug files USB: wusb: add wusb_phy_rate sysfs file to host controllers USB: whci-hcd: correctly handle sg lists longer than QTD_MAX_XFER_SIZE. USB: wusb: don't leak urb in certain error cases USB: wusb: correctly check size of security descriptor. David Wong (3): V4L/DVB (13376): cx-usb: add Mygica D689 DMB-TH USB support V4L/DVB (13541): atbm8830: replace 64-bit division and floating point usage V4L/DVB (13592): max2165: 32bit build patch David Woodhouse (10): mtd: make onenand_base.c compile again dmar: Fix build failure without NUMA, warn on bogus RHSA tables and don't abort Revert "mtd: mxc_nand: fix 2KiB pagesize NAND on i.MX27" Merge branch 'mxc-nand' of git://git.pengutronix.de/git/imx/linux-2.6 agp/intel-agp: Clear entire GTT on startup Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 intel-iommu: Apply BIOS sanity checks for interrupt remapping too. intel-iommu: Check for an RMRR which ends before it starts. intel-iommu: Fix oops with intel_iommu=igfx_off jffs2: Fix long-standing bug with symlink garbage collection. David-John Willis (2): wl1251: add support for PG11 chips. wl1251: add NVS in EEPROM support Davidlohr Bueso (1): fix typos/grammos in Documentation/edac.txt Denis Kirjanov (2): mv643xx: convert to netdev_tx_t mv643xx_eth: check for valid hw address (resubmit) Derek (1): V4L/DVB (13578): [PATCH] fix genpix driver (no 8psk lock). Devin Heitmueller (10): V4L/DVB (13076): xc5000: make the definition of the FM input part of the xc5000 config struct V4L/DVB (13077): em28xx: Add support for new variant of KWorld 2800d V4L/DVB (13081): saa7134: use the #define for the xc5000 radio_input field V4L/DVB (13082): em28xx: remove "not validated" status from Terratec Cinergy T XS (005e) V4L/DVB (13187): au8522: add support for saturation and hue controls V4L/DVB (13188): xc5000: return an error on tuning attempts if firmware not loaded V4L/DVB (13329): s5h1409: provide HVR-1600 specific optimizations V4L/DVB (13330): s5h1409: properly handle QAM optimization after lock achieved V4L/DVB (13331): mxl5005s: provide ability to override QAM gain for HVR-1600 V4L/DVB (13332): s5h1409: remove a set register that would cause lock to be lost. Dhananjay Phadke (12): netxen: add access to on chip memory for tools netxen: annotate register windowing code netxen: separate register and memory access lock netxen: add sysfs entries for diag tools netxen: fix error codes in for tools access netxen; update version to 4.0.62 netxen: refactor indirect register access netxen: add PCI IDs for new chip netxen: update module info netxen: module firmware hints netxen: update version to 4.0.65 netxen: fix firmware type check Dhaval Giani (1): sched: Add USER_SCHED to feature removal list Dimitri Sivanich (8): x86: SGI UV: Fix irq affinity for hub based interrupts x86, apic: Move SGI UV functionality out of generic IO-APIC code x86: UV RTC: Fix early expiry handling x86: UV RTC: Add clocksource only boot option x86: UV RTC: Clean up error handling x86: UV RTC: Rename generic_interrupt to x86_platform_ipi x86: Remove asm/apicnum.h x86: UV RTC: Always enable RTC clocksource Dirk Brandewie (5): wimax/i2400m: Update comments to talk about SDIO reset and not USB. wimax/i2400m: Ensure boot mode cmd and ack buffers are alloc'd before first message wimax/i2400m: Make boot retries a BUS-specific parameter wimax/i2400m: USB driver uses a configurable endpoint map wimax/i6x50: add Intel WiFi/WiMAX Link 6050 Series support Dirk Hohndel (11): tree-wide: fix a very frequent spelling mistake Staging: comedi: trivial fix of a very frequent spelling mistake Staging: comedi: gsc_hpdi: style fixes printk Staging: comedi: gsc_hpdi: Fix style issues Staging: comedi: gsc_hdpi: style fixes static function Staging: comedi: icp_multi: white space style fixes Staging: comedi: icp_multi: fix style issue printk Staging: comedi: icp_multi: don't init static Staging: comedi: ii_pci20kc: white space fixes Staging: comedi: ii_pci_20kc: fix style printk Staging: comedi: ke_counter: fix style issues Dmitri Vorobiev (5): MIPS: IP22: Remove an unused function MIPS: Replace all usages of CL_SIZE by COMMAND_LINE_SIZE MIPS: MIPSsim: Remove unused code MIPS: Move several variables from .bss to .init.data MIPS: Fix and enhance built-in kernel command line Dmitry Artamonow (25): mtd: maps/sa1100: fix section mismatch mtd: maps: remove obsolete ipaq-flash driver [ARM] pxa/hx4700: actually use platform_lcd driver ARM: 5795/1: SA1100: h3100/h3600: mark *_mach_init functions as __init ARM: 5797/1: SA1100: h3100/h3600: remove dead links from Kconfig help text ARM: 5796/1: SA1100: h3600: remove IRDA bits from serial PM callback ARM: 5798/1: SA1100: h3600: remove unused cruft from h3600.h ARM: 5799/1: SA1100: h3600: stop setting direction for LCD pins ARM: 5811/2: pcmcia: convert sa1100_h3600 driver to gpiolib ARM: 5812/1: SA1100: h3100/h3600: separate machine-specific LCD helpers ARM: 5813/1: SA1100: h3100/h3600: add htc-egpio driver ARM: 5814/1: SA1100: h3100/h3600: convert all users of assign_h3600_egpio to gpiolib ARM: 5815/1: SA1100: h3100/h3600: remove now unused assign_h3600_egpio handlers ARM: 5816/1: SA1100: h3600: remove IRQ_GPIO_* definitions ARM: 5817/1: SA1100: h3100/h3600: configure all unused gpios as inputs ARM: 5818/1: SA1100: h3100/h3600: drop old GPIO definitions ARM: 5819/1: SA1100: h3100/h3600: merge h3600.h and h3600_gpio.h into h3xxx.h ARM: 5820/1: SA1100: h3100/h3600: split h3600.c ARM: 5821/1: SA1100: h3100/h3600: revise copyright boilerplates ARM: 5822/1: SA1100: h3100/h3600: clean up #includes ARM: 5823/1: SA1100: h3100/h3600: add support for gpio-keys ARM: 5824/1: SA1100: reuse h3600 PCMCIA driver on h3100 ARM: 5825/1: SA1100: h3600: update defconfig ARM: 5826/1: SA1100: h3100/h3600: always build htc-egpio driver ARM: 5827/1: SA1100: h3100/h3600: emit messages on failed gpio_request Dmitry Eremin-Solenikov (19): wpan-phy: add a helper to put the wpan_phy device wpan-phy: add wpan-phy iteration functions wpan-phy: init channel/page fields wpan-phy: use snprintf to limit the amount of chars written wpan-phy: allow specifying a per-page channel mask wpan-phy: follow usual patter of devices registration ieee802154: constify struct net_device in some operations ieee802154: merge nl802154 and wpan-class in single module ieee802154: split away MAC commands implementation ieee802154: add LIST_PHY command support fakehard: no need to export net_to_phy, make it static fakehard: claim all 2.4 Ghz channels as supported ieee802154: add an mlme_ops call to retrieve PHY object fakehard: mlme_ops->get_phy implementation ieee802154: add two nl802154 helpers ieee802154: add PHY_NAME to LIST_IFACE command results ieee802154: add support for creation/removal of logic interfaces ieee802154: make wpan-phy class registration to subsys_initcall rtc: ds1307 make it possible to share an irq Dmitry Monakhov (3): ext4: ext4_get_reserved_space() must return bytes instead of blocks ext4: quota macros cleanup ext4: fix incorrect block reservation on quota transfer. Dmitry Torokhov (37): Input: lkkbd - change formatting style to match the rest of the kernel Input: vsxxxaa - change formatting style to match the rest of the kernel Input: mark custom_data in ff_periodic_effect as __user Input: synaptic_i2c - make unnecessarily global functions static Merge commit 'v2.6.32-rc6' into next Input: input-polldev, matrix-keypad - include in kernel doc Input: touchkit_ps2 - do not advertise unsupported buttons Input: elantech - do not advertise relative events Input: lifebook - do not advertise unsupported buttons Input: psmouse - rework setting of BTN_MIDDLE capability Input: polled device - schedule first poll immediately Input: keyboard - add locking around event handling Input: keyboard - fix lack of locking when traversing handler->h_list Merge commit 'v2.6.32' into next Input: matrix-keypad - switch to using dev_pm_ops Input: psmouse - do not carry DMI data around DMI: allow omitting ident strings in DMI tables Input: i8042 - remove identification strings from DMI tables Input: atkbd - remove identification strings from DMI table Input: psmouse - remove identification strings from DMI tables Input: wistron - remove identification strings from DMI table Input: add generic support for sparse keymaps Input: wistron_btns - switch to using sparse keymap library Input: dm355evm_kbd - switch to using sparse keymap library Input: serio - set owner in driver structures Input: hil-mlc - use del_timer_sync() when unloading the driver Input: altera_ps2 - add annotations to probe and remove methods Input: gscps2 - fix probe() and remove() annotations Input: ambakmi - annotate probe() and remove() methods Input: sa1111ps2 - annotate probe() and remove() methods Input: document use of input_event() function Input: ALPS - do not set REL_X/REL_Y capabilities on the touchpad Input: i8042 - fix locking in interrupt routine Input: i8042 - add Gigabyte M1022M to the noloop list Input: at32psif - do not sleep in atomic context Merge commit 'linus' into next Input: keyboard - don't override beep with a bell Dominik Brodowski (35): pcmcia: convert pcmciamtd driver to use new CIS helpers serial_cs: use pcmcia_loop_config() and pre-determined values pcmcia: use pre-determined values pcmcia: use pcmcia_loop_config in misc pcmcia drivers ipwireless: make more use of pcmcia_loop_config() pcmcia: add new CIS access helpers pcmcia: convert net pcmcia drivers to use new CIS helpers pcmcia: convert ssb pcmcia driver to use new CIS helpers pcmcia: convert pcmciamtd driver to use new CIS helpers pcmcia: remove pcmcia_get_{first,next}_tuple() pcmcia: use dynamic debug instead of custom infrastructure pcmcia: use dynamic debug in PCMCIA socket drivers pcmcia: extend error reporting and debug messages in core pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (ide) pcmcia: deprecate CS_CHECK (bluetooth) pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (char) pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (isdn) pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (net) pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (ray-cs.c) pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (wireless) pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (scsi) pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (serial_cs) pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (sound) pcmcia: use dynamic debug infrastructure, deprecate CS_CHECK (misc drivers) pcmcia: remove now-defunct cs_error, pcmcia_error_{func,ret} pcmcia: use dev_dbg and dev_print in pd6729.c pcmcia/staging: update comedi drivers pcmcia: autoload module pcmcia pcmcia: move some window-related code to pcmcia_ioctl.c pcmcia: remove unused "window_t" typedef pcmcia: pcmcia_request_window() doesn't need a pointer to a pointer pcmcia: remove deprecated handle_to_dev() macro pcmcia: rework the irq_req_t typedef pcmcia: remove unused IRQ_FIRST_SHARED pcmcia: CodingStyle fixes Dominik D. Geyer (1): correct gpio.txt typos Don Brace (1): cciss: Add enhanced scatter-gather support. Don Skidmore (4): ixgbe: add support for 82599 based Express Module X520-P2 ixgbe: Fix KR to KX fail over for Mezzanine cards ixgbe: LINKS2 is not a valid register for 82598 ixgbe: add support for 82599 KR device 0x1517 Douglas Gilbert (1): [SCSI] scsi_debug: fix Thin provisioning support Dr. David Alan Gilbert (1): doc: fix regulator docs cut-and-pasteism Duncan Gibb (1): V4L/DVB (13684): Fix some cut-and-paste noise in dib0090.h Ed Lin (3): [SCSI] stex: add small dma buffer support [SCSI] stex: add support for reset request from firmware [SCSI] stex: update version to 4.6.0000.4 Ed Swierk (1): KVM: Xen PV-on-HVM guest support Eduardo Habkost (3): KVM: VMX: Use macros instead of hex value on cr0 initialization KVM: SVM: Reset cr0 properly on vcpu reset KVM: SVM: init_vmcb(): remove redundant save->cr0 initialization Eero Nurkkala (2): ASoC: remove io_mutex ASoC: refactor snd_soc_update_bits() Eilon Greenstein (12): bnx2x: Add FW 5.2.7 bnx2x: Allowing 0 as initial fairness value bnx2x: Remove old FW files bnx2x: Changing the Disabled state to a flag bnx2x: Adding FW mailbox mutex bnx2x: Do not call load/unload functionality from DCC bnx2x: Report the maximal available BW as link speed bnx2x: Update to version 1.52.1-1 bnx2x: GSO implies CSUM offload bnx2x: Remove misleading error print bnx2x: Change coalescing granularity to 4us bnx2x: version 1.52.1-4 Einar Lueck (2): ctcm rollback in case of errors qeth: Exploit Connection Isolation Einar RĂĽnkaru (1): ALSA: hda - Make Dell Vostro 1015n mic and speaker switching work Eli Cohen (2): IB/mlx4: Remove unneeded code IB/mlx4: Remove limitation on LSO header size Elina Pasheva (1): USB: serial: sierra driver memory reduction Emese Revfy (1): backlight: Constify struct backlight_ops Enric Balletbo i Serra (2): omap3: Add minimal IGEP v2 support omap3: Add defconfig for IGEP v2 board Enric Balletbò i Serra (1): ASoC: Add support for IGEP v2 Erez Zadok (2): fsstack/ecryptfs: remove unused get_nlinks param to fsstack_copy_attr_all VFS/fsstack: handle 32-bit smp + preempt + large files in fsstack_copy_inode_size Eric Anholt (6): drm/i915: Enable the SDVO debug code, which is now under DEBUG_KMS. Merge remote branch 'airlied/drm-next' into drm-intel-next drm/i915: Replace a calloc followed by copying data over it with malloc. Merge remote branch 'airlied/drm-next' into drm-intel-next drm/i915: Fix warning introduced with the page flipping ioctl. drm/i915: Fix DDC on some systems by clearing BIOS GMBUS setup. Eric Dumazet (107): icmp: No need to call sk_write_space() pktgen: Avoid dirtying skb->users when txq is full tunnels: Optimize tx path net: speedup sk_wake_async() Use sk_mark for routing lookup in more places pkt_sched: gen_estimator: Dont report fake rate estimators udp: dynamically size hash tables at boot time tcp: replace ehash_size by ehash_mask net: Add netdev_alloc_skb_ip_align() helper net: Use netdev_alloc_skb_ip_align() net: sk_drops consolidation inet: rename some inet_sock fields net: sk_drops consolidation part 2 af_packet: Avoid cache line dirtying af_packet: mc_drop/flush_mclist changes filter: Add SKF_AD_QUEUE instruction rtnetlink: rtnl_setlink() and rtnl_getlink() changes ipv6 sit: RCU conversion phase I ipv6 sit: RCU conversion phase II xfrm6_tunnel: RCU conversion ipip: convert hash tables locking to RCU ip6tnl: convert hash tables locking to RCU gre: convert hash tables locking to RCU rtnetlink: speedup rtnl_dump_ifinfo() vlan: allow null VLAN ID to be used net: Introduce unregister_netdevice_queue() net: Introduce unregister_netdevice_many() net: add a list_head parameter to dellink() method vlan: Optimize multiple unregistration ipip: Optimize multiple unregistration gre: Optimize multiple unregistration net: sysfs: ethtool_ops can be NULL bridge: Optimize multiple unregistration ip6tnl: Optimize multiple unregistration ipmr: Optimize multiple unregistration ipv6 sit: Optimize multiple unregistration ip6mr: Optimize multiple unregistration net: Introduce dev_get_by_index_rcu() veth: Fix veth_dellink method net: use hlist_for_each_entry() net: Introduce dev_get_by_name_rcu() ipv4: inetdev_by_index() switch to RCU icmp: icmp_send() can avoid a dev_put() net: RCU locking for simple ioctl() ifb: RCU locking avoids touching dev refcount pppoe: RCU locking in get_item_by_addr() packet: less dev_put() calls ip6tnl: less dev_put() calls ipv6: no more dev_put() in inet6_bind() ipv6: no more dev_put() in datagram_send_ctl() net: cleanup include/net bnx2: avoid compiler warnings em_meta: avoid one dev_put() net: Introduce for_each_netdev_rcu() iterator net: cleanup include/linux decnet: avoid touching device refcount in dn_dev_by_index() netfilter: remove synchronize_net() calls in ip_queue/ip6_queue net: net/ipv4/devinet.c cleanups bridge: remove dev_put() in add_del_if() netlabel: remove dev_put() calls sctp: ipv6: avoid touching device refcount net_cls: Use __dev_get_by_index() ip_frag: dont touch device refcount net: sock_bindtodevice() RCU-ification pktgen: tx_bytes might be slightly wrong rtnetlink: Cleanups ipv6: avoid dev_hold()/dev_put() in rawv6_bind() udp: add a counter into udp_hslot udp: split sk_hash into two u16 hashes udp: secondary hash on (local port, local address) ipv4: udp: optimize unicast RX path ipv6: udp: optimize unicast RX path ipv4: udp: Optimise multicast reception ipv6: udp: Optimise multicast reception udp: multicast RX should increment SNMP/sk_drops counter in allocation failures udp: bind() optimisation ipv6: speedup inet6_dump_ifinfo() ipv6: Allow inet6_dump_addr() to handle more than 64 addresses parisc: led: Use for_each_netdev_rcu() ipv6: use RCU to walk list of network devices igmp: Use next_net_device_rcu() ipv4: speedup inet_dump_ifaddr() ipv6: speedup inet6_dump_addr() inetpeer: Optimize inet_getid() net: check the return value of ndo_select_queue() vlan: Use __vlan_hwaccel_put_tag() in rx net: add dev_txq_stats_fold() helper vlan: Precise RX stats accounting macvlan: Precise RX stats accounting linkwatch: linkwatch_forget_dev() to speedup device dismantle netns: net_identifiers should be read_mostly RDMA/addr: Use appropriate locking with for_each_netdev() netsched: Allow var_sk_bound_if meta to work on all namespaces net: rename skb->iif to skb->skb_iif mac80211: Speedup ieee80211_remove_interfaces() pktgen: NUMA aware tcp: tcp_disconnect() should clear window_clamp ieee802154: merge cleanup tcp: diag: Dont report negative values for rx queue tcp: connect() race with timewait reuse tcp: fix a timewait refcnt race ixgbe: Fix TX stats accounting tcp: Fix a connect() race with timewait sockets tcp: Fix a connect() race with timewait sockets tcp: documents timewait refcnt tricks udp: udp_lib_get_port() fix packet: dont call sleeping functions while holding rcu_read_lock() Eric Miao (8): [ARM] pxa: re-order platforms in Kconfig and Makefile [ARM] pxa: use platform_device_id table for SSP driver [ARM] pxa: introduce CONFIG_MACH_ZYLONITE{300,320} for CPU_PXA* removing [ARM] pxa: select CPU_PXA310 for MACH_COLIBRI300 [ARM] pxa: make CPU_PXA* to be selectable hidden options ARM: pxa: fix now incorrect reference of skt->irq by using skt->socket.pci_irq revert "[ARM] pxa/cm-x300: add PWM backlight support" [ARM] pxa: fix no reference of cpu_is_pxa25x() in devices.c Eric Paris (13): SELinux: reset the security_ops before flushing the avc cache SELinux: add .gitignore files for dynamic classes net: drop capability from protocol definitions net: pass kern to net_proto_family create function net: check kern before calling security subsystem security: report the module name to security_module_request SELinux: header generation may hit infinite loop SELinux: print denials for buggy kernel with unknown perms fs: move get_empty_filp() deffinition to internal.h ima: valid return code from ima_inode_alloc ima: only insert at inode creation time IMA: clean up the IMA counts updating code ima: call ima_inode_free ima_inode_free Eric Sandeen (6): ext4: journal all modifications in ext4_xattr_set_handle ext4: make trim/discard optional (and off by default) ext4: make "norecovery" an alias for "noload" ext3: journal all modifications in ext3_xattr_set_handle ext3: Don't update the superblock in ext3_statfs() ext3: make "norecovery" an alias for "noload" Eric W. Biederman (96): net: Allow devices to specify a device specific sysfs group. bond: Simply bond sysfs group creation bond: Simplify bond_create. bond: Simplify bond device destruction bond: Implement a basic set of rtnl link ops bond: Add support for multiple network namespaces bond: Get the rtnl_link_ops support correct veth: Fix unregister_netdevice_queue for veth sysctl: Separate the binary sysctl logic into it's own file. sysctl: Refactor the binary sysctl handling to remove duplicate code sysctl: Introduce a generic compat sysctl sysctl sysctl: ia64 Use the compat_sys_sysctl sysctl: mips Use the compat_sys_sysctl sysctl: parisc Use the compat_sys_sysctl sysctl: s390 Use the compat_sys_sysctl sysctl: sparc Use the compat_sys_sysctl sysctl: x86 Use the compat_sys_sysctl sysctl: Remove the cond_syscall entry for sys32_sysctl sysctl: Make do_sysctl static net: Support specifying the network namespace upon device creation. sysctl: Reduce sys_sysctl to a compatibility wrapper around /proc/sys sysctl: Neuter the generic sysctl strategy routines. sysctl: Remove dead code from sysctl_check sysctl: Remove references to ctl_name and strategy from the generic sysctl table sysctl: Don't look at ctl_name and strategy in the generic code sysctl: Warn about all uses of sys_sysctl. sysctl: sysctl_binary.c Fix compilation when !CONFIG_NET sysctl binary: Reorder the tests to process wild card entries first. sysctl: Remove the unused frv sysctl unumbers sysctl: Stop using binary sysctl numbers in arlan. sysctl ipc: Remove dead binary sysctl support code. sysctl fs: Remove dead binary sysctl support sysctl kernel: Remove binary sysctl logic sysctl security/keys: Remove dead binary sysctl support sysctl crypto: Remove dead binary sysctl support sysctl drivers: Remove dead binary sysctl support sysctl mips/lasat: Remove dead binary sysctl support sysctl frv: Remove dead binary sysctl support sysctl s390: Remove dead sysctl binary support sysctl ia64: Remove dead binary sysctl support sysctl powerpc: Remove dead binary sysctl support sysctl sh: Remove dead binary sysctl support sysctl x86: Remove dead binary sysctl support sysctl arm: Remove binary sysctl support sysctl net: Remove unused binary sysctl code sysctl: Remove the last of the generic binary sysctl support Merge commit 'v2.6.32-rc7' sysctl: kill dead ctl_handler definitions. sysctl: Remove CTL_NONE and CTL_UNNUMBERED sysctl: Drop & in front of every proc_handler. security/tomoyo: Add a special case to handle accesses through the internal proc mount. security/tomoyo: Remove now unnecessary handling of security_sysctl. net: NETDEV_UNREGISTER_PERNET -> NETDEV_UNREGISTER_BATCH net: Implement for_each_netdev_reverse. net: Batch network namespace destruction. net: Automatically allocate per namespace data. net: Simplify loopback and improve batching. net: Simplfy default_device_exit and improve batching. net: Simplify the bond drivers pernet operations. net: Simplify vlan pernet operations. net: Simplify af_key pernet operations. net: Simplify conntrack_proto_dccp pernet operations. net: Simplify conntrack_proto_gre pernet operations. net: Simplify ppp_generic pernet operations. net: Simplify pppoe pernet operations. net: Simplify pppol2tp pernet operations. net: Simplify phonet pernet operations. net: Simplify ip_gre pernet operations. net: Simplify ipip pernet operations. net: Simplify ip6_tunnel pernet operations. net: Simplify ipip6 aka sit pernet operations. net: remove [un]register_pernet_gen_... and update the docs. net: Teach vlans to cleanup as a pernet subsystem net: Add support for batching network namespace cleanups net: Move network device exit batching net: Allow xfrm_user_net_exit to batch efficiently. netns: Add an explicit rcu_barrier to unregister_pernet_{device|subsys} net: Allow fib_rule_unregister to batch net: Use rcu lookups in inet_twsk_purge. net: Batch inet_twsk_purge Driver core: Don't remove kobjects in device_shutdown. sysfs: Update sysfs_setxattr so it updates secdata under the sysfs_mutex sysfs: Rename sysfs_d_iput to sysfs_dentry_iput sysfs: Use dentry_ops instead of directly playing with the dcache sysfs: Simplify sysfs_chmod_file semantics sysfs: Simplify iattr time assignments sysfs: Fix locking and factor out sysfs_sd_setattr sysfs: Update s_iattr on link and unlink. sysfs: Nicely indent sysfs_symlink_inode_operations sysfs: Implement sysfs_getattr & sysfs_permission sysfs: In sysfs_chmod_file lazily propagate the mode change. sysfs: Gut sysfs_addrm_start and sysfs_addrm_finish sysfs: Propagate renames to the vfs on demand sysfs: Factor out sysfs_rename from sysfs_rename_dir and sysfs_move_dir sysfs: sysfs_setattr remove unnecessary permission check. net: Fix userspace RTM_NEWLINK notifications. FUJITA Tomonori (26): x86: Use x86_platform for iommu_shutdown x86: Add iommu_init to x86_init_ops x86: Calgary: Convert detect_calgary() to use iommu_init hook x86: GART: Convert gart_iommu_hole_init() to use iommu_init hook x86: amd_iommu: Convert amd_iommu_detect() to use iommu_init hook x86: intel-iommu: Convert detect_intel_iommu to use iommu_init hook bootmem: Add free_bootmem_late() swiotlb: Add swiotlb_free() function swiotlb: Defer swiotlb init printing, export swiotlb_print_info() x86: Handle HW IOMMU initialization failure gracefully x86, 32-bit: Fix swiotlb boot crash swiotlb: Remove the swiotlb variable usage x86: Set dma_ops to nommu_dma_ops by default x86: Move iommu_shutdown_noop to x86_init.c swiotlb: Remove duplicate swiotlb_force extern declarations x86: Make calgary_iommu_init() static x86: gart: Add own dma_mapping_error function x86: Kill bad_dma_address variable x86: Calgary: Remove unnecessary DMA_ERROR_CODE usage powerpc: Kill unused swiotlb variable x86: Fix iommu=soft boot option [SCSI] st: fix mdata->page_order handling x86: Remove usedac in feature-removal-schedule.txt x86: Move swiotlb initialization before dma32_free_bootmem [IA64] fix SBA IOMMU to handle allocation failure properly x86: Split swiotlb initialization into two stages Faisal Latif (11): RDMA/nes: Fix MAX_CM_BUFFER define RDMA/nes: Fix query of ORD values RDMA/nes: MPA request/response error checking RDMA/nes: Resource not freed for REJECTed connections RDMA/nes: Fix crash in nes_accept() RDMA/nes: Abnormal listener exit causes loopback node crash RDMA/nes: Fix Xansation test crash on cm_node ref_count RDMA/nes: Check for zero STag RDMA/nes: Free kmap() resources RDMA/nes: FIN during MPA startup causes timeout RDMA/nes: Fix stale ARP issue Felipe Balbi (9): omap: Add platform init code for EHCI driver omap: Cleanup the coding style in id.c USB: host: ehci: introduce omap ehci-hcd driver USB: core: fix sparse warning for static function USB: core: hub: fix sparse warning USB: core: message: fix sparse warning USB: musb: omap2430: fix sparse warning USB: musb: musb_gadget: fix sparse warning USB: musb: musb_host: fix sparse warning Felipe Contreras (3): crypto: testmgr - Fix warning omap: iommu: reorganize ipc: fix unused variable warning Felix Beck (7): [S390] zcrypt: initialize ap_messages for cex3 exploitation [S390] zcrypt: special command support for cex3 exploitation [S390] zcrypt: add support for cex3 device types [S390] zcrypt: use definitions for cex3 [S390] zcrypt: adjust speed rating between cex2 and pcixcc [S390] zcrypt: adjust speed rating of cex3 adapters [S390] zcrypt: Do not simultaneously schedule hrtimer Felix Fietkau (12): nl80211: add a parameter for using 4-address frames on virtual interfaces mac80211: implement support for 4-address frames for AP and client mode mac80211: fix broadcast frame handling for 4-addr AP VLANs nl80211: only allow adding stations to running vlan interfaces ath9k: fix massive rx packet loss issue mac80211: reduce the amount of unnecessary traffic on cooked monitor interfaces mac80211: add the total ampdu length to tx info ath9k: get rid of tx_info_priv ath9k: properly use the mac80211 rate control api ath9k: clean up rc rate table ath9k: separate debugfs support from CONFIG_ATH_DEBUG ath9k: fix tx status reporting Feng Tang (2): hrtimer: Fix /proc/timer_list regression spi: controller driver for Designware SPI core Figo.zhang (2): NET/KS8695: add support NAPI for Rx NET:KS8695: add API for get rx interrupt bit Filipe Rosset (2): V4L/DVB (13289): em28xx-audio: Convert printks to em28xx_err V4L/DVB (13290): em28xx-dvb: Convert printks to em28xx_err and em28xx_info Florian Fainelli (3): spi: fix spidev compilation failure when VERBOSE is defined bcm63xx_enet: fix compilation failure after get_stats_count removal leds: use default-on trigger for Cobalt Qube Florian Westphal (1): netfilter: xtables: fix conntrack match v1 ipt-save output Francesco VIRLINZI (1): sh: intc: Fixed resume from hibernation Frank Blaschka (3): ctcm: suspend has to wait for outstanding I/O qeth: rework TSO functions qeth: allow dynamic change of rx checksumming Frank Filz (1): nfsd: Fix sort_pacl in fs/nfsd/nf4acl.c to actually sort groups Frank Rowand (2): lockstat: Fix min, max times in /proc/lock_stats lockstat: Add usage info to Documentation/lockstat.txt Frank Zago (5): RDMA/nes: In nes_post_send() always set bad_wr on error RDMA/nes: In nes_post_recv() always set bad_wr on error RDMA/amso1100: Fix error paths in post_send and post_recv IB/ehca: Fix error paths in post_send and post_recv RDMA/cxgb3: Fix error paths in post_send and post_recv Frans Pop (5): acpi: thermal: display forced passive trip points in proc thermal: add sanity check for the passive attribute thermal: Only set passive_delay for forced_passive cooling thermal: disable polling if passive_delay and polling_delay are both unset acpi: thermal: display forced passive trip points in proc Frederic Weisbecker (122): hw-breakpoints: fix undeclared ksym_tracer_mutex tracing/kprobes: Dump the culprit kprobe in case of kprobe recursion tracing: Restore the const qualifier for field names and types definition tracing: Remove unneeded pointer casts tracing: Fix ring-buffer and ksym tracer merge interaction Merge commit 'tracing/core' into tracing/kprobes reiserfs: kill-the-BKL reiserfs, kill-the-BKL: fix unsafe j_flush_mutex lock kill-the-BKL/reiserfs: provide a tool to lock only once the write lock kill-the-BKL/reiserfs: lock only once in reiserfs_truncate_file kill-the-BKL/reiserfs: only acquire the write lock once in reiserfs_dirty_inode kill-the-BKL/reiserfs: release write lock on fs_changed() kill-the-BKL/reiserfs: release the write lock before rescheduling on do_journal_end() kill-the-BKL/reiserfs: release write lock while rescheduling on prepare_for_delete_or_cut() kill-the-BKL/reiserfs: release the write lock inside get_neighbors() kill-the-BKL/reiserfs: release the write lock inside reiserfs_read_bitmap_block() kill-the-BKL/reiserfs: release the write lock on flush_commit_list() kill-the-BKL/reiserfs: add reiserfs_cond_resched() kill-the-bkl/reiserfs: conditionaly release the write lock on fs_changed() kill-the-bkl/reiserfs: lock only once on reiserfs_get_block() kill-the-bkl/reiserfs: don't hold the write recursively in reiserfs_lookup() kill-the-bkl/reiserfs: reduce number of contentions in search_by_key() kill-the-bkl/reiserfs: factorize the locking in reiserfs_write_end() kill-the-bkl/reiserfs: use mutex_lock in reiserfs_mutex_lock_safe kill-the-bkl/reiserfs: unlock only when needed in search_by_key kill-the-bkl/reiserfs: acquire the inode mutex safely kill-the-bkl/reiserfs: move the concurrent tree accesses checks per superblock kill-the-bkl/reiserfs: fix "reiserfs lock" / "inode mutex" lock inversion dependency kill-the-bkl/reiserfs: fix recursive reiserfs lock in reiserfs_mkdir() kill-the-bkl/reiserfs: fix recursive reiserfs write lock in reiserfs_commit_write() kill-the-bkl/reiserfs: panic in case of lock imbalance kill-the-bkl/reiserfs: Fix induced mm->mmap_sem to sysfs_mutex dependency Merge commit 'linus/master' into tracing/kprobes tracing/bkl: Add bkl ftrace events tracing/filters: Cleanup useless headers tracing/event: Cleanup the useless dentry variable tracing/filters: Provide basic regex support tracing/filters: Unify the regex parsing helpers tracing: Pushdown the bkl tracepoints calls kill-the-bkl/reiserfs: fix reiserfs lock to cpu_add_remove_lock dependency perf tools: Start the perf.data mapping at data offset in perf trace perf tools: Merge trace.info content into perf.data x86, msr: Remove the bkl from msr_open() perf tools: Unify perf.data mapping and events handling perf tools: Improve thread comm resolution in perf sched perf tools: Fix thread comm resolution in perf sched perf tools: Provide backward compatibility with previous perf.data version tracing: Rename set_ftrace to set_bootup_ftrace tracing: Remove unused ftrace_trace_addr helper tracing: Move syscalls metadata handling from arch to core tracing: Document HAVE_SYSCALL_TRACEPOINTS needs mem_class: Drop the bkl from memory_open() nvram: Drop the bkl from nvram_llseek() nvram: Drop the bkl from non-generic nvram_llseek() ftrace: Copy ftrace_graph_filter boot param using strlcpy ftrace: Rename set_bootup_ftrace into set_cmdline_ftrace kill-the-bkl/reiserfs: always lock the ioctl path kill-the-bkl/reiserfs: definitely drop the bkl from reiserfs_ioctl() kill-the-bkl/reiserfs: drop the fs race watchdog from _get_block_create_0() Merge commit 'perf/core' into perf/hw-breakpoint perf tools: Use kernel bitmap library perf tools: Introduce bitmask'ed additional headers perf tools: Use DECLARE_BITMAP instead of an open-coded array perf tools: Fix missing top level callchain perf tools: Bind callchains to the first sort dimension column perf tools: Drop asm/types.h wrapper perf/core: Add a callback to perf events hw-breakpoint: Move asm-generic/hw_breakpoint.h to linux/hw_breakpoint.h tracing, perf_events: Protect the buffer from recursion in perf hw-breakpoints: Rewrite the hw-breakpoints layer on top of perf events hw-breakpoints: Arbitrate access to pmu following registers constraints hw-breakpoints: Fix broken a.out format dump hw-breakpoints: Fix broken hw-breakpoint sample module hw-breakpoints: Wrap in the KVM breakpoint active state check perf tools: Synthetize the targeted process perf tools: Move the build-id storage operations to headers perf tools: Split up build id saving into fetch and write perf tools: Read the build-ids from the header layer perf tools: Use perf_header__set/has_feat whenever possible perf tools: Bring linear set of section headers for features tracing: Rename 'lockdep' event subsystem into 'lock' hw-breakpoints: Provide an off-case for counter_arch_bp() x86: Add missing might_fault() checks to copy_{to,from}_user() kill-the-bkl/reiserfs: turn GFP_ATOMIC flag to GFP_NOFS in reiserfs_get_block() tracing: Use the perf recursion protection from trace event tracing: Forget about the NMI buffer for syscall events hw-breakpoints: Remove x86 specific headers from core file hw-breakpoints: Separate the kernel part from breakpoint headers hw-breakpoints: Include only linux/perf_event.h from kernel part of bp headers hw-breakpoints: Check the breakpoint params from perf tools perf: Add kernel side syscall events support for breakpoints perf tools: Add support for breakpoint events in perf tools hw-breakpoints: Fix misordered ifdef perf_events: Fix bad software/trace event recursion counting ksym_tracer: Fix breakpoint removal after modification hw-breakpoints: Improve in-kernel event creation error granularity hw-breakpoints: Simplify error handling in breakpoint creation requests x86/hw-breakpoints: Don't lose GE flag while disabling a breakpoint hw-breakpoints: Fix unused function in off-case hw-breakpoints: Use struct perf_event_attr to define user breakpoints hw-breakpoints: Use struct perf_event_attr to define kernel breakpoints tracing/syscalls: Make syscall events print callbacks static hw-breakpoints: Keep track of user disabled breakpoints mutex: Better control mutex adaptive spinning config mutex: Fix missing conditions to build mutex_spin_on_owner() hw-breakpoints: Add two reserved fields for future extensions perf: Remove pointless union that wraps the hw breakpoint fields perf: Remove unused struct perf_event::event_callback hw-breakpoints: Drop callback and task parameters from modify helper hw-breakpoints: Use overflow handler instead of the event callback perf: Remove the "event" callback from perf events x86/perf: Exclude the debug stack from the callchains x86: Fixup wrong debug exception frame link in stacktraces x86: Fixup wrong irq frame link in stacktraces hw-breakpoints: Zeroe the breakpoint attrs on initialization hw-breakpoints: Fix task-bound breakpoint slot allocation hw-breakpoints: Modify breakpoints without unregistering them tracing/kprobes: Fix field creation's bad error handling nvram: Fix missing smp_lock.h in nvram perf sched: Add max delay time snapshot hw-breakpoints: Handle bad modify_user_hw_breakpoint off-case return value perf tools: Make symbol_conf static Frederik Deweerdt (1): Staging: line6 driver.c: factorize code and cleanups Gabe Black (1): PCI: populate subsystem vendor and device IDs for PCI bridges Gabor Juhos (1): ath9k: enable 2GHz band only if the device supports it Gary Francis (1): V4L/DVB (13500): pvrusb2: Fix lingering 16KB FX2 Firmware issues Gautham R Shenoy (4): powerpc/pseries: Add extended_cede_processor() helper function. powerpc/pseries: Add hooks to put the CPU into an appropriate offline state pseries/pseries: Add code to online/offline CPUs of a DLPAR node powerpc/pseries: Serialize cpu hotplug operations during deactivate Vs deallocate Geert Uytterhoeven (8): rtc: Add an RTC driver for the Oki MSM6242 rtc: Add an RTC driver for the Ricoh RP5C01 cpumask: Fix generate_sched_domains() for UP kgdb: Replace strstr() by strchr() for single-character needles can: CAN_MCP251X should depend on HAS_DMA Keys: KEYCTL_SESSION_TO_PARENT needs TIF_NOTIFY_RESUME architecture support Revert "fbdev: atafb - add palette register check" cs5535: CS5535_MFGPT_DEFAULT_IRQ should depend on CS5535_MFGPT Geoff Levand (1): net/ps3: Cleanup gelic enums Gerald Schaefer (4): [S390] Use do_exception() in pagetable walk usercopy functions. [S390] monreader: remove lock_kernel() from open() function [S390] monwriter: remove lock_kernel() from open() function [S390] vmwatchdog: remove lock_kernel() from open() function Gerrit Renker (4): dccp ccid-2: Overhaul CCID naming convention 1/2 dccp ccid-3: Overhaul CCID naming convention 2/2 dccp ccid-2: Remove CCID naming redundancy 1/2 dccp ccid-3: Remove CCID naming redundancy 2/2 Gertjan van Wingerde (17): rt2x00: Move interface type assignments to generic code. rt2x00: Fix building of rt2800lib when rt2x00 driver is built-in. rt2x00: Add dynamic detection of eFuse EEPROM in rt2800pci. rt2x00: Update copyright statements. rt2x00: Fix typo in rf programming of rt2800lib. rt2x00: Properly detect Ralink RT3070 devices. rt2x00: Fix rt2800lib RF chip programming selection. rt2x00: Initialize rf302x RF values properly for rt2800pci. rt2x00: Log RT/RF chipset information correctly. rt2x00: Fix BUG on rt2800usb when trying to read eFuse EEPROM. rt2x00: Only initialize HT on rt2800 devices that support it. rt2x00: Remove unused variable frame_control from rt2x00mac_tx. rt2x00: Clean up use of rt2x00_intf_is_pci. rt2x00: Fix typo (lengt --> length) in rt2x00queue.c rt2x00: Whitespace cleanup. rt2x00: Centralize setting of extra TX headroom requested by rt2x00. rt2x00: Fix padding bug on L2PAD devices. Gianluca Guida (1): Xen balloon: fix totalram_pages counting. Gilad Ben-Yossef (9): Only parse time stamp TCP option in time wait sock Allow tcp_parse_options to consult dst entry Add dst_feature to query route entry features Add the no SACK route option feature Allow disabling TCP timestamp options per route Allow to turn off TCP window scale opt per route Allow disabling of DSACK TCP option per route tcp: Do not call IPv4 specific func in tcp_check_req tcp: Use defaults when no route options are available Giridhar Malavali (4): [SCSI] qla2xxx: Set the size of the host buffer used to fetch DCBX and XGMAC parameters to 4K. [SCSI] qla2xxx: Update version number to 8.03.01-k7 [SCSI] qla2xxx: Queue depth ramp up/down modification changes. [SCSI] qla2xxx: Update version number to 8.03.01-k8. Giuseppe CAVALLARO (1): sh: add sleazy FPU optimization Giuseppe Scrivano (1): inotify: remove superfluous return code check Glauber Costa (2): KVM: x86: include pvclock MSRs in msrs_to_save KVM: allow userspace to adjust kvmclock offset Gleb Natapov (10): KVM: Call pic_clear_isr() on pic reset to reuse logic there KVM: Move irq sharing information to irqchip level KVM: Change irq routing table to use gsi indexed array KVM: Maintain back mapping from irqchip/pin to gsi KVM: Move irq routing data structure to rcu locking KVM: Move irq ack notifier list to arch independent code KVM: Convert irq notifiers lists to RCU locking KVM: Move IO APIC to its own lock KVM: Drop kvm->irq_lock lock from irq injection path KVM: remove duplicated task_switch check Graeme Gregory (3): ASoC: pxa-ssp increase max_channels to 8 ASoC: ADS117x ADC driver ASoC: omap-mcbsp - add support for upto 16 channels. Graf Yang (2): mtd: m25p80: disable SST software protection bits by default Blackfin: add C define of trace_buffer_init() Grant Likely (25): of: Rework linux/of.h and asm/prom.h include ordering of: merge phandle, ihandle and struct property of: merge struct device_node of: Move OF_IS_DYNAMIC and OF_MARK_DYNAMIC macros to of.h of: add common header for flattened device tree representation of: merge struct boot_param_header from Microblaze and PowerPC of: merge of_node_*_flag() and set_node_proc_entry() of: merge of_read_number() an of_read_ulong() of: merge of_node_get(), of_node_put() and of_find_all_nodes() of: merge of_*_flat_dt*() functions of: merge other miscellaneous prototypes of: merge of_find_all_nodes() implementations spi/mpc5200: Register SPI devices described in device tree powerpc/5200: Add mpc5200-spi (non-PSC) device driver powerpc/5200: add general purpose timer API for the MPC5200 mmc: fix missing module license declaration in of_mmc_spi.c ASoC/mpc5200: Track DMA position by period number instead of bytes ASoC/mpc5200: get rid of the appl_ptr tracking nonsense ASoC/mpc5200: Improve printk debug output for trigger ASoC/mpc5200: add to_psc_dma_stream() helper ASoC/mpc5200: fix enable/disable of AC97 slots ASoC: mpc5200: remove duplicate identical IRQ handler spi/xilinx_spi: fix incorrect casting MAINTAINERS: add SPI co-maintainer. spi: fix probe/remove section markings Grazvydas Ignotas (1): omap3: pandora: board file updates for .33 Greg Kroah-Hartman (14): Staging: strip: add TODO file Staging: arlan: add TODO file Staging: wavelan: add TODO file Staging: netwave: add TODO file USB: add devpath sysfs attribute Staging: comedi: 8253: fix coding style error Staging: dream: mark as BROKEN Staging: vme: fix compiler warnings in vme_ca91cx42.c Staging: android: delete android drivers Staging: add Samsung Laptop driver Staging: samsung-laptop: remove old kernel code Staging: samsung-laptop: add TODO file Staging: batman: fix debug Kconfig option Revert "USB: Close usb_find_interface race" Greg Ungerer (4): m68knommu: define arch_has_single_step() and friends m68knommu: add a task_pt_regs() macro m68knommu: rename BSS define in linker script m68knommu: define arch_has_single_step() and friends Gregoire Gentil (2): omap3: Board file of Always Innovating OMAP3-based Touch Book omap3: Defconfig file of Always Innovating OMAP3-based Touch Book Guennadi Liakhovetski (19): SH: add support for the RJ54N1CB0C camera for the kfr2r09 platform serial: sh-sci: Fix too early port disabling. V4L/DVB (13130): soc-camera: add a new driver for the RJ54N1CB0C camera sensor from Sharp sh: DMA driver has to specify its alignment requirements dmaengine: fix dmatest to verify minimum transfer length and test buffer size sh: stylistic improvements for the DMA driver dmaengine: clarify the meaning of the DMA_CTRL_ACK flag V4L/DVB (13643): soc-camera: remove no longer needed struct members V4L/DVB (13644): v4l: add new v4l2-subdev sensor operations, use g_skip_top_lines in soc-camera V4L/DVB (13645): soc-camera: fix multi-line comment coding style V4L/DVB (13646): sh_mobile_ceu_camera: do not mark host occupied, when adding a client fails V4L/DVB (13647): v4l: Add a 10-bit monochrome and missing 8- and 10-bit Bayer fourcc codes V4L/DVB (13648): soc-camera: add a private field to struct soc_camera_link V4L/DVB (13650): soc-camera: switch drivers and platforms to use .priv in struct soc_camera_link V4L/DVB (13651): sh_mobile_ceu_camera: document the scaling and cropping algorithm V4L/DVB (13658): v4l: add a media-bus API for configuring v4l2 subdev pixel and frame formats V4L/DVB (13659): soc-camera: convert to the new mediabus API V4L/DVB (13661): rj54n1cb0c: Add cropping, auto white balance, restrict sizes, add platform data V4L/DVB (13662): mt9t031: make the use of the soc-camera client API optional Gui Jianfeng (4): cfq: Make use of service count to estimate the rb_key offset cfq: Optimization for close cooperating queue searching cfq: Remove wait_request flag when idle time is being deleted cfq: set workload as expired if it doesn't have any slice left Guillaume LECERF (1): mtd: add support for switching old SST chips into QRY mode Gurucharan Shetty (1): ixgbe: allow tx of pre-formatted vlan tagged packets Gustavo F. Padovan (5): Bluetooth: Initialize variables and timers for both channel's sides Bluetooth: Fix unset of SrejActioned flag Bluetooth: Fix sending ReqSeq on I-frames Bluetooth: Implement RejActioned flag Bluetooth: Fix 'SendRRorRNR' to send the ReqSeq value Gábor Stefanik (1): b43: LP-PHY: Begin implementing calibration & software RFKILL support H Hartley Sweeten (18): mtd: fix memory leak in mtd_dataflash mtd: plat_nand: request memory resource before doing ioremap mtd: Fix kernel NULL pointer dereference in physmap.c mtd: Fix compile failure and error path in physmap.c block/scsi_ioctl.c: quiet sparse noise clockevents: Add missing include to pacify sparse drivers/ide/au1xxx-ide.c: use resource_size() drivers/ide/ide_platform.c: use resource_size() drivers/ide/tx4938ide.c: use resource_size() USB: hcd.c: quiet NULL pointer sparse noise iop-adma.c: use resource_size() init/main.c: fix symbol shadows noise kernel/sys.c: fix "warning: do-while statement is not a compound statement" noise Input: ep93xx_keypad - update driver to new core support libfs: move EXPORT_SYMBOL for d_alloc_name security/min_addr.c: make init_mmap_min_addr() static leds: leds-cobalt-raq.c - use resource_size() leds: leds-cobalt-qube.c: use resource_size() H. Peter Anvin (24): x86-64: make compat_start_thread() match start_thread() x86-64: merge the standard and compat start_thread() functions x86: use kernel_stack_pointer() in process_32.c x86: use kernel_stack_pointer() in dumpstack.c x86: use kernel_stack_pointer() in kgdb.c x86: use kernel_stack_pointer() in kprobes.c x86-32: Use symbolic constants, safer CPUID when enabling EFER.NX x86, sleep: Always save the value of EFER x86, pageattr: Make set_memory_(x|nx) aware of NX support x86, mm: Clean up and simplify NX enablement x86: remove "extern" from function prototypes in x86, mm: Call is_untracked_pat_range() rather than is_ISA_range() x86, mm: is_untracked_pat_range() takes a normal semiclosed range x86: Change is_ISA_range() into an inline function x86, platform: Change is_untracked_pat_range() to bool; cleanup init x86, mm: Correct the implementation of is_untracked_pat_range() x86-32: Avoid pipeline serialization in PTREGSCALL1 and 2 x86-64, paravirt: Call set_iopl_mask() on 64 bits Merge commit 'linus/master' into x86/urgent doc: Add documentation for bootloader_{type,version} mm: Adjust do_pages_stat() so gcc can see copy_from_user() is safe nvram: Fix write beyond end condition; prove to gcc copy is safe x86, msr: Remove incorrect, duplicated code in the MSR driver x86: Regex support and known-movable symbols for relocs, fix _end Haavard Skinnemoen (2): Merge commit 'v2.6.32-rc3' Merge commit 'v2.6.32' Hagen Paul Pfeifer (2): econet: Fix redeclaration of symbol len ipv4: Define cipso_v4_delopt static Haicheng Li (1): HWPOISON: add an interface to switch off/on all the page filters Hannes Eder (1): netfilter: nf_nat_helper: tidy up adjust_tcp_sequence Hans Verkuil (14): V4L/DVB (13460): v4l2-spec: add missing V4L2-PIX-FMT-STV0680 description. V4L/DVB (13476): spec: remove old dvb-spec and v4l2-spec directories V4L/DVB (13477): v4l2-subdev: remove unnecessary check V4L/DVB (13478): cx18: remove bogus init call. V4L/DVB (13479): cxusb: fix compile warning V4L/DVB (13480): atbm8830: fix compile warning V4L/DVB (13508): pms: source code cleanup, use struct v4l2_device. V4L/DVB (13509): pms: convert from V4L1 to V4L2. V4L/DVB (13518): spec: regenerate videodev2.h.xml V4L/DVB (13521): dib8000: fix compile warning V4L/DVB (13522): valj5jf8007s/t: fix compile warnings V4L/DVB (13523): dvb-bt8xx: fix compile warning V4L/DVB (13547): radio: add trivial checks on the tuner and type args. V4L/DVB (13573): v4l2-spec: updated revision history, updated version to 2.6.33. Hans de Goede (21): V4L/DVB (13138): gspca_sq905: cleanup sq905_dostream V4L/DVB (13140): gspca_jeilinj: once one frame is discarded it keeps discarding all frames V4L/DVB (13141): gspca_sq905c: once one frame is discarded it keeps discarding all frames V4L/DVB (13142): gspca_mr97310a: small tweak to CIF sensor type 1 exposure setting V4L/DVB (13143): gspca_ov519 cleanup sensor detection V4L/DVB (13144): gspca_ov519: Add support for OV2610 and OV3610 sensors V4L/DVB (13145): gscpa_ov519: add support for the ovfx2 bridge V4L/DVB (13146): gspca_ov519: cleanup sensor handling V4L/DVB (13178): gspca: Add support for Winbond W9967CF and W9968CF camera's V4L/DVB (13179): gspca_ov519: cache sensor regs to avoid unnecessary slow i2c reads / writes V4L/DVB (13180): gspca-w9968cf: Don't add an extra packet to the buffer after the EOF V4L/DVB (13181): gspca w9968cf: Add support for JPEG compression V4L/DVB (13182): gspca w9968cf: slight tweak to vstart and hstart V4L/DVB (13183): gspca: add stv0680 subdriver V4L/DVB (13184): gspca: Don't forget to resubmit URB's in case of an error V4L/DVB (13185): gspca: Don't resubmit error status URB's when suspending V4L/DVB (13242): gspca_mr97310a: Add minimum clock divider control hwmon: (f71882fg) Cleanup sysfs attr creation 1/2 hwmon: (f71882fg) Cleanup sysfs attr creation 2/2 hwmon: (f71882fg) Fix sysfs file removal hwmon: (f71882fg) Add support for the f71889fg (version 2) Hans-Christian Egtvedt (5): mtd: add lock fixup for AT49BV640D and AT49BV640DT chips mtd: move manufacturer to the common cfi.h header file avr32: add support for ATNGW100 mkII board avr32: add default configurations for ATNGW100 mkII and EVKLCD10X avr32: update default configurations for ATNGW100, ATSTK1002 and ATSTK1006 Haojian Zhuang (23): pxamci: introduce mmc_has_26mhz() and include pxa935 backlight: da903x_bl: control WLED output current in da9034 [ARM] pxa/saar: set default WLED output current pxa3xx_nand: fix memory out of bound pxa3xx_nand: reset read buffer before reading pxa3xx_nand: adjust timing of Micron NAND flash pxa3xx_nand: remove hardcode register address pxa3xx_nand: remove hardcode irq number pxa3xx_nand: disable nand irq in initialization pxa3xx_nand: add new nand chip support pxa3xx_nand: update dependancy to support ARCH_MMP pxa3xx_nand: move pxa3xx_nand.h common into plat directory [ARM] pxa: add nand device and clock for pxa168/pxa910 [ARM] pxa: add nand support in aspensite board [ARM] pxa: add onenand support for TTC-DKB [ARM] pxa: add onenand support for SAAR [ARM] pxa: update flash structure in onenand info [ARM] pxa: add missing irq events for pxa168 [ARM] pxa: add apmu clock support in mmp [ARM] pxa: rename macro from pxa9xx to pxa93x mfd: Add 88PM8607 driver mfd: Fix 88PM8607 I2C dependency regulator: add 88PM8607 PMIC driver Harald Welte (3): viafb: documentation update viafb: cosmetic cleanup of function integrated_lvds_enable() hwmon: Add driver for VIA CPU core temperature Harro Haan (2): mx35: register usb_ahb clock in clock-imx35.c mx35: add usb gadget support in mx35pdk.c Hartley Sweeten (1): ARM: 5775/1: ep93xx: add keypad core support Heiko Carstens (8): sched: Always show Cpus_allowed field in /proc//status net/s390 drivers: add missing 'const' attribute [S390] smp: remove unused typedef and defines [S390] etr/stp: put correct per cpu variable [S390] 3215/3270 console: remove wrong comment hrtimer: move timer stats helper functions to hrtimer.c net: fix compat_sys_recvmmsg parameter type net: use compat helper functions in compat_sys_recvmmsg Helge Deller (3): parisc: remove unused IRQSTAT_SIRQ_PEND and IRQSTAT_SZ defines parisc: add CALLER_ADDR{0-6} macros parisc: use sort() instead of home-made implementation (v2) Helight.Xu (1): x86: Fix a section mismatch in arch/x86/kernel/setup.c Hemant Pedanekar (3): mtd: nand: davinci: fix to use mask_ale from pdata davinci: dm646x: Add support for 3.x silicon revision davinci: dm646x-evm: Add platform data for NAND Hendrik Brueckner (2): af_iucv: use sk functions to modify sk->sk_ack_backlog [S390] s390: clear high-order bits of registers after sam64 Henk Vergonet (1): V4L/DVB (13108): tda8290: enable deemphasis_50 module parameter Henk de Groot (3): Staging: wlags49_h2: add Agere driver for HERMES II and HERMES II.5 chipsets Staging: wlags49_h2: add TODO files Staging: wlags49_h2: fix up signal levels Henrique de Moraes Holschuh (17): thinkpad-acpi: fix default brightness_mode for R50e/R51 thinkpad-acpi: preserve rfkill state across suspend/resume thinkpad-acpi: fix some version quirks thinkpad-acpi: issue backlight class events thinkpad-acpi: silence bogus complain during rmmod thinkpad-acpi: adopt input device thinkpad-acpi: expose module parameters thinkpad-acpi: log temperatures on termal alarm (v2) thinkpad-acpi: use input_set_capability thinkpad-acpi: sync input device EV_SW initial state thinkpad-acpi: log initial state of rfkill switches thinkpad-acpi: volume subdriver rewrite thinkpad-acpi: support MUTE-only ThinkPads thinkpad-acpi: disable volume control thinkpad-acpi: basic ALSA mixer support (v2) thinkpad-acpi: bump version to 0.24 backlight/thinkpad-acpi: issue backlight class events Herbert Xu (4): crypto: ghash-intel - Hard-code pshufb crypto: ghash-intel - Add PSHUFB macros sit: Clean up DF code by copying from IPIP Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Herton Ronaldo Krzesinski (2): rtl8187: add radio led and fix warnings on suspend rtc-cmos: convert RTC_AIE/RTC_UIE to rtc irq API Hidetoshi Seto (13): perf_event, x86, mce: Use TRACE_EVENT() for MCE logging x86, mce: Fix __init annotations sched: Fix granularity of task_u/stime() x86, mce: Add __cpuinit to hotplug callback functions sched: Introduce task_times() to replace task_{u,s}time() pair sched: Remove task_{u,s,g}time() sched, time: Define nsecs_to_jiffies() sched, cputime: Cleanups related to task_times() sched, cputime: Introduce thread_group_times() x86, mce: don't restart timer if disabled x86, mce: fix confusion between bank attributes and mce attributes x86, mce: Clean up thermal init by introducing intel_thermal_supported() ACPI: fix for lapic_timer_propagate_broadcast() Hideyuki Sasaki (2): block/ps3: fix slow VRAM IO net/ps3: Add support for gelic link negotiation Hiroshi DOYU (6): omap: iommu: avoid remapping if it's been mapped in MPU side omap: iovmm: remove cache flush operation omap: mailbox: remove sequence bit checking omap: mailbox: remove class interface omap: mailbox: remove disable_/enable_mbox_irq in isr omap: mailbox: Expose omap_mbox_enable()/disable_irq() Hiroshi Shimamoto (8): sched: Remove unused __schedule() declaration sched: Remove unused time_sync_thresh declaration sched: Remove unused cpu_nr_migrations() x86: Gitignore: arch/x86/lib/inat-tables.c perf_event, x86: Annotate init functions and data x86: Don't put iommu_shutdown_noop() in init section locking, task_struct: Reduce size on TRACE_IRQFLAGS and 64bit task_struct: make journal_info conditional Hisashi Hifumi (1): readahead: add blk_run_backing_dev Hitoshi Mitake (21): perf bench: Add new directory and header for new subcommand 'bench' perf bench: Add sched-messaging.c: Benchmark for scheduler and IPC mechanisms based on hackbench perf bench: Add sched-pipe.c: Benchmark for pipe() system call perf bench: Add builtin-bench.c: General framework for benchmark suites perf bench: Modify builtin.h for new prototype perf bench: Add new subcommand 'bench' to perf.c perf bench: Add subcommand 'bench' to the Makefile perf bench: Fix bench/sched-pipe.c to wait for child process perf bench: Add format constants to bench.h for unified output formatting perf bench: Modify builtin-bench.c for processing common options perf bench: Modify bench/bench-messaging.c to adopt unified output formatting perf bench: Modify builtin-pipe.c for processing common options perf bench: Add new document about perf-bench perf bench: Modify command-list.txt for the entry of perf-bench perf bench: Improve builtin-bench.c for more friendly output perf bench: Improve sched-pipe.c with more comfortable output perf bench: Improve sched-message.c with more comfortable output perf tools: Add new perf_atoll() function to parse string representing size in bytes perf bench: Add memcpy() benchmark perf bench: Make the mem/memcpy tests more user-friendly perf bench: Add "all" pseudo subsystem and "all" pseudo suite Holger Schurig (34): nl80211: report age of scan results libertas: separate libertas' Kconfig in it's own file libertas: first stab at cfg80211 support libertas: remove extraneous select FW_LOADER libertas: depend on CONFIG_CFG80211 cfg80211: no cookies in cfg80211_send_XXX() cfg80211: remove warning in deauth case libertas: make __lbs_cmd_async() non-static libertas: cleanup host.h and hostcmd.h libertas: harmonize cmd.h libertas: make lbs_get_channel() static libertas: remove unused lbs_cmd_802_11_inactivity_timeout() libertas: remove unused 11d code libertas: remove unused 11d.h as well, priv->countryinfo libertas: change IW_ESSID_MAX_SIZE -> IEEE80211_MAX_SSID_LEN libertas: move scan/assoc related stuff libertas: sort variables in struct lbs_private libertas: get current channel out of priv->curbssparams libertas: move association related commands into assoc.c libertas: move lbs_send_iwevcustom_event() to wext.c libertas: remove handling for CMD_802_11_LED_GPIO_CTRL libertas: remove handling for CMD_GET_TSF libertas: remove "struct cmd_ds_gen" libertas: move SIOCGIWAP calls to wext.c libertas: move mic failure event to wext.c libertas: sort and categorize entries in decl.h libertas: remove some references to IW_MODE_abc cfg80211: introduce nl80211_get_ifidx() cfg80211: return channel noise via survey API libertas: rename persistcfg.c -> mesh.c libertas: introduce mesh.h libertas: moveing mesh-related functions into mesh.c libertas: move mesh-only ethtool operations into mesh.c libertas: move mesh command handling into mesh.c Hollis Blanchard (1): KVM: powerpc: Fix BUILD_BUG_ON condition Hong Xu (1): USB: modifications for at91sam9g10 Huang Shijie (5): rmap: fix the comment for try_to_unmap_anon rmap: simplify try_to_unmap_file() rmap: move label `out' to a better place vmscan: simplify code include/linux/mm.h: remove unneeded ifdef Huang Weiyi (7): KVM: remove duplicated #include V4L/DVB: pt1: remove duplicated #include Staging: rtl8187se: remove unused #include Staging: rtl8187su: remove unused #include Staging: vme: remove unused #include parisc: remove duplicated #include V4L/DVB: Davinci VPFE Capture: remove unused #include Huang Ying (6): crypto: ghash - Add PCLMULQDQ accelerated implementation crypto: ghash-intel - Fix building failure on x86_32 crypto: ghash-intel - Fix irq_fpu_usable usage x86: Generate .byte code for some new instructions via gas macro crypto: aesni-intel - Use gas macro for AES-NI instructions crypto: ghash-clmulni-intel - Use gas macro for PCLMULQDQ-NI and PSHUFB Huaxu Wan (2): iwlwifi: add module firmware info for 1000 series iwlwifi: clear the translate table area Hubert Feurstein (2): ARM: 5789/1: ep93xx: add missing file headers ARM: 5790/1: ep93xx: add missing newline between file header and code Hugh Dickins (31): swap_info: private to swapfile.c swap_info: change to array of pointers swap_info: include first_swap_extent swap_info: miscellaneous minor cleanups swap_info: SWAP_HAS_CACHE cleanups swap_info: swap_map of chars not shorts swap_info: swap count continuations swap_info: note SWAP_MAP_SHMEM swap_info: reorder its fields mm: define PAGE_MAPPING_FLAGS mm: mlocking in try_to_unmap_one mm: CONFIG_MMU for PG_mlocked mm: pass address down to rmap ones mm: stop ptlock enlarging struct page mm: sigbus instead of abusing oom ksm: three remove_rmap_item_from_tree cleanups ksm: remove redundancies when merging page ksm: cleanup some function arguments ksm: singly-linked rmap_list ksm: separate stable_node ksm: stable_node point to page and back ksm: fix mlockfreed to munlocked ksm: let shared pages be swappable ksm: hold anon_vma in rmap_item ksm: take keyhole reference to page ksm: share anon page without allocating ksm: mem cgroup charge swapin copy ksm: rmap_walk to remove_migation_ptes ksm: memory hotremove migration only ksm: remove unswappable max_kernel_pages fix ksm.h breakage of nommu build Ian Abbott (3): Staging: comedi: serial2002: decrease stack usage Staging: comedi: initialize divisor variables Staging: comedi: pcl816: update convert_src mask for AI cmdtest Ian Campbell (9): xen: re-register runstate area earlier on resume. xen: correctly restore pfn_to_mfn_list_list after resume xen: register timer interrupt with IRQF_TIMER xen: register runstate on secondary CPUs xen: call clock resume notifier on all CPUs xen: don't leak IRQs over suspend/resume. xen: improve error handling in do_suspend. xen: explicitly create/destroy stop_machine workqueues outside suspend/resume region. xen: try harder to balloon up under memory pressure. Ian Jackson (1): Serial: Do not read IIR in serial8250_start_tx when UART_BUG_TXEN Ian Kent (10): autofs4: use helper functions for active list handling autofs4: use helper functions for expiring list autofs4: use helper function for need mount check autofs4: use autofs_info for pending flag autofs4: renamer unhashed to active in autofs4_lookup() autofs4: cleanup active and expire lookup autofs4: eliminate d_unhashed in path walk checks autofs4: rename dentry to active in autofs4_lookup_active() autofs4: rename dentry to expiring in autofs4_lookup_expiring() autofs4: always use lookup for lookup Ian Molton (3): hwrng: core - Replace u32 in driver API with byte array hwrng: virtio-rng - Convert to new API hwrng: core - Prevent too-small buffer sizes Ignacio de Miguel Diaz (1): V4L/DVB (13368): af9015: support for Sveon STV20 Tuner USB DVB-T HDTV Igor Grinberg (15): ASoC: finally enable support for eXeda and CM-X300 [ARM] pxa: register U2D clock for pxa3xx [ARM] pxa: add U2D registers and bits definitions [ARM] pxa/cm-x300: add revision difference handling [ARM] pxa/cm-x300: add TDO35S lcd support [ARM] pxa/cm-x300: add ac97 controller registration [ARM] pxa/cm-x300: add Wi2Wi chip (Bluetooth and WiFi) initialization [ARM] pxa/cm-x300: add support for PXA310 cpu [ARM] pxa/cm-x300: enable USB port 2 for PXA300 [ARM] pxa/cm-x300: add da9030 support [ARM] pxa/cm-x300: update authors and copyright [ARM] pxa/cm-x300: update defconfig [ARM] pxa/cm-x300: add PWM backlight support [ARM] pxa/em-x270: fix usb hub power up/reset sequence [ARM] pxa/cm-x300: add PWM backlight support Igor M. Liplianin (12): V4L/DVB (13045): Fix debug messaging for stv0900 demod. V4L/DVB (13134): Add support for TBS-likes remotes V4L/DVB (13135): Add support for TeVii remotes V4L/DVB (13336): stv0900: config definition for single/dual mode V4L/DVB (13337): Change str snr scale for stv0900/903 and Netup Dual DVB-S2 card. V4L/DVB (13338): stv0900: big rework to support cut 3.0. V4L/DVB (13339): stv0900: big rework to support cut 3.0. V4L/DVB (13340): stv0900: big rework to support cut 3.0. V4L/DVB (13341): stv0900: big rework to support cut 3.0. V4L/DVB (13407): Add Prof 7301 PCI DVB-S2 card V4L/DVB (13493): TeVii S470 and TBS 6920 fixes V4L/DVB (13678): Add support for yet another DvbWorld, TeVii and Prof USB devices Ike Panhc (1): asus-laptop: add Lenovo SL hotkey support Ilia K (1): add vif using local interface index instead of IP Ilkka Koskinen (2): mfd: Enable twl4030 32kHz oscillator low-power mode mfd: Initial support for twl5031 Ilpo Järvinen (2): tcp: clear hints to avoid a stale one (nfs only affected?) tcp: fix retrans_stamp advancing in error cases Ilya Loginov (1): block: add helpers to run flush_dcache_page() against a bio and a request's pages Inaky Perez-Gonzalez (47): wimax: indicate initial SW rfkill state is "blocked" wimax/i2400m: be smarter about copying command buffer to bm_cmd_buf wimax/i2400m: during probe, call sdio_disable at most once wimax/i2400m: add missing debug submodule definition wimax: allow specifying debug levels as command line option wimax/i2400m: workaround not-so-working %zd printf format wimax/i2400m: decide properly if using signed vs non-signed firmware loading wimax/i2400m: rework bootrom initialization to be more flexible wimax/i2400m: retry loading firmware files in sequence wimax/i2400m: fix reboot echo/ack barker deadlock wimax/i2400m: verify firmware format version is known wimax/i2400m: support extended firmware format wimax/i2400m: on firmware upload, select BCF header that matches device's request wimax/i2400m: clean up & add a payload argument to i2400m_schedule_work() wimax/i2400m: add reason argument to i2400m_dev_reset_handle() wimax/i2400m: cache firmware on system suspend wimax/i2400m: implement .reset_resume in USB subdriver wimax/i2400m: don't overwrite error codes when failing to load firmware wimax/i2400m: on device stop, clean up pending wake & TX work wimax/i2400m: cleanup initialization/destruction flow wimax/i2400m: clarify and fix i2400m->{ready,updown} wimax/i2400m: introduce i2400m->bus_setup/release wimax/i2400m: do bootmode buffer management in i2400m_setup/release() wimax/i2400m: Implement pre/post reset support in the USB driver wimax/i2400m: reduce verbosity of debug messages in boot mode wimax/i2400m: fix race condition with tcpdump et al wimax: allow user space to send messages once the device is registered wimax: allow WIMAX_RF_QUERY calls when state is still uninitialized wimax/i2400m: when stopping the device, cancel any pending message wimax/i2400m: fix deadlock: don't do BUS reset under i2400m->init_mutex wimax/i2400m: move i2400m_init() out of i2400m.h wimax/i2400m: queue device's report until the driver is ready for them wimax/i2400m: fix oops in TX when tearing down the device wimax/i2400m: Let device's status reports change the device state wimax/i2400m: fix oops caused by race condition when exiting USB kthreads wimax/i2400m: make i2400m->bus_dev_{stop,start}() optional wimax/i2400m: SDIO: fix oops on reset when TXing on uninitialized data wimax/i2400m: implement passive mode as a module option wimax/i2400m: introduce i2400m_reset(), stopping TX and carrier wimax/i2400m: fix device getting stuck in IDLE mode wimax/i2400m: Fix USB timeout specifications (to ms from HZ) wimax/i2400m: correctly identify all iwmc3200-based SKUs wimax/i2400m: don't retry SDIO enable in probe() paths wimax/i2400m: handle USB stalls wimax/i2400m: fix bad assignment of return value in i2400mu_tx_bulk_out wimax/i2400m: fix SDIO debugfs dentry name wimax/i2400m: fix inverted value in i2400ms_bus_setup() Ingo Molnar (72): Merge branch 'linus' into tracing/hw-breakpoints Merge branch 'tracing/core' into tracing/hw-breakpoints Merge branch 'linus' into tracing/hw-breakpoints ratelimit: Use per ratelimit context locking ratelimit: Fix/allow use in atomic contexts printk: Remove ratelimit.h from kernel.h Merge branch 'tracing/urgent' into tracing/core Merge branch 'perf/urgent' into perf/core perf tools: Default to 1 KHz auto-sampling freq events perf_events, x86: Fix event constraints code Merge branch 'tracing/urgent' into tracing/core Merge commit 'v2.6.32-rc4' into perf/core Merge branch 'tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/core x86, apic: Fix prototype in hw_irq.h Merge branch 'linus' into perf/core Merge branch 'tracing/core' into perf/core tracing/events: Fix locking imbalance in the filter code events: Harmonize event field names and print output names Merge branches 'x86/mce' and 'x86/urgent' into perf/mce Merge commit 'v2.6.32-rc5' into perf/probes perf stat: Re-align the default_attrs[] array perf stat: Count branches first Merge branch 'perf/urgent' into perf/core x86, instruction decoder: Fix test_get_len build rules Merge branch 'perf/core' into perf/probes Merge branch 'linus' into sched/core rcu: Do tiny cleanups in rcutiny Merge branch 'tracing/urgent' into tracing/core perf tools: Fix missing symtabs printouts Merge commit 'v2.6.32-rc6' into perf/core Merge branch 'core/urgent' into core/rcu perf bench: Clean up bench/bench.h x86: Add iommu_init to x86_init_ops, fix build hw-breakpoints: Fix build on !perf architectures x86: Fix cpu_devs[] initialization in early_cpu_init() hw-breakpoints, x86: Fix modular KVM build Merge commit 'v2.6.32-rc7' into perf/core Merge branches 'perf/powerpc' and 'perf/bench' into perf/core Merge commit 'v2.6.32-rc7' into core/iommu x86: gart: Clean up the code a bit Merge branch 'perf/core' into perf/probes Merge branch 'perf/urgent' into perf/core Merge branch 'tracing/hw-breakpoints' into perf/core perf_events: Fix modular build ring-buffer benchmark: Run producer/consumer threads at nice +19 perf events: Do not generate function trace entries in perf code tracing, function tracer: Clean up strstrip() usage perf_events: Optimize the swcounter hotpath Merge branch 'perf/bench' into perf/core Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/core x86: dumpstack: Clean up the x86_stack_ids[][] initalization and other details x86: dumpstack, 64-bit: Disable preemption when walking the IRQ/exception stacks events: Rename TRACE_EVENT_TEMPLATE() to DECLARE_EVENT_CLASS() x86: Clean up the loadsegment() macro Merge branch 'sched/urgent' into sched/core tracing: Fix kmem event exports perf scripting: Fix build Merge branch 'perf/scripting' into perf/core Merge branch 'perf/mce' into perf/core Merge branch 'perf/probes' into perf/core Merge branch 'perf/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into perf/urgent Merge branch 'linus' into x86/urgent Merge branch 'linus' into x86/urgent Merge branch 'tip/tracing/core3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/core perf kmem: Fix unused argument build warning Merge branch 'amd-iommu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent sched: Remove forced2_migrations stats Merge branch 'linus' into tracing/urgent Merge branch 'tip/tracing/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent perf diff: Improve the help text Merge branch 'x86/asm' into x86/urgent Merge branch 'x86/mce' into x86/urgent Isaku Yamahata (1): ia64/xen: compilation fix Ivo van Doorn (3): rt2x00: Add rt2x00soc bus module rt2x00: Implement support for rt2800pci rt2x00: Remove deprecated ieee80211_rx_status->qual usage J. Bruce Fields (28): nfsd: fix Documentation typo nfsd4: cross mountpoints when looking up parents nfsd: minor nfsd_lookup cleanup nfsd4: fix error return when pseudoroot missing Merge commit 'v2.6.32-rc5' into for-2.6.33 nfs: new subdir Documentation/filesystems/nfs nfsd4.1: fix session memory use calculation nfsd4.1: common slot allocation size calculation nfsd4: don't try to map gid's in generic rpc code nfs: move more to Documentation/filesystems/nfs nfsd: make fs/nfsd/vfs.h for common includes Revert "knfsd: avoid overloading the CPU scheduler with enormous load averages" Merge commit 'v2.6.32-rc8' into HEAD nfsd: simplify fh_verify access checks Re: acl trouble after upgrading ubuntu The rpc server does not require that service threads take the BKL. nfsd4: fix share mode permissions nfsd: new interface to advertise export features nfsd: let "insecure" flag vary by pseudoflavor nfsd4: don't continue "under" mounts in V4ROOT case nfsd: filter lookup results in V4ROOT case nfsd: filter readdir results in V4ROOT case nfsd: allow exports of symlinks nfsd: make V4ROOT exports read-only nfsd: enable V4ROOT exports nfsd: remove unused field rq_reffh nfsd: move most of nfsfh.h to fs/nfsd nfsd: remove pointless paths in file headers J. R. Okajima (2): slab, kmemleak: stop calling kmemleak_erase() unconditionally slab, kmemleak: pass the correct pointer to kmemleak_erase() Jack Steiner (33): x86: UV SGI: Don't track GRU space in PAT x86: SGI UV: Map low MMR ranges gru: initial GRU based on blade topology gru: add comments raised in previous code reviews gru: fix istatus race in GRU tlb dropin gru: handle blades without memory gru: allow users to specify gru chiplet 1 gru: allow users to specify gru chiplet 2 gru: allow users to specify gru chiplet 3 gru: fix bug in module unload gru: improve messages for malfunctioning GRUs gru: support 64-bit GRU addresses gru: handle failures to mmu_notifier_register gru: add debug option for cache flushing gru: add test for gru_copy_gpa gru: check for valid vma gru: fix prefetch and speculation bugs gru: update irq infrastructure gru: add additional GRU statistics gru: expicitly set instruction status to active gru: preload tlb for bcopy instructions gru: fix bug in exception handling gru: add symbolic names for GRU error code gru: remove stray local_irq_enable gru: check for correct GRU chiplet assignment gru: update GRU structures to match latest hardware spec gru: fix bug in allocation of kernel contexts gru: add hugepage support gru: fix GRU interrupt race at deallocate gru: improve GRU TLB dropin statistics gru: update driver version number gru: function to generate chipset IPI values gru: send cross partition interrupts using the gru Jakob Bornecrantz (4): drm: Add dirty ioctl and property drm/ttm: Add more driver type enums drm/vmwgfx: Add svga headers for vmwgfx driver drm/vmwgfx: Add DRM driver for VMware Virtual GPU James Bottomley (2): [SCSI] scsi_lib_dma: fix bug with dma maps on nested scsi objects [SCSI] enclosure: fix oops while iterating enclosure_status array James Morris (3): Merge branch 'master' into next security: remove root_plug Merge branch 'master' into next James Simmons (1): drm/kms: properly handle fbdev blanking James Smart (12): [SCSI] lpfc 8.3.5: fix reset path, ELS ordering and discovery issues [SCSI] lpfc 8.3.5: fix VPI registration, error clean up and add support for vlink events [SCSI] lpfc 8.3.5: fix sysfs parameters, vport creation and other bugs and update logging [SCSI] lpfc 8.3.5: Add AER support [SCSI] lpfc 8.3.5: fix fcp command polling, add FIP mode, performance optimisations and devloss timout fixes [SCSI] lpfc 8.3.5: Update the lpfc driver version to 8.3.5 [SCSI] lpfc 8.3.6 : FCoE Protocol Fixes [SCSI] lpfc 8.3.6 : FC Protocol Fixes [SCSI] lpfc 8.3.6 : Fix AER issues [SCSI] lpfc 8.3.6 : Fix critical errors [SCSI] lpfc 8.3.6 : Hardware related fixes and changes [SCSI] lpfc 8.3.6 : Update lpfc driver version to 8.3.6 Jamie Iles (2): perf tools: Allow cross compiling perf tools: Allow building for ARM Jan Beulich (12): x86, hpet: Simplify the HPET code x86-64: __copy_from_user_inatomic() adjustments x86: Eliminate redundant/contradicting cache line size config options x86: Suppress stack overrun message for init_task x86: Tighten conditionals on MCE related statistics x86/alternatives: Check replacementlen <= instrlen at build time x86/alternatives: No need for alternatives-asm.h to re-invent stuff already in asm.h x86/mce: Set up timer unconditionally genksyms: properly consider EXPORT_UNUSED_SYMBOL{,_GPL}() vmalloc(): adjust gfp mask passed on nested vmalloc() invocation mm/bootmem.c: properly __init-annotate helper functions dma-mapping: fix off-by-one error in dma_capable() Jan Blunck (2): sched_feat_write(): Update ppos instead of file->f_pos ext2: Explicitly assign values to on-disk enum of filetypes Jan Engelhardt (2): netfilter: xt_socket: make module available for INPUT chain netfilter: xtables: document minimal required version Jan Kara (15): ext4: fix error handling in ext4_ind_get_blocks() ext4: Avoid data / filesystem corruption when write fails to copy data ext4: Wait for proper transaction commit on fsync zisofs: Implement reading of compressed files when PAGE_CACHE_SIZE > compress block size quota: Fix WARN_ON in lookup_one_len quota: Move definition of QFMT_OCFS2 to linux/quota.h quota: Implement quota format with 64-bit space and inode limits ext3: Support for vfsv1 quota format ext4: Support for 64-bit quota format ext3: Fix data / filesystem corruption when write fails to copy data udf: Fix compilation with UDFFS_DEBUG enabled udf: Try harder when looking for VAT inode udf: Avoid IO in udf_clear_inode ext2: report metadata errors during fsync reiserfs: truncate blocks not used by a write Jan Kiszka (8): KVM: x86: Refactor guest debug IOCTL handling KVM: x86: Rework guest single-step flag injection and filtering KVM: x86: Drop unneeded CONFIG_HAS_IOMEM check KVM: x86: Fix guest single-stepping while interruptible KVM: SVM: Cleanup NMI singlestep KVM: x86: Polish exception injection via KVM_SET_GUEST_DEBUG KVM: Reorder IOCTLs in main kvm.h KVM: x86: Add KVM_GET/SET_VCPU_EVENTS Jan Nikitenko (1): spi/au1550_spi: fix setupxfer not to override cfg with zeros Jani Nikula (4): Input: add new keycodes useful in mobile devices Input: add new keycodes useful in mobile devices ARM OMAP3: RX-51 board - add initialization of gpio keys gpiolib: add support for changing value polarity in sysfs Janne Ylalehto (2): wl1251: Add IRQ looping support wl1251: Filter out unwanted events Janusz Krzysztofik (4): ASoC: Amstrad Delta minor cleanups ASoC: OMAP: Don't try to set unsupported OMAP_DMA_DATA_BURST_16 on OMAP1 omap1: DMA: move LCD related code from plat-omap to mach-omap1 omap1: LCD_DMA: Use some define rather than a hexadecimal Jarek Poplawski (1): net: Optimize hard_start_xmit() return checking Jari Vanhala (2): ASoC: TWL4030: Vibra motor stop fix when it is driven with audio Input: fix memory leak in force feedback core Jarkko Nikula (1): ASoC: Pandora: Pass SRG input clock frequency to the OMAP McBSP DAI Jarod Wilson (2): V4L/DVB (13597): bttv: add i2c addr for old WinTV card to IR probe list V4L/DVB (13602): bttv: fix MODULE_PARM_DESC for i2c_debug and i2c_hw Jaroslav Kysela (12): ALSA: rename "PC Speaker" and "PC Beep" controls to "Beep" ALSA: rename "PC Speaker" controls to "Speaker" ALSA: hda - proc - show which I/O NID is associated to PCM device ALSA: hda_intel: Digital PC Beep - change behaviour for input layer ALSA: hda_intel: Digital PC Beep - delay input device unregistration ALSA: hda: beep - add missing cancel_delayed_work ALSA: hda - add beep_mode module parameter ALSA: hda - proc - introduce Control: lines to show mixer<->NID assignment ALSA: hda - proc - add support for dynamic controls to mixer<->NID mapping ALSA: hda - move snd_hda_pcm_type_name from hda_codec.h to hda_local.h ALSA: hda - Terradici HDA controllers does not support 64-bit mode ALSA: ice1724 - aureon - modify WM8770 Master & DAC volume Jason Andryuk (2): at76c50x-usb: Remove mac2str and replace with %pM format specifier. at76c50x-usb: Supply additional parameters to at76_start_monitor scan request Jason Baron (1): tracing: Add DEFINE_EVENT(), DEFINE_SINGLE_EVENT() support to docbook Jason Gunthorpe (3): RDMA/cma: Correct detection of SA Created MGID RDMA/cma: Fix AF_INET6 support in multicast joining xfs: Fix error return for fallocate() on XFS Jason Wessel (7): kgdb: Read buffer overflow kgdb,i386: Fix corner case access to ss with NMI watch dog exception kgdb: allow for cpu switch when single stepping kgdb,x86: do not set kgdb_single_step on x86 kgdb: continue and warn on signal passing from gdb kgdb: Always process the whole breakpoint list on activate or deactivate USB: ehci-hub: Remove redundant ehci->debug check Jasper Spaans (1): bonding: Remove bond_dev from xmit_hash_policy call. Jassi (2): ASoC: S3C I2S LRCLK polarity option. ASoC: Return correct codec clock in s3c64xx-i2s Jassi Brar (8): ASoC: Fixed arguments passed to SMDK64xx set_pll ASoC: Rename s3c24xx_pcm prefix to s3c_dma ASoC: Rename 's3c24xx-pcm' driver to 's3c-dma' ARM: S3C64XX: Define PCM Controller base registers ARM: S3C64XX: Added platform data header ARM: S3C64XX: Defined PCM controller platform devices ASoC: Added the CPU driver for PCM controllers spi: Add s3c64xx SPI Controller driver Jaswinder Singh Rajput (6): x86: hw_breakpoint.c arch_check_va_in_kernelspace and hw_breakpoint_handler should be static x86: Mark ptrace_get_debugreg() as static b43: Comment unused functions lpphy_restore_dig_flt_state and lpphy_disable_rx_gain_override net: Fix missing kernel-doc notation crypto: ansi_cprng - Move FIPS functions under CONFIG_CRYPTO_FIPS mac80211: Fix missing kernel-doc notation Javier Cardona (3): mac80211: Learn about mesh portals from multicast traffic mac80211: Fixed bug in mesh portal paths mac80211: Revert 'Use correct sign for mesh active path refresh' Jay Fenlason (1): firewire: ohci: handle receive packets with a data length of zero Jay Sternberg (2): iwlwifi: add missing commands to syslog messages iwlwifi: Tell the ucode immediately when association state changes Jay Vosburgh (1): bonding: fix 802.3ad standards compliance error Jayamohan Kallickal (3): [SCSI] be2iscsi: Adding msix and mcc_rings V3 [SCSI] be2iscsi: Adding Ring Mode Wrb's V3 [SCSI] be2iscsi: Adding support for various Async messages from chip Jayson R. King (1): sched: Remove obsolete comment in sched_init() Jean Delvare (71): powerpc/therm_adt746x: Don't access non-existing register comment typo fix: sybsystem -> subsystem V4L/DVB (13233): i2c_board_info can be local V4L/DVB (13234): IR device at I2C address 0x7a V4L/DVB (13235): saa7134: Complete the IR address list V4L/DVB (13236): ir-kbd-i2c: Don't reject unknown I2C addresses x86, perf probe: Fix warning in test_get_len() i2c-powermac: Reject unsupported I2C transactions i2c-powermac: Refactor i2c_powermac_smbus_xfer i2c-powermac: Log errors i2c-powermac: Include the i2c_adapter in struct pmac_i2c_bus i2c-powermac: Drop temporary name buffer i2c-voodoo3: Delete i2c: Bus drivers don't have to support I2C_M_REV_DIR_ADDR i2c: Add missing __devinit markers to old i2c adapter drivers i2c: Drop probe, ignore and force module parameters i2c: Simplify i2c_detect_address ics932s401: Clean up detect function i2c-i801: Retry on lost arbitration i2c: Refactor for_each callbacks i2c-stub: Implement I2C block support i2c-stub: Allow user to disable some commands i2c-stub: Documentation update MAINTAINERS: Add missing hwmon files hwmon: Clarify autopwm trip points documentation hwmon: (it87) Verify the VID pin usage hwmon: (it87) Check for fan2 and fan3 availability hwmon: (w83627hf) Drop the force_addr module parameter hwmon: (w83627hf) Stop using globals for I/O port numbers hwmon: (adm1021) Clean up detect function hwmon: (adm1025) Clean up detect function hwmon: (lm77) Clean up detect function hwmon: (lm83) Clean up detect function hwmon: (lm85) Clean up detect function hwmon: (lm90) Clean up detect function hwmon: (tmp401/tmp421) Clean up detect functions hwmon: (w83781d) Clean up detect function hwmon: (w83791d) Clean up detect function hwmon: (w83792d) Clean up detect function hwmon: (w83l785ts) Clean up detect function hwmon: Clean up detect functions hwmon: (thmc50) Stop using I2C_CLIENT_MODULE_PARM hwmon: (adt7475) Add support for the ADT7473 hwmon: (adt7475) New documentation hwmon: (adt7475) Implement pwm_use_point2_pwm_at_crit hwmon: (adt7475) Rework voltage inputs handling hwmon: (adt7475) Add missing static marker hwmon: (adt7475) Improve device detection hwmon: (adt7475) Add support for the ADT7490 hwmon: (adt7475) Move sysfs files removal to a separate function hwmon: (adt7475) Handle alternative pin functions hwmon: (adt7475) Print device information on probe hwmon: (adt7475) Voltage attenuators can be bypassed hwmon: (adt7475) Add support for the ADT7476 hwmon: (adt7475) Add an entry in MAINTAINERS hwmon: (adt7475) Add VID support for the ADT7476 ACPI: add const to acpi_check_resource_conflict() Doc: use misc-devices/ dir for drivers USB: Add missing static markers to ohci-pnx4008 mfd: Don't abuse i2c_client.name i2c: Drop the kind parameter from detect callbacks i2c: Get rid of struct i2c_client_address_data i2c: Drop I2C_CLIENT_INSMOD_1 i2c: Drop I2C_CLIENT_INSMOD_2 to 8 i2c: Get rid of I2C_CLIENT_MODULE_PARM ioc3/ioc4: various section fixes ioc3/ioc4: fix error path on driver registration resource: constify arg to resource_size() and resource_type() hwmon: (smsc47m1) Only request I/O ports we really use hwmon: (smsc47m1) Fail module loading on error hwmon: (smsc47m1) Enable device if needed Jean Tourrilhes (1): WE: Fix set events not propagated Jean-Christophe PLAGNIOL-VILLARD (2): at91: remove not needed depends on at91: Kconfig simplification Jean-Francois Moine (43): V4L/DVB (13114): gspca - zc3xx.c: Bad init sequences of sensor cs2102. V4L/DVB (13115): gspca - main: More information messages. V4L/DVB (13193): gspca - zc3xx.c: Change init sequences of sensor tas5130c. V4L/DVB (13198): gspca - ov519: Bad frame pointer in ovfx2 packet scan. V4L/DVB (13249): gspca - pac7311: Webcam 093a:2628 added. V4L/DVB (13250): gspca - zc3xx: Add some delays and warn on i2c errors. V4L/DVB (13251): gspca - sonixj: Cleanup code and change some comments. V4L/DVB (13301): gspca - sonixj: Simplify the sensor init exchanges. V4L/DVB (13302): gspca - sonixj: Fix some bad values of sensor om6802. V4L/DVB (13303): gspca - sonixj: Change sensor and om6802 exchanges. V4L/DVB (13304): gspca - sonixj: Don't access the sensor when setting the bridge. V4L/DVB (13305): gspca - sonixj: The V flip control does not exist for all sensors. V4L/DVB (13306): gspca - sonixj: Change the copyright. V4L/DVB (13323): gspca - zc3xx: Adjust the exchanges of sensors mi0360soc and pb0330. V4L/DVB (13384): gspca - sonixj: Optimize code and add some comments. V4L/DVB (13386): gspca - main: Change version to 2.8.0. V4L/DVB (13387): gspca - main: Fix a compilation warning. V4L/DVB (13420): gspca - doc: Change the name of some webcams. V4L/DVB (13421): gspca - main: Clearer message when bandwidth too small. V4L/DVB (13422): gspca - ov534: ov772x changes from Richard Kaswy. V4L/DVB (13423): gspca - ov534: More ov772x changes from Max Thrun. V4L/DVB (13424): gspca - ov534: Fix ov772x brightness and ov965x frame rate. V4L/DVB (13425): gspca - ov534: Bad name of the ov965x 320x240 resolution. V4L/DVB (13448): gspca - main: Add a gspca flag for inactive controls. V4L/DVB (13449): gspca - ov534: The AWB control works only when autogain is set. V4L/DVB (13450): gspca - main: Clear the urb status before resubmit. V4L/DVB (13451): gspca - main: Memorize the current frame buffer. V4L/DVB (13452): gspca - main: Let the driver scan URB packets when no frame buffer. V4L/DVB (13453): gspca - all subdrivers: Remove the unused frame ptr from pkt_scan(). V4L/DVB (13487): gspca - ov534: Add svga, xga and sxga modes for ov965x. V4L/DVB (13488): gspca - ov534: Remove extra values at end of ov965x sequences. V4L/DVB (13489): gspca - sonixj: Add the sensor po1030. V4L/DVB (13490): gspca - ov534: Add controls for sensor ov965x. V4L/DVB (13491): gspca - vc032x: Avoid crash on querymenu. V4L/DVB (13559): gspca - pac7302: Some webcams are upside-down by default. V4L/DVB (13560): gspca - main: Cleanup source. V4L/DVB (13562): gspca - doc: Update webcam list. V4L/DVB (13563): gspca - zc3xx: Bad sensor probe of the webcam 0ac8:305b. V4L/DVB (13565): gspca - pac7302: One more webcam is upside-down by default. V4L/DVB (13566): gspca - main: New variable usb_err for USB exchanges. V4L/DVB (13567): gspca - sunplus/stk014: Propagate errors to higher level. V4L/DVB (13626): gspca - many subdrivers: Fix some warnings. V4L/DVB (13627): gspca - zc3xx: Set the quality for sensor tas5130c. Jean-Mickael Guerin (2): net: compat_mmsghdr must be used in sys_recvmmsg net: compat_sys_recvmmsg user timespec arg can be NULL Jeff Garzik (1): Revert "pata_sis: Implement MWDMA for the UDMA 133 capable chips" Jeff Layton (3): NFS: convert proto= option to use netids rather than a protoname vfs: force reval of target when following LAST_BIND symlinks (try #7) vfs: remove extraneous NULL d_inode check from do_filp_open Jeff Moyer (7): cfq: calculate the seek_mean per cfq_queue not per cfq_io_context cfq: merge cooperating cfq_queues cfq: change the meaning of the cfqq_coop flag cfq: break apart merged cfqqs if they stop cooperating block: get rid of the WRITE_ODIRECT flag aio: implement request batching dio: don't zero out the pages array inside struct dio Jens Axboe (22): drbd: remove tracing bits block: remove the anticipatory IO scheduler block: CFQ is more than a desktop scheduler Merge branch 'master' into for-2.6.33 drbd: fixup for reverted dual in_flight patch Merge branch 'for-linus' into for-2.6.33 cfq-iosched: fix style issue in cfq_get_avg_queues() drbd: fix in_flight rw indexing block: move bdi/address_space unplug functions to backing-dev.h Merge branch 'cfq-2.6.33' into for-2.6.33 Merge branch 'for-linus' into for-2.6.33 cfq-iosched: fix merge error cfq-iosched: get rid of the coop_preempt flag Merge branch 'for-jens' of git://git.drbd.org/linux-2.6-drbd into for-2.6.33 Merge branch 'for-jens' of git://git.drbd.org/linux-2.6-drbd into for-2.6.33 Revert "cfq: Make use of service count to estimate the rb_key offset" Merge branch 'master' into for-2.6.33 cfq-iosched: fix compile problem with !CONFIG_CGROUP cfq-iosched: move IO controller declerations to a header file io controller: quick fix for blk-cgroup and modular CFQ cfq-iosched: use call_rcu() instead of doing grace period stall on queue exit block: temporarily disable discard granularity Jeremy Fitzhardinge (6): xen: move Xen-testing predicates to common header xen/xenbus: make DEVICE_ATTR()s static xen: restore runstate_info even if !have_vcpu_info_placement xen: register runstate info for boot CPU early xen: don't call dpm_resume_noirq() with interrupts disabled. xen: use iret for return from 64b kernel to 32b usermode Jerome Glisse (20): drm/radeon/kms: fix oops when set_base is call with no FB drm/radeon/kms: Disable agp only if we are dealing with an AGP GPU drm/radeon/kms: Don't overwrite crtc_gen_cntl or crtc_gen_cntl2 drm/radeon/kms: Rework radeon object handling drm: Add search/get functions to get a block in a specific range drm/ttm: Rework validation & memory space allocation (V3) drm/radeon/kms: Convert radeon to new TTM validation API (V2) drm/radeon/kms: Fix NULL ptr dereference drm/radeon/kms: actualy set the eviction placements we choose drm/radeon/kms: cleanup structure and module if initialization fails drm/ttm: Initialize eviction placement in case the driver callback doesn't drm: Add memory manager debug function drm/ttm: Print debug information on memory manager when eviction fails drm/ttm: Convert ttm_buffer_object_init to use ttm_placement drm/radeon/kms: Convert radeon to new ttm_bo_init drm/ttm: Fix printk format & compute bo->mem.size at bo initialization drm/ttm: Fix memory type manager debug information printing drm/radeon/kms: If no placement is supplied fallback to system drm/radeon/kms: Check if bo we got from ttm are radeon object or not drm/radeon/kms: Return to userspace on ERESTARTSYS Jerry Chuang (1): Staging: Added Realtek rtl8192u driver to staging Jes Sorensen (1): Toshiba Bluetooth Enabling driver (RFKill handler v3) Jesse Barnes (10): PCI: determine CLS more intelligently drm/i915: add render standby support drm/i915: enable self-refresh on 965 drm: when queuing an event with NEXTONMISS, return queued sequence to userspace drm: when queuing an event with NEXTONMISS, return queued sequence to userspace drm: use page flip event to signal flip completion drm/i915: add GETPARAM request for page flipping PCI: ibmphp_hpc: don't release hw sem twice if kthread stops drm/i915: pageflip fixes drm/i915: warn if Pineview CxSR can't be enabled Jesse Brandeburg (3): ixgbe: change default ring size ixgbe: performance tweaks ixgbe: use EIAM to automask MSI-X Jie Yang (5): atl1c: duplicate atl1c_get_tpd atl1c: change atl1c_buffer struct and restructure clean atl1c_buffer procedure atl1e:disable NETIF_F_TSO6 for hardware limit atl1c:add pci map direction in atl1c_buffer flags atl1c:use common_task instead of reset_task and link_chg_task Jie Zhang (2): net: add net_tstamp.h to headers_install nommu: fix malloc performance by adding uninitialized flag Jin Dongming (1): ipv6: Fix the size overflow of addrconf_sysctl array Jing Huang (1): [SCSI] bfa: fixed checkpatch errors for bfad files Jiri Kosina (15): HID: fix MODULE_AUTHOR usage in HID modules HID: remove useless DRIVER_VERSION macro HID: fixup quirk for NCR devices HID: remove BKL from hiddev_ioctl_usage() CIRS: turn local_save_flags() + local_irq_disable()into local_irq_save() CRIS: remove code that has been commented out for many years ataflop: remove buggy/commented-out IRQ disable from do_fd_request() HID: support Logitech/3DConnexion SpaceTraveler and SpaceNavigator crypto: ghash-clmulni-intel - Put proper .data section in place PCI: fix comment typo in bus_numa.h HID: make Media key on Logitech DiNovo Mini work HID: add support for Acan FG-8100 barcode reader Bluetooth: Implement raw output support for HIDP layer Merge branches 'bkl-removal', 'upstream' and 'upstream-fixes' into for-linus Merge branch 'for-next' into for-linus Jiri Olsa (3): tracing: Enable records during the module load tracing: Enable "__cold" functions tracing: Fix function graph trace_pipe to properly display failed entries Jiri Pirko (1): bonding: introduce primary_reselect option Jiri Slaby (6): NET: sungem, use spin_trylock_irqsave KVM: fix lock imbalance in kvm_*_irq_source_id() pata_via: fix double put on isa bridge [SCSI] scsi_lib: fix potential NULL dereference PM / Hibernate: Swap, use KERN_CONT mtd: cfi_cmdset_0002, fix lock imbalance Jiro SEKIBA (12): nilfs2: move definition of struct nilfs_btree_node nilfs2: Using nobarrier option instead of barrier=off nilfs2: cleanup unused match_bool function nilfs2: delete mark_inode_dirty in nilfs_new_inode nilfs2: delete mark_inode_dirty from nilfs_set_link nilfs2: expand inode_inc_link_count and inode_dec_link_count nilfs2: delete redundant mark_inode_dirty nilfs2: split nilfs_unlink as nilfs_do_unlink and nilfs_unlink nilfs2: change return type of nilfs_commit_chunk nilfs2: delete mark_inode_dirty in nilfs_commit_chunk nilfs2: delete mark_inode_dirty in nilfs_delete_entry nilfs2: replace mark_inode_dirty as nilfs_mark_inode_dirty Joakim Tjernlund (11): mtd: CFI cmdset_0002: enable erase-suspend-program powerpc/8xx: Invalidate non present TLBs powerpc/8xx: Update TLB asm so it behaves as linux mm expects. powerpc/8xx: Tag DAR with 0x00f0 to catch buggy instructions. powerpc/8xx: Fixup DAR from buggy dcbX instructions. powerpc/8xx: Add missing Guarded setting in DTLB Error. powerpc/8xx: Restore _PAGE_WRITETHRU powerpc/8xx: Start using dcbX instructions in various copy routines powerpc/8xx: Remove DIRTY pte handling in DTLB Error. powerpc/8xx: DTLB Miss cleanup crc32: minor optimizations and cleanup Joe Eykholt (19): [SCSI] libfc: fix typo in retry check on received PRLI [SCSI] libfc: lport: fix minor documentation errors [SCSI] libfc: don't WARN_ON in lport_timeout for RESET state [SCSI] libfc: fix free of fc_rport_priv with timer pending [SCSI] libfcoe: Allow FIP to be disabled by the driver [SCSI] libfcoe: fip: use SCSI host number to identify debug messages. [SCSI] libfcoe: fip: allow FIP receive to be called from IRQ. [SCSI] libfcoe: FIP should report link to libfc whether selected or not [SCSI] libfcoe: don't send ELS in FIP mode if no FCF selected [SCSI] libfc: fix RNN_ID smashing skb payload [SCSI] libfc: fix symbolic name registrations smashing skb data [SCSI] libfc: fix fc_els_resp_type to correct display of CT responses [SCSI] libfc: add set_fid function to libfc template [SCSI] libfc: add host number to lport link up/down messages. [SCSI] libfcoe: fcoe: simplify receive FLOGI response [SCSI] fnic: Add FIP support to the fnic driver [SCSI] libfc: register FC4 features with the FC switch [SCSI] fnic: enable bsg pass-thru for fcping [SCSI] libfc fcoe: increase ELS and CT timeouts Joe Perches (43): ftrace.c: Add #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt testmmiotrace.c: Add and use pr_fmt(fmt) appletalk/ddp.c: Neaten checksum function x86: GART: pci-gart_64.c: Use correct length in strncmp niu.c: Use correct length in strncmp drivers/net: request_irq - Remove unnecessary leading & from second arg drivers/isdn/gigaset: tasklet_init - Remove unnecessary leading & from second arg drivers/net: tasklet_init - Remove unnecessary leading & from second arg net/ipv4: Move && and || to end of previous line netfilter: net/ipv[46]/netfilter: Move && and || to end of previous line net/ipv6: Move && and || to end of previous line net: Move && and || to end of previous line drivers/net: Move && and || to end of previous line [S390] MAINTAINERS: Add s390 drivers block include/linux/if_ether.h: Remove unused defines MAC_BUF_SIZE and DECLARE_MAC_BUF MAINTAINERS: Add PowerPC patterns arch/x86/kernel/microcode*: Use pr_fmt() and remove duplicated KERN_ERR prefix x86: es7000_32.c: Use pr_ and add pr_fmt(fmt) x86: setup_percpu.c: Use pr_ and add pr_fmt(fmt) x86: i8254.c: Add pr_fmt(fmt) x86: kmmio.c: Add and use pr_fmt(fmt) x86: mmio-mod.c: Use pr_fmt ftrace.h: Use common pr_info fmt string drivers/net/bonding/: : use pr_fmt x86: Fix build warning in arch/x86/mm/mmio-mod.c dynamic_debug.h/kernel.h: Remove KBUILD_MODNAME from dynamic_pr_debug kernel.h: remove initialization of bool in printk_once kernel.h: add printk_ratelimited and pr__rl scripts/get_maintainer.pl: add --roles and --rolestats scripts/get_maintainer.pl: fix --non with --git-blame and cleanups scripts/get_maintainer.pl: support multiple VCSs - add mercurial MAINTAINERS: rename PALM TREO section and file patterns MAINTAINERS: remove file pattern from KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V MAINTAINERS: Update file patterns for WOLFSON MICROELECTRONICS PMIC DRIVERS lib/vsprintf.c: add %pU to print UUID/GUIDs fs/xfs/xfs_log_recover.c: use %pU to print UUIDs random.c: use %pU to print UUIDs drivers/firmware/dmi_scan.c: use %pUB to print UUIDs drivers/md/md.c: use %pU to print UUIDs fs/gfs2/sys.c: use %pUB to print UUIDs fs/ubifs: use %pUB to print UUIDs efi.h: use %pUl to print UUIDs parport_pc.c: use correct length in strncmp Joerg Albert (3): ar9170: fixed coding style, moved define ar9170: add heavy clip handling ar9170: handle overflow in tsf_low register during get_tsf Joerg Roedel (50): x86/amd-iommu: un__init iommu_setup_msi x86/amd-iommu: attach devices to pre-allocated domains early x86/amd-iommu: Separate internal interface definitions x86/amd-iommu: Update copyright headers x86/amd-iommu: Add an index field to struct amd_iommu x86/amd-iommu: Add per IOMMU reference counting x86/amd-iommu: Add function to complete a tlb flush x86/amd-iommu: Make iommu_flush_pages aware of multiple IOMMUs x86/amd-iommu: Use __iommu_flush_pages for tlb flushes x86/amd-iommu: Remove iommu_flush_domain function x86/amd-iommu: Implement protection domain list x86/amd-iommu: Reimplement amd_iommu_flush_all_domains() x86/amd-iommu: Reimplement flush_all_domains_on_iommu() x86/amd-iommu: Make np-cache a global flag x86/amd-iommu: Use check_device for amd_iommu_dma_supported x86/amd-iommu: Use check_device in get_device_resources x86/amd-iommu: Remove iommu parameter from dma_ops_domain_(un)map x86/amd-iommu: Make alloc_new_range aware of multiple IOMMUs x86/amd-iommu: Remove iommu parameter from __(un)map_single x86/amd-iommu: Remove iommu specific handling from dma_ops path x86/amd-iommu: Let domain_for_device handle aliases x86/amd-iommu: Simplify get_device_resources() x86/amd-iommu: Move find_protection_domain to helper functions x86/amd-iommu: Use get_device_id and check_device where appropriate x86/amd-iommu: Remove iommu parameter from dma_ops_domain_alloc x86/amd-iommu: Move some pte allocation functions in the right section x86/amd-iommu: Rearrange dma_ops related functions x86/amd-iommu: Remove support for domain sharing x86/amd-iommu: Use dev->arch->iommu to store iommu related information x86/amd-iommu: Add device bind reference counting x86/amd-iommu: Keep devices per domain in a list x86/amd-iommu: Cleanup attach/detach_device code x86/amd-iommu: Introduce iommu_flush_device() function x86/amd-iommu: Cleanup DTE flushing code x86/amd-iommu: Move reset_iommu_command_buffer out of locked code x86/amd-iommu: Remove amd_iommu_pd_table Merge branch 'gart/fixes' into amd-iommu/2.6.33 KVM: SVM: reorganize svm_interrupt_allowed KVM: SVM: don't copy exit_int_info on nested vmrun KVM: SVM: Remove remaining occurences of rdtscll KVM: SVM: Move INTR vmexit out of atomic code KVM: SVM: Add tracepoint for nested vmrun KVM: SVM: Add tracepoint for nested #vmexit KVM: SVM: Add tracepoint for injected #vmexit KVM: SVM: Add tracepoint for #vmexit because intr pending KVM: SVM: Add tracepoint for invlpga instruction KVM: SVM: Add tracepoint for skinit instruction KVM: SVM: Remove nsvm_printk debugging code x86/amd-iommu: Fix passthrough mode x86/amd-iommu: Fix PCI hotplug with passthrough mode Johann Friedrichs (1): V4L/DVB (13239): saa7146: fix memory leakage in pagetable-handling Johannes Berg (69): net: introduce NETDEV_POST_INIT notifier iwlwifi: clean up ht config a little iwlwifi: clean up ht config naming iwlwifi: clarify and clean up chain settings iwlwifi: fix a typo iwlwifi: default to using all chains iwlwifi: support idle for 6000 series hw wext: refactor iwlwifi: device tracing iwlwifi: LED cleanup wireless: make wireless drivers select core cfg80211/mac80211: use debugfs_remove_recursive mac80211_hwsim: don't register CCK rates on 5ghz mac80211: remove outdated comment mac80211: split hardware scan by band mac80211: fix radiotap header generation mac80211: remove RX_FLAG_RADIOTAP mac80211: introduce ieee80211_beacon_get_tim() mac80211: deprecate qual value mac80211: unconditionally set IEEE80211_TX_CTL_SEND_AFTER_DTIM mac80211: also drop qos-nullfunc frames silently mac80211: remove sent_ps_buffered mac80211: remove bogus code mac80211: make CALL_TXH a statement mac80211: fix scan abort sanity checks cfg80211: validate scan channels cfg80211: remove dead variable mac80211: make ieee80211_find_sta per virtual interface mac80211: fix internal scan request mac80211: async station powersave handling iwlwifi: don't double-activate queue 4 iwlwifi: fix FIFO vs. queue confusion iwlwifi: add FIFO usage for 5000 tracing: Fix event format export netlink: remove subscriptions check on notifier iwlwifi: report PS filtered status iwlwifi: add sleep_tx_count ucode station API iwlwifi: handle unicast PS buffering mac80211: let sta_info_get_by_idx get sta by sdata mac80211: convert aggregation to operate on vifs/stas mac80211: push michael MIC report after DA check mac80211: cleanup reorder buffer handling mac80211: trim RX data mac80211: improve rate handling mac80211: remove dev_hold/put calls mac80211: use fixed broadcast address mac80211: make software rate control optional cfg80211: re-join IBSS when privacy changes mac80211: remove encrypt parameter from ieee80211_tx_skb mac80211: move TX status handling cfg80211: convert bools into flags cfg80211: introduce capability for 4addr mode cfg80211: disallow bridging managed/adhoc interfaces mac80211: request TX status where needed mac80211: avoid spurious deauth frames/messages mac80211: add per-station HT capability file mac80211: remove dead struct member mac80211: fix rcu locking iwlwifi: separate IO tracing mac80211: move cmntr flag out of rx flags mac80211: move aMPDU RX reorder code mac80211: correctly place aMPDU RX reorder code mac80211: log more data when tracing b43: fix two warnings mac80211: fix reorder buffer release Input: appletouch - give up maintainership mac80211: recalculate idle later in MLME tracing: Add full state to trace_seq firmware_class: make request_firmware_nowait more useful Johannes Stezenbach (1): mtd: m25p80: make command buffer DMA-safe Johannes Weiner (1): rtc-x1205: unconditionally set date when setting clock John Bonesio (1): powerpc/5200: add LocalPlus bus FIFO device driver John Dykstra (1): IP: Cleanups John Johansen (1): Config option to set a default LSM John Kacur (17): perf annotate: Add the cmp_null function and make use of it perf tools: Protect header files with a consistent style perf tools: Create util/sort.and use it perf tools: Put common histogram functions in their own file x86, cpuid: Remove the bkl from cpuid_open() x86, cpuid: Simplify the code in cpuid_open blackfin: Remove the BKL from sys_execve frv: Remove the BKL from sys_execve h83000: Remove BKL from sys_execve m68k: Remove the BKL from sys_execve m68knommu: Remove the BKL from sys_execve mn10300: Remove the BKL from sys_execve agp: Remove the BKL from agp_open perf tools: Add perf.data to .gitignore perf tools: Use common process_event functions for annotate and report m68k: Remove the BKL from sys_execve efirtc: explicitly set llseek to no_llseek John Linn (2): Xilinx: SPI: Fix bits_per_word for transfers microblaze: Fix the heartbeat gpio to be more robust John Ogness (1): spi/i.MX: fix broken error handling for gpio_request John W. Linville (25): wireless: implement basic ethtool support for cfg80211 devices mac80211: support ETHTOOL_GPERMADDR iwmc3200wifi: support ETHTOOL_GPERMADDR ipw2200: support ETHTOOL_GPERMADDR orinoco: support ETHTOOL_GPERMADDR net/wireless/ethtool.h: drop unnecessary include of linux/ethtool.h mac80211: replace netif_tx_{start,stop,wake}_all_queues b43: use ieee80211_rx_ni() wl1251: re-disable PG10 chips strip: move driver to staging arlan: move driver to staging wavelan: move driver to staging netwave: move driver to staging wireless: remove WLAN_80211 and WLAN_PRE80211 from Kconfig wl1271: depend on INET mwl8k: use integral index instead of pointer for driver_data iwlwifi: fix iwl1000 "RTS/CTS for HT" merge damage znet: fix build failure from i82593.h relocation wl3501_cs: remove pedantic build warning libipw: initiate cfg80211 API conversion (v2) ath9k: set ps_default as false ath9k: remove warnings related to signed/unsigned type mismatch iwlwifi: fix warning from ieee80211_stop_tx_ba_cb_irqsafe argument change wireless: correctly report signal value for IEEE80211_HW_SIGNAL_UNSPEC wireless: update old static regulatory domain rules John Williams (4): microblaze: Remove the buggy ALLOW_EDIT_AUTO config option microblaze: Use lowest-common-denominator default CPU settings microblaze: Simple __copy_tofrom_user for noMMU microblaze: Core oprofile configs and hooks Jon Brassow (5): dm snapshot: avoid else clause in persistent_read_metadata dm snapshot: consolidate insert exception functions dm snapshot: rename dm_snap_exception to dm_exception dm snapshot: rename exception_table to dm_exception_table dm snapshot: rename exception functions Jon Hunter (2): nohz: Prevent clocksource wrapping during idle nohz: Allow 32-bit machines to sleep for more than 2.15 seconds Jonathan Cameron (5): MAINTAINERS: Add entries for IMote 2 and Stargate 2 Staging: IIO: Remove tsl2561 driver. Support merged with tsl2563. Staging: IIO: Add tsl2560-2 support to tsl2563 driver. Staging: IIO: add selection of IIO_SW_RING to LIS3L02DQ as needed hwmon: (sht15) Off-by-one error in array index + incorrect constants Jonathan Corbet (4): pm_qos: remove BKL pm_qos: clean up racy global "name" variable V4L/DVB (13377): make struct videobuf_queue_ops constant V4L/DVB (13417): Fix videobuf_queue_vmalloc_init() prototype Jonathan Nieder (3): scripts/package: add KBUILD_PKG_ROOTCMD variable scripts/package: deb-pkg: use fakeroot if available x86: Fix kprobes build with non-gawk awk Joonyoung Shim (7): ASoC: Factor out I2C 8 bit address 8 bit data I/O ASoC: AK4671: add ak4671 codec driver ASoC: Add jack_status_check callback function for GPIO jacks ASoC: Rename controls with a / in wm_hubs V4L/DVB (13599): radio-si470x: move some file operations to common file V4L/DVB (13600): radio-si470x: support RDS on si470x i2c driver V4L/DVB (13601): radio-si470x: support PM functions Josef Bacik (3): rt2800: do not enable tbtt unless we are in a beacon mode ext4: wait for log to commit when umounting Btrfs: make metadata chunks smaller Josh Stone (1): tracing: Remove the stale include/trace/power.h Jouni Hogander (2): OMAP3: PM: Save and restore also CM_CLKSEL1_PLL_IVA2 OMAP3: PM: Use pwrdm_set_next_pwrst instead of set_pwrdm_state in idle loop Jouni Malinen (6): cfg80211: Fix WEXT compat siwauth wpa and group cipher mac80211_hwsim: Check idle state on TX mac80211_hwsim: Send ACK frames on the hwsim0 interface mac80211: Do not queue Probe Request frames for station MLME cfg80211: Allow reassociation in associated state mac80211: Fix TX status reporting for injected data frames Juan Quintela (1): KVM: remove pre_task_link setting in save_state_to_tss16 Juergen Beisert (2): MXC NFC: Add the clock resource to support NFC in i.MX35 MXC NFC: Fix NFCs address area on i.MX35 Juha Keski-Saari (7): mfd: Add all twl4030 regulators to the twl4030 mfd driver twl-regulator: Add all twl4030 regulators to twlreg_info twl-regulator: Define critical regulators as always_on twl-regulator: Add turnon-delay and REMAP config to twlreg_info struct twl-regulator: Restore REMAP configuration in regulator probe twl-regulator: Add turnon delay to reg_enable twl-regulator: Fix reg_disable functionality for 4030 and 6030 Juha Leppanen (1): perf probe: Fix strtailcmp() to compare s1and s2[0] Juha Yrjola (1): OMAP: Store reboot mode in scratchpad on OMAP34xx Julia Lawall (49): perf tools: Move dereference after NULL test ASoC: Move dereference after NULL test drivers/net/wireless: correct check on CCS_START_NETWORK ext4: fix i_flags access in ext4_da_writepages_trans_blocks() drivers/net/atl1c: remove exceptional & on function name drivers/net/can: remove exceptional & on function name drivers/net: remove exceptional & on function name drivers/net/ipg.c: remove exceptional & on function name drivers/net/irda: remove exceptional & on function name drivers/net/pppol2tp.c: remove exceptional & on function name drivers/net/r6040.c: remove exceptional & on function name drivers/net/smsc9420.c: remove exceptional & on function name drivers/net/typhoon.c: remove exceptional & on function name drivers/net/via-rhine.c: remove exceptional & on function name drivers/net/via-velocity.c: remove exceptional & on function name drivers/net/wan: remove exceptional & on function name drivers/net/adm8211.c: remove exceptional & on function name drivers/net/wireless/iwlwifi: remove exceptional & on function name drivers/net/wireless/p54: remove exceptional & on function name drivers/net/wireless/rtl818x: remove exceptional & on function name drivers/pcmcia: remove unnecessary kzalloc arch/arm/plat-omap: Drop an unnecessary NULL test V4L/DVB (13166): remove duplicate structure field initialization V4L/DVB (13396): correct initialization of audio_mode V4L/DVB (13413): introduce missing kfree perf tools: Correct size computation in tracepoint_id_to_path() RDMA/nes: Pass correct size to ioremap_nocache() perf tools: Correct size given to memset net/mac80211: Correct size given to memset dm exception store: free tmp_store on persistent flag error USB: skeleton: Correct use of ! and & USB: xhci-mem.c: introduce missing kfree USB: ehci-omap.c: introduce missing kfree Staging: slicoss: remove duplicate structure field initialization drivers/atm: Correct code taking the size of a pointer drivers/net/sfc: Correct code taking the size of a pointer drivers/net/cpmac.c: Correct code taking the size of a pointer drivers/net/usb: Correct code taking the size of a pointer ALSA: sound/isa/gus: Correct code taking the size of a pointer ASoC: Correct code taking the size of a pointer drivers/cpuidle: Move dereference after NULL test drivers/mmc: Move dereference after NULL test V4L/DVB (13610): uvc: Correct size given to memset V4L/DVB (13611): radio-tea5764: Correct size given to memset V4L/DVB (13685): Correct code taking the size of a pointer drivers/video: Move dereference after NULL test drivers/char/ipmi: Use KCS_IDLE_STATE drivers/regulator: use PTR_ERR to get error code drivers/video/via/viafbdev.c: correct code taking the size of a pointer Julie Zhu (1): USB: Add support for Xilinx USB host controller Jun Nie (2): pxa168fb: fix offset setting at initialization pxa168fb: remove useless vsync/hsync invert flag Jun'ichi Nomura (2): Add a tracepoint for block request remapping dm: trace request based remapping Jupyung Lee (1): sched: Move update_curr() in check_preempt_wakeup() to avoid redundant call Jussi Kivilinna (3): rndis_wlan: handle NL80211_AUTHTYPE_AUTOMATIC rndis_wlan: fix buffer overflow in rndis_query_oid rndis_wlan: disable stall workaround Justin P. Mattock (3): doc: Fix a typo in slub.txt. ALSA: hda - iMac 9,1 sound patch. battery: fix typo in comment Juuso Oikarinen (58): wl1271: Correction to TX block allocation calculation wl1271: Security sequence number handling for TX (for WPA) wl1271: Correct TKIP header space handling in TX path wl1271: Implement delayed entry into ELP wl1271: mask aid bits 14 and 15 in ps-poll template wl1271: Implementation for SPI busy word checking wl1271: Configure rate policies based on AP rates wl1271: Update join usage wl1271: Corrections to TX path wl1271: use workqueue provided by mac80211 instead of the default wl1271: Clear probe-request template after scan wl1271: Multicast filtering configuration wl1271: Use vmalloc to allocate memory for firmware wl1271: Add connection monitoring configuration wl1271: Enable beacon filtering with the stack wl1271: Configure beacon filtering on if PSM used wl1271: Mask unneeded events from firmware to conserve power wl1271: Update memory mapping for firmware revision 6.1.0.0.241 wl1271: Remove RX workaround wl1271: Add top-register access functions wl1271: RefClk configuration wl1271: Update interrupt handling by removing an extra SPI read wl1271: Enable ELP wl1271: Enable smart reflex wl1271: Update TX path block calucation algo wl1271: Remove outdated SPI functions wl1271: Update boot time configuration for the new firmware wl1271: Workaround for reference clock setting on boot. wl1271: Add structure for firmware configuration values wl1271: Add config structure for RX path parameters wl1271: Add config structure for TX path parameters wl1271: Add config structure for connection management parameters wl1271: Add config structure for FW init parameters wl1271: Move default FW config struct away from stack wl1271: Fix IRQ enable handling on FW init failure wl1271: Implement beacon early termination support wl1271: Remove busy-word checking wl1271: Fix multicast list handling wl1271: Fix event handling mechanism wl1271: Support for IPv4 ARP filtering wl1271: Remove unnecessary rx_descriptor memory allocation wl1271: Correct memory handling for FW boot wl1271: Fix filter configuration wl1271: Set IEEE80211_FCTL_TODS in the null data template wl1271: Remove excess null-data template settings wl1271: Increase TX power value wl1271: Check result code of commands wl1271: Add retry implementation for PSM entries wl1271: Correct endianness-handling of command status wl1271: Generalize command response reading wl1251: Add connection monitoring configuration wl1251: Enable beacon filtering with the stack wl1251: Configure beacon filtering on if PSM used wl1251: Implement delayed entry into ELP mode wl1251: Fix regression in IRQ loop handling wl1271: Decrease BET consecutive terminated beacons value to 10 wl1271: Prevent PSM-entry retry loop if PSM cancelled wl1271: Set PSM support flags in driver configuration JĂ©rĂ©my Cochoy (1): ext2: fix comment in ext2_find_entry about return values K.Prasad (13): hw-breakpoints: prepare the code for Hardware Breakpoint interfaces hw-breakpoints: introducing generic hardware breakpoint handler interfaces hw-breakpoints: x86 architecture implementation of Hardware Breakpoint interfaces hw-breakpoints: modifying generic debug exception to use thread-specific debug registers hw-breakpoints: use wrapper routines around debug registers in processor related functions hw-breakpoints: use the new wrapper routines to access debug registers in process/thread code hw-breakpoints: modify signal handling code to refrain from re-enabling HW Breakpoints hw-breakpoints: modify Ptrace routines to access breakpoint registers hw-breakpoints: cleanup HW Breakpoint registers before kexec hw-breakpoints: sample HW breakpoint over kernel data address hw-breakpoints: ftrace plugin for kernel symbol tracing using HW Breakpoint interfaces hw-breakpoints: reset bits in dr6 after the corresponding exception is handled hw-breakpoint: Attribute authorship of hw-breakpoint related files KAMEZAWA Hiroyuki (4): oom-kill: fix NUMA constraint check with nodemask memcg: coalesce uncharge during unmap/truncate memcg: coalesce charging via percpu storage memcg: make memcg's file mapped consistent with global VM KOSAKI Motohiro (14): mtd: don't use PF_MEMALLOC Revert "Intel IOMMU: Avoid memory allocation failures in dma map api calls" mmap: don't return ENOMEM when mapcount is temporarily exceeded in munmap() mm: move inc_zone_page_state(NR_ISOLATED) to just isolated place vmscan: stop kswapd waiting on congestion when the min watermark is not being met vmscan: separate sc.swap_cluster_max and sc.nr_max_reclaim vmscan: kill hibernation specific reclaim logic and unify it vmscan: zone_reclaim() don't use insane swap_cluster_max vmscan: kill sc.swap_cluster_max vmscan: make consistent of reclaim bale out between do_try_to_free_page and shrink_zone mm: simplify try_to_unmap_one() MAINTAINERS: mark cifs mailing list as "moderated for non-subscribers" Subject: Re: [PATCH] strstrip incorrectly marked __must_check oom-kill: show virtual size and rss information of the killed process Kailang Yang (1): ALSA: hda - Add ALC661/259, ALC892/888VD support Kalle Jokiniemi (6): OMAP3: PM: Fix secure SRAM context save/restore ARM: OMAP: SMS: save/restore of SMS_SYSCONFIG for off-mode OMAP3: PM: Fix PLL_MOD CLKEN offset in scratchpad PM: Disable usb host HW save and restore OMAP3: PM: Enable IO-CHAIN wakeup OMAP3: PM: CPUidle: fix init sequencing Kalle Valo (18): wl1251: remove wl1251_netlink.h cfg80211: add firmware and hardware version to wiphy at76c50x-usb: set firmware and hardware version in wiphy wl1251: rename spi device to wl1251 mac80211: add ieee80211_rx_ni() wl1251: use ieee80211_rx_ni() mac80211: refactor dynamic power save check mac80211: fix dynamic power save for devices with nullfunc support in hw wl1251: enable power save wl1251: allocate space for firmware with vmalloc() wl1251: mask aid bits 14 and 15 in ps-poll template wl1251: remove depcreated qual usage omap3: rx51: Add wl1251 wlan driver support cfg80211: indent regulatory messages with spaces wl1251: remove false warning messages wl1251: fix bssid handling wl1251: don't build null data template in wl1251_op_config() omap3: rx51: Use wl1251 in SPI mode 3 Karel Zak (2): partitions: use sector size for EFI GPT partitions: read whole sector with EFI GPT header Karen Xie (1): cxgb3: Added private MAC address and provisioning packet handler for iSCSI Kashyap, Desai (24): [SCSI] mpt2sas: Driver will use sas address instead of handle as a lookup [SCSI] mpt2sas: Expander remove fails when it is processing another expander add. [SCSI] mpt2sas: Add support in the driver to check for valid response info [SCSI] mpt2sas: New device SAS2208 support is added [SCSI] mpt2sas: Adding MPI Headers - revision L [SCSI] mpt2sas: Support for stopping driver when Firmware encounters [SCSI] mpt2sas: Fixed some of the comment [SCSI] mpt2sas: Added command line option diag_buffer_enable. [SCSI] mpt2sas: Add Extended Type for Diagnostic Buffer support [SCSI] mpt2sas: Added support to set the TimeStamp when sending ioc_init [SCSI] mpt2sas: Limit the max_depth to 32 for SATA devices which are not part of volume [SCSI] mpt2sas: Added new info messages for IR and Expander events. [SCSI] mpt2sas: Retrieve the ioc facts prior to putting the controller into READY state [SCSI] mpt2sas: Return DID_TRANSPORT_DISRUPTED in nexus loss,SCSI_MLQUEUE_DEVICE_BUSY if device is busy [SCSI] mpt2sas: mpt2sas_base_get_sense_buffer_dma should be returning little endian [SCSI] mpt2sas : PPC (power pc) endian bug fix's [SCSI] mpt2sas: Freeze the sdev IO queue when firmware sends internal dev reset [SCSI] mpt2sas : Add support for RAID Action System Shutdown Initiated at OS shutdown [SCSI] mpt2sas: No link rate change, do not call update links nor unblock device [SCSI] mpt2sas: Bump version 03.100.03.00 [SCSI] mptctl : Remove printk which floods unnecessary messages to var/log/message [SCSI] mptspi: Fix for incorrect data underrun errata [SCSI] mptfusion: Bump version to 3.04.13 [SCSI] mpt2sas: add missing initialization of scsih_cmds Kay Sievers (6): Driver Core: devtmpfs: ignore umask while setting file mode Driver core: devtmpfs: prevent concurrent subdirectory creation and removal Driver Core: devtmpfs: use sys_mount() Driver Core: devtmpfs: do not remove non-kernel-created directories Driver Core: devtmpfs: cleanup node on device creation error Driver-Core: devtmpfs - set root directory mode to 0755 Kazuya Mio (1): ext4: initialize moved_len before calling ext4_move_extents() Kees Cook (2): sysctl: require CAP_SYS_RAWIO to set mmap_min_addr x86, mm: Report state of NX protections during boot Keith Rutkowski (1): HID: add NOGET quirk for another device from CH Products Ken Kawasaki (1): 3c574_cs: disable irq before calling el3_interrupt Keng-Yu Lin (1): ath5k: add LED support for Acer Aspire One AO751h/AO531h Kenji Kaneshige (34): PCI: pciehp: disable DLL state changed event notification PCI: pciehp: remove wrong workaround for bad DLLP PCI: pciehp: create files only for existing capabilities PCI: pciehp: return error on read/write failure PCI: pciehp: fix typo in pciehp_probe PCI: pciehp: prevent unnecessary power off PCI: cache PCIe capability offset PCI hotplug: fix oshp evaluation PCI: introduce pci_pcie_cap() PCI: use pci_pcie_cap() in pci core PCIe AER: use pci_pcie_cap() PCIe port bus: use pci_pcie_cap() PCIe ASPM: use pci_pcie_cap() PCI hotplug: use pci_pcie_cap() pciehp: use pci_pcie_cap() PCI: introduce pci_is_pcie() PCI: use pci_is_pcie() in pci core PCIe ASPM: use pci_is_pcie() PCIe AER: use pci_is_pcie() PCI hotplug: use pci_is_pcie() PCI pciehp: fix power fault interrupt storm problem PCI: portdrv: remove redundant pcie_port_device_probe PCI: portdrv: cleanup pcie_device registration PCI: portdrv: remove redundant pcie type calculation PCI: portdrv: move PME capability check PCI: portdrv: check capabilities first PCI: portdrv: cleanup service irqs initialization PCI: portdrv: enable device before irq initialization PCI: portdrv: add missing irq cleanup PCI: portdrv: minor cleanup for pcie_port_device_register PCI: portdrv: remove unnecessary struct pcie_port_data PCI: portdrv: remove redundant definitions PCI: fix BUG_ON triggered by logical PCIe root port removal [IA64] preallocate IA64_IRQ_MOVE_VECTOR Kevin Hilman (17): OMAP3: PM debug: allow runtime toggle of PM features PM debug: allow configurable wakeup from suspend on OMAP GPtimer OMAP3: PM: decouple PER and CORE context save and restore OMAP3: PM: CPUidle: obey enable_off_mode flag OMAP3: PM: CPUidle: check activity for C2, C3, correct accounting omap3: keep SoC features on the same line davinci: da830 EVM: make machine name string consistent with da850 davinci: da830: add support for new silicon revisions davinci: da830 EVM: remove #include davinci: DMx and da8xx defconfig updates NET: smc91x: convert to dev_pm_ops OMAP: omap_device: add to_omap_device() macro OMAP: omap_device: use UINT_MAX for default wakeup latency limit OMAP: omap_device: use read_persistent_clock() instead of getnstimeofday() OMAP: hwmod: warn on missing clockdomain OMAP: omap_device: fix nsec/usec conversion in latency calculations OMAP: omap_device: track latency in nanoseconds Kevin Wells (1): i2c-pnx: Map I2C adapter number to platform ID number Kevyn-Alexandre ParĂ© (3): Staging: comedi: amplc_pc263.c: fix coding style issues Staging: comedi: amplc_pc263.c: more coding style fixes Staging: comedi: pcl726: fix coding style issues Kirill A. Shutemov (1): memcg: fix memory.memsw.usage_in_bytes for root cgroup Kiyoshi Ueda (14): dm: abstract dm_in_flight function dm: use clone in map_request function dm: pass gfp_mask to alloc_rq_tio dm: abstract clone_rq dm: simplify request based suspend dm: use md pending for in flight IO counting dm: refactor request based completion functions dm: move dm_end_request dm: add request based barrier support dm mpath: flush workqueues before suspend completes dm: swap target postsuspend call and setting suspended flag dm: rename dm_suspended to dm_suspended_md dm: export suspended state to targets dm mpath: reject messages when device is suspended Klaas van Gend (4): staging: comedi: multiq3: remove warning on braces staging: comedi: multiq3: add KERN_ Staging: comedi: comedi_fc: checkpatch.pl fixes Staging: comedi: drivers: ni_6527: fixup checkpatch.pl warnings Klaus-Dieter Wacker (2): lcs: ODEBUG: object is on stack, but not annotated. lcs: Recognize return codes of ccw_device_set_online(). Kleber Sacilotto de Souza (2): PCI: fix coding style issue in pci_save_state() [SCSI] ipr: fix EEH recovery Konrad Eisele (1): sparc,leon: Sparc-Leon SMP support Konrad Rzeszutek Wilk (4): Fix toogle whether xenbus driver should be built as module or part of kernel. fb-defio: If FBINFO_VIRTFB is defined, do not set VM_IO flag. fb-defio: Inhibit VM_IO flag to be set on vmalloc-ed framebuffers. xen pvfb: Inhibit VM_IO flag to be set on vmalloc-ed framebuffers. Krishna Kumar (9): cxgb3: No need to wake queue in xmit handler genetlink: Optimize genl_register_family() genetlink: Optimize and one bug fix in genl_generate_id() net: Introduce sk_tx_queue_mapping net: IPv6 changes net: Fix for dst_negative_advice net: Use sk_tx_queue_mapping for connected sockets cxgb3: Set the rxq net: Handle NETREG_UNINITIALIZED devices correctly Kristian Høgsberg (11): drm: Add async event synchronization for drmWaitVblank drm/i915: Support 30 bit depth modes drm: Add async event synchronization for drmWaitVblank drm/kms: add page flipping ioctl drm/i915: Unregister i915_wedged debugfs entry using the right key drm/i915: Hold struct_mutex while unreffing pwrctx object drm/i915: Disable pwrctx before unpin and free drm/i915: Add intel implementation of the pageflip ioctl drm/i915: Fix typo in ioctl struct name. perf: Don't free perf_mmap_data until work has been done drm: Add compatibility #ifdefs for *BSD Kristoffer Glembo (7): sparc: Support for GRLIB APBUART serial port apbuart: Use of_find_node_by_path to find root node. No auxio on LEON Added sparc_leon3_snooping_enabled() and converted extern inline to static inline sparc, leon: Added Aeroflex Gaisler entry in manufacturer_info structure sparc32: Remove early interrupt enable. sparc,leon: init_leon srmmu cleanup Krzysztof Halasa (4): pata_cs5536: use 32-bit BM DMA template instead of 16-bit. drivers/ata/libata-sff.c: comment spelling fixes doc: Fix IRQ chip docs mtd: Fix comment in Kconfig Krzysztof HaĹ‚asa (18): IXP4xx: change the timer base frequency to 66.666000 MHz. IXP4xx: Fix normally-disabled debugging text in drivers/net/arm/ixp4xx_eth.c. ARM: fix insl() and outsl() endianness on IXP4xx architecture. IXP4xx: Rename indirect MMIO primitives from __ixp4xx_* to __indirect_*. IXP4xx: Drop "__ixp4xx_" prefix from in/out/ioread/iowrite functions for clarity. IXP4xx: Fix compilation failure with CONFIG_IXP4XX_INDIRECT_PCI. IXP4xx: Extend PCI MMIO indirect address space to 1 GB. IXP4xx: move IXDP425 platform macros to the platform code. IXP4xx: move AVILA platform macros to the platform code. IXP4xx: move Coyote platform macros to the platform code. IXP4xx: move NSLU2 platform macros to the platform code. IXP4xx: move NAS100D platform macros to the platform code. IXP4xx: move DSM G600 platform macros to the platform code. IXP4xx: move FSG platform macros to the platform code. IXP4xx: Remove unused Motorola PrPMC1100 platform macros. IXP4xx: move Gemtek GTWX5715 platform macros to the platform code. IXP4xx: Introduce IXP4XX_GPIO_IRQ(n) macro and convert IXP4xx platform files. IXP4xx: GTWX5715 platform only has two PCI IRQ lines, not four. Krzysztof Helt (31): ALSA: sscape: add supoort for SPEA Media FX/Reveal SC-600 ALSA: sscape: convert to firmware loader framework ALSA: sscape: remove MIDI instances counting with limit ULONG_MAX ALSA: sscape: force AD1848 codec mode on old Soundscape ALSA: sscape: coding style fixes ALSA: wss: convert CS4231 mixer to dB scale ALSA: wss: reuse CS4231 controls for AD1848 ALSA: snd_dma_pointer workaround for chipsets with buggy DMA sound: remove OSS Ensoniq SoundScape driver ALSA: es18xx: remove snd_card pointer from snd_es18xx structure ALSA: es18xx: remove snd_audiodrive structure ALSA: cs4236: detect chip in one pass ALSA: es18xx: code improvements ALSA: cs4236: update control names ALSA: opti-miro: use variables directly in the probe function ALSA: cs4236: add dB scale for all volume controls ALSA: opti-miro: remove snd_card pointer from snd_miro structure ALSA: opti-miro: make miro.h header available outside the alsa directory ALSA: opti-miro: expose ACI mixer to outside drivers [CPUFREQ] powernow-k6: set transition latency value so ondemand governor can be used ALSA: opti-miro: fix OOPS if hardware is not detected media/radio: New driver for the radio FM module on Miro PCM20 sound card ALSA: opti-miro: separate comon probing code ALSA: opti-miro: add PnP detection ALSA: opti9xx: remove snd_opti9xx fields fbdev: atafb - add palette register check ALSA: opti93x: set MC indirect registers base from PnP data ALSA: opti93x: fix irq releasing if the irq cannot be allocated fbdev: add palette register check to several drivers i810fb: fix stack exploding intelfb: fix setting of active pipe with LVDS displays Kumar Gala (4): powerpc/85xx: Kconfig cleanup powerpc/fsl-booke: Rework TLB CAM code powerpc/fsl: Add PCI device ids for new QoirQ chips powerpc/p4080: Add basic support for p4080ds platform Kuninori Morimoto (33): sh: mach-ecevec24: Add SDHI support sh: mach-ecovec24: Add USB1 gadget support ASoC: sh: FSI: Remove DMA support ASoC: sh: FSI: Add capture support sh: sh7724: Add SPU2 support sh: mach-ecovec24: modify address map sh: ms7724se: Add runtime PM support for FSI ASoC: sh: fsi: Add runtime PM support sh: mach-ecovec24: LCDC drive ability become high sh: mach-ecovec24: Remove un-defined settings for VPU V4L/DVB (13127): sh_mobile_ceu: add soft reset function V4L/DVB (13128): sh_mobile_ceu_camera: add VBP error support sh: mach-ap325rxa: Add SOCAM_DATA_ACTIVE_HIGH flags for soc-camera sh: mach-ecovec24: MEMORY_SIZE fixup sh: ms7724se: Add ak4642 support sh: mach-ecovec24: Add tw9910 support sh: mach-ecovec24: Add mt9t112 camera support sh: mach-ecovec24: Add FSI sound support V4L/DVB (13642): tw9910: The driver can also handle revision 1 of the chip V4L/DVB (13652): tw9910: Add revision control V4L/DVB (13653): tw9910: simplify chip ID calculation V4L/DVB (13654): tw9910: Tri-state pins when idle V4L/DVB (13655): tw9910: Add power control V4L/DVB (13656): tw9910: tw9910_set_hsync clean up V4L/DVB (13657): tw9910: Add revision control to tw9910_set_hsync V4L/DVB (13663): sh_mobile_ceu: Add V4L2_FIELD_INTERLACED_BT/TB support V4L/DVB (13664): tw9910: use V4L2_FIELD_INTERLACED_BT V4L/DVB (13665): sh_mobile_ceu_camera: Add support for sync polarity selection V4L/DVB (13666): tw9910: modify V/H outpit pin setting to use VALID V4L/DVB (13667): tw9910: modify output format V4L/DVB (13668): tw9910: remove cropping V4L/DVB (13669): tw9910: Add sync polarity support V4L/DVB (13670): soc-camera: Add mt9t112 camera driver Kurt Van Dijck (1): can: sja1000: fix bug using library functions for skb allocation Kyungmin Park (12): ARM: S5PC1XX: registers rename ARM: S5PC1XX: clock registers rename ARM: S5PC1XX: clocks reimplementation ARM: S5PC1XX: add GPIO L banks to register definition ARM: S5PC1XX: GPIO registers rename ARM: S5PC1xx: add gpiolib and external/gpio interrupt support ARM: S5PC1XX: add cpu idle and system reset support SMDKC100: enable S3C FrameBuffer ARM: S5PC1xx: add platform helpers for i2c adapter devices SMDKC100: add I2C0 and I2C1 buses support ARM: S5PC1xx: add platform helpers for SDHCI host controllers SMDKC100: add SDHCI controllers 0, 1 and 2 support Ladislav Michl (6): mtd: fix M29W800D dev_id and uaddr omap: use smc91x_platdata to setup smc91x smc91x: remove OMAP specific bits omap1: Use gen_nand omap: arch/arm/plat-omap/devices.c - sort alphabetically mmci-omap: remove bogus check for host->iclk Lai Jiangshan (15): rcu: Cleanup: balance rcu_irq_enter()/rcu_irq_exit() calls sched, no_hz: Remove unused rq->last_tick_seen field tracing: Prevent build warning: 'ftrace_graph_buf' defined but not used tracing: Separate raw syscall from syscall tracer trace_syscalls: Add syscall nr field trace_kprobes: Fix memory leak trace_kprobes: Always show group name trace_kprobes: Don't output zero offset trace_syscalls: Remove unused event_syscall_enter and event_syscall_exit trace_syscalls: Set event_enter_##sname->data to its metadata trace_syscalls: Remove enter_id exit_id trace_syscalls: Add syscall_nr field to struct syscall_metadata trace_syscalls: Remove duplicate init_enter_##sname() trace_syscalls: Simplify syscall profile trace_syscalls: Remove unused syscall_name_to_nr() Lalit Chandivade (2): [SCSI] qla2xxx: Reread firmware versions information after an ISP abort. [SCSI] qla2xxx: Properly handle UNDERRUN completion statuses. Lamarque Vieira Souza (1): HID: blacklist Acer Ferrari 4005 optical mouse Larry Finger (14): staging: Add proper selection of WIRELESS_EXT and WEXT_PRIV b43legacy: Fix DMA TX bounce buffer copying b43: Remove deprecated 'qual' from returned RX status b43legacy: Remove deprecated 'qual' from returned RX status rtl8187: Remove deprecated 'qual' from returned RX status ssb: Unconditionally log results of core scans b43: avoid PPC fault during resume b43legacy: avoid PPC fault during resume rtl8187: Fix wrong rfkill switch mask for some models b43: Remove reset after fatal DMA error USB: Check results of dma_map_single Staging: rtl8187se: Remove card8185 variable to simplify flow Staging: rtl8187se: Remove card_type Staging: rtl8187se: Rename staging driver to avoid name conflict with mainline driver Larry Woodman (1): hugetlb: prevent deadlock in __unmap_hugepage_range() when alloc_huge_page() fails Lars Ellenberg (7): dropping unneeded include autoconf.h change default: by default, use socket buffer auto tuning fix grammar in printk drbd: fix check for too large lower level device drbd: performance - don't lose unplug events fix in-kernel configuration serialization add missing state change on corrupt packet header in drbd_recv_header Lars-Peter Clausen (8): gta02: Set pcf50633 charger_reference_current_ma mfd: Make pcf50633 suspend/resume belong to i2c_driver mfd: Fix memleak in pcf50633_client_dev_register mfd: Use platform_device_add_data to set pcf50633 regulator platform data mfd: Fix pcf50633-regulator drvdata usage mfd: Cleanup pcf50633_probe error handling regulator: Fix unbalanced disables/enables in regulator_bulk_{enable,disable} error path leds: leds-pwm: Set led_classdev max_brightness Laurent Pinchart (26): V4L/DVB (13148): uvcvideo: Handle V4L2_CTRL_TYPE_BUTTON control type in VIDIOC_QUERYCTRL V4L/DVB (13149): uvcvideo: Add a new UVC_TRACE_VIDEO trace level V4L/DVB (13150): uvcvideo: Don't acquire privileges in VIDIOC_TRY_FMT V4L/DVB (13151): uvcvideo: Dismiss privileges when freeing video buffers V4L/DVB (13152): uvcvideo: Rely on videodev to reference-count the device V4L/DVB (13154): uvcvideo: Handle garbage at the end of streaming interface descriptors V4L/DVB (13155): uvcvideo: Add a module parameter to set the streaming control timeout V4L/DVB (13238): v4l2_subdev: rename tuner s_standby operation to core s_power V4L/DVB (13308): uvcvideo: Add support for MSI StarCam 370i webcams V4L/DVB (13310): uvcvideo: Return -EINVAL instead of -ENODEV in read() V4L/DVB (13502): uvcvideo: Add support for Genius eFace 2025 webcams V4L/DVB (13503): uvcvideo: Merge iterms, oterms and units linked lists V4L/DVB (13504): uvcvideo: Fix extension units parsing V4L/DVB (13505): uvcvideo: Refactor chain scan V4L/DVB (13506): uvcvideo: Factorize common field in uvc_entity structure USB gadget: Handle endpoint requests at the function level USB audio gadget: handle endpoint control requests at the function level V4L/DVB (13549): v4l: Add video_device_node_name function V4L/DVB (13550): v4l: Use the new video_device_node_name function V4L/DVB (13551): v4l: Remove video_device::num usage from device drivers V4L/DVB (13552): v4l: Replace video_is_unregistered with video_is_registered V4L/DVB (13553): v4l: Use the video_is_registered function in device drivers V4L/DVB (13554a): v4l: Use the video_drvdata function in drivers V4L/DVB (13555): v4l: Use video_device_node_name() instead of the minor number V4L/DVB (13556): v4l: Remove unneeded video_device::minor assignments V4L/DVB (13557): v4l: Remove unneeded video_device::minor usage in drivers Leann Ogasawara (1): x86: ASUS P4S800 reboot=bios quirk Lee Schermerhorn (13): hugetlb: rework hstate_next_node_* functions hugetlb: add nodemask arg to huge page alloc, free and surplus adjust functions hugetlb: factor init_nodemask_of_node() hugetlb: derive huge pages nodes allowed from task mempolicy hugetlb: add generic definition of NUMA_NO_NODE hugetlb: add per node hstate attributes hugetlb: update hugetlb documentation for NUMA controls hugetlb: use only nodes with memory for huge pages hugetlb: handle memory hot-plug events hugetlb: offload per node attribute registrations swap: rework map_swap_page() again mm: remove unevictable_migrate_page function mlock: replace stale comments in munlock_vma_page() Len Brown (18): Merge branch 'acpica' into release Merge branch 'asus' into release Merge branch 'bugzilla-14700' into release Merge branch 'dell-laptop' into release Merge branch 'hp-wmi' into release Merge branch 'thermal-2.6.33' into release Merge branch 'thinkpad-2.6.33' into release Merge branch 'ost' into release Merge branch 'bugzilla-14782' into release Merge branch 'debug-aml' into release Merge branch 'dell-wmi' into release Merge branch 'ipmi' into release Merge branch 'wmi' into release Merge branch 'dock' into release Merge branch 'msi-wmi' into release Merge branch 'toshiba-bt' into release Merge branch 'osc' into release Merge branch 'misc-2.6.33' into release Lennart Sorensen (1): m68knommu: add uboot commandline argument passing support Lennert Buytenhek (41): mwl8k: fix GET_STAT firmware command packet layout mwl8k: coding style cleanups mwl8k: minor transmit quiescing rework mwl8k: fix multicast address filter programming mwl8k: use the mac80211-provided workqueue instead of creating our own mwl8k: implement FIF_ALLMULTI mwl8k: enforce FIF_BCN_PRBRESP_PROMISC when no STA interfaces are active mwl8k: clear hardware MAC address if no STA interface configured mwl8k: use cond_resched() when loading firmware blocks mwl8k: clarify WME transmit queue 0/1 swizzling mwl8k: report rate and other information for received frames mwl8k: add support for enabling hardware sniffer mode mwl8k: shorten receive/transmit state variable names mwl8k: pci BAR mapping changes mwl8k: change pci id table driver data to a structure pointer mwl8k: spell out the names of firmware images in the pci driver data mwl8k: handle loading AP firmware images mwl8k: use pci_unmap_addr{,set}() to keep track of unmap addresses on rx mwl8k: allow for different receive descriptor formats mwl8k: set ->interface_modes from the driver data mwl8k: rename mwl8k_cmd_get_hw_spec() to mwl8k_cmd_get_hw_spec_sta() mwl8k: add the commands used for AP firmware initialisation mwl8k: implement AP firmware antenna configuration mwl8k: add AP firmware handling to ->configure_filter() mwl8k: add AP firmware handling to ->start() mwl8k: add AP firmware (mbss) handling to mwl8k_set_mac_addr() mwl8k: implement AP firmware EDCA parameter configuration mwl8k: add support for the 88w8366 ARM: Add Tauros2 L2 cache controller support mwl8k: fix MCS bitmap size in SET_RATE command mwl8k: fix UPDATE_STADB command struct legacy_rates array length mwl8k: prevent corruption of QoS field on receive mwl8k: fix addr4 zeroing and payload overwrite on DMA header creation mwl8k: properly report rate on received 40MHz packets mwl8k: allow more time for firmware commands to complete mwl8k: allow more time for transmit rings to drain mwl8k: increase firmware loading timeouts mwl8k: don't forget to call pci_disable_device() mwl8k: struct ieee80211_rx_status::qual is deprecated mwl8k: don't overwrite mwl8k_vif::bssid until after disassociation mwl8k: don't complain about oversized beacons in FINALIZE_JOIN Leo (Hao) Chen (1): mtd: add bcmring nand driver Leo Chen (1): ARM: 5792/1: bcmring: clean up mach/io.h Li Hong (8): tracing: Amend documentation in recordmcount.pl to reflect implementation tracing: Correct the check for number of arguments in recordmcount.pl tracing: Check absolute path of input file in recordmcount.pl tracing: Fix objcopy revision check in recordmcount.pl tracing: Move mcount section search to front of loop in recordmcount.pl tracing: Add regex for weak functions in recordmcount.pl tracing: Move conditional into update_funcs() in recordmcount.pl tracing: Exit with error if a weak function is used in recordmcount.pl Li Peng (1): drm/i915: Fix sync to vblank when VGA output is turned off Li Yang (1): mtd: nand: fix multi-chip suspend problem Li Yewang (1): ipsec: can not add camellia cipher algorithm when using "ip xfrm state" command Li Zefan (50): ksym_tracer: Extract trace entry from struct trace_ksym ksym_tracer: Rewrite ksym_trace_filter_read() ksym_tracer: Fix validation of access type ksym_tracer: Fix validation of length of access type ksym_tracer: NIL-terminate user input filter ksym_tracer: Report error when failed to re-register hbp ksym_tracer: Fix memory leak ksym_tracer: Fix the output of stat tracing tracing/filters: Refactor subsystem filter code tracing/filters: Use a different op for glob match tracing/profile: Add filter support perf trace: Add filter Suppport tracing/filters: Fix to make system filter work compiler: Introduce __always_unused tracing: Fix to use __always_unused attribute ksym_tracer: Remove KSYM_SELFTEST_ENTRY perf: Add 'perf kmem' tool perf kmem: Add new option to show raw ip perf kmem: Default to sort by fragmentation perf kmem: Collect cross node allocation statistics perf kmem: Measure kmalloc/kfree CPU ping-pong call-sites perf kmem: Add help file tracing: Convert module refcnt events to DEFINE_EVENT tracing: Convert some kmem events to DEFINE_EVENT tracing: Convert softirq events to DEFINE_EVENT tracing: Convert some workqueue events to DEFINE_EVENT tracing: Convert some power events to DEFINE_EVENT tracing: Convert some block events to DEFINE_EVENT tracing: Convert some jbd2 events to DEFINE_EVENT tracing: Convert some ext4 events to DEFINE_TRACE tracing: Restore original format of sched events perf annotate: Fix perf data parsing perf timechart: Remove open-coded event parsing code perf kmem: Show usage if no option is specified perf tools: Align long options which have no short forms tracing, slab: Define kmem_cache_alloc_notrace ifdef CONFIG_TRACING tracing, slab: Fix no callsite ifndef CONFIG_KMEMTRACE tracing: Extract duplicate ftrace_raw_init_event_foo() tracing: Pull up calls to trace_define_common_fields() tracing: Move a printk out of ftrace_raw_reg_event_foo() ftrace: Return EINVAL when writing invalid val to set_ftrace_filter ftrace: Call trace_parser_clear() properly function-graph: Allow writing the same val to set_graph_function tracing: Use seq file for trace_options tracing: Use seq file for trace_clock tracing: Remove useless trace option tracing: Simplify trace_option_write() tracing: Change event->profile_count to be int type tracing/power: Remove two exports ksym_tracer: Fix bad cast Liam Girdwood (1): regulator: consumer.h - fix build when consumer.h is #included first. Liming Wang (2): perf tools: Fix _GNU_SOURCE macro related strndup() build error perf tools: Replace %m with %a in sscanf Lin Ming (8): timekeeping: Fix clock_gettime vsyscall time warp ACPICA: Add repair for bad _MAT buffers ACPICA: Remove possibility of executing _REG methods twice ACPICA: Fix possible memory leak for Scope ASL operator ACPICA: Add post-order callback to acpi_walk_namespace ACPICA: Add additional module-level code support ACPICA: Fix possible memory leak for module-level code execution ACPICA: Module-level code: enable _REG execution in same scope Linus Torvalds (183): PCI: allow matching of prefetchable resources to non-prefetchable windows Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-ipi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-printk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-signal-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-softlockup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6 Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 Merge branch 'kvm-updates/2.6.33' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-2.6.33' of git://git.kernel.dk/linux-2.6-block sctp: fix compile error due to sysctl mismerge Merge branch 'x86-entry-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-pat-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-process-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-reboot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge branch 'timers-for-linus-hpet' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-for-linus-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branches 'timers-for-linus-ntp' and 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'reiserfs/kill-bkl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing Merge branch 'bkl-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'bkl-drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'bkl-arch-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'davinci-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-next-2.6 Merge branch 's3c24xx-updates' of git://git.fluff.org/bjdooks/linux Merge branch 'next-i2c' of git://git.fluff.org/bjdooks/linux Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge git://git.infradead.org/ubifs-2.6 Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm Merge branch 'xen/fbdev' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen Merge branch 'bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq Merge branch 'for-linus' of git://gitorious.org/linux-omap-dss2/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/mmap Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'drm-nouveau-pony' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq Merge branch 'for-linus' of git://codeaurora.org/quic/kernel/dwalker/linux-msm Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic Merge branch 'compat-ioctl-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc [BKL] add 'might_sleep()' to the outermost lock taker Merge branch 'ixp4xx' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu Merge git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'next-spi' of git://git.secretlab.ca/git/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.infradead.org/battery-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'for-2.6.33' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'akpm' Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge git://git.infradead.org/iommu-2.6 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 Merge git://git.infradead.org/mtd-2.6 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-2.6.33' of git://linux-nfs.org/~bfields/linux Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'module' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6 Merge branch 'drm-vmware-staging' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'next' of git://git.secretlab.ca/git/linux-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs x86/ptrace: make genregs[32]_get/set more robust Merge branch 'for-33' of git://repo.or.cz/linux-kbuild Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 Merge branch 'for-linus' of git://gitserver.sunplusct.com/linux-2.6-score Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Revert "fix mismerge with Trond's stuff (create_mnt_ns() export is gone now)" Revert "task_struct: make journal_info conditional" Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-backlight Merge branch 'next-spi' of git://git.secretlab.ca/git/linux-2.6 Merge branch 'kmemleak' of git://linux-arm.org/linux-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 Merge branch 'cpumask-cleanups' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Linux 2.6.33-rc1 Linus Walleij (8): ARM: 5724/1: U300 AB3100 boardinfo v5 ARM: 5725/2: U300 switch MMCI to use regulator ARM: 5783/1: Make it possible for U300 LDO D to shut down Add COH 901 318 DMA block driver v5 ARM: 5785/1: Use ST vendor enum instead of numeral mfd: Remove default selection of AB4500 rtc: remove __raw_* accessors from PL031 RTC Fix some AB3100 regulator issues Liuweni (2): irq: Fix docbook comments fix kerneldoc for set_irq_msi() Logan Li (1): ALSA: HDA VIA: Remove 48k sample rate limit for S/PDIF Lopez Cruz, Misael (1): ASoC: Add PDM DAI format definition Louis Rilling (2): block: Fix io_context leak after clone with CLONE_IO block: Fix io_context leak after failure of clone with CLONE_IO Lucas De Marchi (1): perf stat: Do not print ratio when task-clock event is not counted Lucian Adrian Grijincu (1): inet: fix inet_bind_bucket_for_each Luciano Coelho (21): wl1271: remove unecessary qual parameter from rx status wl1271: added Juuso Oikarinen as module author wl1271: hack to disable filters wl1271: implement cmd_disconnect wl1271: workaround to send a disconnect before rejoining wl1271: add workaround to avoid distortion due to excessive tx power wl1271: enable HW_AVAILABLE interrupt to fix ELP wl1271: use acx_rx_config instead of join when updating filters wl1271: remove unnecessary joins and join only when the bssid changes wl1271: make sure PS is disabled in PLT wl1271: fix sparse warnings about undeclared functions wl1271: added missing packed modifier in some acx structs wl1271: fix endianess issues wl1271: added missing packed modifier in some cmd structs wl1271: use ieee80211_rx_ni() wl1271: fix init loop timeout wl1271: fix the inetdev notifier callback return values wl1271: set radio and general params also for PLT wl1271: fix radio and general parameters commands wl1271: remove workaround to ignore -EIO from radio and general params wl1271: Remove REF_CLK hack Luck, Tony (4): perf tools: Add ia64 support for tools/perf/ lockdep: Avoid out of bounds array reference in save_trace() [IA64] implement early_io{re,un}map for ia64 implement early_io{re,un}map for ia64 Luis Garces-Erice (1): Doc: better explanation of procs_running Luis Henriques (1): genirq: do not execute DEBUG_SHIRQ when irq setup failed Luis R. Rodriguez (124): ath9k: use ath_hw for DPRINTF() and debug init/exit ath9k: move btcoex core driver info to its own struct ath9k: move hw specific btcoex info to ath_hw ath9k: split bluetooth hardware coex init into two helpers ath9k: move driver core helpers to main.c ath9k: split ath9k_hw_btcoex_enable() into two helpers ath9k: replaces SC_OP_BTCOEX_ENABLED with a bool ath9k: move bt_stomp_type to driver core ath9k: remove unused bt_duty_cycle ath9k: rename btcoex_scheme to just scheme ath9k: rename ath_btcoex_info to ath_btcoex_hw ath9k: simplify ath_btcoex_bt_stomp() ath9k: now move ath9k_hw_btcoex_set_weight() to btcoex.c ath9k: move ath_btcoex_config and ath_bt_mode to btcoex.c ath9k: rename ath_btcoex_supported() to ath9k_hw_btcoex_supported() ath9k: move ps helpers onto core driver when reseting tsf ath9k: move ath9k_ps_wakeup() and ath9k_ps_restore() to main.c ath9k: avoid usage of ath9k_hw_setpower() on hw.c ath9k: move ath9k_hw_setpower() to main.c ath9k: rename driver core and hw power save helpers ath: move ath_bcast_mac to common header atheros: use get_unaligned_le*() for bssid mask setting ath9k: make ath9k_hw_setbssidmask() and ath9k_hw_write_associd() use ath_hw ath9k: Use ath9k_hw_setbssidmask() on reset ath9k: use ath9k_hw_write_associd() on reset atheros/ath9k: move macaddr, curaid, curbssid and bssidmask to common ar9170: make use of common macaddr and curbssid ath5k: use common curbssid, bssidmask and macaddr ath5k: initialize eeprom struct early on attach ath9k: move ath_common to ath_hw ath5k: move ath_common to ath5k_hw ath9k: Define bus agnostic bluetooth coex prep helper atheros/ath9k: add common read/write ops and port ath9k to use it ath5k: allocate ath5k_hw prior to initializing hw ath5k: define ath_common ops atheros: define shared bssidmask setting atheros: add ieee80211_hw to ath_common ath9k: separate core driver and hw timer code atheros: add common debug printing atheros: move tx/rx chainmask to ath_common ath9k: remove ath9k 25 MHz HT40 spacing stuff ath9k: remove ath9k_ht_macmode ath9k: move ATH_AMPDU_LIMIT_MAX to hw.h ath9k: remove driver ASSERT, just use BUG_ON() ath9k: clarify what hw code is and remove ath9k.h from a few files ath9k: move ATH9K_RSSI_BAD to hw.h atheros: move bus ops to ath_common ath9k: make ath9k_common_ops const ath9k: use common read/write ops on pci and debug code ath9k: move hw code to its own module ath9k_hw: print device ID if not supported ath9k_hw: add AR9271 srev and device ID to allow hw to support ar9271 atheros: define a common priv struct ath5k: fix regression on setting bssid mask on association ath5k: use ath_hw_setbssidmask() for bssid mask setting upon assoc ath5k: fix regression introduced upon the removal of AR5K_HIGH_ID() ath5k: simplify passed params to ath5k_hw_set_associd() ath5k: remove temporary low_id and high_id vars on ath5k_hw_set_associd() ath5k: fix regression which triggers an SME join upon assoc ath5k: enable Power-Save Polls by setting the association ID ath9k: move common->debug_mask setting to ath_init_softc() ath9k: initialize hw prior to debugfs ath9k: add helper to un-init the hw properly ath9k: add a helper to clean the core driver upon module unload ath9k: move ath_cleanup() below helpers to avoid forward declarations ath9k: rename ath_beaconq_setup() to ath9k_hw_beaconq_setup() ath9k: use right parameter for MODULE_PARM_DESC() for debug libertas: remove double assignment of dev->netdev_ops ath9k_hw: run the carrier leakage calibration fix for ar9271 as well ath9k_hw: run ath9k_hw_9271_pa_cal() initial calibration ath9k_hw: move mac name and rf name helpers to hw code ath9k_hw: distinguish single-chip solutions on initial probe print ath9k_hw: add AR9271 single chip name mapping ath9k_hw: correct AR_PHY_SPECTRAL_SCAN register offset ath9k_hw: remove bogus register write on ath9k_hw_9271_pa_cal() ath9k_hw: modify the rf control register for ar9271 revision 1.0 ath9k_hw: update register initialization/reset values for ar9271 ath9k_hw: change the way we initialize the pll for ar9271 ath9k_hw: start documenting 802.11n RF anlong front ends ath9k_hw: bail out early on ath9k_hw_init_rf() ath9k_hw: simplify rf attach and rename to ath9k_hw_rf_alloc_ext_banks() ath9k_hw: simplify ath9k_hw_rf_alloc_ext_banks() ath9k_hw: rename ath9k_hw_rf_free() to ath9k_hw_rf_free_ext_banks() ath9k_hw: make both analog channel change routines return int ath9k_hw: use a callback for frequency change ath9k_hw: order phy.c code and integrate spur mitigation ath9k_hw: make spur mitigation a callback ath9k_hw: remove unused modesIndex param from ath9k_hw_write_regs() ath9k_hw: Fix and complete force bias for AR5416 ath9k_hw: make ath9k_phy_modify_rx_buffer() static wl1271: use __dev_alloc_skb() on RX ath9k: fix listening to idle requests ath9k: update hw configuration for virtual wiphys ath9k: simpify RX by calling ath_get_virt_hw() once ath9k: use the passed ieee80211_hw on ath_rx_prepare() ath9k: pass the ieee80211_hw on radio enable/disable ath9k: use correct hw for tx aggregation TX completion ath9k: use the right hw on ath_tx_setup_buffer() for HT ath9k: handle low buffer space for virtual wiphys ath9k: do not pass the entire descriptor to ath_rx_prepare() ath9k_hw: move ath_extend_tsf() to hw code to share as ath9k_hw_extend_tsf() ath9k: move struct ath_ani to common area ath9k: use the ieee80211_hw to get to an sband on ath_rx_prepare() ath9k: move RX check code into helper ath9k_rx_accept() ath9k: remove temp variable ratecode from ath_rx_prepare() ath9k: move rate descriptor reading into a helper ath9k: move qual processing into a helper ath9k: move rssi processing into a helper ath9k: avoid the copy skb->cb on every RX'd skb ath9k: move the rx_stats->rs_datalen check to ath9k_rx_accept() ath: move the rx bufsize to common to share with ath5k/ath9k ath5k: remove double cache alignment, ath_rxbuf_alloc() already does it ath9k: move the max rx buffer size check to ath9k_rx_accept() ath9k: rename ath_rx_prepare() to ath9k_rx_skb_preprocess() ath9k: move driver keymap, keymax and splitmic to common ath5k: use the common->keymap ath9k: move RX skb post processing to a helper ath9k_common: add new module to share 802.11n driver helpers ath9k_common: remove ath9k_compute_qual() ath9k_common: clarify and correct jumbogram processing mac80211: fix max HT rate processing on mac80211 ath9k: fix processing of TX PS null data frames ath9k: Fix maximum tx fifo settings for single stream devices ath5k: enable EEPROM checksum check Lukas Karas (1): V4L/DVB (13591): add support for IR on FlyDVB Trio (saa7134) Lukáš Turek (1): ath5k: Fix I/Q calibration Luotao Fu (4): mpc52xx_spi: fix clearing status register mpc52xx_spi: add missing mode_bits definition mpc52xx_spi: add gpio chipselect hwmon: Add Freescale MC13783 ADC driver Lydia Wang (30): ALSA: HDA VIA: Remove unused IS_VT17xx_VENDORID macro ALSA: HDA VIA: Change get_codec_type argument to hda_codec type ALSA: HDA VIA: Add VT1708B-CE codec support. ALSA: HDA VIA: Limit VT1702 AA-Path max volume ALSA HDA VIA: Add VIA_CTL_WIDGET_ANALOG_MUTE control type ALSA: HDA VIA: Add low current mode for power saving. ALSA: HDA VIA: Remove unused argument of via_new_analog_input ALSA: HDA VIA: Change VT1708S & VT1702 hp mode controls ALSA: HDA VIA: Rewrite via_independent_hp_put ALSA: HDA VIA: Add smart5.1 function. ALSA: HDA VIA: When changing input source, update power state. ALSA: HDA VIA: Add VIA_JACK_EVENT process in via_unsol_event. ALSA: HDA VIA: Refresh front playback mute in via_hp_automute. ALSA: HDA VIA: Add Jack detect feature for VT1708. ALSA: HDA VIA: Modify vt1708_set_pinconfig_connect function. ALSA: HDA VIA: Replace via_playback_pcm_prepare/cleanup ALSA: HDA VIA: Modify vt1708_auto_create_multi_out_ctls. ALSA: HDA VIA: Modify vt1709_auto_create_multi_out_ctls. ALSA: HDA VIA: Replace MIC_BOOST_VOLUME. ALSA: HDA VIA: Move backdoor verbs to vt17xx_volume_init_verb ALSA: HDA VIA: Add VT1718S support. ALSA: HDA VIA: Add VT1828S and VT2020 support. ALSA: HDA VIA: Add VT1716S support. ALSA: HDA VIA: Add VT2002P support. ALSA: HDA VIA: Add VT1812 support. ALSA: HDA VIA: rename vt1708_control_templates[]. ALSA: HDA VIA: Change PW4 connect select default to to MW0. ALSA: HDA VIA: comments: update copyright, changeset, etc. ALSA: HDA VIA: Only cosmetic changes ALSA: VIA HDA: Add support for VT1818S. Maciej Cencora (1): drm/radeon/kms: allow for texture tiling Maciej W. Rozycki (1): x86, io-apic: Move the effort of clearing remoteIRR explicitly before migrating the irq Madhu (4): omap3630: Add HSMMC related checks omap3630: Configure HSMMC1 to 4-bit omap3630: Set omap3630 MMC1 I/O speed to 52Mhz omap3: HSMMC2 8-bit mux configuration Madhusudhan Chikkature (1): omap3: Zoom2/3: Update hsmmc board config params Magnus Damm (64): net: allow sh_eth to get mac address through platform data net: add Runtime PM to the sh_eth driver mfd: Add SuperH Mobile SDHI platform driver mmc: Add SuperH to the tmio-mmc Kconfig sh: SDHI platform data to the Migo-R board sh: SDHI platform data to the AP325RXA board sh: SDHI platform data to the SE7724 board sh: SDHI platform data to the kfr2r09 board sh: fix kexec by removing check for old kexec-tools sh: add hwblk_id to sh_eth on ecovec24 sh: mac address through private data for sh_eth on ecovec24 sh: mac address through private data for sh_eth on ms7724se sh: add SDHI1 support to ms7724se sh: Add notifiers chains for cpu/board code sh: Add sh7724 notifier for R-standby save/restore sh: Allow boards to register memory pre/post sleep code sh: Add kfr2r09 specific memory pre/post sleep code sh: Add ms7724se specific memory pre/post sleep code sh: Add migor specific memory pre/post sleep code sh: Move ap325rxa board code into separate directory sh: Add ap325rxa specific memory pre/post sleep code sh: Add Ecovec24 specific memory pre/post sleep code sh: Rework SuperH Mobile sleep mode code sh: Keep track of allowed sleep modes sh: Add MMU and Cache handling sleep mode code sh: Use RSMEM for sleep code on sh7724 sh: Add R-standby sleep mode support sh: Add KFR2R09 specific memory pre/post R-standby code sh: Add SDHI1 support to the AP325RXA board sh: Remove unused WP signal for SDHI0 and KFR2R09 sh: Add RWDT save/restore code for sh7724 R-standby pcmcia: Pass struct pcmcia_device to pcmcia_release_window() pcmcia: Pass struct pcmcia_device to pcmcia_map_mem_page() pcmcia: Pass struct pcmcia_socket to pcmcia_get_mem_page() pcmcia: Change window_handle_t logic to unsigned long mfd: Add power control platform data to SDHI driver sh: Add SDHI power control support to Ecovec sh: Add CPG save/restore code for sh7724 R-standby sh: Move KEYSC header file sh: Break out SuperH PFC code sh: Improve kfr2r09 serial port setup code sh: fix sh7724 VEU3F resource size sh: allow runtime pm without suspend/resume callbacks sh: include empty zero page in romImage sh: fix size calculation for NUMA node 0 sh: NUMA lmb fixes sh: add a start_transfer() callback to the LCDC driver sh: LCDC start_transfer() for the KFR2R09 board Driver Core: Early platform driver buffer spi: SuperH MSIOF SPI Master driver V2 sh-sci: Extend sh-sci driver with early console V2 sh: sh2 scif pdata (sh7616) sh: sh2a scif pdata (sh7201/sh7203/sh7206/mxg) sh: sh3 scif pdata (sh7705/sh770x/sh7710/sh7720) sh: sh4 scif pdata (sh7750/sh7760/sh4-202) sh: sh4a scif pdata (sh7343/sh7366/sh7722/sh7723/sh7724) sh: sh4a scif pdata (sh7757/sh7763/sh7770/sh7780/sh7785/sh7786/x3) sh: sh5 scif pdata (sh5-101/sh5-103) sh: Remove old early serial console code V2 sh: MSIOF/mmc_spi platform data for the Ecovec24 board mm: uncached vma support with writenotify mmc: let tmio-mmc use dev_name() with request_irq() net: sh_eth alignment fix for sh7724 using NET_IP_ALIGN V2 V4L/DVB (13671): sh_mobile_ceu_camera: Remove frame size page alignment Mallikarjuna R Chilakala (4): ixgbe: Modify 82599 HWRSC statistics counters ixgbe: Use rx buffer length from rx ring for configuring rscctl ixgbe: Fix tx_restart_queue/non_eop_desc statistics counters ixgbe: Fix 82598 premature copper PHY link indicatation Manfred Spraul (4): ipc/sem.c: optimize if semops fail ipc/sem.c: add a per-semaphore pending list ipc/sem.c: optimize single semop operations ipc/sem.c: optimize single sops when semval is zero Manu Abraham (1): V4L/DVB (13361): stv090x: fix TS corruption with High Symbol Rate streams Manuel Lauss (7): net: enable smsc911x on MIPS net: smsc911x: allow platform_data to specify mac address ASoC: au1x: psc-ac97: verify correct codec register was read ASoC: au1x: psc-ac97: reorganize timeouts ASoC: au1x: convert to platform drivers. ASoC: au1x: dbdma2: fix oops on soc device removal. ASoC: au1x: dbdma2: plug memleak in pcm device creation error path Marc Hulsman (1): hwmon: (w83791d) Remove experimental dependency Marc Zyngier (5): [ARM] pxa/viper: convert to use plat_serial8250_port irqflags field [ARM] pxa/zeus: basic support for Arcom Zeus SBC [ARM] pxa/zeus: make Viper pcmcia support more generic to support Zeus [ARM] pxa/zeus: default configuration for Arcom Zeus SBC. PCMCIA: fix pxa2xx_lubbock modular build error Marcel Holtmann (12): usbnet: Use wwan%d interface name for mobile broadband devices usbnet: Set device type for wlan and wwan devices cfg80211: assign device type in netdev notifier callback rfkill: Add missing description for RFKILL_TYPE_GPS rfkill: Add constant for RFKILL_TYPE_FM radio devices Bluetooth: Remove unused global minor variable Bluetooth: Fix miscdev ops owner for virtual driver Bluetooth: Return ENETDOWN when interface is down Bluetooth: Turn hci_recv_frame into an exported function Bluetooth: Unobfuscate tasklet_schedule usage Bluetooth: Add L2CAP option for max transmit value Bluetooth: Add RFCOMM option to use L2CAP ERTM mode Marcelo Tosatti (9): KVM: SVM: remove needless mmap_sem acquision from nested_svm_map KVM: x86: disable paravirt mmu reporting KVM: VMX: fix handle_pause declaration KVM: fix irq_source_id size verification KVM: VMX: move CR3/PDPTR update to vmx_set_cr3 KVM: MMU: update invlpg handler comment KVM: x86: disallow multiple KVM_CREATE_IRQCHIP KVM: x86: disallow KVM_{SET,GET}_LAPIC without allocated in-kernel lapic KVM: only clear irq_source_id if irqchip is present Marek Lindner (1): ath9k: adjust ahb callbacks to new struct layout to avoid compile errors Marek Szyprowski (1): ARM: 5791/1: ARM: MM: use 64bytes of L1 cache on plat S5PC1xx Marek Vasut (2): Input: ucb1400_ts - allow passing IRQ through platfrom_data V4L/DVB (13040): V4L2: Add a v4l2-subdev (soc-camera) driver for OmniVision OV9640 sensor Marin Mitov (4): niu: Use DMA_BIT_MASK(44) instead of deprecated DMA_44BIT_MASK remove deprecated and not used: print_mac() ASoC: Use DMA_BIT_MASK(32) instead of deprecated DMA_32BIT_MASK use DMA_BIT_MASK instead of inline constant Mariusz Ziulek (1): staging: dst: fix coding style Mark A. Greer (7): davinci: Move DA8xx/OMAP-L13x emac register routine davinci: Change DA8xx/OMAP-L13x McASP registration routine name davinci: Add DA830/OMAP-L137 EVM specific pinmux setting for McASP1 davinci: Add support for Sharp LCD035Q3DG01 graphical LCD davinci: Add RTC support for DA8xx/OMAP-L13x SoC's mtd: Add bad block table overrides to Davinci NAND driver rtc: make rtc-omap driver ioremap its register space Mark Brown (78): ASoC: Update WM8711 to driver model registration method Merge branch 'topic/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 into upstream/wm8711 ASoC: Factor out WM8711 cache I/O ASoC: Add SPI support to WM8711 ASoC: WM8711 minor cleanups ASoC: Add TLV information to WM8711 ASoC: Add source argument to PLL configuration ASoC: Allow per-route connectedness checks for supplies ASoC: Add S3C64xx IIS CDCLK source selection Merge branch 'for-2.6.32' into for-2.6.33 ASoC: Convert soc-cache to use C99 style initialisers for the table Merge branch 'upstream/wm8711' into for-2.6.33 Merge branch 'for-2.6.32' into for-2.6.33 ASoC: Clean up WM8974 PLL configuration Merge branch 'upstream/wm8974' into for-2.6.33 ASoC: Factor out analogue platform data from WM8993 Merge remote branch 'takashi/topic/asoc' into for-2.6.33 Merge branch 'for-2.6.32' into for-2.6.33 Merge branch 'for-2.6.32' into for-2.6.33 ASoC: Simplify code for DAPM widget updates ASoC: Push DAPM enumeration register change test out ASoC: Add virtual enumeration support for DAPM muxes Merge branch 'for-2.6.32' into for-2.6.33 Merge branch 'for-2.6.32' into for-2.6.33 ASoC: Minor fixups to tpa6130a2 driver ASoC: Remove snd_soc_suspend_device() Merge branch 'for-2.6.32' into for-2.6.33 Merge branch 'for-2.6.32' into for-2.6.33 ASoC: Add regulator support for WM8731 ASoC: Minor SMDK64xx WM8580 cleanups Merge branch 'for-2.6.32' into for-2.6.33 ASoC: Staticise wm8727 driver structure ASoC: Move sysfs and debugfs functions to head of soc-core.c ASoC: Factor out snd_soc_init_card() ASoC: Update ads117x to current APIs Merge branch 'for-2.6.32' into for-2.6.33 Merge branch 'twl4030-mfd' into for-2.6.33 ASoC: Add bit clock rate calculator utility functions ASoC: Remove redundant snd_soc_dapm_new_widgets() calls wm831x: Factor out WM831x backup battery charger Merge branch 'topic/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 into for-2.6.33 Merge branch 'for-2.6.32' into for-2.6.33 Merge branch 'ads117x' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into for-2.6.33 Merge branch 'for-2.6.32' into for-2.6.33 [CPUFREQ] Document units for transition latency Merge branch 'twl4030-mfd' into for-2.6.33 ASoC: Add BCLK calculation utility for TDM mode too Merge branch 'for-2.6.32' into for-2.6.33 ARM: SMDK6410: Hook up regulator supplies for WM8580 ARM: S3C64XX: Provide logging when CPU frequencies are eliminated due to clocks ARM: S3C64XX: Separate out regulator and frequency latencies ARM: S3C64XX: Redo voltage ranges for cpufreq ARM: S3C6410: Correct names of IISv4 data output pin definitions S3C64XX: Staticise platform data for PCM devices mfd: Refactor WM831x chip identification gpiolib: Make WM831x GPIO count dynamic mfd: Add support for WM8320 PMICs mfd: Split wm8350 IRQ code into a separate file mfd: Convert WM835x IRQ handling to use a data table mfd: Staticise __adp5520_ack_bits() mfd: Allow platforms to specify an IRQ base for WM8350 mfd: Convert wm8350 IRQ handlers to irq_handler_t mfd: Mask and unmask wm8350 IRQs on request and free mfd: Move WM831x to generic IRQ gpiolib: Implement gpio_to_irq() for wm831x mfd: Don't allow wm831x to be built as a module mfd: Force I2C to be built in when building WM831x mfd: Remove build time warning for WM835x register default tables rtc: convert WM8350 RTC driver to dev_pm_ops regulator: Implement WM831x BuckWise DC-DC convertor DVS support regulator: Report error codes for bulk operations regulator: Factor out voltage constraint setup regulator: Also lift apply_uV into machine_constraints_voltage() regulator: Display actual settings with constraints regulator: Factor out regulator name pretty printing regulator: Handle regulators without suspend mode configuration regulator: Remove duplicate consts from ab3100 regulator: Ensure val is initialised in 88pm8607 choose_voltage() Mark Langsdorf (1): KVM: SVM: Support Pause Filter in AMD processors Mark Nelson (2): ahci: let users know that Promise PDC42819 support is limited to SATA devices powerpc/pseries: Track previous CPPR values to correctly EOI interrupts Marti Raudsepp (2): perf tools: Notify user when unrecognized event is specified perf tools: Output 'perf list' to stdout not stderr Martin K. Petersen (8): block: Expose discard granularity block: Allow devices to indicate whether discarded blocks are zeroed libata: Report zeroed read after TRIM and max discard size libata: Clarify ata_set_lba_range_entries function [SCSI] scsi: Add missing command definitions [SCSI] scsi_debug: Thin provisioning support [SCSI] sd: WRITE SAME(16) / UNMAP support [SCSI] Correctly handle thin provisioning write error Martin Michlmayr (7): [ARM] Kirkwood: Add support for QNAP TS-41x Turbo NAS [ARM] Kirkwood: Add MPP36 for QNAP TS-11x/TS-21x [ARM] Kirkwood: Add QNAP TS-110/TS-210 to Kconfig help text [ARM] Kirkwood: Remove code duplication in QNAP setup files drm/ttm: Fix build failure due to missing struct page [SCSI] osd_protocol.h: Add missing #include MIPS: No longer hardwire CONFIG_EMBEDDED to y Martin Schwidefsky (19): nohz: Reuse ktime in sub-functions of tick_check_idle. nohz: Introduce arch_needs_cpu [S390] Improve address space check. [S390] Improve address space mode selection. [S390] Improve notify_page_fault implementation. [S390] fault handler performance optimization. [S390] fault handler access flags check. [S390] tape: remove f_pos changes from read / write function. [S390] tape: fix tape remove function [S390] tape: cleanup reference counting [S390] tape: remove BKL from tape driver [S390] Improve code generated by atomic operations. [S390] cmm: free pages on hibernate. [S390] sclp: improve servicability setting [S390] 3270: remove BKL [S390] zcrypt: remove BKL [S390] vmur: remove BKL [S390] vmlogrdr: remove BKL [S390] dasd: remove BKL from extended error reporting code Martin Willi (5): xfrm: Define new XFRM netlink auth attribute with specified truncation bits xfrm: Store aalg in xfrm_state with a user specified truncation length xfrm: Use the user specified truncation length in ESP and AH xfrm: Add SHA384 and SHA512 HMAC authentication algorithms to XFRM xfrm: Fix truncation length of authentication algorithms installed via PF_KEY Marton Nemeth (13): V4L/DVB (13117): gspca - pac7311: remove magic value for SKIP. V4L/DVB (13118): gspca - pac7311: remove magic values for END_OF_SEQUENCE and LOAD_PAGE. V4L/DVB (13119): gspca - pac7311: remove magic value for USB_BUF_SZ V4L/DVB (13120): gspca - pac7311: remove redundant register page switching V4L/DVB (13121): gspca - pac7311: add comment about JPEG header V4L/DVB (13192): gspca - pac_common: redesign function for finding Start Of Frame V4L/DVB (13298): gspca - pac207/pac7311/mr97310a: Simplify pac_find_sof. V4L/DVB (13299): gspca - pac7311: Extract pac_start_frame. V4L/DVB (13300): gspca - pac7302/pac7311: Separate the two subdrivers. V4L/DVB (13324): gspca - pac7302/pac7311: Handle return value of usb_control_msg(). V4L/DVB (13325): gspca - pac7302/pac7311: Fix buffer overrun. V4L/DVB (13388): gspca - pac7302: Add white balance control. V4L/DVB (13389): gspca - pac7302: Handle return values in sd_start(). Martyn Welch (10): powerpc/86xx: Enable NVRAM on GE Fanuc's SBC610 powerpc/86xx: Support for NVRAM on GE Fanuc's SBC310 powerpc/86xx: Support for NVRAM on GE Fanuc's PPC9A staging: vme: correct array overflow Staging: vme: Pull common VME interrupt handling into core code Staging: vme: Allow size of 0 when disabling a window Staging: vme: Correct operation of vme_lm_free Staging: vme: Clean up tsi148 driver Staging: vme: Rename VME DMA functions staging: vme: Fix mutex locking Masami Hiramatsu (122): x86: Instruction decoder API x86: X86 instruction decoder build-time selftest kprobes: Checks probe address is instruction boudary on x86 kprobes: Cleanup fix_riprel() using insn decoder on x86 x86: Add pt_regs register and stack access APIs tracing: Ftrace dynamic ftrace_event_call support tracing: Introduce TRACE_FIELD_ZERO() macro tracing: Add kprobe-based event tracer tracing: Add kprobe-based event tracer documentation tracing: Kprobe-tracer supports more than 6 arguments tracing: Generate names for each kprobe event automatically tracing: Kprobe tracer assigns new event ids for each event tracing: Add kprobes event profiling interface x86: Fix x86 instruction decoder selftest to check only .text x86: Check awk features before generating inat-tables.c tracing/kprobes: Fix format typo in trace_kprobes tracing/kprobes: Change trace_arg to probe_arg kprobes/x86: Call BUG() when reentering probe into KPROBES_HIT_SS kprobes/x86-64: Allow to reenter probe on post_handler kprobes/x86: Fix to add __kprobes to in-kernel fault handing functions kprobes: Fix to add __kprobes to notify_die kprobes/x86-64: Fix to move common_interrupt to .kprobes.text kprobes: Prohibit to probe native_get_debugreg x86: Allow x86-32 instruction decoder selftest on x86-64 x86: Remove unused config macros from instruction decoder selftest x86: Add MMX support for instruction decoder kprobes/x86-32: Move irq-exit functions to kprobes section x86/ptrace: Fix regs_get_argument_nth() to add correct offset tracing/kprobes: Fix probe offset to be unsigned tracing/kprobes: Cleanup kprobe tracer code. tracing/kprobes: Add event profiling support tracing/kprobes: Add argument name support tracing/kprobes: Show event name in trace output tracing/kprobes: Support custom subsystem for each kprobe event tracing/kprobes: Fix trace_probe registration order ftrace: Fix trace_add_event_call() to initialize list ftrace: Fix trace_remove_event_call() to lock trace_event_mutex tracing/kprobes: Add probe handler dispatcher to support perf and ftrace concurrent use tracing/kprobes: Fix profiling alignment for perf_counter buffer tracing/kprobes: Disable kprobe events by default after creation tracing/kprobes: Use global event perf buffers in kprobe tracer x86: Add VIA processor instructions in opcodes decoder tracing/ftrace: Fix to check create_event_dir() when adding new events tracing/kprobes: Add $ prefix to special variables tracing/kprobes: Remove '$ra' special variable tracing/kprobes: Make special variable names more self-explainable tracing/kprobes: Avoid field name confliction tracing/kprobes: Robustify fixed field names against variable field names conflicts perf: Add perf probe subcommand, a kprobe-event setup helper perf probe: Add perf probe command support without libdwarf tracing/kprobes: Update kprobe-tracer selftest against new syntax tracing/kprobes: Add failure messages for debugging x86: Add MMX/SSE opcode groups to opcode map x86: Add AMD prefetch and 3DNow! opcodes to opcode map perf: Check libdwarf APIs for perf probe perf: Use die() for error cases in perf-probe perf: Use eprintf() for debug messages in perf-probe perf: Add DIE_IF() macro for error checking perf: Add perf-probe document x86: Fix group attribute decoding bug x86: Add AES opcodes to opcode map x86: Fix SSE opcode map bug x86: Merge INAT_REXPFX into INAT_PFX_* x86: Add pclmulq to x86 opcode map x86: AVX instruction set decoder support x86: Add Intel FMA instructions to x86 opcode map kprobe-tracer: Compare both of event-name and event-group to find probe perf/probes: Exit searching after finding target function perf/probes: Improve command-line option of perf-probe perf/probes: Improve probe point syntax of perf-probe perf/probes: Support function entry relative line number perf/probes: Update Documentation/perf-probe.txt perf/probes: Improve error messages perf/probes: Fall back to non-dwarf if possible perf/probes: Rename perf probe events group name tracing/kprobes: Rename Kprobe-tracer to kprobe-event x86: Remove unused thread_return label from switch_to() x86: Add verbose option to insn decoder test x86: Show symbol name if insn decoder test failed x86: Instruction decoder test should generate build warning x86: Fix insn decoder test typos x86: insn decoder test checks objdump version tracepoint: Move signal sending tracepoint to events/signal.h tracepoint: Add signal deliver event tracepoint: Add signal loss events trace_kprobes: Fix a memory leak bug and check kstrdup() return value perf probe: Change a debugging message from pr_info to pr_debug perf probe: Add probe-finder.h without libdwarf perf probe: Fix argv array size in probe parser perf probe: Fix probe array index for multiple probe points perf probe: Move probe event utility functions to probe-event.c perf probe: Add argv_split() from lib/argv_split.c perf probe: Add --list option for listing current probe events perf probe: Simplify event naming x86: Fix comments of register/stack access functions x86 insn: Delete empty or incomplete inat-tables.c perf probe: Fix event namelist to duplicate string perf probe: Check e_snprintf() format string perf probe: Use pr_debug for debug message perf probe: Change event list format perf probe: Change probe-added message more user-friendly perf probe: Fix add-probe command syntax without --add option perf probe: Remove event suffix number _0 perf probe: Support vmlinux on cwd by default trace-kprobe: Support delete probe syntax perf probe: Support --del option perf probe: Update perf-probe document perf probe: Cleanup struct session in builtin-probe.c perf probe: Check the result of e_snprintf() perf probe: Check hyphen only argument perf probe: Show need-dwarf message only if it is really needed perf probe: Fix --del to show info instead of warning perf probe: Fix --del to update current event list perf tools: Add for_each macros for strlist perf probe: Use strlist__for_each macros in probe-event.c perf probe: Add glob matching support on --del perf probe: Support event name for --add option perf probe: Reject second attempt of adding same-name event perf probe: Check build-id of vmlinux perf probe: Check symbols in symtab/kallsyms perf probe: Fix to show which probe point is not found mm: introduce coredump parameter structure Mathieu Desnoyers (1): debugfs: fix create mutex racy fops and private data Matt Carlson (46): tg3: Assign flags to fixes in start_xmit_dma_bug tg3: Fix 5906 transmit hangs tg3: Fix disappearing 57780 devices tg3: Convert PHY_ADDR => TG3_PHY_MII_ADDR tg3: Prevent a PCIe tx glitch tg3: Add more PCI DMA map error checking tg3: Improve 5785 PCIe performance tg3: Add AC131 power down support tg3: 5785: Set port mode to MII when link down tg3: Extend loopback test timeout broadcom: Isolate phy dsp accesses broadcom: Fix slow link problem tg3: Add 50610M phy ID for 5785 broadcom: Consolidate dev_flags definitions tg3 / broadcom: Add PHY_BRCM_CLEAR_RGMII_MODE flag tg3 / broadcom: Refine AC131 APD support tg3 / broadcom: Add code to disable rxc refclk tg3 / broadcom: Add APD support for GPHYs tg3 / broadcom: Optionally disable TXC if no link tg3: Update version to 3.103 tg3: Add 5717 phy ID tg3: Don't touch RCB nic addresses tg3: Napify tg3_start_xmit_dma_bug() tg3: Move TG3_FLG2_PROTECTED_NVRAM to tg3_flags3 tg3: Refine TSO and MSI discovery tg3: Add new HW_TSO_3 flag for 5717 tg3: Use tg3_start_xmit_dma_bug for 5717 A0 tg3: Allow DMAs to cross cacheline boundaries tg3: Create tg3_poll_msix() for non-zero MSIX vecs tg3: Move napi_add calls below tg3_get_invariants tg3: Make tg3_alloc_rx_skb() a dst-only operation tg3: Add prodring parameter to tg3_alloc_rx_skb() tg3: tg3_alloc_rx_skb(tnapi => tp) tg3: rename rx_[std|jmb]_ptr tg3: Consider rx_std_prod_idx a hw mailbox tg3: Lay proucer ring handling groundwork tg3: Create aliases for rx producer mailbox regs tg3: Add rx prod ring consolidation tg3: Fix DIDs, Enable 5717 support tg3: Update version to 3.104 tg3: Make TSS enable independent of MSI-X enable tg3: Add 57765 asic rev tg3: Add some VPD preprocessor constants tg3: Use pci_read_vpd() instead of private method tg3: Clean tg3_init_one() tg3: Update version to 3.105 Matt Domsch (2): tpm: autoload tpm_tis based on system PnP IDs PCI: PCIe AER: honor ACPI HEST FIRMWARE FIRST mode Matt Fleming (20): sh: Allocate PMB entry slot earlier sh: Obliterate the P1 area macros sh: Prepare for dynamic PMB support sh: CONFIG_PMB doesn't mean the MMU is in 32bit mode sh: Make most PMB functions static sh: Get rid of the kmem cache code sh: Remap physical memory into P1 and P2 in pmb_init() sh: Fix the offset from P1SEG/P2SEG where we map RAM sh: Fold fixed-PMB support into dynamic PMB support sh: Teach the DWARF unwinder about modules sh: Fix memory leak in dwarf_unwind_stack() sh: Remove any reference to recursive functions from comments sh: tracing: Use the DWARF unwinder for CALLER_ADDRx sh: Annotate irq functions with "notrace" sh: Do not apply virt_to_phys() to a physical address sh: Drop associative writes for SH-4 cache flushes. sh: Can't compare physical and virtual addresses for aliases sh: Couple kernel and user write page perm bits for CONFIG_X2TLB sh: Fix up FPU build for SH5 sdio: initialise SDIO functions and update card->sdio_funcs in lockstep Matteo Croce (1): x86: AMD Geode LX optimizations Matthew Garrett (10): PCI hotplug: acpiphp should be linked after vendor drivers wmi: Add support for module autoloading x86, setup: Store the boot cursor state vc: Add support for hiding the cursor when creating VTs vgacon: Add support for setting the default cursor state ipw2100: Register the wiphy device ipw2200: Set core hw rfkill status when hardware changes state ata: Don't require newlines for link_power_management_policy dell-laptop: Fix rfkill state queries Input: i8042 - allow installing platform filters for incoming data Matthew Slattery (1): sfc: Remove EFX_WORKAROUND_9141 macro Matthew Wilcox (4): USB: Convert a dev_info to a dev_dbg USB: usb-storage: Associate the name of the interface with the scsi host USB Storage: Make driver less chatty when it finds a new device Btrfs: Show discard option in /proc/mounts Mauro Carvalho Chehab (44): V4L/DVB (13042): Add NEC protocol to firmware v1.2 handler V4L/DVB (13043): Add support for Pixelview SBTVD IR V4L/DVB (13044): dib0700: Be less verbose when an IR key is pressed V4L/DVB (13157): dvb_frontend: represent all DVBS2API commands via macro V4L/DVB (13159): DocBook/frontend: use cross references for ioctls V4L/DVB (13160): DocBook/Makefile: add linux/dvb/frontend.h header file V4L/DVB (13161): Add missing specs for FE_SET_FRONTEND_TUNE_MODE ioctl. V4L/DVB (13162): Docbook/dvb: add missing specs for FE_DISHNETWORK_SEND_LEGACY_CMD ioctl V4L/DVB (13163): Docbook/dvb: Rename isdbt.xml to dvbproperty.xml V4L/DVB (13164): DocBook/dvb: Starts documenting DVBS2API ioctls V4L/DVB (13271a): Fix a badly solved merge conflict V4L/DVB (13327): em28xx: fix alt modprobe parameter V4L/DVB (13328): em28xx: Add chip ID for em2800 em28xx: em2800 chips support max width of 640 em28xx: don't load audio modules when AC97 is mis-detected em28xx: don't reduce scale to half size for em2800 V4L/DVB (13528): em28xx: add support for em2800 VC211A card V4L/DVB (13531): ir-common: rename the debug routine to allow exporting it V4L/DVB (13532): ir-common: Add infrastructure to use a dynamic keycode table V4L/DVB (13533): ir: use dynamic tables, instead of static ones V4L/DVB (13534): ir-common: Remove some unused fields/structs V4L/DVB (13535): ir-common: Add a hauppauge new table with the complete RC5 code V4L/DVB (13536): em28xx: Use the full RC5 code on HVR-950 Remote Controller V4L/DVB (13537): ir: Prepare the code for dynamic keycode table allocation V4L/DVB (13538): ir-common: Use a dynamic keycode table V4L/DVB (13539): ir-common: add __func__ for debug messages V4L/DVB (13540): ir-common: Cleanup get key evdev code V4L/DVB (13542): ir-keytable: Allow dynamic table change Staging: rtl8192u: make it compile Staging: rtl8192u: remove bad whitespaces Staging: rtl8192u: remove dead code V4L/DVB (13543): ir-common: Associate a table with a given protocol type V4L/DVB (13544): ir-keymaps: mark the new rc5 hauppauge with IR_TYPE_RC5 V4L/DVB (13545): em28xx: properly select IR protocol based on the IR table V4L/DVB (13546): ir-keymaps: Add table for Terratec Cinergy XS FM V4L/DVB (13575): em28xx: Use the complete address/command RC5 code for WinTV USB2 V4L/DVB (13576): ir-common: fix an oops caused by the usage of an initialized drvdata V4L/DVB (13612): IR: Move common IR code to drivers/media/IR V4L/DVB (13613): IR: create ir-core module V4L/DVB (13614): dib0090: Fix compilation when module is not selected V4L/DVB (13615): ir-core: create ir_input_register V4L/DVB (13616): IR: rename ir_input_free as ir_input_unregister V4L/DVB (13617): ir: move input_register_device() to happen inside ir_input_register() V4L/DVB (13698): pms: replace asm/uaccess.h to linux/uaccess.h Maurus Cuelenaere (3): ARM: S3C64XX: fix USB OTG compilation ARM: S3C64XX: add support for all group 0 external interrupts ARM: S3C64XX: add HSMMC2 support Maxim Levitsky (2): Input: ALPS - add support for touchpads with 4-directional button rtc: disable hpet emulation on suspend Mel Gorman (4): block,xd: Delay allocation of DMA buffers until device is known vmscan: have kswapd sleep for a short interval and double check it should be asleep hugetlb: acquire the i_mmap_lock before walking the prio_tree to unmap a page hugetlb: abort a hugepage pool resize if a signal is pending Michael Buesch (11): b43/legacy: Fix usage of host_pci pointer ssb: Put host pointers into a union b43: Remove me as maintainer b43: Optimize PIO scratchbuffer usage b43: Rewrite TX bounce buffer handling b43-pio: Fix RX error path for rev>=8 devices b43: Enforce DMA descriptor memory constraints b43: Rewrite DMA Tx status handling sanity checks ssb: Fix SPROM writing ssb: Fix range check in sprom write airo: Fix integer overflow warning Michael Chan (20): bnx2x: Refactor bnx2x_sp_post(). bnx2x: Refactor MAC address setup code. bnx2x: Add hw init code to support iSCSI. bnx2x: Add main CNIC interface functions. cnic: Refactor some code. cnic: Add bnx2x data structures. cnic: Add main functions to support bnx2x devices. cnic: Fix ring I/O address for bnx2x devices. cnic: Fix bnx2x ring shutdown. cnic: Fix bogus iSCSI MAC address cnic: Fix rq_page_table DMA address. cnic: Use dma_alloc_coherent(). bnx2: Protect tx timeout reset with rtnl_lock(). bnx2: Dump some state during tx timeout. bnx2: Print warning when unable to allocate the full SKB/page ring. bnx2: Read firmware version from VPD. bnx2: Update version to 2.0.3. bnx2: Refine VPD logic. cnic: Send delete command when shutting down iSCSI ring. cnic: Zero out status block and Event Queue indices. Michael Cree (2): perf tools, Alpha: Add Alpha support to perf.h perf tools: Test -fstack-protector-all compiler option for inclusion in CFLAGS Michael Ellerman (7): powerpc/ps3: Use pr_devel() in ps3/mm.c powerpc: Make NR_IRQS a CONFIG option powerpc/pseries: Use irq_has_action() in eeh_disable_irq() powerpc: Remove get_irq_desc() powerpc: Make virq_debug_show() cope with sparse irq_descs powerpc: Rearrange and fix show_interrupts() for sparse irq_descs powerpc: Enable sparse irq_descs on powerpc Michael Hennerich (22): backlight: adp5520: rename common defines and typos gpio: adp5520: rename common defines and typos mfd: Add ADP5520/ADP5501 driver input/keyboard: new driver for ADP5520 MFD PMICs Blackfin: clean up bf537-lq035 board resources Blackfin: convert DMA code to a proper bitmap Blackfin: cpufreq: use a constant latency Blackfin: bf538: add support for extended GPIO banks Blackfin: update bfin_rotary defines Blackfin: punt cache lock documentation Blackfin: fix typo in isp1760 platform name Blackfin: bf537-stamp/bf548-ezkit: update ADXL34x resources Blackfin: bf537-stamp: add ADXL346 orientation sensing support Blackfin: bf537-stamp: update ADP5520 resources Blackfin: bf537-stamp: add ADP8870 resources Blackfin: bf537-stamp: add AD5258 i2c address Blackfin: bf537-stamp: add ADF702x network driver resources ad525x_dpot: new driver for AD525x digital potentiometers leds: Add driver for ADP5520/ADP5501 MFD PMICs fbdev: bfin-lq035q1-fb: new Blackfin Landscape LCD EZ-Extender driver fbdev: bfin-t350mcqb-fb: handle all resources in suspend/resume fbdev: bfin-t350mcqb-fb: fix LCD dimensions Michael Krufky (23): V4L/DVB (13103): create a standard method for dvb adapter drivers to override frontend ioctls V4L/DVB (13104): cx23885: define a dvb frontend ioctl override function V4L/DVB (13105): dvb-usb: add fe_ioctl_override callback to dvb_usb_adapter_properties V4L/DVB (13110): tda18271: use temporary variables in tda18271_rf_tracking_filters_init V4L/DVB (13111): tda18271: more signedness fixes V4L/DVB (13112): tda18271: display some state information in debug output V4L/DVB (13201): saa7164: disable tda18271 slave tuner output on slave in standby mode V4L/DVB (13204): saa7134: add support for the Leadtek DTV1000S V4L/DVB (13214): tda18271: allow for i2c buses that cant send 16 bytes at once V4L/DVB (13215): tda18271: add support for the set_config method V4L/DVB (13216): tda18271: initialize tuner during set_config if rf_cal_on_startup is set V4L/DVB (13217): tda18271: handle rf_cal_on_startup properly during attach V4L/DVB (13218): tda18271: consolidate common code for calibration on startup determination V4L/DVB (13219): tda18271: remove unneeded braces in switch..case block V4L/DVB (13220): tda18271: increment module version minor V4L/DVB (13247): tuner-core: dont force every tuner to set frequency at startup V4L/DVB (13259): saa7134: fix badly merged DTV1000S patch V4L/DVB (13262): tda18271: fix regression preventing std map override from taking effect V4L/DVB (13269): saa7134: codingstyle: use /* style comments */ instead of // V4L/DVB (13347): cx23885: add digital television support for Hauppauge WinTV-HVR1290 V4L/DVB (13348): cx23885: update model matrix for models 85021 and 85721 V4L/DVB (13349): cx23885: Enable IR input keypress handling for the Hauppauge WinTV HVR-1290 V4L/DVB (13569): smsusb: add autodetection support for five additional Hauppauge USB IDs Michael Neuling (2): irq: trivial: Fix typo in comment for #endif powerpc: Fix potential compile error irqs_disabled_flags Michael Obst (1): V4L/DVB (13260): saa7134: add support for Leadtek Winfast DTV-1000S remote control Michael Reed (3): [SCSI] scsi_transport_fc: remove invalid BUG_ON [SCSI] lpfc: fix hang on SGI ia64 platform [SCSI] qla2xxx: dpc thread can execute before scsi host has been added Michael Roth (1): Kconfig: Remove useless and sometimes wrong comments Michael S. Tsirkin (5): PCI: fix nit in ROM BAR size probing perf tools: Support static build perf tools: Add V=2 option to help debug config issues perf tools: Suggest static libraries as well perf: Use default compiler mode by default Michael Tokarev (1): kbuild: fix bzImage build for x86 Michal Marek (7): scripts/package: tar-pkg: use tar --owner=root kbuild: create include/generated in silentoldconfig score: add asm/asm-offsets.h wrapper kbuild: generate modules.builtin kbuild: fix make clean after mismerge modpost: fix segfault with short symbol names MAINTAINERS: new kbuild maintainer Michal Nazarewicz (19): USB: g_file_storage: parts of file_storage.c moved to separate file USB: g_file_storage: "fsg_" prefix added to some identifiers USB: g_file_storage: per-LUN ro, removable and cdrom flags handling changed USB: g_file_storage: more code from file_storage.c moved to storage_common.c USB: g_mass_storage: template f_mass_storage.c file created USB: g_mass_storage: testing code from f_mass_storage.c removed USB: g_mass_storage: parts of fsg_dev moved to fsg_common structure USB: g_mass_storage: constant length buffers used USB: g_mass_storage: fsg_common_init() created USB: Interface Association Descriptors added to CDC & RNDIS USB: g_mass_storage: Mass Storage Function created USB: g_mass_storage: fsg_config added & module params handlig changed USB: g_mass_storage: lun_name_format and thread_name added USB: g_mass_storage: code cleaned up and comments updated USB: g_mass_storage: most data moved to fsg_common USB: composite: usb_composite_unregister() no longer __exit USB: g_mass_storage: thread_exits callback added USB: g_multi: Multifunction Composite Gadget added USB: Added USB_ETH_RNDIS to use instead of CONFIG_USB_ETH_RNDIS Michal Simek (39): powerpc/of_serial: Add missing ns16550a id microblaze: GPIO reset support microblaze: __init_begin symbol must be aligned microblaze: Add IRQENTRY_TEXT to lds microblaze: Stack trace support microblaze: Register timecounter/cyclecounter microblaze: Lockdep support microblaze: preliminary enabling for LATENCYTOP support in Kconfig microblaze: Add TRACE_IRQFLAGS_SUPPORT microblaze: ftrace: add static function tracer microblaze: ftrace: enable HAVE_FUNCTION_TRACE_MCOUNT_TEST microblaze: ftrace: Add dynamic trace support microblaze: ftrace: add function graph support microblaze: ftrace: Add dynamic function graph tracer microblaze: Remove saving and restoring before calling signal code microblaze: Fix announce message for reset gpio microblaze: Support both levels for reset microblaze: Detect new 7.20.d version microblaze: Fix cache_line_lenght microblaze: Extend cpuinfo for support write-back caches microblaze: Ptrace notifying from signal code microblaze: support U-BOOT image format microblaze: Move cache macro from cache.h to cacheflush.h microblaze: Enable asm optimization only for HW with barrel-shifter microblaze: Update default generic DTS microblaze: Export memory_start for modules microblaze: Adding dev_arch_data functions microblaze: Futex support microblaze: Remove duplicity from pgalloc.h microblaze: Checking DTS against PVR for write-back cache microblaze: Enable futimesat syscall microblaze: Enable DTC compilation microblaze: Do not count system calls in default microblaze: Remove panic_timeout init value microblaze: Remove ancient and fake microblaze version from cpu_ver table microblaze: Add PVR for Microblaze v7.30.a microblaze: Support for WB cache microblaze: Remove show_tmem function microblaze: Remove rt_sigsuspend wrapper Michel Dänzer (3): drm/radeon: Give userspace more accurate information about available memory. agp/uninorth: Also handle user memory types in u3_remove_memory(). agp/uninorth: Unify U3 and pre-U3 insert_memory and remove_memory hooks. Miguel Aguilar (5): ASoC: Davinci: Add audio codec support for DM365 EVM Input: add DaVinci Keypad Driver Davinci: DM365: Add platform device for McBSP Davinci: DM365: Enable DaVinci Key Scan support for DM365 EVM DaVinci: DM365: Enable DaVinci RTC support for DM365 EVM Mika Korhonen (3): mtd: OneNAND: move erase method to a separate function mtd: OneNAND: multiblock erase support mtd: OneNAND: fix double printing of function name Mika Kuoppala (1): i2c: Prevent priority inversion on top of bus lock Mika Westerberg (2): OMAP3: serial - allow platforms specify which UARTs to initialize OMAP3: serial - fix bug introduced in Mikael Pettersson (5): iop: clocksource support iop: clockevent support iop: enable generic time iop: implement sched_clock() x86, apic: Enable lapic nmi watchdog on AMD Family 11h Mike Anderson (4): dm: add dm_deleting_md function dm ioctl: forbid messages to devices being deleted dm mpath: add mutex to synchronize adding and flushing work dm mpath: prevent io from work queue while suspended Mike Arthur (1): ASoC: Add WM8711 CODEC driver Mike Christie (16): [SCSI] fix propogation of integrity errors [SCSI] fcoe: initialize return value in fcoe_destroy [SCSI] modify change_queue_depth to take in reason why it is being called [SCSI] scsi error: have scsi-ml call change_queue_depth to handle QUEUE_FULL [SCSI] libfc: convert to scsi_track_queue_full [SCSI] libfc: do not use DID_NO_CONNECT for pkt alloc failures. [SCSI] fc class: fail fast bsg requests [SCSI] add scsi target reset support to scsi ioctl [SCSI] bnx2i: use common iscsi suspend queue [SCSI] libiscsi: fix login/text checks in pdu injection code [SCSI] libiscsi: Check TMF state before sending PDU [SCSI] libiscsi: add warm target reset tmf support [SCSI] iscsi class: modify handling of replacement timeout [SCSI] iser: set tgt and lu reset timeout [SCSI] libiscsi: hook into ramp up/down handling [SCSI] fc class: fix fc_transport_init error handling Mike Frysinger (56): sched: Mark sched_clock() as notrace asm-generic/gpio.h: add some forward decls of the device struct USB: musb: tweak musb_read_fifo() to avoid unused warnings USB: musb: fix printf warning in debug code smc91x: fix unused flags warnings on UP systems gen_init_cpio: fixed fwrite warning Blackfin: convert to generic checksum code Blackfin: update defconfigs Blackfin: calculate on-chip lengths at link time rather than run time Blackfin: clean up isp1362 board resources Blackfin: BF51x/BF52x: fill out bfin_clear_PPI_STATUS() Blackfin: pull in firmware Kconfig Blackfin: push down asm/ includes and out of bfin-global.h Blackfin: convert DMA mutex to an atomic and drop redundant code Blackfin: coreb: switched to unlocked_ioctl Blackfin: rename BF542 host dma defines Blackfin: fix some BF547 header copy & paste typos Blackfin: unify BF547/8/9 headers Blackfin: scrub unused RTC masks Blackfin: scrub unused watchdog mmr masks Blackfin: BF51x: dump non-existent SPI/NFC MMRs Blackfin: punt OTP MMRs Blackfin: punt unused MXVR masks Blackfin: BF54x: punt useless "masks" for count/address MMRs Blackfin: H8606/ip0x: drop redundant SPI ctl_reg settings Blackfin: pull in asm/dpmc.h for power defines Blackfin: unify duplicated power masks Blackfin: unify DMA masks Blackfin: add an example showing how to use the gptimers API Blackfin: don't give CPU its own line in traps output Blackfin: add an uncompressed vmImage target Blackfin: comment the FDPIC PTRACE defines Blackfin: force BFD target when linking modules Blackfin: gptimers: use unsigned timer/group ids Blackfin: punt dead/unused flash mem_init settings bfin-otp: add BF51x to the supported arch list Blackfin: reject NULL callback in set_dma_callback() Blackfin: finish_atomic_sections: optimize the RTS step Blackfin: push BF5Xx configs down into mach-specific Kconfigs Blackfin: drop ptrace() write support for fixed code/bootrom Blackfin: io.h: fix random busted whitespace Blackfin: BF537: push down error masks to avoid namespace pollution Blackfin: BF52x: unify def/cdef headers Blackfin: BF51x: unify def/cdef headers Blackfin: bf537-stamp: kill AD714x board-specific Kconfigs Blackfin: drop unused ax88180 resources Blackfin: ip0x: pull in asm/portmux.h for P_xxx defines Blackfin: convert cyc2ns() to clocksource_cyc2ns() Blackfin: kgdb_test: clean up code a bit Blackfin: MPU: add missing __init markings Blackfin: NOMPU: skip DMA ICPLB hole when it is redundant Blackfin: drop duplicate sched_clock Blackfin: define __NR_recvmmsg firmware: only allow EDD on x86 spidev: add proper section markers nommu: ramfs: remove unused local var Mike Galbraith (9): perf tools: Fix counter sample frequency breakage perf sched: Add -C option to measure on a specific CPU perf tools: Remove expensive old debug code from perf top sched: Check for an idle shared cache in select_task_rq_fair() sched: Rate-limit newidle sched: Fix affinity logic in select_task_rq_fair() sched: Fix and clean up rate-limit newidle code sched: Fix/add missing update_rq_clock() calls sched: Fix build warning in get_update_sysctl_factor() Mike Isely (12): V4L/DVB (13222): pvrusb2: Make more info available to udev V4L/DVB (13223): pvrusb2: Soften encoder warning message V4L/DVB (13224): pvrusb2: Improve diagnostic info on driver initialization failure V4L/DVB (13225): pvrusb2: Report hardware description to kernel log upon initialization V4L/DVB (13226): pvrusb2: Add hardware description to debuginfo output V4L/DVB (13227): pvrusb2: Fix redundant message on driver initialization failure (missing break) V4L/DVB (13228): pvrusb2: Cosmetic kernel log tweak V4L/DVB (13495): pvrusb2: Support 16KB FX2 firmware V4L/DVB (13496): pvrusb2: Support manual extraction of 16KB FX2 firmware V4L/DVB (13497): pvrusb2: Shorten device hardware description text to work around V4L shortcoming V4L/DVB (13498): pvrusb2: Bind I2C address 0x71 for Zilog IR devices V4L/DVB (13499): pvrusb2: Cosmetic tweak to minimize size_t exposure Mike Rapoport (8): ASoC: OMAP: enable Overo driver for CM-T35 omap3evm: Initialize vmmc and vmmc_aux regulators omap3: Add CompuLab CM-T35 board support omap3: Add CompuLab CM-T35 defconfig backlight: tdo24m: ensure chip select changes between transfers [ARM] pxa: add EXT_WAKEUP interrupts handling for pxa3xx omap2: mux: intoduce omap_mux_{read,write} omap3: cm-t35: add mux initialization Mike Snitzer (9): dm snapshot: add allocated metadata to snapshot status dm snapshot: move cow ref from exception store to snap core dm snapshot: track suspended state in target dm ioctl: retrieve status from inactive table dm snapshot: allow live exception store handover between tables dm snapshot: create function for chunk_is_tracked wait dm snapshot: support barriers in snapshot merge target dm snapshot: merge consecutive chunks together dm snapshot: report merge failure in status Mike Travis (6): sched: Limit the number of scheduler debug messages x86: Limit number of per cpu TSC sync messages timers, init: Limit the number of per cpu calibration bootup messages x86: Remove enabling x2apic message for every CPU x86: Limit the number of processor bootup messages ACPI: Remove repeated registered as cooling_device messages Miklos Szeredi (4): nfs: remove unnecessary check from nfs_rename() nfs: fix comments in nfs_rename() nfs: dont unhash target if renaming a directory nfs: clean up sillyrenaming in nfs_rename() Mikulas Patocka (36): sunhme: fix dma warning in Sun HME dm: avoid _hash_lock deadlock dm snapshot: only take lock for statustype info not table dm snapshot: cope with chunk size larger than origin dm io: use slab for struct io dm io: remove extra bi_io_vec region hack dm raid1: support flush dm raid1: split touched state into two dm log: add flush_header function dm log: introduce flush_failed variable dm log: add flush callback fn dm log: use flush callback fn dm raid1: implement mirror_flush dm raid1: report flush errors separately in status dm raid1: add framework to hold bios during suspend dm raid1: use hold framework in do_failures dm raid1: abstract get_valid_mirror function dm raid1: remove bio_endio from dm_rh_mark_nosync dm raid1: hold write bios when errors are handled dm raid1: hold all write bios when leg fails dm raid1: explicitly initialise bio_lists dm snapshot: simplify sector_to_chunk expression dm snapshot: abstract minimum_chunk_size fn dm kcopyd: accept zero size jobs dm io: handle empty barriers dm snapshot: make bio optional in __origin_write dm exception store: add merge specific methods dm snapshot: add merge target dm snapshot: rework writing to origin dm snapshot: avoid allocating exceptions in merge dm snapshot: permit only one merge at once dm snapshot: add merging dm snapshot: queue writes to chunks being merged dm snapshot: delay merging a chunk until writes to it complete dm snapshot: trigger exceptions in remaining snapshots during merge dm snapshot: use merge origin if snapshot invalid Milan Broz (7): dm: sysfs add empty release function to avoid debug warning dm crypt: make wipe message also wipe tfm key dm crypt: move private iv fields to structs dm crypt: restructure essiv error path dm crypt: separate essiv allocation from initialisation dm crypt: make wipe message also wipe essiv key dm crypt: add plain64 iv Mimi Zohar (3): LSM: imbed ima calls in the security hooks tpm add default function definitions ima: limit imbalance msg Minchan Kim (1): x86: Remove pfn in add_one_highpage_init() Ming Lei (1): V4L/DVB (13153): uvcvideo: Fix uvc_alloc_urb_buffers() Mithlesh Thukral (4): Staging: comedi: drivers.c: checkpatch fix Staging: otus : checkpatch.pl cleanup for header files Staging: otus : checkpatch.pl cleanup for .c files Staging: otus : checkpatch.pl cleanup for some more .c files Moger, Babu (1): [SCSI] scsi_dh_rdac: Add two new IBM devices to rdac_dev_list Mohammed Gamal (5): KVM: x86 emulator: Add 'push/pop sreg' instructions KVM: x86 emulator: Introduce No64 decode option KVM: x86 emulator: Add missing decoder flags for 'or' instructions KVM: x86 emulator: Add pusha and popa instructions KVM: VMX: Enhance invalid guest state emulation Muralidharan Karicheri (5): V4L/DVB (13571): v4l: Adding Digital Video Timings APIs V4L/DVB (13572): v4l2-spec: Digital Video Timings API documentation V4L/DVB (13598): videobuf_dma_contig_user_get() for non-aligned offsets V4L/DVB (13618): v4l2: Adding helper function to get dv preset description V4L/DVB (13619): v4l2-spec: Adds EBUSY error code for S_STD and QUERYSTD ioctls MĂ¡rton NĂ©meth (7): V4L/DVB (13382): gspca - pac7302: Remove redundant stream off command. V4L/DVB (13383): gspca - pac7311/pac7302: Propagate error to higher level software. V4L/DVB (13385): gspca - pac7302: Add red and blue balance control. V4L/DVB (13418): gspca - pac7311: Stop sending URBs on first error. V4L/DVB (13419): gspca - pac7302: Add debug register write interface. V4L/DVB (13561): gspca - main: Remove unnecessary set to alternate 0. V4L/DVB (13621): gspca - some subdrivers: Make device_table[]s constant. Márton NĂ©meth (10): perf_event: Remove redundant zero fill Input: do not overwrite the first part of phys string V4L/DVB (13414): ttusb-dec: do not overwrite the first part of phys string V4L/DVB (13415): videobuf-core: explicitly cast page count V4L/DVB (13416): smssdio: initialize return value V4L/DVB (13589): dib8000: merge two conditionals V4L/DVB (13682): dib8000: make some constant static V4L/DVB (13683): sanio-ms: clean up init, exit and id_table V4L/DVB (13687): cx231xx: use NULL when pointer is needed V4L/DVB (13688): au8522: modify the attributes of local filter coefficients Naohiro Ooiwa (1): signal: Print warning message when dropping signals Naoya Horiguchi (3): mm: hugetlb: fix hugepage memory leak in mincore() mm: hugetlb: fix hugepage memory leak in walk_page_range() mm hugetlb: add hugepage support to pagemap Narender Kumar (2): netxen: sysfs control for auto firmware recovery netxen : fix debug tools access for NX2031 Nathan Fontenot (4): powerpc/pseries: Kernel DLPAR Infrastructure sysfs/cpu: Add probe/release files powerpc/pseries: Add kernel based CPU DLPAR handling powerpc/pseries: Correct pseries/dlpar.c build break without CONFIG_SMP Nathaniel McCallum (2): USB: add hex/bcd detection to usb modalias generation USB: handle bcd incrementation in usb modalias generation Neil Horman (4): af_packet: add interframe drop cmsg (v6) net: Generalize socket rx gap / receive queue overflow cmsg crypto: ansi_cprng - Add FIPS wrapper sctp: Fix mis-ordering of user space data when multihoming in use Neil Jones (1): ASoC: Add support for the WM8727 DAC. NeilBrown (23): NFS4ERR_FILE_OPEN handling in Linux/NFS md/bitmap: protect against bitmap removal while being updated. md/raid5: remove some sparse warnings. md: remove sparse warning:symbol XXX was not declared. md: adjust resync_min usefully when resync aborts. md: don't reset curr_resync_completed after an interrupted resync md: support barrier requests on all personalities. md/raid5: don't complete make_request on barrier until writes are scheduled md: add honouring of suspend_{lo,hi} to raid1. md/raid1: add takeover support for raid5->raid1 md: collect bitmap-specific fields into one structure. md: move offset, daemon_sleep and chunksize out of bitmap structure md: change daemon_sleep to be in 'jiffies' rather than 'seconds'. md: remove needless setting of thread->timeout in raid10_quiesce md: support bitmap offset appropriate for external-metadata arrays. md: factor out parsing of fixed-point numbers md: support updating bitmap parameters via sysfs. md/bitmap: move setting of daemon_lastrun out of bitmap_read_sb md: Support write-intent bitmaps with externally managed metadata. md/bitmap: update dirty flag when bitmap bits are explicitly set. md: add MODULE_DESCRIPTION for all md related modules. md: revise Kconfig help for MD_MULTIPATH md: integrate spares into array at earliest opportunity. Nelson Elhage (2): avr32: clean up linker script using standard macros. ARM: Clean up linker script using new linker script macros. Nelson, Shannon (1): ixgbe: Flush the LSC mask change to prevent repeated interrupts Nick Bowler (1): docs: Describe the 'C' taint flag in oops-tracing.txt Nick Piggin (6): perf annotate: Allocate history size correctly ipc/sem.c: sem optimise undo list search ipc/sem.c: sem use list operations ipc/sem.c: sem preempt improve fs: anon_inodes implement dname fs: no games with DCACHE_UNHASHED Nicolas Ferre (11): avr32: add two new at91 to cpu.h definition ASoC: at91sam9g20ek_2mmc board uses same audio connexion as at91sam9g20ek ARM: 5726/1: at91/USB: at91sam9g45 series USB host integration at91: at91sam9g20ek modify dual slot evaluation kit atmel_lcdfb Kconfig: remove long dependency line Input: atmel_tsadcc - rework setting touchscreen capabilities Input: atmel_tsadcc - use platform parameters AT91: add platform parameters for atmel_tsadcc in at91sam9rlek AT91: add touchscreen support for at91sam9g45ekes atmel-mci: change use of dma slave interface mmc: atmel-mci: new MCI2 module support in atmel-mci driver Nicolas LĂ©veillĂ© (1): Input: xpad - add two new Xbox 360 devices Nicolas Palix (1): sh: Replace an explicit computation by the use of the container_of macro Nicolas Pitre (4): mtd: add missing put_chip() in cfi_intelext_reset() sdio_uart: Fix oops caused by the previous changeset ARM: 5848/1: kill flush_ioremap_region() sdhci: add support for the SysKonnect CardBus2SDIO adapter Nicolas de PesloĂĽan (3): bonding: fix a parameter name in error message bonding: remove useless assignment bonding: change bond_create_proc_entry() to return void Nigel Cunningham (2): PM / Hibernate: Move swap functions to kernel/power/swap.c. PM / Hibernate: Shift remaining code from swsusp.c to hibernate.c Nils Carlson (3): edac: i5100 clean controller to channel terms edac: i5100 add scrubbing edac: i5100 add 6 ranks per channel Nishanth Menon (2): omap3: Introduce OMAP3630 omap3: move check_revision above check_features Nitin Gupta (4): Staging: xvmalloc memory allocator Staging: virtual block device driver (ramzswap) Staging: ramzswap: documentation Staging: ramzswap: add TODO file Noriyuki Fujii (1): [SCSI] megaraid_sas: make driver PCI legacy I/O port free driver OGAWA Hirofumi (5): flusher: Fix PF_FROZEN race perf timechart: Fix header handling perf: Make common SAMPLE_EVENT parser perf tools: Misc small fixes x86: Compile insn.c and inat.c only for KPROBES Octavian Purdila (5): make TLLAO option for NA packets configurable net: introduce NETDEV_UNREGISTER_PERNET ipv4: factorize cache clearing for batched unregister operations net: device name allocation cleanups net: use net_eq to compare nets Oleg Nesterov (13): ptrace: cleanup ptrace_init_task()->ptrace_link() path ptrace: copy_process() should disable stepping ptrace: introduce user_single_step_siginfo() helper ptrace: powerpc: implement user_single_step_siginfo() ptrace: change tracehook_report_syscall_exit() to handle stepping ptrace: x86: implement user_single_step_siginfo() ptrace: x86: change syscall_trace_leave() to rely on tracehook when stepping signals: SEND_SIG_NOINFO should be considered as SI_FROMUSER() signals: send_signal: use si_fromuser() to detect from_ancestor_ns signals: cosmetic, collect_signal: use SI_USER signals: kill force_sig_specific() signals: check ->group_stop_count after tracehook_get_signal() do_wait() optimization: do not place sub-threads on task_struct->children list Oliver Endriss (2): V4L/DVB (13673): lnbp21: Implement 22 kHz tone control V4L/DVB (13674): stv090x: Add DiSEqC envelope mode Oliver Hartkopp (1): can: Fix data length code handling in rx path Oliver Neukum (10): wimax/i2400m/usb: remove unnecessary power management primitive in i2400m convert kaweth to use usb_reset_configuration() Input: usbtouchscreen - remove unneeded usb_kill_urb cdc-ether: Implement reset_resume() usbnet & cdc-ether: Autosuspend for online devices V4L/DVB (13402): radio-mr800 - autosuspend for radio-mr800 driver USB: usbtmc: minor formatting cleanups USB: improved error handling in usb_port_suspend() MAINTAINERS: Transfering maintainership of cdc-ether usb: remove rare pm primitive for conversion to new API Olivier Grenie (7): V4L/DVB (13049): dib8000: SNR in 10th of dB V4L/DVB (13051): DiB7000P: improve rebostness of HAS_LOCK indicator V4L/DVB (13583): DiB8090: Add the DiB0090 tuner driver and STK8096GP-board V4L/DVB (13584): DiBXXX0: fix most of the Codingstyle violations from the previous patch V4L/DVB (13585): STK807xPVR: correct the enumeration V4L/DVB (13586): DiB0700: Add parameter to change the buffer size V4L/DVB (13587): DiB8000: enhance status lock Olivier Lorin (3): V4L/DVB (13194): gspca - gl860: improvement of the main driver part V4L/DVB (13195): gspca - gl860: comment changes and naming scheme egalization V4L/DVB (13196): gspca - gl860: add flip/mirror for OV2640 Olof Johansson (4): powerpc: pasemi_defconfig update arm: omap: Add omap3_defconfig ASoC: Fix build of OMAP sound drivers omap3: Allow EHCI to be built on OMAP3 Ondrej Zary (4): ALSA: tea575x-tuner: fix mute snd-fm801: autodetect SF64-PCR (tuner-only) card V4L/DVB (13608): radio-sf16fmi: fix mute, add SF16-FMP to texts V4L/DVB (13609): radio-sf16fmi: add autoprobing Or Gerlitz (1): IB/iser: Rewrite SG handling for RDMA logic Otavio Salvador (3): pata_cs5535: fix comment header typo pata-it821x: use PCI_DEVICE_ID_RDC_D1010 define Staging: vt6656: use lowercase for VIA USB vendor id Ozan ÇaÄźlayan (1): ehci-hcd: Fix typo in an error message PJ Waskiewicz (4): ixgbe: Make queue pairs on single MSI-X interrupts ixgbe: Disable Flow Control for certain devices ethtool: Add Direct Attach support to connector port reporting ixgbe: Display currently attached PHY through ethtool Pablo Neira Ayuso (1): netfilter: nf_ct_tcp: improve out-of-sync situation in TCP tracking Paolo Bonzini (3): xen: fix is_disconnected_device/exists_disconnected_device xen: improvement to wait_for_devices() xen: wait up to 5 minutes for device connetion Patrick Boettcher (3): V4L/DVB (13580): Add support for PCTV 74e (Pinnacle) + fix USB vendor IDs V4L/DVB (13582): DiB0700: remove USB IDs of PCTV 74e from the driver V4L/DVB (13581): DiBUSB: fix I2c access when there is a read-access w/o write sequence Patrick McHardy (13): vlan: cleanup multiple unregistrations netfilter: remove unneccessary checks from netlink notifiers net: allow to propagate errors through ->ndo_hard_start_xmit() vlan/macvlan: propagate transmission state to upper layers vlan: support "loose binding" to the underlying network device ip_fragment: also adjust skb->truesize for packets not owned by a socket net 01/05: fib_rules: rearrange struct fib_rule net 02/05: fib_rules: rename ifindex/ifname/FRA_IFNAME to iifindex/iifname/FRA_IIFNAME net 03/05: fib_rules: add oif classification net 04/05: fib_rules: allow to delete local rule ipv4 05/05: add sysctl to accept packets with local source addresses ipv6: reassembly: use seperate reassembly queues for conntrack and local delivery netfilter: fix crashes in bridge netfilter caused by fragment jumps Patrick Mullaney (1): netdevice: provide common routine for macvlan and vlan operstate management Paul E. McKenney (28): rcu: Add rnp->blocked_tasks to tracing rcu: Update trace.txt documentation to reflect recent changes rcu: Update trace.txt documentation for blocked-tasks lists rcu: "Tiny RCU", The Bloatwatch Edition rcu: Add synchronize_srcu_expedited() rcu: Add synchronize_srcu_expedited() to the rcutorture test suite rcu: Add synchronize_srcu_expedited() to the documentation rcu: Improve rcutorture diagnostics when bad torture_type specified rcu: Fix TINY_RCU #elif condition rcu: Prepare for synchronization fixes: clean up for non-NO_HZ handling of ->completed counter rcu: Fix synchronization for rcu_process_gp_end() uses of ->completed counter rcu: Fix note_new_gpnum() uses of ->gpnum rcu: Remove inline from forward-referenced functions rcu: Enable synchronize_sched_expedited() fastpath rcu: Rename dynticks_completed to completed_fqs rcu: Simplify association of quiescent states with grace periods rcu: Mark init-time-only rcu_bootup_announce() as __init rcu: Accelerate callback processing on CPUs not detecting GP end rcu: Simplify association of forced quiescent states with grace periods rcu: Further cleanups of use of lastcomp rcu: Eliminate __rcu_pending() false positives rcu: Fix grace-period-stall bug on large systems with CPU hotplug rcu: Eliminate unneeded function wrapping rcu: Re-arrange code to reduce #ifdef pain rcu: Rename "quiet" functions rcu: Enable fourth level of TREE_RCU hierarchy rcu: Add expedited grace-period support for preemptible RCU rcu: Make RCU's CPU-stall detector be default Paul Fertser (4): pcf50633: Get rid of charging restart software auto-triggering pcf50633: Properly reenable charging when the supply conditions change pcf50633: Query charger status directly mfd: Disable unnecessary pcf50633 shutdown on lowsys Paul Mackerras (2): perf tools: Fix compilation on powerpc perf_event: Fix incorrect range check on cpu number Paul Mundt (96): sh: sh4_flush_cache_mm() optimizations. sh: Kill off broken PHYSADDR() usage in sh4_flush_dcache_page(). sh: Kill off segment-based d-cache flushing on SH-4. sh: Rework sh4_flush_cache_page() for coherent kmap mapping. sh: Fix up redundant cache flushing for PAGE_SIZE > 4k. sh: Factor in cpu id for selection of cache colour fixmap. Merge branch 'sh/cachetlb' sh: Shut up CONFIG_32BIT=n compiler warnings. sh: Reinstate ILSEL -> IRL intc mappings for SH-X3 proto CPU. Merge branch 'sh/dwarf-unwinder' of git://github.com/mfleming/linux-2.6 into sh/dwarf-unwinder Merge branch 'sh/dwarf-unwinder' Merge branch 'sh/ftrace' of git://github.com/mfleming/linux-2.6 Merge branch 'sh/stable-updates' cdrom: gdrom: Kill off PHYSADDR use. sh: maple: PHYSADDR() -> virt_to_phys() conversion. Merge branch 'sh/stable-updates' sh: Generalize CALLER_ADDRx support. sh: Tidy up the dwarf module helpers. sh: Don't profile return_address(). sh: ftrace: Make code modification NMI safe. sh: Provide CALLER_ADDRx definitions even when ftrace is disabled. sh: Only invalidate the I-cache range for secondary CPUs stack_start. Merge branch 'sh/stable-updates' sh: TS_RESTORE_SIGMASK conversion. sh: Count NMIs in irq_cpustat_t. Merge branch 'sh/stable-updates' sh: Force boot CPU in to light sleep mode for SH-X3 SMP. sh: Idle loop chainsawing for SMP-based light sleep. sh: Make check_pgt_cache() more aggressive while idling. sh: Fix up IRQ re-enabling for the need_resched() case. sh: Support SCHED_MC for SH-X3 multi-cores. Merge branch 'sh/stable-updates' sh: Kill off legacy UBC wakeup cruft. sh: Convert to asm-generic/irqflags.h. sh: Disable SCIF2 on the SH-X3 proto CPU. sh: Fix up smp_mb__xxx() memory barriers for SH-4A SMP. sh: Fix up uninitialized variable warning in dwarf unwinder. sh: Fix up cacheflush routine symbol exports. sh: Convert to asm-generic/dma-mapping-common.h sh: Add dma-mapping support for dma_alloc/free_coherent() overrides. Merge branch 'sh/sdhi-mfd' Merge branch 'sh/stable-updates' Merge branch 'sh/stable-updates' sh: Revamp PCI DMA coherence Kconfig bits. sh: Kill off superfluous arch/sh/drivers/pci/Kconfig. sh: Fix up dma_is_consistent(). sh64: cache flush symbol exports. sh: intc: Make ack_regs generally available. sh: Clean up more superfluous symbol exports. sh: Bump up dma_ops initialization far earlier in the boot process. sh: enable PERF_USE_VMALLOC across the board. Merge branch 'sh/stable-updates' sh: perf events: Add preliminary support for SH-4A counters. sh: perf events: Kill off left over debugging cruft. sh: intc: dynamic IRQ support. sh: intc: Handle legacy IRQ reservation in vector map. x86/hw-breakpoints: Actually flush thread breakpoints in flush_thread(). sh: mach-se: Convert SE7722 FPGA to dynamic IRQ allocation. video: sh_mobile_lcdcfb: Don't attempt to map zero-length scatterlists. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 sh: perf events: Fix up uninitialized variable warning. sh: Default-enable SPU clock for SH7724. sh: perf events: Preliminary callchain support. sh: perf events: Add support for SH7750-style counters. sh: oprofile: Kill off bitrotted SH7750 driver. sh: oprofile: Fix up count size mismatch for common impl. Merge branch 'sh/stable-updates' sh: perf events: Document SH-4A raw event codes. ksym_tracer: Support read accesses independent of read/write. sh: Enable PMB support for all SH-4A CPUs. sh: Fix up the CONFIG_PERF_EVENTS=n build for SH-4. sh: Use the generic I/O port base for slowdown. sh64: Fix up the CONFIG_GENERIC_BUG=n build. sh64: Fix up reworked cache op build. sh: dma: Kill off bogus dma_sysclass symbol export. Merge branch 'sh/stable-updates' Merge branch 'master' into sh/st-integration sh: Apply the sleazy FPU changes for SH-2A FPU as well. sh: Fix up the FPU emulation build. serial: sh-sci: Depend on HAVE_CLK unconditionally. sh: pfc: Convert from ctrl_xxx() to __raw_xxx() I/O routines. sh: pfc: pr_info() -> pr_debug() cleanups. sh: Add default uImage rule for se7724, ap325rxa, and migor. sh: Partial revert of copy/clear_user_highpage() optimizations. sh: Make associative cache writes fatal on all SH-4A parts. sh: intc: Fixup compile breakage. sh: pfc: Fixup type mismatch in debug printks. Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into sh/for-2.6.33 sh: ftrace: Fix up syscall tracing build. sh: Wire up recvmmsg syscall. Staging: iio: Fix up the module build. net: smc91x: Fix up type mismatch in smc_drv_resume(). sh: Make the unaligned trap handler always obey notification levels. sh: wire up vmallocinfo support in ioremap() implementations. sh: Stub in P3 ioremap support for nommu parts. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Paul Walmsley (20): omap3: drop all IVA-related address base definitions OMAP1/2/3 clock: remove paranoid checks in preparation for clock{,2xxx,3xxx}_data.c OMAP2 clock: APLL code shouldn't rely on static clocks in its local namespace OMAP2/3: move SDRC macros to mach-omap2/sdrc.h OMAP2xxx clock: remove implicit dependency between rate CPU flag and clkdev_omap CPU flag OMAP3 clock: convert clock34xx.h to clock34xx_data.c OMAP2 clock: convert clock24xx.h to clock2xxx_data.c, opp2xxx* OMAP1 clock: convert test in disable_unused() to use ENABLE_ON_INIT OMAP1 clock: convert mach-omap1/clock.h to mach-omap1/clock_data.c OMAP2/3 PRCM: don't export prm_*(), cm_*() functions OMAP clockdomain/powerdomain: remove CONFIG_OMAP_DEBUG_{CLOCK,POWER}DOMAIN OMAP clockdomain/powerdomain: optimize out sleepdep code on OMAP24xx OMAP powerdomain/PM: use symbolic constants for the max number of power states OMAP powerdomain: rearrange struct powerdomain to save some memory OMAP3: SDRC: Place SDRC AC timing and MR changes in CORE DVFS SRAM code behind Kconfig OMAP clock/hwmod: fix off-by-one errors OMAP3 hwmod: reprogram OCP_SYSCONFIG register after setting SOFTRESET OMAP3 hwmod: Add automatic OCP_SYSCONFIG AUTOIDLE handling OMAP hwmod: add names to module MPU IRQ lines OMAP3 hwmod: drop most of the OCP_SYSCONFIG.CLOCKACTIVITY code Pavel Hofman (7): ALSA: ak4114 - fix errors in output selector bits ALSA: ak4620 support, codec regs listed in proc ALSA: ak4113 support ALSA: ice1724 - adding GPIO routines for mask and direction ALSA: ice1724 - pro-rate-locking makes sense only for internal clock mode ALSA: ice1724 - Support for multiple external clock types ALSA: ice1724 - Infrasonic Quartet support Pavel Machek (15): msm: make debugging UART (for DEBUG_LL) configurable msm: add minimal board file for HTC Dream device msm: Add memory map for HTC Dream Input: ads7846 - fix pressure reporting Input: ads7846 - switch to using dev_vdbg() [ARM] pxa/zaurus: cleanup sharpsl_pm.c [ARM] pxa/zaurus: rename spitz_battery_levels_* to sharpsl_* video: Allow selecting MSM framebuffer in Kconfig HTC Dream: mmc compilation fixes Staging: dream: make it independant from CONFIG_ANDROID Staging: dream: Synaptics touchscreen for HTC Dream: check that smbus is available Staging: dream: remove wakelock support Staging: dream: remove wakelock support from smd_rpcrouter.h Staging: dream: add TODO file Staging: dream: add gpio and pmem support Pavel Vasilyev (1): agp/amd64: Remove GART dependency on AGP_AMD64 Pawel Osciak (2): ARM: S3C: Prepare s3c64xx-specific s3c-fb register definition for reuse ARM: S5PC1xx: add platform helpers for s3c-fb device Pedro Andres Aranda Gutierrez (1): V4L/DVB (13579): PATCH: better support for INTUIX DVB stick boot Pekka Enberg (5): perf kmem: Add --sort hit and --sort frag perf symbols: Fix ELF header errors during "perf kmem record" SLUB: Fix __GFP_ZERO unlikely() annotation SLAB: Fix lockdep annotations for CPU hotplug Merge branches 'slab/fixes', 'slab/kmemleak', 'slub/perf' and 'slub/stats' into for-linus Peng Tao (1): mm: fix comments for invalidate_inode_pages2() Pete Eberlein (4): V4L/DVB (13455): go7007: Add struct v4l2_device. V4L/DVB (13456): s2250: Change module structure V4L/DVB (13457): s2250: subdev conversion V4L/DVB (13458): go7007: subdev conversion Peter 'p2' De Schrijver (3): OMAP3: PM: Wait for SDRC ready iso a blind delay OMAP3: PM: CPUidle: Add new lower-latency C1 state OMAP3: PM: idle: Remove fclk check for idle loop Peter Feuerer (1): acerhdf: add new BIOS versions Peter Huewe (7): add __init/__exit macros to omap video drivers media/video: add __init/__exit macros to various drivers V4L/DVB (13288): adding __init/__exit macros to various drivers Staging: et131x: adding __init/__exit macros Staging: cx25821: adding __init/__exit macros Staging: p9auth: adding __init/__exit macros Staging: phison: adding __init/__exit macros Peter Hutterer (1): HID: add multi-input quirk for NextWindow Touchscreen. Peter Ma (3): avr32: re-instate MCI WP/CD pin assignments for ATNGW100 avr32: function for independently setting up SPI slaves avr32: MRMT: correct setup of SPI slaves Peter Oberparleiter (19): [S390] cio: fix double free in case of probe failure [S390] cio: fix repeat setting of cdev parent association [S390] cio: introduce parent-initiated device move [S390] cio: introduce subchannel todos [S390] cio: introduce ccw device todos [S390] cio: inform user when online/offline processing fails [S390] cio: handle error during device recognition consistently [S390] cio: handle error during path verification consistently [S390] cio: ensure proper locking during device recognition [S390] cio: dont panic in non-fatal conditions [S390] cio: consistent infrastructure for internal I/O requests [S390] cio: use ccw request infrastructure for sense id [S390] cio: use ccw request infrastructure for pgid [S390] cio: allow setting not-operational devices offline [S390] cio: remove intretry flag [S390] cio: split PGID settings and status [S390] cio: use sense-pgid operation for path verification [S390] cio: make steal lock procedure more robust [S390] cio: improve error recovery for internal I/Os Peter Staubach (1): nfsd: register NFS_ACL with rpcbind Peter Ujfalusi (27): ASoC: add support for multiple cards/codecs in debugfs ASoC: Improve the debugfs hierarchy ASoC: TPA6130A2 amplifier driver ASoC: TPA6130A2: Make tpa6130a2_power as static ASoC: Codec driver for Texas Instruments tlv320dac33 codec ASoC: TWL4030: Only update the needed bits in *set_dai_sysclk ASoC: tlv320dac33: typo fix in the header MFD: twl4030: add twl4030_codec MFD as a new child to the core OMAP: Platform support for twl4030_codec MFD ASoC: TWL4030: use the twl4030-codec.h for register descriptions ASoC: TWL4030: Driver registration via twl4030_codec MFD ASoC: TWL4030: Remove bypass tracking ASoC: TWL4030: Change codec_muted to apll_enabled ASoC: TWL4030: Change APLL powering sequence ASoC: TWL4030: Add APLL supply for the capture path ASoC: TWL4030: Make sure, that the codec is powered on startup MFD: TWL4030: Add audio_mclk to the codec platform data OMAP: Configure audio_mclk for twl4030-codec MFD MFD: twl4030-codec: APLL_INFREQ handling in the MFD driver ASoC: TWL4030: Do not modify the APLL_CTL register MFD: twl4030: add twl4030_codec MFD as a new child to the core OMAP: Platform support for twl4030_codec MFD MFD: TWL4030: Add audio_mclk to the codec platform data OMAP: Configure audio_mclk for twl4030-codec MFD MFD: twl4030-codec: APLL_INFREQ handling in the MFD driver omap: McBSP: Do not use extensive spin locks for dma_op_mode ASoC: tlv320dac33: Change RT wq to singlethread wq Peter Zijlstra (44): perf, x86: Add simple group validation x86: Generate cmpxchg build failures rcu: Simplify creating of lockdep class for root rcu_node sched: Make sure task has correct sched_class after policy change sched: Cleanup select_task_rq_fair() sched: More generic WAKE_AFFINE vs select_idle_sibling() sched: Sched_rt_periodic_timer vs cpu hotplug perf_event: Optimize perf_output_lock() perf: Allow for custom overflow handlers perf: Optimize some swcounter attr.sample_period==1 paths perf: Optimize perf_swevent_ctx_event() perf: Optimize perf_event_task_ctx() perf: Optimize perf_event_comm_ctx() perf: Optimize perf_event_mmap_ctx() perf: Fix PERF_FORMAT_GROUP scale info perf: Optimize perf_event_task_sched_out perf: Optimize __perf_event_read() perf: Simplify __perf_event_sync_stat perf: Simplify __perf_event_read perf: Fix time locking perf: Fix event scaling for inherited counters perf: Fix locking for PERF_FORMAT_GROUP perf_events: Undo copy/paste damage perf_events: Fix style nits perf_events: Disable events when we detach them perf_events: Update the context time on exit perf_events: Fix __perf_event_exit_task() vs. update_event_times() locking perf_events: Undo some recursion damage perf_events: Restore sanity to scaling land sched: Fix balance vs hotplug race sched: Remove sysctl.sched_features sched: Consolidate select_task_rq() callers sched: Remove rq->clock coupling from set_task_cpu() sched: Clean up ttwu() rq locking sched: Sanitize fork() handling sched: Clean up check_preempt_wakeup() sched: Discard some old bits sched: Remove unnecessary RCU exclusion sched: cgroup: Implement different treatment for idle shares sched: Fix task priority bug perf_events: Fix perf_event_attr layout perf events: Allow per-task-per-cpu counters perf record: Properly synchronize child creation perf record: Use per-task-per-cpu events for inherited events Petr Ĺ tetiar (1): Input: usbtouchscreen - add support for ET&T TC5UH touchscreen controller Phaneendra Kumar (1): DaVinci: DM365: SDIO interrupt resource correction Phil Carmody (2): sched: Fix memory leak in two error corner cases err.h: add helper function to simplify pointer error checking Philipp Reisner (11): The DRBD driver drbd: Work on permission enforcement Merge branch 'for-2.6.33' of git://git.kernel.dk/linux-2.6-block into for-2.6.33 drbdsetup X resume-io should be usable to resume IO [Bugz 256] Do not deadlock in drbd_disconnect() [bugz 258] Now it is equal to DRBD release 8.3.5 without compat crap Fixed a regression in resync decission code drbd_uuid_compare() [Bugz 260] DRBD: Now the code is 8.3.6 + 3 fixes (without compat crap) drbd: moved CN_IDX_DRBD and CN_VAL_DRBD to the right file drbd_req.c: use part_[inc|dec]_in_flight() drbd: Following the hmac change to SHASH (see linux commit 8bd1209cfff) Philippe Gerum (4): Blackfin/ipipe: prepare status bitops for SMP support Blackfin/ipipe: fix forward ref to barrier() Blackfin/ipipe: introduce support for CONFIG_MPU Blackfin/ipipe: update version stamp Pierre Ossman (1): drm/radeon/kms: Disable both CRTCs during mode switch Pieter Grimmerink (1): pxafb: add transparency field to pxafb_mode_info struct Ping Cheng (5): Input: wacom - ensure the device is initialized properly upon resume Input: wacom - add defines for packet lengths of various devices Input: wacom - add support for new LCD tablets Input: wacom - add defines for data packet report IDs Input: wacom - separate pen from express keys on Graphire Piotr Ziecik (1): rtc: add driver for BQ32000 I2C RTC Poonam Aggrwal (2): powerpc/85xx: Create dts for each core in CAMP mode for P2020RDB powerpc/85xx: Added P1020RDB Platform support. Prarit Bhargava (2): x86: AMD Northbridge: Verify NB's node is online x86, AMD: Fix stale cpuid4_info shared_map data in shared_cpu_map cpumasks Pravin Bathija (1): [SCSI] mpt fusion: Fix 32 bit platforms with 64 bit resources. Rabin Vincent (1): ARM: 5772/1: Use REV and REV16 for byte swapping on ARMv6+ Rafael Ignacio Zurita (1): ALSA: sh: add SuperH DAC audio driver for ALSA V4 Rafael J. Wysocki (9): Wireless / ath5k: Simplify suspend and resume callbacks Merge branch 'master' into for-linus PM / Runtime: Fix lockdep warning in __pm_runtime_set_status() PM / Runtime: Ensure timer_expires is nonzero in pm_schedule_suspend() PM / Runtime: Make documentation of runtime_idle() agree with the code PM / Runtime: Remove unnecessary braces in __pm_runtime_set_status() PM: Add flag for devices capable of generating run-time wake-up events PM: Remove unnecessary goto from device_resume_noirq() PM: rwsem.h need not be included into main.c Rafal Milecki (1): V4L/DVB (13116): gspca - ov519: Webcam 041e:4067 added. RafaĹ‚ MiĹ‚ecki (4): drm/radeon/kms/pm: fix typos drm/radeon/kms: fix typo in define: engine -> memory drm/radeon/kms: fix ring info in debugfs on r600+ drm/radeon/kms: init pm on all chipsets Rahul Tank (1): Bluetooth: Removal of unused variable in btmrvl driver Rajendra Nayak (29): OMAP3: PM: GPMC context save/restore OMAP3: PM: GPIO context save/restore OMAP3: PM: INTC context save/restore OMAP3: PM: PRCM context save/restore OMAP3: PM: Populate scratchpad contents OMAP3: PM: SCM context save/restore OMAP3: PM: restore SRAM functions after off-mode. OMAP3: PM: handle PER/NEON/CORE in idle OMAP3: PM: Restore MMU table entry OMAP3: PM: MPU off-mode support OMAP3: PM: CORE domain off-mode support OMAP3: PM: Program SDRC to send self refresh on timeout of AUTO_CNT OMAP3: PM: CPUidle: base driver and support for C1-C2 OMAP3: PM: CPUidle: support retention and off-mode C-states i2c-omap: OMAP3: PM: (re)init for every transfer to support off-mode ARM: OMAP4: PM: Fix the PRM and CM base addresses ARM: OMAP4: PM: PRM/CM module offsets for OMAP4 ARM: OMAP4: PM: Adds CM1/2 register defs for OMAP4 ARM: OMAP4: PM: Adds PRM register defs for OMAP4 ARM: OMAP4: PM: Adds PRM register shift and mask bits ARM: OMAP4: PM: Adds CM1/2 register field masks ARM: OMAP4: PM: OMAP4 clock tree and clkdev registration ARM: OMAP4: PM: Add dummy hooks for OMAP4 dpll api's ARM: OMAP4: PM: Move DPLL control apis to dpll.c ARM: OMAP4: PM: Add support for OMAP4 dpll api's ARM: OMAP4: PM: Add init api for DPLL nodes mfd: Rename twl4030_ routines in twl-regulator.c regulator: Add support for twl6030 regulators mfd: Add twl6030 regulator subdevices Rajiv Andrade (3): TPM: increase default TPM buffer TPM: fix pcrread tpm_tis: TPM_STS_DATA_EXPECT workaround Rakib Mullick (1): mm: fix section mismatch in memory_hotplug.c Ralf Baechle (7): MIPS: Remove addinitrd and CONFIG_PROBE_INITRD_HEADER MIPS: Move EARLY_PRINTK to Kconfig.debug MIPS: Modularize COP2 handling MIPS: Cleanup signal code initialization MIPS: eXcite: Remove platform. MIPS: Cleanup random differences beween lmo and Linus' kernel. MIPS: Lasat: Fix botched changes to sysctl code. Ramax Lo (1): ARM: S3C24XX: DMA: Use valid index when accessing array Randy Dunlap (32): drbd: needs __ratelimit() wireless: fix CFG80211_WEXT build problems perf tools: Display better error messages on missing packages netxen: fix builds for SYSFS=n or MODULES=n tpm: fix header for modular build wireless: airo_cs needs WEXT_SPY kmemleak: fix kconfig for crc32 build error x86: k8.h: Add struct bootnode docs: fix core_pipe_limit info x86 VSDO: Fix Kconfig help block: jiffies fixes pcmcia: fix printk formats staging/wireless: don't build when NET etc. are not enabled kmsg_dump: fix build for CONFIG_PRINTK=n [SCSI] fix func names in kernel-doc ALSA: radio/sound/miro: fix build, cleanup depends/selects Use KERN_WARNING instead of KERN_WARN, which does not exist net: niu uses crc32, so select CRC32 USB: g_multi kconfig: fix depends and help text Staging: line6: fix printk formats Staging: iio: kconfig and make edits Staging: iio: lots of doc fixes Staging: wlags49: fix kconfigs dependancy Staging: RTL8192SU depends on USB Staging: iio: fix ring buffer build Staging: vt665*: fix printk formats Staging: sep: fix 2 warnings Staging: rtl8192u: depends on USB drm/nouveau: fix ch7006 build V4L/DVB (13690): radio/si470x: #include doc: SubmitChecklist, add ioctls, remove OSDL reference printk: fix new kernel-doc warnings Ranjith Lohithakshan (4): TI DaVinci EMAC: Add suspend/resume capability omap3: AM35xx: Initialize omap_chip bits AM35xx: Add support for AM3517 EVM board AM35xx: Defconfig for AM3517 EVM board Reinette Chatre (16): iwlwifi: fix userspace setting of sleep_level_override iwlwifi: move iwl_setup_mac to iwlagn iwlwifi: move rate scaling structures to header file iwlagn: store station rate scale information in mac80211 station structure iwlwifi: remove duplicate defines iwlwifi: provide firmware version iwlwifi: unmap memory before use iwlwifi: move iwl_[un]init_drv to iwlagn iwlwifi: split adding broadcast station from others iwl3945: store station rate scale information in mac80211 station structure iwlagn: move rate scale initialization to init function iwlwifi: print warning when sending host command fails iwlwifi: change debug message to error in failure case iwlagn: power up device before initializing EEPROM iwl3945: removed unused struct and definitions iwlwifi: driver version track kernel version Rezwanul Kabir (1): dell-wmi: Add support for new Dell systems Ricardo Labiaga (11): Cleanup some NFSv4 XDR decode comments nfs41: RECLAIM_COMPLETE XDR functionality nfs41: RECLAIM_COMPLETE functionality nfs41: Invoke RECLAIM_COMPLETE nfs41: nfs41_setup_state_renewal nfs41: Don't clear DRAINING flag on NFS4ERR_STALE_CLIENTID nfs41: Mark stateids in need of reclaim if state manager gets stale clientid nfs41: Handle session errors during delegation return nfs41: Retry delegation return if it failed with session error nfs41: Handle NFSv4.1 session errors in the delegation recall code nfs41: Invoke RECLAIM_COMPLETE on all new client ids Richard Kennedy (1): NFS: reorder nfs4_sequence_regs to remove 8 bytes of padding on 64 bits Richard Röjfors (10): V4L/DVB (13173): adv7180: Support for getting input status V4L/DVB (13174): adv7180: Support for setting input status V4L/DVB (13175): adv7180: Use __devinit and __devexit macros V4L/DVB (13176): adv7180: Support checking standard via interrupts V4L/DVB (13177): radio: Add support for TEF6862 tuner xilinx_spi: Split into of driver and generic part. xilinx_spi: Switch to iomem functions and support little endian. xilinx_spi: add support for the DS570 IP. xilinx_spi: add a platform driver using the xilinx_spi common module. gpio: add GPIO driver for the Timberdale FPGA Rik van Riel (1): vmscan: do not evict inactive pages when skipping an active list scan Robert Becker (2): md/raid10: print more useful messages on device failure. raid: improve MD/raid10 handling of correctable read errors. Robert Hancock (2): ide: update Kconfig text to mark as deprecated libata: remove experimental tag on PATA drivers Robert Love (12): [SCSI] libfc, fcoe: Don't EXPORT_SYMBOLS unnecessarily [SCSI] libfc: Remove unused fc_lport pointer from fc_fcp_pkt_abort [SCSI] fcoe: Increase FCOE_MAX_LUN to 0xFFFF (65535) [SCSI] libfc: Move non-common routines and prototypes out of libfc.h [SCSI] libfc: Remove fc_fcp_complete [SCSI] libfc: Add libfc/fc_libfc.[ch] for libfc internal routines [SCSI] libfc: Move libfc_init and libfc_exit to fc_libfc.c [SCSI] libfc: Export FC headers [SCSI] libfc: Add routine to copy data from a buffer to a SG list [SCSI] libfc: Formatting cleanups across libfc [SCSI] libfcoe: formatting and comment cleanups [SCSI] fcoe: Formatting cleanups and commenting Robert Noland (1): drm/radeon: A bit of cleanup work on radeon_freelist_get() Robert P. J. Day (1): Staging: usbip: Fix typo "Contoroller". Robert Schwebel (1): mx31moboard: fix typo Robin Getz (2): Blackfin: announce current cpu rev when booting Blackfin: don't walk VMAs when oopsing Robin Holt (9): x86: uv: introduce a means to translate from gpa -> socket_paddr x86: uv: xpc needs to provide an abstraction for uv_gpa x86: uv: introduce uv_gpa_is_mmr X86: uv: implement a gru_read_gpa kernel function x86: uv: update XPC to handle updated BIOS interface x86: uv: xpc NULL deref when mesq becomes empty X86: uv: xpc_make_first_contact hang due to not accepting ACTIVE state x86: uv: XPC receive message reuse triggers invalid BUG_ON() UV - XPC: pass nasid instead of nid to gru_create_message_queue Roel Kluin (47): i2400m: keep index within ms_to_errno[] wimax: misplaced parenthesis crypto: ansi_cprng - Fix test in get_prng_bytes ALSA: Cleanup redundant tests on unsigned sh: Make sure indexes are positive tracing: Fix return value of tracing_stats_read() sound: OSS: fix error return in dma_ioctl() sound: OSS: keep index within bounds of midi_devs[] mtd: ensure index is positive mtd: error return -EIO instead of EIO jffs2: Fix error return in jffs2_do_read_inode_internal() JFFS2: fix min/max confusion e1000e: Use sizeof struct rather than pointer in e1000_get_eeprom() [SCSI] qlogicpti: add missing parentheses [SCSI] st: fix test of value range in st_set_options() IXP4xx: Ensure index is positive in irq_to_gpio() and npe_request(). V4L/DVB (13241): Cleanup redundant tests on unsigned V4L/DVB (13285): vpfe_capture: keep index within bound in vpfe_cropcap() V4L/DVB (13380): sms-cards: make id unsigned in sms_get_board() V4L/DVB: Fix test in copy_reg_bits() m68k: parport_mfc3 - Not makes it a bool before the comparison. ext4: Return the PTR_ERR of the correct pointer in setup_new_group_blocks() UBIFS: fix return code in check_leaf ASoC: Wrong variable returned on error SUNRPC: IS_ERR/PTR_ERR confusion IB/uverbs: Fix return of PTR_ERR() of wrong pointer in ib_uverbs_get_context() ext3: PTR_ERR return of wrong pointer in setup_new_group_blocks() dm ioctl: prefer strlcpy over strncpy kgdb,x86: remove redundant test kgdbts: Read buffer overflow USB: FIX bitfield istl_flip:1, make it unsigned. Staging: comedi: addi-data: Cleanup redundant tests on unsigned Staging: octeon: don't ignore request_irq() return code Staging: vt6655: Correct unsigned bound issue Staging: dst: Fix parentheses OMAP2/3 powerdomain: return errors rather than returning the output of IS_ERR() page-types: unsigned cannot be less than 0 in add_page() Input: altera_ps2 - fix test of unsigned in altera_ps2_probe() mtd: OneNAND: Fix test of unsigned in onenand_otp_walk() sh: Fix test of unsigned in se7722_irq_demux() thermal: Fix test of unsigned in thermal_cooling_device_cur_state_store() gpio: fix test on unsigned in lnw_irq_type() fbdev: TV_PALN bit set twice in sisfb_detect_VB_connect() keys: PTR_ERR return of wrong pointer in keyctl_get_security() regulator: keep index within bounds in da9034_get_ldo12_voltage() regulator: wm831x_reg_read() failure unnoticed in wm831x_aldo_get_mode() backlight: PTR_ERR return of wrong pointer in cr_backlight_probe() Roger Quadros (1): Input: force feedback - fix function name in comment Roland Dreier (3): x86: Remove CPU cache size output for non-Intel too Merge branches 'amso1100', 'cma', 'cxgb3', 'ehca', 'ipath', 'ipoib', 'iser', 'misc', 'mlx4' and 'nes' into for-next re-export alloc_file() Roland Koebler (1): USB: serial: ftdi_sio: add space/mark parity Roman Fietze (1): powerpc: Make "intspec" pointers in irq_host->xlate() const Ron Mercer (23): qlge: Remove explicit setting of PCI Dev CTL reg. qlge: Set PCIE max read request size. qlge: Add handler for DCBX firmware event. qlge: Store firmware revision as early as possible. qlge: Remove inline math for small rx buf mapping. qlge: Get rid of firmware handler debug code. qlge: Don't fail open when port is not initialized. qlge: Add CBFC pause frame counters to ethtool stats. qlge: Size RX buffers based on MTU. qlge: Add ethtool get/set pause parameter. qlge: Add ethtool blink function. qlge: Add ethtool wake on LAN function. qlge: Add ethtool register dump function. qlge: Add ethtool self-test. qlge: Change naming on vlan API. qlge: Fix indentations. qlge: Add firmware/driver sub-command support. qlge: Clean up netdev->stats usage. qlge: Do not change frame routing during suspend. qlge: Add asic reset to open call. qlge: Clean up module parameter name. qlge: Change version to v1.00.00.23.00.00-01. qlge: Bonding fix for mode 6. Rudy Matela (4): wan: Frame Relay/DLCI coding style corrections. wan: Coding style correction in HDLC/Frame Relay support routines net: Coding style corrections on Sealevel Systems 4021 driver. hdlc: spelling fix in find_pvc() comment Rui Paulo (24): mesh: use set_bit() to set MESH_WORK_HOUSEKEEPING. mac80211: update meshconf IE mac80211: set MESH_TTL to 31 mac80211: implement the meshconf formation info field mac80211: fix typo in a comment mac80211: update peer link management IE and action frames mac80211: update the format of path selection frames mac80211: add MAC80211_VERBOSE_MHWMP_DEBUG mac80211: allow processing of more than one HWMP IE mac80211: improve HWMP debugging mac80211: improve peer link management debugging mac80211: implement RANN processing and forwarding mac80211: update PERR frame format mac80211: properly forward the RANN IE mac80211: set the AID field correctly for mesh peer frames mac80211: fix BSSID setup for beacon frames mac80211: add the DS params to the beacon mac80211: replace "destination" with "target" to follow the spec mac80211: implement a timer to send RANN action frames mac80211: add nl80211/cfg80211 handling of the new mesh root mode option. mac80211: update copyrights to 2009 mac80211: use a structure to hold the mesh config information element mac80211: update cfg80211 scan result code for the updated mesh conf IE mac80211: fix endianess on mesh_path_error_tx() calls Russ Dill (2): USB: Close usb_find_interface race USB: Close usb_find_interface race v3 Russell King (65): mtd: Fix warning in sa1100-flash.c Revert "[ARM] unconditionally define __virt_to_phys and __phys_to_virt" Merge branch 'for-rmk' of git://github.com/at91linux/linux-2.6-at91 into devel-stable Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/xscaleiop into devel-stable ALSA: AACI cleanup ARM: provide phys_to_page() to complement page_to_phys() ARM: dma-mapping: simplify page_to_dma() and __pfn_to_bus() ARM: dma-mapping: provide dma_to_page() ARM: dma-mapping: split dma_unmap_page() from dma_unmap_single() Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable ARM: dma-mapping: split out vmregion code from dma coherent mapping code ARM: dma-mapping: functions to allocate/free a coherent buffer ARM: dma-mapping: fix coherent arch dma_alloc_coherent() ARM: dma-mapping: fix nommu dma_alloc_coherent() ARM: dma-mapping: factor dma_free_coherent() common code ARM: dma-mapping: move consistent_init into CONFIG_MMU section ARM: dma-mapping: clean up coherent arch dma allocation ARM: dma-mapping: Factor out noMMU dma buffer allocation code ARM: dma-mapping: get rid of setting/clearing the reserved page bit ARM: dma-mapping: switch ARMv7 DMA mappings to retain 'memory' attribute [ARM] pxa: allow platforms to control which uarts are registered ARM: Avoid duplicated implementation for VIVT cache flushing ARM: Avoid evaluating page_address() multiple times ARM: ZERO_PAGE: Avoid flush_dcache_page() for zero page Merge branch 'for-rmk' of git://git.marvell.com/orion into devel-stable ARM: Reduce __flush_dcache_page() visibility ARM: Move __flush_icache_all() out of flush_pfn_alias() ARM: Remove __flush_icache_all() from __flush_dcache_page() ARM: I-cache: Add invalidation for VIVT ASID tagged caches ARM: I-cache: avoid flushing in flush_cache_mm() ARM: I-cache: flush executable mappings in flush_cache_range() Merge branch 'pending-misc' (early part) into devel Merge branch 'pending-dma-coherent' into devel Merge branch 'pending-dma-streaming' (early part) into devel Merge branch 'for-rmk' of git://git.fluff.org/bjdooks/linux into devel-stable Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel-stable Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable Merge branches 'at91', 'ep93xx', 'etm', 'ks8695', 'nuc', 'u300' and 'u8500' into devel Merge branch 'devel-stable' into devel ARM: sa11x0: convert set_xxx_data() to register_xxx() ARM: h3600: provide each iPAQ machine type with own init function ARM: iPAQ: separate IrDA machine specifics ARM: iPAQ: provide a way to setup platform-controlled GPIOs ARM: iPAQ: convert H3100 IrDA to use generic gpio support ARM: iPAQ: move serial port support functions ARM: iPAQ: no need to set PWER_RTC Merge branch 'for-lak' of git://git.linuxtogo.org/home/thesing/collie into sa1100 Fix soc_common PCMCIA configuration Merge branch 'sa1100' into devel PCMCIA: fix pxa2xx_lubbock modular build error ARM: VFP: fix vfp thread init bug and document vfp notifier entry conditions ARM: fix clps711x, footbridge, integrator, ixp2000, ixp2300 and s3c build bug Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel ARM: fix sa1100 build ARM: fix lh7a40x build Merge branch 'master' into devel ARM: cache-l2x0: avoid taking spinlock for every iteration ARM: cache-l2x0: make better use of background cache handling ARM: add size argument to __cpuc_flush_dcache_page ARM: use flush_kernel_dcache_area() for dmabounce Merge branch 'pending-l2x0' into cache Merge branch 'for-rmk' of git://git.marvell.com/orion [ARM] Update mach-types Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'cache' (early part) Russell King - ARM Linux (11): PCMCIA: soc_common: convert to a stand alone module PCMCIA: soc_common: provide single socket add/remove functionality PCMCIA: soc_common: push socket removal down to SoC specific support PCMCIA: soc_common: push socket probe down into SoC specific support PCMCIA: sa1111: wrap soc_pcmcia_socket to contain sa1111 specific data PCMCIA: sa1111: remove duplicated initializers PCMCIA: soc_common: constify soc_pcmcia_socket ops member PCMCIA: soc_common: remove 'dev' member from soc_pcmcia_socket PCMCIA: ss: allow PCI IRQs > 255 PCMCIA: stop duplicating pci_irq in soc_pcmcia_socket mtd: add ARM pismo support Rusty Russell (20): cpumask: Simplify sched_rt.c cpumask: Partition_sched_domains takes array of cpumask_var_t cpumask: Avoid cpumask_t in arch/x86/kernel/apic/nmi.c cpumask: Use modern cpumask style in arch/x86/kernel/cpu/mcheck/mce-inject.c cpumask: Use modern cpumask style in Xen x86, msr, cpumask: Use struct cpumask rather than the deprecated cpumask_t generic-ipi: Add smp_call_function_any() [CPUFREQ] cpumask: don't put a cpumask on the stack in x86...cpufreq/powernow-k8.c [CPUFREQ] use an enum for speedstep processor identification sched: Fix isolcpus boot option cpumask: use modern cpumask style in drivers/edac/amd64_edac.c x86: don't export inline function module: handle ppc64 relocating kcrctabs when CONFIG_RELOCATABLE=y cpumask: use cpu_online in kernel/perf_event.c cpumask: avoid deprecated function in mm/slab.c cpumask: use modern cpumask style in drivers/scsi/fcoe/fcoe.c cpumask: convert drivers/idle/i7300_idle.c to cpumask_var_t cpumask: avoid dereferencing struct cpumask cpumask: don't recommend set_cpus_allowed hack in Documentation/cpu-hotplug.txt cpumask: rename tsk_cpumask to tsk_cpus_allowed Ryota Ozaki (1): sched, cpuacct: Fix niced guest time accounting Ryusuke Konishi (37): nilfs2: get rid of BUG_ON use in btree lookup routines nilfs2: remove buffer locking in nilfs_mark_inode_dirty nilfs2: remove buffer locking from btree code nilfs2: stop marking metadata inode dirty within btree operations nilfs2: move out mark_inode_dirty calls from bmap routines nilfs2: add size option of private object to metadata file allocator nilfs2: separate constructor of metadata files nilfs2: separate read method of meta data files on super root block nilfs2: eliminate inlines to directly read/write inode of metadata files nilfs2: hide nilfs_mdt_clear calls in nilfs_mdt_destroy nilfs2: unfold nilfs_sufile_block_get_header function nilfs2: add local variable to cache the number of clean segments nilfs2: simplify nilfs_sufile_get_ncleansegs function nilfs2: avoid readahead on metadata file for create mode nilfs2: separate function for creating new btree node block nilfs2: use nilfs_btnode_create_block function nilfs2: remove newblk argument from nilfs_btnode_submit_block nilfs2: eliminate nilfs_btnode_get function nilfs2: unfold nilfs_palloc_block_get_bitmap function nilfs2: add cache framework for persistent object allocator nilfs2: add palloc cache to dat nilfs2: flush palloc cache before manipulating data pages of GC dat nilfs2: add palloc cache to ifile nilfs2: insert cache operation in palloc get block routines nilfs2: move routine marking segment usage dirty into sufile nilfs2: move routine to set segment usage into sufile nilfs2: clean up get/put function of a segment usage nilfs2: apply readahead for recovery on mount nilfs2: move recovery completion into load_nilfs function nilfs2: add helper to get if volume is in a valid state nilfs2: add norecovery mount option nilfs2: use list_splice_tail or list_splice_tail_init nilfs2: do not return io error for bio allocation failure nilfs2: relocate io status variables to segment buffer nilfs2: hide nilfs_write_info struct in segment buffer code nilfs2: add iterator for segment buffers nilfs2: separate wait function from nilfs_segctor_write RĂ©mi Denis-Courmont (13): Phonet: deliver broadcast packets to broadcast sockets Phonet: routing table backend Phonet: routing table Netlink interface Phonet: route outgoing packets Phonet: forward incoming packets Phonet: hold socket before giving it to sk_deliver_skb() Phonet: remove tautologies Phonet: put sockets in a hash table Phonet: allocate and copy for pipe TX without sock lock Phonet: put protocols array under RCU Phonet: convert routing table to RCU Phonet: missing rcu_dereference() Phonet: convert devices list to RCU S?rgio Fortier (1): V4L/DVB (13052): DiB0700: EvolutePC TvWay+ USB ISDB-Tb fullseg device support Saeed Bishara (4): ARM: add base support for Marvell Dove SoC RTC: let Dove soc select the rtc-mv driver. ARM: dove: fix the mm mmu flags of the pj4 procinfo rtc-mv: add support for Alarm Sage Weil (1): Btrfs: fail mount on bad mount options Sam Ravnborg (14): kbuild: search arch/$ARCH/include before include/ dontdiff: add generated kbuild: move bounds.h to include/generated kbuild: move asm-offsets.h to include/generated ia64: move nr-irqs.h to include/generated arm: move mach-types to include/generated sh: move machtypes.h to include/generated kbuild: drop include2/ used for O=... builds kbuild: do not check for include/asm-$ARCH kbuild: drop include/asm kbuild: move compile.h to include/generated drop explicit include of autoconf.h kbuild: move autoconf.h to include/generated kbuild: move utsrelease.h to include/generated Samu Onkalo (13): Input: add open and close methods for polled devices Input: input-polldev - add sysfs interface for controlling poll interval Input: polled device - do not start polling if interval is zero lis3lv02d: axis remap and resource setup/release lis3lv02d: send sync event lis3lv02d: correct memory leak in module unload lis3lv02d: proper power on sequence lis3: selftest support lis3lv02d: remove calibaration functionality lis3: sysfs entry for setting chip measurement rate lis3: scale output values to mg lis3: update documentation to match latest changes hwmon: I2C bus support for lis3lv02d and variant accelerometer chips Samuel Ortiz (28): iwmc3200wifi: WPS support iwmc3200wifi: CT kill support iwmc3200wifi: Profile flags can be WPA1 or WPA2 not both iwmc3200wifi: Improve rx debug iwmc3200wifi: Update statistics notification structure iwmc3200wifi: Update fixed size config definitions iwmc3200wifi: Tx power setting iwmc3200wifi: SDIO disable race fix iwmc3200wifi: Check for cmd pointer before dereferencing it iwmc3200wifi: Do not handle wifi command if the interface is not ready iwmc3200wifi: Try shared auth when open WEP fails iwmc3200wifi: Support unexpected reboot barker iwmc3200wifi: Set wiphy firmware version MAINTAINERS: Add iwmc3200wifi entry iwmc3200wifi: Parse HT channels EEPROM entries iwmc3200wifi: Dont set the UMAC power limit when interface is down iwmc3200wifi: Update wireless_mode with eeprom values iwmc3200wifi: 802.11n Tx aggregation support iwmc3200wifi: Add stopped queue to debugfs iwmc3200wifi: Remove tx concatenation option nl80211: PMKSA caching support cfg80211: Add PMKSA wext compatibility handler iwmc3200wifi: Implement cfg80211 PMKSA API iwmc3200wifi: Update wiwi priority table iwmc3200wifi: Coex table command does not expect a response iwmc3200wifi: Add wifi-wimax coexistence mode as a module parameter iwmc3200wifi: Enable wimax core through module parameter mfd: Fix ab4500 compilation warnings Sandeep Gopalpet (7): gianfar: Add per queue structure support gianfar: Introduce logical group support. gianfar: Add Multiple Queue Support fsl_pq_mdio: Add Suport for etsec2.0 devices. gianfar: Add support etsec2.0 registers. gianfar: Add Multiple group Support gianfar: Basic Support for programming hash rules Sandeep Paulraj (5): DaVinci: DM365: Correct USB parent clock DaVinci: EDMA: Fix bug in edma_free_cont_slots API DaVinci: EDMA: Fix Bug in edma_alloc_cont_slots API DaVinci: EDMA: Fix Bug while obtaining contiguous params DaVinci: EDMA: Updating terminlogy in EDMA driver Sanjeev Premi (5): OMAP3: PM: CPUidle: Start C-state definitions from base 0 omap3: Runtime detection of Si features omap3: Runtime detection of OMAP35x devices omap3: AM35xx: Runtime detection of the device omap3: Fix OMAP35XX_REV macros Santosh Shilimkar (11): omap: Split OMAP2_IO_ADDRESS to L3 and L4 omap: Remap L3, L4 to get more kernel io address space omap: Move SRAM map to claim more io space omap: Fix DEBUG_LL UART io address omap: Add OMAP4 L3 and L4 peripherals. OMAP4: Fix cpu detection OMAP4: Fix SRAM base and size OMAP4: AuxCoreBoot registers only accessible in secure mode OMAP4: Remove the secondary wait loop OMAP4: Sync up omap4430 defconfig mfd: Rename twl4030* driver files to enable re-use Sarah Sharp (17): USB: xhci: Handle URB cancel, complete and resubmit race. USB: xhci: Re-purpose xhci_quiesce(). USB: xhci: Add watchdog timer for URB cancellation. USB: xhci: Remove unused HCD statistics code. USB: ehci: Minor constant fix for SCHEDULE_SLOP. USB: ehci: Respect IST when scheduling new split iTDs. USB: xhci: Add tests for TRB address translation. USB: xhci: Set transfer descriptor size field correctly. USB: xhci: Return -EPROTO on a split transaction error. USB: xhci: Return success for vendor-specific info codes. USB: xhci: Handle errors that cause endpoint halts. USB: xhci: Add correct email and files to MAINTAINERS entry. USB: usbtmc: Use usb_clear_halt() instead of custom code. USB: xhci: Make reverting an alt setting "unfailable". USB: xhci: Fix command completion after a drop endpoint. USB: Refactor code to find alternate interface settings. USB: Check bandwidth when switching alt settings. Sarveshwar Bandi (3): be2net: Implement ethtool get_phys_id function. be2net: Changes to update ethtool get_settings function to return appropriate values. be2net: Patch to flash redboot section while firmware update. Sascha Hauer (32): mxc_nand: cleanup eccoob descriptions mxc_nand: cleanup initialization mxc_nand: merge send_read_page and send_prog_page mxc_nand: introduce mxc_do_addr_cycle mxc nand: remove debug param mxc nand: remove dead code mxc nand: use resource_size() mxc nand: use buffers mxc nand: simplify command processing mxc nand: modify send_page to send all pages, not only one mxc_nand: remove unused defines mxc_nand: Make main/spare areas runtime configurable mxc_nand: Get rid of pagesize_2k flag mxc_nand: Add NFC V2 support mxc_nand: disable sp_en bit only once mxc_nand: Allow flash based bbt mxc_nand: remove TROP_US_DELAY mxc_nand: use DRIVER_NAME where appropriate pca100: Add board to uncompress.h pca100: use correct irq initialisation function pcm043: Add NAND support i.MX2: Add sound (ssi) resources i.MX3: Add sound (ssi) resources MXC: Add a digital audio multiplexer driver i.MX35: Fix audmux clock mx3: Add SSI pins to iomux table mxc: iomux v3: remove resource handling i.MX31 clock: rename SSI clocks to driver name mxc: mx1/mx2 DMA: add a possibility to create an endless DMA transfer i.MX27 audmux: Fix register offsets spi-imx: Add mx25 support Input: add mc13783 touchscreen driver Sathya Perla (5): be2net: support configuration of 64 multicast addresses instead of 32 be2net: Fix rx_drops_no_fragments stat being incorrectly indexed be2net: Issue fw_init/clean cmds to fw be2net: Fix cleanup path in be_probe() be2net: remove BUG_ON() when be2net runs out of mccq wrbs Scott Wood (3): mtd: eLBC NAND: increase bus timeout to maximum mtd: eLBC NAND: use recommended command sequences mtd: eLBC NAND: give more verbose output on error Sean Hefty (7): RDMA/ucma: Add option to manually set IB path RDMA/cma: Replace net_device pointer with index IB/addr: Verify source and destination address families match IB/addr: Store net_device type instead of translating to RDMA transport RDMA/cm: fix loopback address support IB/addr: Simplify resolving IPv4 addresses IB/addr: Fix IPv6 routing lookup Sean McNeil (1): pcf50633: Add ac power supply class to the charger Sebastian Andrzej Siewior (4): signal: Fix alternate signal stack check mtd: nandsim: add support for 4KiB pages UBI: flush wl before clearing update marker V4L/DVB (13292): tvp514x: recognize the error case in tvp514x_read_reg() Sebastian DalfuĂź (3): Staging: rt2860: remove remainders of /etc reading stuff Staging: rt2860: remove superfluous newlines Staging: rt2860: reduce superfluous exclamation marks Sebastian Kapfer (1): Input: ALPS - add interleaved protocol support (Dell E6x00 series) Sebastian Ott (8): [S390] cio: remove registered flag from ccw_device_private [S390] cio: add per device initialization status flag [S390] cio: fix quiesce state [S390] cio: handle failed disable_subchannel after device recognition [S390] cio: handle busy subchannel in ccw_device_move_to_sch [S390] cio: quiesce subchannel in io_subchannel_remove [S390] cio: change locking in io_subchannel_remove [S390] cio: dont unregister a busy device in ccw_device_set_offline Sekhar Nori (28): davinci: DA8XX/OMAP-L1XX: It's SYSCFG not BOOT_CFG davinci: DA8XX/OMAP-L1XX: Avoid use of IO_ADDRESS for SYSCFG module davinci: DA8XX/OMAP-L1XX: JTAG ID register should offset from SYSCFG base davinci: enable easy top down traversal of clock tree davinci: make clock rate re-calculation easy davinci: support changing the clock rate in clock framework davinci: support re-parenting a clock in the clock framework davinci: DA850/OMAP-L138: allow async3 source to be changed davinci: add generic CPUFreq driver for DaVinci davinci: DA850/OMAP-L138: add frequency scaling support davinci: DA850/OMAP-L138: add voltage regulation support davinci: DA850/OMAP-L138 EVM: register for CPUFreq support davinci: DA850/OMAP-L138 EVM: add support for TPS65070 PMIC davinci: make it easier to identify SoC init failures davinci: DA830/OMAP-L137 EVM: fix warning with default config davinci: DA830/OMAP-L137 EVM: remove ifdefs inside da830_evm_init() davinci: DA830/OMAP-L137 EVM: use runtime detection for UI card davinci: DA830/OMAP-L137 EVM: do not configure NAND on UI card when MMC/SD is selected davinci: DA850/OMAP-L138 EVM: implement autodetect of RMII PHY davinci: DA850/OMAP-L138 EVM: get rid of DA850_UI_EXP config option davinci: DA850/OMAP-L138 EVM: simplify configuration of emac in MII/RMII mode davinci: add CPU idle driver davinci: DA8XX/OMAP-L1XX: add support for cpuidle driver register davinci: DA850/OMAP-L138 EVM: register for cpuidle support davinci: DA850/OMAP-L138: avoid using separate initcall for initializing regulator davinci: DA8XX/OMAP-L1XX: enable cpuidle and regulator in defconfig davinci: fix section mismatch warning in arch/arm/mach-davinci/board-dm646x-evm.c davinci: remove unused variable in arch/arm/mach-davinci/board-sffsdr.c Senthil Balasubramanian (5): ath9k: Allow PSPOLL only when the interface is configured in AP mode ath9k: Handle ATH9K_BEACON_RESET_TSF properly ath9k: Reduce PLL Settle time and eliminate redundant PLL calls. ath9k: Advertise midband for AR5416 devices ath9k: Fix bugs in handling TX power Serge E. Hallyn (3): define convenient securebits masks for prctl users (v2) remove CONFIG_SECURITY_FILE_CAPABILITIES compile option ipc ns: fix memory leak (idr) Sergei Shtylyov (16): hpt366: kill unused #define's davinci: DA8xx: CFGCHIP2 register definitions davinci: DA8xx: OHCI platform device davinci: DA830 EVM: OHCI platform code davinci: DA8xx: rename 'psc_ctlr' field into 'gpsc' DaVinci: remove unneeded #include's DaVinci: rename setup_usb() to davinci_setup_usb() DA8xx: MUSB platform device registration DA830 EVM: MUSB platform code pata_hpt{37x|3x2n}: fix timing register masks (take 2) pata_hpt366: fix timing register documentation ata: use pci_dev->revision USB: musb_gadget_ep0: fix unhandled endpoint 0 IRQs, again USB: musb_gadget: implement set_wedge() method USB: musb_gadget_ep0: stop abusing musb_gadget_set_halt() USB: musb_gadget: remove pointless loop Sergey Lapin (1): omap3: id code detection 3525 vs 3515 Sergio C Fortier (1): V4L/DVB (13297): dib0700_devices: EvolutePC TvWay+ USB ISDB-Tb remote control support Seth Heasley (1): [WATCHDOG] iTCO_wdt: Add support for Intel Ibex Peak Shahar Or (1): ath5k: add support for Dell Vostro A860 LED Shan Wei (1): ip: update the description of rp_filter in ip-sysctl.txt Shane Warden (4): Staging: comedi: ni_labpc.h: Fixed line lengths of some trailing comments. Staging: comedi: comedi_compat32: Fixed checkpatch.pl issues Staging: comedi: comedidev.h: Fixed checkpatch.pl issues Staging: comedi: comedi_compat32.h: Fixed checkpatch.pl issues Shannon Nelson (2): ixgbe: handle parameters for tx and rx EITR, no div0 ixgbe: Fix Receive Address Register (RAR) cleaning and accounting Shanyu Zhao (2): iwlwifi: use only one chain for scan in PS iwlwifi: use configured valid rx chain for scan Shaohua Li (13): x86, hpet: Disable per-cpu hpet timer if ARAT is supported cfq-iosched: improve hw_tag detection drm/i915: handle failure path correctly for lvds drm/i915: use msleep for intel_wait_for_vblank drm/i915: remove Pineview EOS protection support drm/i915: fix gpio register detection logic for BIOS without VBT ahci: disable SNotification capability for ich8 cfq-iosched: no dispatch limit for single queue cfq-iosched: make nonrot check logic consistent aio: remove unused field ACPI: Add a generic API for _OSC -v2 ACPI: cleanup pci_root _OSC code. ACPI: Add platform-wide _OSC support. Shaun Patterson (1): x86: Fix typo in arch/x86/mm/kmmio.c Shawn Bohrer (26): docbook: fix signal_pending() argument staging: line6: Lindent and fix checkpatch warnings in playback.c staging: line6: Fix checkpatch errors in playback.c staging: line6: Lindent and fix checkpatch warnings in capture.c staging: line6: Fix checkpatch errors in capture.c staging: line6: Lindent control.c staging: line6: Fix some checkpatch warnings in control.c staging: line6: Convert simple_strtoul() to strict_strtoul in control.c staging: line6: Fix checkpatch warnings in pcm.c staging: line6: Lindent and fix some checkpatch warnings in toneport.c staging: line6: Convert simple_strtol to strict_strtol in toneport.c staging: line6: Convert simple_strtoul to strict_strtoul in variax.c staging: line6: Convert simple_strtoul to strict_strtoul in pod.c staging: line6: Convert simple_strtoul to strict_strtoul in midi.c staging: comedi: Remove check for HAVE_UNLOCKED_IOCTL Staging: comedi: remove check for HAVE_COMPAT_IOCTL Staging: comedi: Don't check for -ENOIOCTLCMD Staging: comedi: remove __cplusplus check Staging: comedi: remove EXTERN macro since it is not used Staging: vt6655 remove kcompat.h Staging: vt6656 remove kcompat.h Staging: vt6655 remove duplicate includes Staging: vt6656 remove duplicate includes Staging: vt6655 remove unneeded version.h Staging: vt6656 remove unneeded version.h and version check Staging: vt6655: remove __cplusplus ifdefs Sheng Yang (2): generic-ipi: Fix misleading smp_call_function*() description KVM: VMX: Disable unrestricted guest when EPT disabled Shinya Kuribayashi (23): i2c-designware: Consolidate to use 32-bit word accesses i2c-designware: Don't use the IC_CLR_INTR register to clear interrupts i2c-designware: Use platform_get_irq helper i2c-designware: i2c_dw_read: Use "struct dw_i2c_dev" pointer i2c-designware: i2c_dw_xfer_msg: Use "struct dw_i2c_dev" pointer i2c-designware: Remove an useless local variable "num" i2c-designware: Improved _HCNT/_LCNT calculation i2c-designware: i2c_dw_xfer_msg: Fix i2c_msg search bug i2c-designware: Process i2c_msg messages in the interrupt handler i2c-designware: Set Tx/Rx FIFO threshold levels i2c-designware: Enable RX_FULL interrupt i2c-designware: Divide i2c_dw_xfer_msg into two functions i2c-designware: i2c_dw_xfer_msg: Introduce a local "buf" pointer i2c-designware: Initialize byte count variables just prior to being used i2c-designware: i2c_dw_func: Set I2C_FUNC_SMBUS_foo bits i2c-designware: i2c_dw_read: Remove redundant target address checker i2c-designware: Process all i2c_msg messages in the interrupt handler i2c-designware: Disable TX_EMPTY when all i2c_msg msgs has been processed i2c-designware: i2c_dw_xfer_msg: Fix error handling procedures i2c-designware: Skip RX_FULL and TX_EMPTY bits on tx abort errors i2c-designware: Tx abort cleanups i2c-designware: Cosmetic cleanups i2c-designware: i2c_dw_handle_tx_abort: Use dev_dbg() for NOACK cases Shmulik Ladkani (1): sched.c: Call debug_show_all_locks() when dumping all tasks Shmulik Ravid (1): PCI: read-modify-write the pcie device control register when initiating pcie flr Shreyas Bhatewara (2): vmxnet3: remove duplicate #include net: Getting rid of the x86 dependency to built vmxnet3 Simon Guinot (2): mtd: m25p80: add support for Macronix MX25L4005A [ARM] Kirkwood: Add LaCie Network Space v2 support Simon Horman (1): ipvs: zero usvc and udest Simon Kaempflein (1): perf record, x86: Print more intelligent error message when sampling fails Simon Kagstrom (13): via-velocity: Correct 64-byte alignment for rx buffers via-velocity: Add ethtool interrupt coalescing support via-velocity: Implement NAPI support via-velocity: Change DMA_LENGTH_DEF (from the VIA driver) via-velocity: Re-enable transmit scatter-gather support via-velocity: Set tx checksum from ethtool instead of module parameter via-velocity: Bump version mtd: Add panic_write for NAND flashes core: Add kernel message dumper to call on oopses and panics mtd: mtdoops: keep track of used/unused pages in an array mtd: mtdoops: limit the maximum mtd partition size mtd: mtdoops: make record size configurable mtd: mtdoops: refactor as a kmsg_dumper Sneha Narnakaje (2): davinci: DM355: Update NAND driver platform data davinci: DM365: Update NAND driver platform data Sonic Zhang (5): USB: musb: update Blackfin processor dependency USB: musb: add notes for Blackfin anomalies USB: musb: add work around for Blackfin anomaly 05000456 USB: musb: error out when anomaly 05000380 is applicable Blackfin: kgdb: punt dead code Sreenivasa Honnur (9): vxge: Modify __vxge_hw_device_is_privilaged() to not assume function-0 as the privileged function: Resubmit#1 vxge: Update driver_config->vpath_per_dev for each function in probe. vxge: Removed accessing non-supported registers. vxge: Fixed crash in PAE system due to wrong typecasting. vxge: Removed unused functions. vxge: Check if FCS stripping is disabled by the firmware. vxge: Allow multiple functions with INTA. vxge: Version update. vxge: Configure the number of transmit descriptors per packet to MAX_SKB_FRAGS + 1. Sridhar Samudrala (2): net: Make UFO on master device independent of attached devices bridge: Allow enable/disable UFO on bridge device via ethtool Srinidhi Kasagar (11): ARM: 5786/1: Introduce plat-nomadik, MTU code re-organization ARM: 5829/1: ARM: U8500 register definitions ARM: 5830/1: ARM: U8500 clock framework ARM: 5831/1: ARM: U8500 core machine support ARM: 5832/1: ARM: U8500 Makefile.boot ARM: 5833/1: ARM nomadik: enable U8500 for common platform ARM: 5834/1: ARM: U8500 integrate to ARM architecture ARM: 5835/1: ARM U8500: add defconfig ARM: 5836/1: add MAINTAINERS entry ARM: 5845/1: l2x0: check whether l2x0 already enabled mfd: add AB4500 driver Srinivas (1): [SCSI] mvsas: add support for Adaptec ASC-1045/1405 SAS/SATA HBA Sriram (2): omap3: evm: make HSMMC driver built-in omap3evm: MIgrate to smsc911x ethernet driver Stanislav Brabec (1): b44 WOL setup: one-bit-off stack corruption kernel panic fix Stanislaw Gruszka (2): posix-cpu-timers: optimize and document timer_create callback itimers: Fix racy writes to cpu_itimer fields Stas Sergeev (1): ALSA: snd-pcsp: add nopcm mode Stefan Assmann (3): ftrace: add kernel command line graph function filtering PCI hotplug: change PCI nomenclature PCI: avoid boot interrupt quirk for AMD 813x B1 devices Stefan Haberland (1): [S390] dasd: remove strings from s390dbf Stefan Richter (17): firewire: cdev: fix memory leak in an error path firewire: normalize style of queue_work wrappers firewire: cdev: normalize variable names firewire: optimize config ROM creation firewire: core: clarify generate_config_rom usage firewire: core: optimize Topology Map creation firewire: core: WARN on wrong usage of core transaction functions firewire: ohci: 0 may be a valid DMA address firewire: cdev: reduce stack usage by ioctl_dispatch V4L/DVB (13397): firedtv: move remote control workqueue handling into rc source file V4L/DVB (13398): firedtv: reform lock transaction backend call V4L/DVB (13399): firedtv: add missing include, rename a constant V4L/DVB (13400): firedtv: port to new firewire core V4L/DVB (13408): firedtv: shrink buffer pointer table V4L/DVB (13409): firedtv: packet requeuing is likely to succeed V4L/DVB (13410): firedtv: remove an unnecessary function argument sysfs: mark a locally-only used function static Stefan Ringel (1): ALSA: hda - Add PCI IDs for Nvidia G2xx-series Stefan Roese (2): powerpc/44x: Enable 64bit (>= 4GB) memory size in Katmai dts regulator: core.c: Small coding style cleanup (indentation fixup) Stefan Weinhuber (4): [S390] dasd: support DIAG access for read-only devices [S390] dasd: enable prefix independent of pav support [S390] dasd: improve error recovery for internal I/O [S390] dasd: let device initialization wait for LCU setup Steffen Klassert (5): ah: Add struct crypto_ahash to ah_data ah4: convert to ahash ah6: convert to ahash ah: Remove obsolete code xfrm: remove skb_icv_walk Stephane Eranian (6): perf_events: Check for filters on fixed counter events perf_events: Add event constraints support for Intel processors perf_events: Fix default watermark calculation perf_events: Fix bogus copy_to_user() in perf_event_read_group() perf_events, x86: Fix validate_event bug perf_events: Fix read() bogus counts when in error state Stephen Hemminger (11): ipv4: fib table algorithm performance improvement net: mark net_proto_ops as const dcb: data center bridging ops should be r/o tomoyo: improve hash bucket dispersion sky2: add SK-9E21M device id sky2: add register definitions for new chips sky2: fix receive pause thresholds sky2: workarounds for Yukon-2 supreme sky2: 88E8059 support sky2: version 1.26 ext2: clear uptodate flag on super block I/O error Stephen M. Cameron (11): cciss: Fix problem with remove_from_scan_list on driver unload cciss: Retry driver initiated cmds with unit attention condition cciss: Remove the "withirq" parameter from various functions where possible cciss: clean up code in cciss_shutdown cciss: remove sendcmd() as it is no longer used. cciss: fix typo that causes scsi status to be lost. cciss: Remove unnecessary check in scan_thread cciss: Do not automatically rescan on UNIT ATTENTION/LUN DATA CHANGED cciss: Fix weird usage of ENXIO in cciss_scsi.c cciss: fix scatter gather cleanup problems [SCSI] hpsa: add driver for HP Smart Array controllers. Stephen Rothwell (13): sound: use semicolons to end statements x86: Fix user return notifier put_cpu_var() invocation net/appletalk: using compat_ptr needs inclusion of linux/compat.h sparc: fix printk for change of variable type vmxnet3: using csum_ipv6_magic requires including net/ip6_checksum.h powerpc: do not export pci_alloc/free_consistent m68k: don't export static inline functions block: include linux/err.h to use ERR_PTR perf: hw_breakpoints: Fix percpu namespace clash net: fix for utsrelease.h moving to generated powerpc: fix up for mmu_mapin_ram api change sparc64: don't export static inline pci_ functions mfd: compile fix for twl4030 renaming Stephen Smalley (4): selinux: dynamic class/perm discovery selinux: generate flask headers during kernel build selinux: drop remapping of netlink classes SELinux: fix locking issue introduced with c6d3aaa4e35c71a3 Steve Chen (1): davinci: Add LCD Graphics support for DA830/OMAP-L137 EVM Steve Dickson (2): nfsd: introduce export flag for v4 pseudoroot nfsd: restrict filehandles accepted in V4ROOT case Steve Hodgson (7): sfc: Only switch Falcon MAC clocks as necessary sfc: Simplify PHY polling sfc: QT202x: Reset before reading PHY id sfc: Replace MDIO spinlock with mutex sfc: Always start Falcon using the XMAC sfc: Generalise link state monitoring sfc: Add firmware protocol definitions (MCDI) Steve Ma (1): [SCSI] libfc, fcoe: Add FC passthrough support Steve Soule (1): ALSA: ac97_codec - increase timeout for analog sections to 5 second Steve Wise (1): RDMA/cxgb3: Remove BUG_ON() on CQ rearm failure Steven J. Magnani (1): procfs: use proper units for noMMU statm Steven King (2): m68knommu: Coldfire GPIO corrections m68knommu: export clk_* symbols in clk.c Steven Rostedt (33): function-graph/x86: Replace unbalanced ret with jmp perf tools: Handle print concatenations in event format file perf tools: Fix backslash processing on trace print formats perf tools: Handle trace parsing of < and > perf tools: Handle arrays in print fields for trace parsing perf tools: Handle * as typecast in trace parsing perf tools: Handle newlines in trace parsing better perf tools: Handle the case with and without the "signed" trace field perf tools: Still continue on failed parsing of an event perf tools: Fix bprintk reading in trace output perf tools: Handle both versions of ftrace output perf tools: Add latency format to trace output perf tools: Handle - and + in parsing trace print format perf tools: Remove all char * typecasts and use const in prototype perf tools: Add 'make DEBUG=1' to remove the -O6 cflag perf tools: Use strsep() over strtok_r() for parsing single line tracing: allow to change permissions for text with dynamic ftrace enabled ring-buffer: Add multiple iterations between benchmark timestamps tracing: do not disable interrupts for trace_clock_local ring-buffer: Move access to commit_page up into function used tracing: Only print objcopy version warning once from recordmcount tracing: Create new TRACE_EVENT_TEMPLATE tracing: Create new DEFINE_EVENT_PRINT tracing: Convert some sched trace events to DEFINE_EVENT and _PRINT ring-buffer-benchmark: Add parameters to set produce/consumer priorities tracing: Add pipe_close interface tracing: Only call pipe_close if pipe_close is defined tracing: Buffer the output of seq_file in case of filled buffer ring-buffer: Use sync sched protection on ring buffer resizing ring-buffer: Move resize integrity check under reader lock tracing: Add trace_dump_stack() tracing: Add stack trace to irqsoff tracer tracing: Fix return of trace_dump_stack() Steven Toth (1): V4L/DVB (13092): cx25840: Improvements to the cx23885/7/8 chip detection mechanism. Steven Whitehouse (26): GFS2: Fix potential race in glock code GFS2: Fix -o meta mounts for subsequent mounts (i.e. all but the first one) GFS2: Fix up system xattrs VFS: Add forget_all_cached_acls() GFS2: Use forget_all_cached_acls() GFS2: Use gfs2_set_mode() instead of munge_mode() GFS2: Clean up ACLs GFS2: Add cached ACLs support VFS: Use GFP_NOFS in posix_acl_from_xattr() GFS2: Alter arguments of gfs2_quota/statfs_sync GFS2: Hook gfs2_quota_sync into VFS via gfs2_quotactl_ops GFS2: Remove obsolete code in quota.c GFS2: Add get_xstate quota function GFS2: Add proper error reporting to quota sync via sysfs GFS2: Remove constant argument from qdsb_get() GFS2: Remove constant argument from qd_get() GFS2: Clean up gfs2_adjust_quota() and do_glock() GFS2: Add get_xquota support GFS2: Add set_xquota support VFS: Export dquot_send_warning GFS2: Use dquot_send_warning() GFS2: Display nobarrier option in /proc/mounts GFS2: Remove dirent_first() function GFS2: Locking order fix in gfs2_check_blk_state GFS2: Tag all metadata with jid GFS2: Fix glock refcount issues Stuart Menefy (3): sh: Optimised memset for SH4 sh: Improve performance of SH4 versions of copy/clear_user_highpage sh: Minor optimisations to FPU handling Sudhakar Rajashekhara (4): davinci: Correct the GPIO number for LCD panel power davinci: DA850/OMAP-L138: eliminate static function declaration davinci: DA8XX/OMAP-L1XX: fix compiler warning mmc: davinci: modify data types of EDMA related variables Sujith (9): ath9k: Update INI release for AR9287 ath9k: Fix RTC reset for AR5416 ath9k: Fix TX hang poll routine mac80211: Fix IBSS merge ath9k: Cleanup bss_info_changed callback ath9k: Remove a few unused variables ath9k: Remove a few unused functions ath9k: Fix bug in initializing chain masks mac80211: Fix panic in aggregation handling Sukadev Bhattiprolu (1): devpts_get_tty() should validate inode Suresh Jayaraman (1): rpc: remove unneeded function parameter in gss_add_msg() Suresh R (1): be2net: Add support for ethtool self test Suresh Siddha (22): intr-remap: generic support for remapping HPET MSIs x86: arch specific support for remapping HPET MSIs dmar: support for parsing Remapping Hardware Static Affinity structure dmar: Allocate queued invalidation structure using numa locality info intr_remap: Allocate intr-remapping table using numa locality info iommu: Allocate dma-remapping structures using numa locality info x86-64: preserve large page mapping for 1st 2MB kernel txt with CONFIG_DEBUG_RODATA x86-64: align RODATA kernel section to 2MB with CONFIG_DEBUG_RODATA x86-64: add comment for RODATA large page retainment x86: Unify fixup_irqs() for 32-bit and 64-bit kernels x86, intr-remap: Avoid irq_chip mask/unmask in fixup_irqs() for intr-remapping x86: Remove move_cleanup_count from irq_cfg x86: Force irq complete move during cpu offline x86: Use EOI register in io-apic on intel platforms x86: Remove local_irq_enable()/local_irq_disable() in fixup_irqs() x86, cpa: Fix kernel text RO checks in static_protection() x86_64, ftrace: Make ftrace use kernel identity mapping to modify code x86_64, cpa: Use only text section in set_kernel_text_rw/ro x86/PCI/PAT: return EINVAL for pci mmap WC request for !pat_enabled x86, ioapic: Fix the EOI register detection mechanism x86, ioapic: Document another case when level irq is seen as an edge x86: Remove unnecessary mdelay() from cpu_disable_common() Sven Neumann (1): pxafb: use passed fb_var_screeninfo struct in pxafb_pan_display() Swen Schillig (6): [SCSI] zfcp: Replace global config_lock with local list locks [SCSI] zfcp: Replace local reference counting with common kref [SCSI] zfcp: Remove global config_mutex [SCSI] zfcp: Remove suspend callback [SCSI] zfcp: Remove STATUS_COMMON_REMOVE flag as it is not required anymore [SCSI] zfcp: Assign scheduled work to driver queue TARUISI Hiroaki (1): Btrfs: deny sys_link across subvolumes. Takahiro Yasui (1): [SCSI] scsi_devinfo: update Hitachi entries (v2) Takao Indoh (1): [IA64] Save I-resources to ia64_sal_os_state Takashi Iwai (75): Merge branch 'fix/hda' into topic/hda ALSA: hda - Enable MSI as default ASoC: Fix build errors of wm8711.c with SPI ASoC: Fix snd_soc_dai_set_pll() calls in neo1973_*.c ALSA: sscape - Remove sscap_ioctl.h from include/sound/Kbuild Merge branch 'fix/hda' into topic/hda ALSA: hda - Clean up name string creation in patch_realtek.c ALSA: sscape - Remove invalid __devinitdata to module parameters Merge branch 'fix/hda' into topic/hda ALSA: hda - Add a proper ifdef to a debug code ALSA: hda - Switch to polling mode before disabling MSI Merge branch 'fix/misc' into topic/misc Merge branch 'fix/hda' into topic/hda Merge branch 'fix/hda' into topic/hda ALSA: hda - Reset pins of IDT/STAC codecs at free ASoC: Remove dead code and labels ALSA: hda - Add reboot notifier to each codec Merge branch 'topic/ctl-pid-lock' into topic/core-change ALSA: hda - Add missing export for snd_hda_bus_reboot_notify ALSA: hda - Add power on/off counter ALSA: hda - Don't access invalid substream in proc file ALSA: hda - Fix build error without CONFIG_SND_HDA_HWDEP=y Merge branch 'fix/misc' into topic/misc Merge branch 'fix/hda' into topic/hda Merge branch 'topic/beep-rename' into topic/hda ALSA: hda - Get rid of magic digits for subdev hack ALSA: hda - Add description of beep_mode in ALSA-Configuration.txt ALSA: hda - Update / add kerneldoc comments to exported functions ALSA: hda - Fix beep_mode option value ALSA: hda - Fix build errors with CONFIG_SND_HDA_INPUT_BEEP=n Merge branch 'fix/hda' into topic/hda ALSA: hda - Disable default quirk for Sony VAIO with ALC262 codec ALSA: hda - Replace the rest of jack-detections with snd_hda_jack_detect() ALSA: opti-miro: Fix missing semicolon ALSA: hda - Fix detection of dual headphones ALSA: hda - Fix mute-LED sync on HP laptops with IDT92HD83xxx codecs ALSA: hda - Change quirk for Acer Aspire 5930G ALSA: hda - Fix input and jack Kconfig depenencies Revert "ALSA: hda - Change quirk for Acer Aspire 5930G" ALSA: pcm - Use dma_mmap_coherent() if available ALSA: pcm - define snd_pcm_default_page_ops() ALSA: pcm - fix page conversion on non-coherent MIPS arch ALSA: pcm - fix page conversion on non-coherent PPC arch ALSA: Remove old DMA-mmap code from arm/devdma.c ALSA: hda - Don't trigger pin-sense for STAC/IDT codecs Merge branch 'next/isa' into topic/misc ASoC: Revert missing reset_err in wm97*.c ALSA: hda - Add a position_fix quirk for MSI Wind U115 ALSA: hda - Fix Cxt5047 test mode Merge branch 'fix/misc' into topic/misc ALSA: hda - Add a pin-fix for FSC Amilo Pi1505 ALSA: hda - Add position_fix quirk for HP dv3 Merge branch 'topic/oxygen' into topic/hda Merge branch 'topic/ice1724-quartet' into topic/hda Merge branch 'topic/beep-rename' into topic/core-change Merge branch 'topic/pcm-dma-fix' into topic/core-change ALSA: aaci - Clean up duplicate code ALSA: hda - Fix memory leaks in the previous patch Merge branch 'topic/core-change' into for-linus Merge branch 'topic/misc' into for-linus Merge branch 'topic/asoc' into for-linus Merge branch 'topic/hda' into for-linus ALSA: hda - Add missing Line-Out and PCM switches as slave ALSA: hda - Exclude unusable ADCs for ALC88x ALSA: hda - Generalize EAPD inversion check in patch_analog.c Merge branch 'topic/hda' into for-linus Merge branch 'topic/asoc' into for-linus ALSA: hrtimer - Fix lock-up net: Fix Yukon-2 Optima TCP offload setup net: Add missing TST_CFG_WRITE bits around sky2_pci_write Merge branch 'topic/asoc' into for-linus Merge branch 'topic/hda' into for-linus Merge branch 'fixes' of git://git.alsa-project.org/alsa-kernel into for-linus Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus Teemu Paasikivi (5): wl1271: Added 5 GHz parameters for wl1273 wl1271: Scan only enabled channels wl1271: Added support to scan on 5 GHz band wl1271: Added 5 GHz support to join and rx wl1271: Checking of rx descriptor status fixed Tejun Heo (32): ia64: don't alias VMALLOC_END to vmalloc_end ia64: initialize cpu maps early ia64: allocate percpu area for cpu0 like percpu areas for other cpus ia64: convert to dynamic percpu allocator percpu: kill legacy percpu allocator Merge branch 'for-linus' into for-next this_cpu: Use this_cpu_xx in trace_functions_graph.c PM / freezer: Don't get over-anxious while waiting vmalloc: fix use of non-existent percpu variable in put_cpu_var() percpu: make alloc_percpu() handle array types percpu: remove some sparse warnings percpu: make percpu symbols under kernel/ and mm/ unique percpu: make percpu symbols in tracer unique percpu: make percpu symbols in oprofile unique percpu: make percpu symbols in cpufreq unique percpu: make percpu symbols in xen unique percpu: make percpu symbols in x86 unique percpu: make percpu symbols in powerpc unique percpu: make percpu symbols in ia64 unique percpu: make misc percpu symbols unique sparc64/PCI: drop PCI_CACHE_LINE_BYTES pccard: configure CLS on attach PCI: pci_dfl_cache_line_size is __devinitdata x86: Fix iommu=nodac parameter handling sched, kvm: Fix race condition involving sched_in_preempt_notifers x86: Rename global percpu symbol dr7 to cpu_dr7 percpu: add missing per_cpu_ptr_to_phys() definition for UP sched: Revert 498657a478c60be092208422fefa9c7b248729c2 libata-acpi: missing _SDD is not an error libata: retry failed FLUSH if device didn't fail it Merge branch 'for-linus' into for-next m68k: rename global variable vmalloc_end to m68k_vmalloc_end Tero Kristo (9): OMAP: PM: DMA context save/restore for off-mode support OMAP3 PM: off-mode support for HS/EMU devices OMAP3: PM: save secure RAM only during init OMAP3: PM: Enable SDRAM auto-refresh during sleep OMAP3: PM: SDRC auto-refresh workaround for off-mode OMAP3: PM: Prevent PER from going OFF when CORE is going INA OMAP3: PM: MPU and CORE should stay awake if there is CAM domain ACTIVE OMAP3: PM: Added resched check into idle calls omap3: rx51: Add SDRAM init Tetsuo Handa (6): LSM: Add security_path_chmod() and security_path_chown(). LSM: Add security_path_chroot(). LSM: Pass original mount flags to security_sb_mount(). sysctl security/tomoyo: Don't look at ctl_name LSM: Move security_path_chmod()/security_path_chown() to after mutex_lock(). TOMOYO: Add recursive directory matching operator support. Thadeu Lima de Souza Cascardo (12): PCI: remove pci_find_slot from PCI_LEGACY config description rt2x00: fix some typos and punctuation in comments rt2800lib: fix some typos and punctuation in comments tree-wide: fix some typos and punctuation in comments sdio_uart: coding style fixes spidev: fix double "of of" in comment sysctl: add missing comments trivial: some small fixes in exofs documentation misc: remove MAC pmu function declaration from misc device class drivers/char/misc.c: clear allocation bit in minor bitmap when device register fails drivers/char/misc.c: use bitmap/bitops functions for dynamic minor number allocation spidev: use DECLARE_BITMAP instead of declaring the array Thara Gopinath (1): OMAP3: PM: Fix for MPU power domain MEM BANK position Theodore Kilgore (7): V4L/DVB (13137): gspca_mr97310a: Add controls for vga cams with sensor type 0 V4L/DVB (13139): gspca_mr97310a: Improve VGA sensor type detection V4L/DVB (13244): gspca_mr97310a: Fix / update some comments V4L/DVB (13245): gspca_mr97310a: Change blue gain setting for Sakar Digital VGA camera V4L/DVB (13265): gspca_mr97310a: Partly back off red gain change for Sakar Digital VGA camera V4L/DVB (13266): gspca_mr97310a: Fix / update some comments V4L/DVB (13267): gspca_mr97310a: Change brightness for VGA type 1 cameras downward Theodore Ts'o (25): ext4: fix potential buffer head leak when add_dirent_to_buf() returns ENOSPC ext4: avoid divide by zero when trying to mount a corrupted file system ext4: plug a buffer_head leak in an error path of ext4_iget() jbd2: don't wipe the journal on a failed journal checksum ext4: remove failed journal checksum check ext4: add tracepoint for ext4_forget() ext4: make sure directory and symlink blocks are revoked ext4: don't update the superblock in ext4_statfs() ext4: fix uninit block bitmap initialization when s_meta_first_bg is non-zero ext4: fix block validity checks so they work correctly with meta_bg ext4: avoid issuing unnecessary barriers ext4: move ext4_forget() to ext4_jbd2.c ext4: fold ext4_journal_revoke() into ext4_forget() ext4: fold ext4_journal_forget() into ext4_forget() ext4: fold ext4_free_blocks() and ext4_mb_free_blocks() ext4: call ext4_forget() from ext4_free_blocks() ext4: print i_mode in octal in ext4 tracepoints ext4: add check for wraparound in ext4_data_block_valid() ext4: use ext4_data_block_valid() in ext4_free_blocks() jbd2: Add ENOMEM checking in and for jbd2_journal_write_metadata_buffer() ext4: Use ext4 file system driver for ext2/ext3 file system mounts jbd2: Export jbd2_log_start_commit to fix ext4 build ext4: Do not override ext2 or ext3 if built they are built as modules ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem) ext2: avoid WARN() messages when failing to write to the superblock Thiago Farina (5): perf: Clean up trivial style issues in builtin-help.c trivial: remove duplicated MIN macro from tehuti. sata_mv: Clean up hard coded array size calculation. sgivwfb: Make use of ARRAY_SIZE. V4L/DVB (13594): cpia2: use __stringify macro. Thomas Chou (1): Input: add driver for Altera PS/2 controller Thomas Gleixner (89): net: Remove BKL from tun sys: Remove BKL from sys_reboot s390: Remove BKL from prng um: Remove BKL from random um: Remove BKL from mmapper x86: Remove BKL from microcode x86: Remove BKL from apm_32 drivers: Remove BKL from misc_open drivers: Remove BKL from cs5535_gpio spi: Remove BKL from spidev_open macintosh: Remove BKL from ans-lcd hw_random: Remove BKL from core input: Remove BKL from hp_sdc_rtc rtc: Remove BKL from efirtc parisc: Remove BKL from eisa_eeprom drivers: Remove BKL from pc8736x_gpio drivers: Remove BKL from scx200_gpio mips: Remove BKL from tb0219 inifiband: Remove BKL from ipath_open() powerpc/nvram_64: Remove unused code powerpc/nvram_64: Check nvram_error_log_index in nvram_clear_error_log() powerpc/nvram_64: Mark init code __init sparc: Remove BKL from apc watchdog: Remove BKL from rio watchdog driver irq: Remove unused debug_poll_all_shared_irqs() PCI: Replace old style lock initializer sparc: Make atomic locks raw net: Replace old style lock initializer sparc: Replace old style lock initializer clockevents: Use u32 for mult and shift factors clocksource: Provide a generic mult/shift factor calculation mips: Use generic mult/shift factor calculation for clocks nohz: Type cast printk argument nohz: Track last do_timer() cpu locking: Make inlining decision Kconfig based locking: Reduce ifdefs in kernel/spinlock.c clocksource/events: Fix fallout of generic code changes workqueue: Add debugobjects support x86: Fix printk format due to variable type change x86: Fixup last users of irq_chip->typename x86: vmiclock: Fix printk format sparc: Fixup last users of irq_chip->typename genirq: Fix spurious irq seqfile conversion x86: Prevent GCC 4.4.x (pentium-mmx et al) function prologue wreckage powerpc: Use unlocked ioctl in nvram_64 macintosh: Remove BKL from nvram driver powerpc: Replace old style lock initializer powerpc: Fixup last users of irq_chip->typename locking: Remove unused prototype locking: Use __[SPIN|RW]_LOCK_UNLOCKED in [spin|rw]_lock_init() x86: hpet: Make WARN_ON understandable x86: Use -maccumulate-outgoing-args for sane mcount prologues Bluetooth: Remove stub ioctl in hci_vhci x86: Fix bogus warning in apic_noop.apic_write() sched: Protect task->cpus_allowed access in sched_getaffinity() sched: Protect sched_rr_get_param() access to task->sched_class hrtimer: Tune hrtimer_interrupt hang logic itimer: Fix the itimer trace print format tracing: Fix wrong usage of strstrip in trace_ksyms locking: Reorder functions in spinlock.c locking: Split rwlock from spinlock headers locking: Separate rwlock api from spinlock api locking: Convert raw_spinlock to arch_spinlock locking: Rename __RAW_SPIN_LOCK_UNLOCKED to __ARCH_SPIN_LOCK_UNLOCKED locking: Convert __raw_spin* functions to arch_spin* locking: Convert raw_rwlock to arch_rwlock locking: Convert raw_rwlock functions to arch_rwlock locking: Implement new raw_spinlock alpha: Fix fallout from locking changes locking: Further name space cleanups locking: Cleanup the name space completely bkl: Fixup core_lock fallout plist: Make plist debugging raw_spinlock aware sched: Convert rq->lock to raw_spinlock sched: Convert rt_runtime_lock to raw_spinlock sched: Convert cpupri lock to raw_spinlock sched: Convert pi_lock to raw_spinlock rtmutes: Convert rtmutex.lock to raw_spinlock smp: Convert smplocks to raw_spinlocks genirq: Convert irq_desc.lock to raw_spinlock hrtimers: Convert to raw_spinlocks perf_event: Convert to raw_spinlock debugobjects: Convert to raw_spinlocks clockevents: Make tick_device_lock static clockevents: Convert to raw_spinlock [IA64] Replace old style lock initializer parisc: Replace old style lock init in smp.c parisc: Fixup last users of irq_chip->typename MIPS: Fixup last users of irq_chip->typename Thomas Hellstrom (10): drm: Add support for drm master_[set|drop] callbacks. drm/ttm: Add user-space objects. drm/ttm: Add ttm lock functionality. drm/ttm: Add TTM execbuf utilities. drm/ttm: Export symbols needed for the vmwgfx driver. drm: Export symbols needed for the vmwgfx driver. drm/ttm: Have the TTM code return -ERESTARTSYS instead of -ERESTART. drm/radeon: Remove tests for -ERESTART from the TTM code. drm/ttm: Delayed delete fixes. drm/ttm: Fix potential ttm_mem_evict_first races. Thomas Klute (1): ar9170: Add support for D-Link DWA 160 A2 Thomas Kunze (9): collie: fix scoop convesion to new api collie: prepare for gpiolib use move drivers/mfd/*.h to include/linux/mfd collie: locomo-led change default trigger SA1100: make gpio_to_irq and reverse a macro add gpiolib support to ucb1x00 collie: convert to gpiolib for ucb1x00 collie: add battery driver collie: support pda_power driver Thomas Renninger (4): [CPUFREQ] Use global sysfs cpufreq structure for conservative governor tunings [ACPI/CPUFREQ] Introduce bios_limit per cpu cpufreq sysfs interface X86 drivers: Introduce msi-wmi driver ACPI processor: Fix section mismatch for processor_add() Thomas Sailer (1): hamradio: Fix bit test correctly. Thomas Weber (1): USB ehci: replace mach header with plat Tias Guns (1): Input: add driver for Dynapro serial touchscreen Tilman Schmidt (16): gigaset: prepare for CAPI implementation gigaset: allow building without I4L gigaset: add Kernel CAPI interface (v3) net/ppp: fix comments - ppp_{sync,asynctty}_receive() may sleep gigaset: CAPI module readability improvements gigaset: fix format string typo in CAPI dial command gigaset: fix bad assumptions about CAPI skbuffs usb_gigaset: code cleanup gigaset: checkpatch cleanup ser_gigaset: checkpatch cleanup bas_gigaset: checkpatch cleanup gigaset: checkpatch cleanup of ev-layer.c gigaset: convert strcmp chain to table lookup gigaset: don't enable any debugging output by default gigaset: documentation amendments tty: docs: serial/tty, add to ldisc methods Tim Abbott (10): ARM: convert to use __HEAD and HEAD_TEXT macros. m68knommu: Don't hardcode the value of PAGE_SIZE in the linker script. m68knommu: Make THREAD_SIZE available to assembly files. m68knommu: Use INIT_TASK_DATA and CACHELINE_ALIGNED_DATA. m68knommu: Use more macros inside the .init section. m68knommu: Move __init_begin out of the .init section. m68knommu: Move __init_end out of the .init section. m68knommu: Split the .init section into INIT_TEXT_SECTION and INIT_DATA_SECTION. m68k: Make thread_info.h usable from assembly. m68k: Cleanup linker scripts using new linker script macros. Tim Blechmann (6): perf stat: Add branch performance events to default output sched: Optimize branch hint in pick_next_task_fair() sched: Optimize branch hint in context_switch() sched, x86: Optimize branch hint in __switch_to() Revert "sched, x86: Optimize branch hint in __switch_to()" SLAB: Fix unlikely() annotation in __cache_alloc_node() Timothy Knoll (1): sound: Kconfig typo fix Tobias Hansen (3): ALSA: snd-usb-us122l: add support for US-144 ALSA: snd-usb-us122l: corrent error number for not probing US-144 on ehci-hcd ALSA: snd-usb-us122l: add product IDs of US-122MKII and US-144MKII Tobias Klauser (1): mtd: ixp4xx map: use resource_size Tobias Mueller (1): cs5535-gpio: request function, mask & names added Tom Zanussi (24): tracing/events: Add 'signed' field to format files perf trace: Add subsystem string to struct event perf trace: Add string/dynamic cases to format_flags perf tools: Add 'signed' flag setting back into trace-event-parse.c trace/syscalls: Change ret param in struct syscall_trace_exit to long perf trace: Add scripting ops perf trace: Add flag/symbolic format_flags perf trace: Add Perl scripting support perf trace: Add perf trace scripting support modules for Perl perf trace: Add interface to access perf data from Perl handlers perf trace: Add Documentation for perf trace Perl support perf trace: Add a scripts/perl/bin for perf trace shell scripts perf trace/scripting: Silence PERL_EMBED_* backtick errors perf trace/scripting: Ignore shadowed variable warning for perf-trace-perl.c perf trace/scripting: Fix Perl common_* access functions perf trace/scripting: Add Fedora libperl install note to doc perf trace/scripting: Fix compile error when libperl not installed perf trace/scripting: Don't display 'scripting unsupported' msg unnecessarily perf trace/scripting: Add support for script args perf trace/scripting: Don't install unneeded files perf trace/scripting: Check return val of perl_run() perf trace/scripting: List available scripts perf trace/scripting: Add 'record' and 'report' options perf trace/scripting: Update Documentation Tomas Winkler (6): iwmc3200top: Add Intel Wireless MultiCom 3200 top driver. iwmc3200wifi: select IWMC3200TOP in Kconfig i2400m-sdio: select IWMC3200TOP in Kconfig iwmc3200top: use prefered style for the device table. iwmc3200top: simplify the driver version iwmc3200top: revamp fw name handling Tomi Valkeinen (19): OMAP2: Add funcs for writing SMS_ROT_* registers OMAP: OMAPFB: split omapfb.h OMAP: OMAPFB: add omapdss device OMAP: Add VRAM manager OMAP: Add support for VRFB rotation engine OMAP: DSS2: Documentation for DSS2 OMAP: DSS2: Display Subsystem Driver core OMAP: DSS2: Add more core files OMAP: DSS2: DISPC OMAP: DSS2: DPI driver OMAP: DSS2: Video encoder driver OMAP: DSS2: RFBI driver OMAP: DSS2: SDI driver OMAP: DSS2: DSI driver OMAP: DSS2: omapfb driver OMAP: DSS2: Add generic and Sharp panel drivers OMAP: DSS2: Taal DSI command mode panel driver OMAP: SDP: Enable DSS2 for OMAP3 SDP board MAINTAINERS: Add OMAP2/3 DSS and OMAPFB maintainer Tommi Rantala (1): page-types: constify read only arrays Tomáš ÄŚech (2): [ARM] pxa/treo: generalisation of Treo680 code [ARM] pxa/treo: add Palm Centro 685 support Tony Finch (1): unifdef: update to upstream revision 1.190 Tony Lindgren (31): Merge branch 'omap7xx-fortony-rc3' of git://robotfuzz.com/linwizard-kernel into omap7xx omap: Change low-level serial init to use ioremap omap: Use ioremap in irq.c omap: Use ioremap in dma.c omap: Use ioremap in dmtimer.c omap: Use ioremap in gpio.c omap: Use ioremap in omap_hwmod.c omap: Use getnstimeofday for omap_device omap: Use ioremap for omap4 L4 code omap: Use ioremap in dispc.c omap: headers: Add mach path to include files omap: headers: Split debug-macro.S for mach-omap1 and mach-omap2 omap: headers: Split entry-macro.S for mach-omap1 and mach-omap2 omap: Split vmalloc.h for mach-omap1 and mach-omap2 omap: headers: Move mtd-xip.h to be mach-omap1 specific omap: headers: Create headers necessary for compile under mach-omap1 and mach-omap2 omap: headers: Move remaining headers from include/mach to include/plat Merge branch '7xx-iosplit-plat' with omap-fixes Merge branch 'pm-upstream/pm-off' of ssh://master.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into 7xx-iosplit-plat-merge Merge branch 'pm-upstream/pm-cpuidle' of ssh://master.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into 7xx-iosplit-plat-merge Merge 7xx-iosplit-plat-merge with omap-fixes Merge branch 'for_2_6_33' of git://git.pwsan.com/linux-2.6 into omap-for-linus omap: mux: Add new style pin multiplexing code for omap3 omap: mux: Add new style pin multiplexing data for 34xx omap: mux: Add new style init functions to omap3 board-*.c files omap: mux: Add debugfs support for new mux code omap: Split i2c platform init for mach-omap1 and mach-omap2 omap: mux: Replace omap_cfg_reg() with new style signal or gpio functions omap: mux: Remove old mux code for 34xx omap: mux: Add 36xx CBP package support Merge branch 'for-next' into omap-for-linus Tony Luck (1): [IA64] Fix cut/paste detritus from unistd.h Tristram Ha (1): net: Fix ks8851 snl NULL pointer dereference Oops Trond Myklebust (26): NFS: BKL removal from the mount code... SUNRPC: Ensure that we honour autoclose before attempting to reconnect RPC: Fix two potential races in put_rpccred NFSv4: Fix a potential state manager deadlock when returning delegations NFSv4: Fix up the callers of nfs4_state_end_reclaim_reboot NFSv4: The state manager shouldn't exit on errors that were handled NFSv4: Ensure the state manager handles NFS4ERR_NO_GRACE correctly NFSv4: Handle NFS4ERR_GRACE when recovering an expired lease. NFSv4: Fix up error handling in the state manager main loop. NFSv4: Ensure nfs_dns_lookup() and nfs_dns_update() are declared static NFSv4: Ensure nfs4_close_context() is declared as static NFSv4.1: Handle NFSv4.1 session errors in the lock recovery code Merge branch 'bugfixes' into nfs-for-next Merge branch 'devel' into linux-next NFSv41: nfs4_reset_session must always set NFS4CLNT_SESSION_DRAINING NFSv41: Fix nfs4_proc_create_session NFSv41: Clean up slot table management NFSv41: Fix up some bugs in the NFS4CLNT_SESSION_DRAINING code NFSv41: More cleanups NFS: Fix up the declaration of nfs4_restart_rpc when NFSv4 not configured NFSv41: Fix a potential state leakage when restarting nfs4_close_prepare Merge branch 'bugfixes' into nfs-for-next NFS: Fix nfs_migrate_page() Merge branch 'nfs-for-2.6.33' NFSv4: Release the sequence id before restarting a CLOSE rpc call NFSv4: Fix a regression in the NFSv4 state manager Troy Kisky (5): ASoC: DaVinci: remove requirement that dma_params is 1st in structure ASoC: DaVinci: i2s, reduce underruns by combining into 1 element ASoC: DaVinci: pcm, rename variables in prep for ping/pong ASoC: DaVinci: pcm, fix underrun by using sram ASoC: DaVinci: use edma_pause, edma_resume Tuukka Toivonen (1): V4L/DVB (13165): videobuf do not force buffer size to be multiple of PAGE_SIZE Ulrich Drepper (1): perf tools: Optimize parse_subsystem_tracepoint_event() Uroš Vampl (1): V4L/DVB (13078): em28xx: fix support for Terratec Cinergy T XS (005e) Ursula Braun (6): af_iucv: remove duplicate sock_set_flag iucv: add work_queue cleanup for suspend s390: remove cu3088 layer for lcs and ctcm netiucv: displayed TX bytes value much too high qeth: remaining EDDP cleanup qeth: Recognize return codes of ccw_device_set_online Uwe Kleine-König (53): mtd: move mxcnd_remove to .exit.text tree-wide: fix typos "selct" + "slect" -> "select" tree-wide: fix typos "aquire" -> "acquire", "cumsumed" -> "consumed" move stk17ta8's probe function to .devinit.text ARM: 5782/1: at91: support for eco920 imx/gpio: Use handle_level_irq imx: reorder mx2x.h imx: reorder mx21.h imx: reorder mx27.h imx: reorder mx3x.h imx: add namespace prefixes for symbols in mx2x.h imx: add namespace prefixes for symbols in mx21.h imx: add namespace prefixes for symbols in mx27.h imx: add namespace prefixes for symbols in mx3x.h imx: add namespace prefixes for symbols in mx31.h imx: add namespace prefixes for symbols in mx35.h imx: reformat mx25.h to match the other platform includes imx: copy constants from mx2x.h to mx21.h using the appropriate namespace imx: copy constants from mx2x.h to mx27.h using the appropriate namespace imx: copy constants from mx3x.h to mx31.h using the appropriate namespace imx: copy constants from mx3x.h to mx35.h using the appropriate namespace rtc: don't use __exit_p to wrap ds1302_rtc_remove serial: sh-sci: don't use __devexit_p to wrap sci_remove ARM: fix "offest" -> "offset" typo IMX: don't disable the uart clock if DEBUG_LL uses it mtd: move excite_nand_remove to .devexit.text mtd: don't use __exit_p to wrap mxcnd_remove MAINTAINERS: add tree and file pattern for ARM IMX m68knommu: move mcf_remove to .devexit.text tree-wide: fix typos "offest" -> "offset" tree-wide: fix typos "couter" -> "counter" Revert "mtd: move mxcnd_remove to .exit.text" ARM: S3C: move s3c_adc_remove to .devexit.text ARM: S3C: move s3c_pwm_remove to .devexit.text sysfs: deprecated features are to help old tools not to confuse them spi/mpc8xxx: don't use __exit_p to wrap plat_mpc8xxx_spi_remove Serial: pxa: work around Errata #75 spi-imx: correct check for platform_get_irq failing spi-imx: use positive logic to distinguish cpu variants spi-imx: don't access struct device directly but use dev_get_platdata mfd: Move asic3_remove to .devexit.text mfd: Near complete mc13783 rewrite mfd: Don't set mc13783 ADREFMODE for touch conversions mxcmmc: fix error path in mxcmci_probe V4L/DVB (13604): vpss: move vpss_remove to .devexit V4L/DVB (13605): sh_mobile_ceu_camera: don't use __exit_p to wrap sh_mobile_ceu_remove V4L/DVB (13606): vpfe_capture: move vpfe_remove to .devexit V4L/DVB (13607): vpif: move vpif_remove to .devexit rtc: add Freescale MC13783 RTC driver MIPS: Excite: move iodev_remove to .devexit.text regulator/mc13783: rename source file to match other drivers regulator/mc13783: various cleanups lib/vsprintf.c: document more vsnprintf extensions Vaibhav Hiremath (9): V4L/DVB (13463): Davinci VPFE Capture: Specify device pointer in videobuf_queue_dma_contig_init V4L/DVB (13464): Davinci VPFE Capture: add i2c adapter id in platform data V4L/DVB (13465): Davinci VPFE Capture: Take i2c adapter id through platform data V4L/DVB (13466): Davinci VPFE Capture:Replaced IRQ_VDINT1 with vpfe_dev->ccdc_irq1 V4L/DVB (13467): V4L2: Added CID's V4L2_CID_ROTATE/BG_COLOR V4L/DVB (13468): v4l2 doc: Added ROTATE and BG_COLOR control documentation V4L/DVB (13469): Davinci VPFE Capture: Add support for Control ioctls V4L/DVB (13470): V4L2: Add Capability and Flag field for Chroma Key V4L/DVB (13471): v4l2 doc: Added FBUF_CAP_SRC_CHROMAKEY/FLAG_SRC_CHROMAKEY Valentin Longchamp (9): mx31: various pins used for mx31moboard mx31moboard: serial port fix mx31moboard: support for pin linked for battery presence check mx31moboard: SPI and MC13783 voltage regulator support mx31moboard: initialize ipu device for all the boards mx31moboard: camera support mx31: pins used for mx31moboard USB mx31moboard: SPI corrections mx31moboard: support for usbh1 and usbh2 Valentin R Sitsikov (1): sh: fix watchdog timer for sh7780/sh7785 Valentin Sitdikov (1): mb862xxfb: add acceleration support for Coral-P/Coral-PA. * imageblt * copyarea * fillrect Valentin Yakovenkov (1): Blackfin: add support for the Acvilon BF561 board Valentine Barshak (2): pasemi_mac: ethtool set settings support powerpc: stop_this_cpu: remove the cpu from the online map. Varun Swara (1): ARM: Do not allow the probing of the local timer Vasanthakumar Thiagarajan (4): ath9k: Update initvals ath9k_hw: Fix possible OOB array indexing in gen_timer_index[] on 64-bit ath9k_hw: Fix AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB and its shift value in 0x4054 mac80211: Fix bug in computing crc over dynamic IEs in beacon Vasilis Liaskovitis (1): Staging: b3dfg: remove check for pci bus master Vasu Dev (11): [SCSI] libfc: removes initializing fc_cpu_order and fc_cpu_mask per lport [SCSI] libfc: adds missing exch release for accepted RRQ [SCSI] libfc: removes unused disc_work and ex_list [SCSI] fcoe, libfc: fix an libfc issue with queue ramp down in libfc [SCSI] add queue_depth ramp up code [SCSI] libfc: add queue_depth ramp up [SCSI] fcoe, libfc: use single frame allocation API [SCSI] libfc: reduce can_queue for all FCP frame allocation failures [SCSI] libfc: adds can_queue ramp up [SCSI] libfc: fix an issue of pending exch/es after i/f destroyed or rmmod fcoe [SCSI] fcoe, libfc: adds enable/disable for fcoe interface Vidhya Govindan (4): wl1251: Add acx command to set tbtt and dtim period wl1251: Set the correct dtim period to the firmware wl1251: Increase the beacon loss timeout value and handle regain event wl1251: Send null data packet with "TODS" bit set Vijay Kumar (1): Staging: poch: Parameter to enable loopback Vijay Kumar B (6): Staging: poch: Parameter to enable synthetic counter Staging: poch: Fetch Flush IOCTL interface Staging: poch: Increase groups per interrupt Staging: poch: Remove circular buffer header Staging: poch: Include linux/types.h Staging: poch: Add sample Rx code Vikram Kandukuri (1): Bluetooth: Fix handling of BNEP setup connection requests Vikram Pandita (1): usbtest: make module param pattern writeable Vimal Singh (1): omap: Correcting GPMC_CONFIG1_DEVICETYPE_NAND Vincent Legoll (1): perf tools: Do not manually count string lengths Vincent Li (1): mm/vmscan: change comment generic_file_write to __generic_file_aio_write Vincent Sanders (2): i2c: Remove big kernel lock from i2cdev_open sm501: implement acceleration features Vipin Bhandari (1): DaVinci: MMC: MMC/SD controller driver for DaVinci family Vitaliy Kulikov (1): ALSA: hda - Fix LED GPIO setup for HP laptops with IDT codecs Vivek Goyal (30): percpu: Fix kdump failure if booted with percpu_alloc=page Fix regression in direct writes performance due to WRITE_ODIRECT flag removal blkio: Set must_dispatch only if we decided to not dispatch the request blkio: Introduce the notion of cfq groups blkio: Implement macro to traverse each service tree in group blkio: Keep queue on service tree until we expire it blkio: Introduce the root service tree for cfq groups blkio: Introduce blkio controller cgroup interface blkio: Introduce per cfq group weights and vdisktime calculations blkio: Implement per cfq group latency target and busy queue avg blkio: Group time used accounting and workload context save restore blkio: Dynamic cfq group creation based on cgroup tasks belongs to blkio: Take care of cgroup deletion and cfq group reference counting blkio: Some debugging aids for CFQ blkio: Export disk time and sectors used by a group to user space blkio: Provide some isolation between groups blkio: Drop the reference to queue once the task changes cgroup blkio: Propagate cgroup weight updation to cfq groups blkio: Wait for cfq queue to get backlogged if group is empty blkio: Determine async workload length based on total number of queues blkio: Implement group_isolation tunable blkio: Wait on sync-noidle queue even if rq_noidle = 1 blkio: Documentation blkio: Export some symbols from blkio as its user CFQ can be a module blkio: Implement dynamic io controlling policy registration blkio: Allow CFQ group IO scheduling even when CFQ is a module cfq-iosched: Do not access cfqq after freeing it cfq-iosched: Get rid of cfqq wait_busy_done flag cfq-iosched: Take care of corner cases of group losing share due to deletion Fix a CFQ crash in "for-2.6.33" branch of block tree Vivek Mahajan (1): sata_sil24: MSI support, disabled by default Vivek Natarajan (5): ath9k: Add Calibration checks ath: Updates for regulatory and country codes. ath9k: Ensure a fair beacon distribution in IBSS mode. mac80211: Fix dynamic power save for scanning. cfg80211: Clear encryption privacy when key off is done. Vlad Yasevich (7): sctp: Fix malformed "Invalid Stream Identifier" error sctp: Select a working primary during sctp_connectx() sctp: Update SWS avaoidance receiver side algorithm sctp: Remove useless last_time_used variable sctp: Turn the enum socket options into defines sctp: Update max.burst implementation sctp: prevent too-fast association id reuse Vladislav Zolotarov (2): bnx2x: Handle Rx and Tx together in NAPI bnx2x: Don't set netdev->trans_start Vlatko Kosturjak (1): Staging: comedi: adl_pci6208: code styling fix WANG Cong (1): kernel/sysctl.c: fix the incomplete part of sysctl_max_map_count-should-be-non-negative.patch Wan ZongShun (3): ARM: fix bug of checking on signed return value using unsigned statement in w90p910 platform ARM: NUC900: Add spi driver support for nuc900 ARM: NUC900: add RTC driver support for nuc910 and nuc920 Wei Yongjun (3): sctp: implement definition for SACK-IMMEDIATELY extension sctp: implement the receiver side for SACK-IMMEDIATELY extension sctp: implement the sender side for SACK-IMMEDIATELY extension Wenji Huang (2): Kbuild: clean up marker Kbuild: clear marker out of modpost Werner Almesberger (1): rtc: pcf50633: manage RTC alarm "pending" flag Wey-Yi Guy (75): iwlwifi: modify LED blink index table iwlwifi: remove un-supported eeprom parameters iwlwifi: separate nic_config for different NIC iwlwifi: separate set_hw_params function for 6000 series iwlwifi: Adjust blink rate to compensate Clock difference iwlwifi: show NVM version in debugfs iwlwifi: Use RTS/CTS as the preferred protection mechanism for 6000 series iwlwifi: allow user change protection mechanism for HT iwlwifi: EEPROM version for 1000 and 6000 series iwlwifi: use S_IRUGO and S_IWUSR in module parameters iwlwifi: send cmd to uCode to configure valid tx antenna iwlwifi: update PCI Subsystem ID for 1000 series iwlwifi: update PCI Subsystem ID for 6000 series iwlwifi: add LED mode to support different LED behavior iwlwifi: Chain Noise Calibration for 6000 series iwlwifi: reliable entering of critical temperature state iwlwifi: change valid EEPROM version for 1000 series iwlwifi: set default aggregation frame count limit to 31 iwlwifi: validate the signature for EEPROM and OTP iwlwifi: remove duplicated/unused definition iwlwifi: additional items in sensitivity range table iwlwifi: dynamic allocate tx queue structure iwlwifi: showing accumulative ucode statistics counters iwlwifi: update channel switch command API iwlwifi: show current power save status reported by uCode iwlwifi: identify eeprom version for 6x50 series NIC iwlwifi: fix incorrect otp blocks number for 6x50 series iwlwifi: set auto clock gate disable bit for 6x00/6x50 series iwlwifi: no chain noise support for 6x50 series iwlwifi: rework for static power save iwlwifi: fix gain computation for 5000 series and up iwlwifi: separate led function from statistic notification iwlwifi: update bt co-exit configuration parameter iwlwifi: specify the valid tx/rx chain in device config structure iwlwifi: increase max tfd payload size iwlwifi: choose thermal throttle method based on device config iwlwifi: issue ct_kill host command based on device config iwlwifi: add channel switch support to 5000 series and up iwlwifi: remove unused parameters iwlwifi: remove duplicated define iwlwifi: update lowest API version support for 6x00 & 6x50 series iwlwifi: minor comments changes for wimax co-exist command iwlwifi: coex API data structure iwlwifi: add SM PS support for 6x50 series iwlwifi: add wimax/wifi coexist support for 6x50 series iwlwifi: print rx_on config to help debug iwlwifi: no periodic Tx/IQ calibration for 6x00/6x50 series iwlwifi: remove un-used parameter iwlwifi: fix for channel switch iwlwifi: drop non-production PCI-IDs iwlwifi: do not base station's sm_ps setting on AP iwlwifi: Fix issue on file transfer stalled in HT mode iwlwifi: validate enhanced tx power entry iwlwifi: disable coex until implementation ready for 6x50 iwlwifi: remove unused parameter from iwl_channel_info iwlwifi: drop non-production PCI-IDs for 6x50 series iwlwifi: remove external reference for non-exist data structure iwlwifi: update reply_statistics_cmd with 'clear' parameter iwlwifi: eliminate the possible 1/2 dBm tx power loss in 6x00 & 6x50 series iwlwifi: align tx/rx statistics debugfs format iwlwifi: control led while update tx/rx bytes counts iwlwifi: set sm_ps_mode as part of cfg parameters iwlwifi: reset led_tpt when clear tx/rx traffic byte counts iwlwifi: set read/write permission for debugfs files iwlwifi: increase tx_queue debugfs buffer size iwlwifi: dynamically allocate buffer for sram debugfs file iwlwifi: fix reserved2 field in iwl4965_addsta iwlwifi: update supported PCI_ID list for 5xx0 series iwlwifi: by default, dump entire sram data portion iwlwifi: dump error log when uCode error occurred iwlwifi: print limited number of event log when uCode error iwlwifi: change message for cmd queue full error iwlwifi: remove reset led_tpt from iwl_leds_init() iwl3945: remove duplicated event logging code iwlwifi: indicate uCode type when fail dump error/event log William Allen Simpson (9): net: TCP_MSS_DEFAULT, TCP_MSS_DESIRED TCPCT part 1a: add request_values parameter for sending SYNACK TCPCT part 1b: generate Responder Cookie secret TCPCT part 1c: sysctl_tcp_cookie_size, socket option TCP_COOKIE_TRANSACTIONS TCPCT part 1d: define TCP cookie option, extend existing struct's TCPCT part 1e: implement socket option TCP_COOKIE_TRANSACTIONS TCPCT part 1f: Initiator Cookie => Responder TCPCT part 1g: Responder Cookie => Initiator Documentation: rw_lock lessons learned Wim Van Sebroeck (1): [WATCHDOG] iTCO_wdt.c - cleanup chipset documentation Wolfgang Grandegger (2): can: make the number of echo skb's configurable can: provide library functions for skb allocation Wolfram Sang (18): pcmcia: drop already defined PCI_IDs spi/mpc52xx-psc-spi: check for valid PSC spi/mpc52xx: replace printk with dev_err net/can: add driver for mscan family & mpc52xx_mscan net/can/mscan: move defines into .h file net/can/mscan: trivial fixes net/can/mscan: drop support for CAN_MODE_{SLEEP|STOP} net/can/mscan: use {clr|set}bits8 macros net/can/mscan: fix function annotations net/can/mscan: drop assignment in while-construct net/can/mpc52xx_can: refactor clock-get routine net/can/mpc52xx_can: improve properties and their description net/can/mscan: replace hardcoded values with defines net/can/mscan: add error path to mscan_open() net/can/mscan: improve build i2c/chips: Move ds1682 to drivers/misc spi/mpc52xx-spi: minor cleanups regulator: add driver for MAX8660/8661 Wu Fengguang (57): ALSA: hda - select IbexPeak handler for Calpella ALSA: hda - vectorize get_empty_pcm_device() ALSA: hda - allow up to 4 HDMI devices ALSA: hda - convert intelhdmi global references to local parameters ALSA: hda - remove intelhdmi dependency on multiout ALSA: hda - use pcm prepare/cleanup callbacks for intelhdmi ALSA: hda - reorder intelhdmi prepare/cleanup callbacks ALSA: hda - vectorize intelhdmi ALSA: hda - get intelhdmi max channels from widget caps ALSA: hda - auto parse intelhdmi cvt/pin configurations ALSA: hda - remove static intelhdmi configurations ALSA: intelhdmi - fix audio infoframe fill size ALSA: intelhdmi - fix channel mapping slot mask ALSA: intelhdmi - export monitor-presence and ELD-valid status ALSA: hda - introduce snd_hda_jack_detect() and snd_hda_pin_sense() ALSA: intelhdmi - probe for monitor/eld presence at module init time ALSA: intelhdmi - separate out infoframe checksum routine ALSA: intelhdmi - sticky infoframe ALSA: intelhdmi - sticky stream id and format ALSA: intelhdmi - sticky channel count ALSA: hda - show EPSS capability in proc ext4: remove encountered_congestion trace ext4: remove unused parameter wbc from __ext4_journalled_writepage() writeback: remove unused nonblocking and congestion checks (gfs2) writeback: remove the always false bdi_cap_writeback_dirty() test writeback: introduce wbc.for_background writeback: remove unused nonblocking and congestion checks ALSA: hda - show HBR(High Bit Rate) pin cap in procfs ALSA: intelhdmi - accept DisplayPort pin ALSA: intelhdmi - channel mapping applies to Pin ALSA: intelhdmi - add channel mapping for typical configurations intelhdmi - dont power off HDA link /dev/mem: remove redundant test on len /dev/mem: introduce size_inside_page() /dev/mem: cleanup unxlate_dev_mem_ptr() calls /dev/mem: make size_inside_page() logic straight /dev/mem: remove the "written" variable in write_kmem() /dev/mem: remove redundant parameter from do_write_kmem() page-types: add standard GPL license header HWPOISON: remove the anonymous entry HWPOISON: return ENXIO on invalid page number HWPOISON: avoid grabbing the page count multiple times during madvise injection HWPOISON: abort on failed unmap HWPOISON: comment the possible set_page_dirty() race HWPOISON: comment dirty swapcache pages HWPOISON: introduce delete_from_lru_cache() HWPOISON: remove the free buddy page handler HWPOISON: detect free buddy pages explicitly HWPOISON: Add unpoisoning support HWPOISON: make semantics of IGNORED/DELAYED clear HWPOISON: return 0 to indicate success reliably HWPOISON: add fs/device filters HWPOISON: limit hwpoison injector to known page types mm: export stable page flags HWPOISON: add page flags filter memcg: rename and export try_get_mem_cgroup_from_page() memcg: add accessor to mem_cgroup.css Wu Zhangjin (44): ALSA: SND_CS5535AUDIO: Remove the X86 platform dependency MIPS: Add support for GZIP / BZIP2 / LZMA compressed kernel images MIPS: Loongson: Register reserved memory pages MIPS: Fuloong2e: Cleanup Kconfig MIPS: Loongson early_printk: Fix variable type of uart_base MIPS: Loongson: Add serial port support MIPS: Bonito64: Make Loongson independent from Bonito64 code. MIPS: Fuloong 2E: Update defconfig file MIPS: Loongson: Cleanup machtype support MIPS: Loongson: Cleanup the serial port support MIPS: oprofile: Only do performance counter handling for counter interrupts MIPS: Loongson: Add basic Loongson 2F support MIPS: Lemote 2F: Add a LEMOTE_MACH2F kernel option MIPS: Lemote 2f: Enable legacy RTC driver MIPS: Lemote 2F: Add basic CS5536 VSM support MIPS: Lemote 2F: Add PCI support MIPS: Lemote 2F: Add IRQ support MIPS: Lemote 2F: Add reset support MIPS: Lemote 2F: Add defconfig file MIPS: Loongson 2F: Cleanup the #if clauses MIPS: Add support for uncached accelerated mappings. MIPS: Loongson 2F: Add suspend support framework MIPS: Yeeloong 2F: Add board specific suspend support MIPS: Lemote 2F: Add NAS support MIPS: Lemote 2F: Add Lynloong support MIPS: Lemote 2F: Add cs5536 MFGPT timer support MIPS: Add basic CPUFreq options. MIPS: Loongson 2F: Add CPU frequency scaling support MIPS: Tracing: Add static function tracer support for MIPS MIPS: Tracing: Enable HAVE_FUNCTION_TRACE_MCOUNT_TEST for MIPS MIPS: Tracing: Add an endian argument to scripts/recordmcount.pl MIPS: Tracing: Add dynamic function tracer support MIPS: Tracing: Add IRQENTRY_EXIT section for MIPS MIPS: Tracing: Add function graph tracer support for MIPS MIPS: Tracing: Add dynamic function graph tracer for MIPS MIPS: Tracing: Make ftrace for MIPS work without -fno-omit-frame-pointer MIPS: Tracing: Reserve $12(t0) for mcount-ra-address of gcc 4.5 MIPS: Tracing: Make function graph tracer work with -mmcount-ra-address MIPS: Yeeloong 2F: Add basic EC operations MIPS: Yeeloong 2F: Add LID open event as the wakeup event MIPS: Yeeloong 2F: Cleanup reset logic using the new ec_write function MIPS: Lemote 2F: Suspend CS5536 MFGPT Timer MIPS: Loongson: Cleanups of serial port support RTC: rtc-cmos.c: Fix warning on MIPS Xiao Guangrong (16): tracing/ksym_tracer: fix the output of ksym tracer tracing/ksym_tracer: fix write operation of ksym_trace_filter tracing/ksym_tracer: support quick clear for ksym_trace_filter -- v2 perf_event: Initialize data.period in perf_swevent_hrtimer() perf_event: Fix compile error perf/sched: Fix 'perf sched trace' perf_event: Fix raw event processing perf_event: Fix __dsos__write_buildid_table() perf_event: Eliminate raw->size perf_event: Clean up __perf_event_init_context() perf_event: Allocate children's perf_event_ctxp at the right time perf_event: Cleanup for cpu_clock_perf_event_update() perf sched: Fix for getting task's execution time perf_event: Fix perf_swevent_hrtimer() variable initialization perf_event: Fix variable initialization in other codepaths generic-ipi: cleanup for generic_smp_call_function_interrupt() Xiaotian Feng (5): x86: pat: Clean up req_type special case for reserve_memtype() x86: pat: Remove ioremap_default() x86/pat: Trivial: don't create debugfs for memtype if pat is disabled x86/reboot: Add pci_dev_put in reboot_fixup_32.c for consistency ipvs: fix synchronization on connection close Xose Vazquez Perez (1): rt2x00: more ids to rt2800usb.c YOSHIFUJI Hideaki / ĺ‰č—¤č‹±ćŽ (4): ipv6 sit: 6rd (IPv6 Rapid Deployment) Support. ipv6 sit: Ensure to initialize 6rd parameters. ipv6 sit: Fix 6rd relay address. ipv6 sit: Set relay to 0.0.0.0 directly if relay_prefixlen == 0. Yan, Zheng (13): Btrfs: Avoid superfluous tree-log writeout Btrfs: Add btrfs_duplicate_item Btrfs: Rewrite btrfs_drop_extents Btrfs: Fix disk_i_size update corner case Btrfs: Avoid orphan inodes cleanup while replaying log Btrfs: Avoid orphan inodes cleanup during committing transaction Btrfs: Make fallocate(2) more ENOSPC friendly Btrfs: Make truncate(2) more ENOSPC friendly Btrfs: Pass transaction handle to security and ACL initialization functions Btrfs: Add delayed iput Btrfs: Fix btrfs_drop_extent_cache for skip pinned case Btrfs: Fix per root used space accounting Btrfs: don't add extent 0 to the free space cache v2 Yang, Bo (13): [SCSI] megaraid_sas: tape drive support fix [SCSI] megaraid_sas: Add poll mechanism to megaraid sas driver [SCSI] megaraid_sas: add sysfs for AEN polling [SCSI] megaraid_sas: Add new megaraid SAS 2 controller support to the driver [SCSI] megaraid_sas: infrastructure to get PDs from FW [SCSI] megaraid_sas: report system PDs to OS [SCSI] megaraid_sas: allocate the application cmds to sas2 controller [SCSI] megaraid_sas: add the IEEE SGE support to SAS2 controller [SCSI] megaraid_sas: Fix the fix for fw hang caused by megaraid sas application [SCSI] megaraid_sas: Add the support for updating the OS after adding/removing the devices from FW [SCSI] megaraid_sas: fix 64 bit sense pointer truncation [SCSI] megaraid_sas: use the firmware boot timeout when waiting for commands [SCSI] megaraid_sas: Update version number and documentation Yaniv Rosner (10): bnx2x: Fix Parallel-Detect settings bnx2x: Fix CL73 autoneg issues bnx2x: Miscellaneous debug print and tabs bnx2x: Enable FC when parallel-detect is used bnx2x: Modify BCM8706 link init seq bnx2x: Add support for BCM84823 bnx2x: Fix BCM8726 ROM load seq bnx2x: Fix 10G mode in BCM8481/BCM84823 bnx2x: Fix register access timeout in 10M bnx2x: version 1.52.1-3 Yegor Yefremov (1): ARM: 5770/1: Add DMA Engine support to at91sam9g45 Yevgeny Petrilin (1): mlx4_core: Fix parsing of reserved EQ cap Yi Li (4): Blackfin: fix gptimer0 clock source compile warning Blackfin: unify sched_clock() handling between clock sources Blackfin: use common code for cycle->nanosecond conversion Blackfin: SMP: don't start up core b until its state has been completely onlined Yi Zou (27): ixgbe: Add support for 82599 alternative WWNN/WWPN prefix net: Add ndo_fcoe_get_wwn to net_device_ops ixgbe: Add support for netdev_ops.ndo_fcoe_get_wwn to 82599 vlan: Add support to netdev_ops.ndo_fcoe_get_wwn for VLAN device ixgbe: use known user priority for FCoE when DCB is enabled ixgbe: select FCoE Tx queue in ndo_select_queue [SCSI] libfc: fix ddp in fc_fcp for 0 xid [SCSI] fcoe: remove redundant checking of netdev->netdev_ops [SCSI] libfc: Fix wrong scsi return status under FC_DATA_UNDRUN [SCSI] fcoe: Use NETIF_F_FCOE_MTU flag to set up max frame size (lport->mfs) [SCSI] libfc: Fix frags in frame exceeding SKB_MAX_FRAGS in fc_fcp_send_data [SCSI] fcoe: Call ndo_fcoe_enable/disable to turn FCoE feature on/off in LLD [SCSI] fcoe: remove extra function decalrations [SCSI] fcoe: Fix checking san mac address [SCSI] fcoe: Fix getting san mac for VLAN interface [SCSI] fcoe: Fix setting lport's WWNN/WWPN to use san mac address [SCSI] fcoe: Fix using VLAN ID in creating lport's WWWN/WWPN [SCSI] libfcoe: Do not pad FIP keep-alive to full frame size [SCSI] libfc: fix payload size passed to fc_frame_alloc() in fc_lport_els_request [SCSI] libfc: add FC-BB-5 LESB counters to fcoe_dev_stats [SCSI] libfcoe: add checking disable flag in FIP_FKA_ADV [SCSI] libfcoe: add tracking FIP Virtual Link Failure count [SCSI] libfcoe: add tracking FIP Missing Discovery Advertisement count [SCSI] libfc: add fcoe_fc_els_lesb to fc_fcoe.h for FC-BB-5 LESB definitions [SCSI] fcoe, libfc: add get_lesb() to allow LLD to fill the link error status block (LESB) [SCSI] libfc: add support of receiving ELS_RLS [SCSI] fcoe: Use LLD's WWPN and WWNN for lport if LLD supports ndo_fcoe_get_wwn Yinghai Lu (17): x86/PCI: read root resources from IOH on Intel x86: Make sure wakeup trampoline code is below 1MB x86: When cleaning MTRRs, do not fold WP into UC x86: Change crash kernel to reserve via reserve_early() x86: apic: Remove not needed #ifdef x86: Re-get cfg_new in case reuse/move irq_desc x86: apic: Print out SRAT table APIC id in hex x86, numa, bootmem: Only free bootmem on NUMA failure path x86, numa: Use near(er) online node instead of roundrobin for NUMA x86: Move find_smp_config() earlier and avoid bootmem usage x86, mtrr: Fix sorting of mtrr after subtracting x86/pci: seperate x86_pci_rootbus_res_quirks from amd_bus.c PCI: add debug output for DMA mask info PCI: show dma_mask bits in /sys x86/PCI: claim SR-IOV BARs in pcibios_allocate_resource x86: Use find_e820() instead of hard coded trampoline address x86: Gart: fix breakage due to IOMMU initialization cleanup Yoichi Yuasa (2): Add KZM-ARM11-01 support rtc-vr41xx: use resource_size() Yong Wang (2): x86: Under BIOS control, restore AP's APIC_LVTTHMR to the BSP value x86: Mark the thermal init functions __init Youquan, Song (1): crypto: testmgr - Add ghash algorithm test before provide to users Yury Polyanskiy (1): xfrm: SAD entries do not expire correctly after suspend-resume Zachary Amsden (5): KVM: Separate timer intialization into an indepedent function KVM: Kill the confusing tsc_ref_khz and ref_freq variables KVM: Fix printk name error in svm.c KVM: Fix hotplug of CPUs KVM: x86: Harden against cpufreq Zeev Tarantov (1): perf tools: Fix syntax in documentation Zhai, Edwin (2): KVM: introduce kvm_vcpu_on_spin KVM: VMX: Add support for Pause-Loop Exiting Zhang Le (1): USB: option.c: add support for D-Link DWM-162-U5 Zhang Rui (2): ACPI: support customizing ACPI control methods at runtime ACPI: add kernel tainting after overriding an ACPI control method Zhao Yakui (20): drm/i915: Replace DRM_DEBUG with DRM_DEBUG_DRIVER drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS drm/i915: Replace DRM_DEBUG with DRM_DEBUG_KMS in DVO output code. drm/i915: Add ACPI OpRegion support for Ironlake ACPI: Notify the _PPC evaluation status to the platform drm/i915: Enable LVDS downclock feature through EDID. drm/i915: Check whether the LVDS downclock is found in VBT drm/i915: Restore the DPLL calculation logic for 9xx platform drm/i915: parse child device from VBT drm/i915: Don't set up HDMI ports that aren't in the BIOS device table. drm/i915: Don't set up DP ports that aren't in the BIOS device table. drm/i915: Don't set up the LVDS if it isn't in the BIOS device table. drm/i915: Don't set up the TV port if it isn't in the BIOS table. drm/i915: Add 30ms delay to make SDVO TV detection reliable. drm/i915: fix the incorrect condition judgement in dp_is_present_in_vbt drm/i915: Add the missing clonemask for display port on Ironlake drm/i915: Declare the new VBT parsing functions as static drm: disable all the possible outputs/crtcs before entering KMS mode ACPI: Use the ARB_DISABLE for the CPU which model id is less than 0x0f. ACPI: Use the return result of ACPI lid notifier chain correctly Zhaolei (1): fatfs: use common time_to_tm in fat_time_unix2fat() Zhenyu Wang (3): drm/i915: Add display hotplug event on Ironlake drm/i915: Fix LVDS stability issue on Ironlake drm/i915: PineView only has LVDS and CRT ports Zhu Yi (11): iwlwifi: use paged Rx iwmc3200wifi: add BGN sdio device id iwmc3200wifi: allow joining an existed IBSS network iwmc3200wifi: handle coexistence radio notification iwlwifi: fix use after free bug for paged rx iwlwifi: reuse page for notification packets mac80211: make align adjustment code support paged SKB iwlwifi: allocate 128 bytes linear buffer for rx skb iwmc3200wifi: Set wireless mode correctly iwmc3200wifi: fix NULL pointer dereference in pmkid update ipw2100: fix rebooting hang with driver loaded adam radford (2): [SCSI] 3w-sas: Add new driver for LSI 3ware 9750 [SCSI] 3w-9xxx fix bug in sgl loading akpm@linux-foundation.org (2): sound/pci/hda/patch_via.c: work around gcc-4.0.2 ICE leds: drivers/leds/leds-ss4200.c: fix return statement andrew hendry (3): X25: Move SYSCTL ifdefs into header X25: Check for errors in x25_init X25: Fix oops and refcnt problems from x25_dev_get arnaud.patard@rtp-net.org (4): ARM: H1940: add mmc device ARM: H1940: enable rtc ARM: H1940: add lcd/backlight device definition ARM: H1940: Convert h1940 bluetooth driver to rfkill arnd@arndb.de (1): powerpc: Fix wrong error code from ppc32 select syscall ashish kalra (1): sata_fsl: Add asynchronous notification support bart.hartgers@gmail.com (6): USB: ark3116: Setup some basic infrastructure for new ark3116 driver. USB: ark3116: Make existing functions 16450-aware and add close and release functions. USB: ark3116: Replace cmget USB: ark3116: Add cmset and break USB: ark3116: Callbacks for interrupt and bulk read USB: ark3116: Cleanup of now unneeded functions chaithrika@ti.com (1): TI DaVinci EMAC: Minor macro related updates chas williams - CONTRACTOR (3): atm: [lec] initialize .netdev_ops before calling register_netdev() atm: [he] adjust tests to account for sk_wmem_alloc changes atm: [br2684] allow routed mode operation again fangxiaozhi (1): net: PPP buffer too small for higher speed connections hartleys (6): mtd_blkdevs.c: quiet a "symbol shadows" sparse warning spi: atmel_spi.c: use resource_size() spi: spi_bfin5xx.c: use resource_size() spi: spi_mpc8xxx.c: use resource_size() spi: spi_sh_sci.c: use resource_size() spi: spi_txx9.c: use resource_size() hiranotaka@zng.jp (1): V4L/DVB (13394): pt1: Support FE_READ_SNR jack wang (10): [SCSI] pm8001: add SAS/SATA HBA driver [SCSI] pm8001: Fix for sata io circular lock dependency. [SCSI] pm8001: enhance error handle for IO patch [SCSI] pm8001: fix endian issues with SAS address [SCSI] pm8001: set SSC down-spreading only to get less errors on some 6G device. [SCSI] pm8001:fix potential NULL pointer dereference [SCSI] pm8001: bit set pm8001_ha->flags [SCSI] pm8001: do not reset local sata as it will not be found if reset [SCSI] pm8001: enable read HBA SAS address from VPD [SCSI] pm8001: misc code cleanup jack_wang (3): [SCSI] pm8001: add reinitialize SPC parameters before phy start [SCSI] pm8001: enhance IOMB process modules [SCSI] pm8001: Fixes for tag alloc, error goto and code cleanup jamal (2): pkt_sched: ingress socket filter by mark pkt_sched: skbedit add support for setting mark jassi brar (1): ASoC: Support WM8580 based audio subsystem on SMDK64xx machines john fastabend (1): [SCSI] fcoe: add check to fail gracefully in bonding mode john stultz (4): ntp: Provide compability defines (You say MOD_NANO, I say ADJ_NANO) time: Implement logarithmic time accumulation time: Remove xtime_cache procfs: allow threads to rename siblings via /proc/pid/tasks/tid/comm jolsa@redhat.com (1): tracing: Support multiple pids in set_pid_ftrace file kxie@chelsio.com (1): [SCSI] cxgb3i: always use negative errno in case of error manjugk manjugk (1): omap3 : Enable TWL4030 Keypad for Zoom2 and Zoom3 boards matt mooney (2): Staging: comedi: mite.c: fix coding style Staging: comedi: mite.h: deletion of unused functions matthieu castet (1): airo : allow supend with card without power management pbathija@amcc.com (1): powerpc/44x: Fix DMA ranges in DTS file for Katmai board. roel kluin (10): x25: bit and/or confusion in x25_ioctl()? net/hamradio: fix test in receive() sb1250-mac: duplicate setting of bit V_MAC_RX_PL_THRSH(4) in sbmac_channel_start() net: Cleanup redundant tests on unsigned net: Cleanup redundant tests on unsigned atm: Cleanup redundant tests on unsigned ax25: unsigned cannot be less than 0 in ax25_ctl_ioctl() cnic: ensure ulp_type is not negative powerpc/spufs: Fix test in spufs_switch_log_read() mlx4_core: return a negative error value sonic zhang (1): i2c-core: i2c bus should support PM entries in struct dev_pm_ops stephen hemminger (12): netdev: add netdev_continue_rcu vlan: eliminate use of dev_base_lock net: use rcu for network scheduler API s390: use RCU to walk list of network devices decnet: use RCU to find network devices IPV4: use rcu to walk list of devices in IGMP CAN: use dev_get_by_index_rcu netdev: fold name hash properly (v3) decnet: add RTNL lock when reading address list decnet: convert dndev_lock to spinlock sky2: print Optima chip name sky2: leave PCI config space writeable steve@digidescorp.com (3): microblaze: Fix pfn_valid() for noMMU microblaze: Fix level interrupt ACKing microblaze: nommu: Don't clobber R11 on syscalls vikram pandita (13): omap: introduce OMAP_LL_DEBUG_NONE DEBUG_LL config omap3: 3630: update is_chip variable omap3: defconfigs: remove SYSFS_DEPRECATED flag omap3: zoom: split board file for software reuse omap3: zoom: rename zoom2 name to generic zoom omap3: zoom: Drop i2c-1 speed to 2400 omap3: zoom: Introduce zoom3 board support omap: zoom3: defconfig creation omap: zoom2: update defconfig for LL_DEBUG_NONE omap: 3630sdp: introduce 3630 sdp board support omap: 3630sdp: defconfig creation omap: header: remove unused data-type omap: serial: fix non-empty uart fifo read abort wanzongshun (4): ARM: 5838/1: add nuc950_defconfig ARM: 5839/1: add nuc960_defconfig ARM: 5842/1: add spi resource support for nuc900 ARM: 5844/1: rename w90p910_defconfig to n uc910_defconfig zeal (2): KS8695: fix ks8695_rx_irq() bug. KS8695: fix ks8695_rx() unreasonable action. zhao.ming9@zte.com.cn (1): USB: option: add pid for ZTE Éric Piel (3): V4L/DVB (13295): sms1xxx: load smsdvb also for the hauppauge tiger cards lis3: update documentation and comments lis3: fix show rate for 8 bits chips Ĺukasz WojniĹ‚owicz (1): ALSA: hda - 4930g mute lfe and side when pluging in headphones ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:22:02 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_21,J_CHICKENPOX_41 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMM1sQ144048 for ; Fri, 22 Jan 2010 16:22:02 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMM0Zf144020; Fri, 22 Jan 2010 16:22:00 -0600 Date: Fri, 22 Jan 2010 16:22:00 -0600 Message-Id: <201001222222.o0MMM0Zf144020@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.33-rc3, created. v2.6.33-rc3 X-Git-Refname: refs/tags/v2.6.33-rc3 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 31fdc15b99788540d0ee8b8b337242e38489f603 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.33-rc3 has been created at 31fdc15b99788540d0ee8b8b337242e38489f603 (tag) tagging 74d2e4f8d79ae0c4b6ec027958d5b18058662eea (commit) replaces v2.6.33-rc2 tagged by Linus Torvalds on Tue Jan 5 16:03:00 2010 -0800 - Log ----------------------------------------------------------------- Linux 2.6.33-rc3 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEABECAAYFAktD0zgACgkQF3YsRnbiHLtdggCgrXAsOybSnhedNNRtjf4Zt2vO 5u8AoKlo682/ELZx5QvJ/Wbivw4iI4KQ =u6X5 -----END PGP SIGNATURE----- Alan Cox (2): i2o: propogate the BKL down into the ioctl method tosh: Use non bkl ioctl Alexander Duyck (4): igb: do not force pcs link when in KX mode igb: do not force retry count to 1 on 82580 phy igb: correctly offset 82575 flow control watermarks by 16 bytes igb: check both function bits in status register in wol exception Alexander Graf (1): KVM: powerpc: Fix mtsrin in book3s_64 mmu Andrew Morton (3): aoe: switch to the new bio_flush_dcache_pages() interface ext4: fix unsigned long long printk warning in super.c jbd2: don't use __GFP_NOFAIL in journal_init_common() Andrey Borzenkov (1): orinoco: fix GFP_KERNEL in orinoco_set_key with interrupts disabled Aneesh Kumar K.V (1): ext4: Ensure zeroout blocks have no dirty metadata Anton Vorontsov (3): ucc_geth: Fix empty TX queue processing ucc_geth: Fix netdev watchdog triggering on link changes ucc_geth: Don't needlessly change MAC settings in adjust_link() Arnaldo Carvalho de Melo (3): perf diff: Fix usage array, it must end with a NULL entry perf record: We should fork only if a program was specified to run perf tools: Add missing header files to LIB_H Makefile variable Arnaud Patard (2): ARM: S3C24XX: touchscreen device definition ARM: S3C24XX: touchscreen device definition Ben Dooks (5): ARM: mach-osiris: add NAND_SCAN_SILENT_NODEV to optional devices ARM: mach-bast: add NAND_SCAN_SILENT_NODEV to optional devices ARM: S3C: Fix NAND device registration by s3c_nand_set_platdata(). ARM: Merge next-simtec ARM: Merge s3c24xx-updates2 Ben Hutchings (3): sfc: Include XGXS in XMAC link status check except in XGMII loopback sfc: QT2025C: Add error message for suspected bad SFP+ cables sfc: Disable TX descriptor prefetch watchdog Benjamin Herrenschmidt (2): PCI/cardbus: Add a fixup hook and fix powerpc ps3_gelic_wireless: Fix build failure due to missing WEXT_PRIV Benoit Papillault (1): ath9k: Last fix for TX software padding. Bob Copeland (1): ath5k: fix SWI calibration interrupt storm Carlos Corbacho (1): ACPI: WMI: Survive BIOS with duplicate GUIDs Clemens Ladisch (1): firewire: fix use of multiple AV/C devices, allow multiple FCP listeners Csaba Henk (1): PCI: Handle case when no pci device can provide cache line size hint Daisuke HATAYAMA (1): binfmt_elf_fdpic: Fix build breakage introduced by coredump changes. Dan Carpenter (2): bond_3ad.c avoid possible null deref wl1271_cmd.c: cleanup char => u8 Dan Williams (5): ioat3: fix p-disabled q-continuation async_tx: expand async raid6 test to cover ioatdma corner case ioat2,3: put channel hardware in known state at init Merge branch 'ioat' into fixes md: make recovery started by do_md_run() visible via sync_action Daniel Drake (1): Fix MAC address access in 3c507, ibmlana, pcnet32 and libertas Daniel Mack (1): Libertas: fix buffer overflow in lbs_get_essid() David Howells (1): ext4: Don't ask about supporting ext2/3 in ext4 if ext4 is not configured David S. Miller (6): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 bbc_envctrl: Clean up properly if kthread_run() fails. Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ sparc64: Fix NMI programming when perf events are active. sparc64: Fix Niagara2 perf event handling. Denis Kirjanov (1): vxge: use DMA_BIT_MASK instead of plain values. Detlef Riekenberg (1): vgaarbiter: fix a typo in the vgaarbiter Documentation Dexuan Cui (3): PCI: support device-specific reset methods PCI: add Intel USB specific reset method PCI: add Intel 82599 Virtual Function specific reset method Dmitry Torokhov (8): Input: speed up suspend/shutdown for PS/2 mice and keyboards Input: serio - do not mark kseriod freezable anymore Input: ff-memless - another fix for signed to unsigned overflow Input: iforce - fix oops on device disconnect Input: matrix-keypad - handle cases when GPIOs can't be wakeup sources Input: lifebook - add CONFIG_DMI dependency dell-wmi - fix condition to abort driver loading Input: iforce - wait for command completion when closing the device Don Skidmore (1): ixgbe: fix Need to call pci_save_state after pci_restore_state Emese Revfy (1): drbd: Constify struct file_operations Eric Sandeen (2): fs-writeback: Add helper function to start writeback if idle ext4: flush delalloc blocks when space is low Eric W. Biederman (1): sysfs: Add lockdep annotations for the sysfs active reference FUJITA Tomonori (2): block: remove Documentation/block/as-iosched.txt x86/agp: Fix agp_amd64_init() initialization with CONFIG_GART_IOMMU enabled Fang Wenqi (1): ext4: Update documentation to correct the inode_readahead_blks option name Felipe Balbi (2): Input: twl4030_keypad - switch to using threaded IRQ Input: twl4030-pwrbutton - switch to using threaded IRQ Felix Fietkau (2): mac80211: fix ibss join with fixed-bssid ath9k: fix missed error codes in the tx status check Frederic Weisbecker (15): Merge commit 'v2.6.32' into reiserfs/kill-bkl reiserfs: Fix possible recursive lock reiserfs: Fix reiserfs lock and journal lock inversion dependency reiserfs: Fix reiserfs lock <-> inode mutex dependency inversion reiserfs: Fix remaining in-reclaim-fs <-> reclaim-fs-on locking inversion perf: Pass appropriate frame pointer to dump_trace() reiserfs: Fix reiserfs lock <-> i_xattr_sem dependency inversion reiserfs: Warn on lock relax if taken recursively reiserfs: Fix reiserfs lock <-> i_mutex dependency inversion on xattr reiserfs: Relax reiserfs lock while freeing the journal reiserfs: Relax lock before open xattr dir in reiserfs_xattr_set_handle() reiserfs: Fix unwanted recursive reiserfs lock in reiserfs_unlink() reiserfs: Fix journal mutex <-> inode mutex lock inversion reiserfs: Safely acquire i_mutex from reiserfs_for_each_xattr reiserfs: Safely acquire i_mutex from xattr_rmdir Gertjan van Wingerde (5): rt2x00: Fix rt2800usb detection in rt2800lib. mac80211: Add define for TX headroom reserved by mac80211 itself. rt2x00: Disable powersaving for rt61pci and rt2800pci. rt2x00: Fix calculation of rt2800 iveiv entry offset. rt2x00: Add USB ID for Linksys WUSB 600N rev 2. Guennadi Liakhovetski (3): sh: fix DMA driver's descriptor chaining and cookie assignment ASoC: fix params_rate() macro use in several codecs ALSA: Fix indentation in pcm_native.c Gui Jianfeng (1): block: blk_rq_err_sectors cleanup H Hartley Sweeten (3): drivers/block/mg_disk.c: use resource_size() Documentation: fix ioremap return type DocBook: fix ioremap return type H. Peter Anvin (1): x86, compress: Force i386 instructions for the decompressor Heiko Carstens (2): KVM: get rid of kvm_create_vm() unused label warning on s390 kprobes: Fix distinct type warning Henrique de Moraes Holschuh (5): thinkpad-acpi: don't take the first ALSA slot by default thinkpad-acpi: don't fail to load the entire module due to ALSA problems thinkpad-acpi: make volume subdriver optional thinkpad-acpi: update volume subdriver documentation thinkpad-acpi: improve Kconfig help text Herbert Xu (1): hwrng: core - Fix double unlock in rng_dev_read Huang Weiyi (3): ext4: remove unused #include drbd: remove duplicated #include drbd: remove unused #include Hugh Dickins (1): mm: move sys_mmap_pgoff from util.c Ingo Molnar (3): Merge branch 'iommu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent ACPI: fix ACPI=n allmodconfig build dma-debug: Fix bug causing build warning Jamal Hadi Salim (1): net: restore ip source validation James Bottomley (1): libsrp: fix compile failure Jan Glauber (1): [S390] qdio: convert global statistics to per-device stats Jan Kiszka (1): KVM: x86: Extend KVM_SET_VCPU_EVENTS with selective updates Jarek Poplawski (1): net/via-rhine: Fix scheduling while atomic bugs Jari Vanhala (2): Input: ff-memless - start playing FF effects immediately Input: ff-memless - add notion of direction to for rumble effects Jaswinder Singh Rajput (1): writeback: add missing kernel-doc notation Jeff Layton (1): cifs: NULL out tcon, pSesInfo, and srvTcp pointers when chasing DFS referrals Jens Axboe (1): Merge branch 'for-jens' of git://git.drbd.org/linux-2.6-drbd into for-linus Jiri Slaby (4): PCI: fix section mismatch on update_res() SECURITY: selinux, fix update_rlimit_cpu parameter resource: move kernel function inside __KERNEL__ resource: add helpers for fetching rlimits Jiro SEKIBA (1): nilfs2: trivial coding style fix Joerg Roedel (2): x86/amd-iommu: Fix initialization failure panic Merge branches 'dma-debug/fixes' and 'amd-iommu/fixes' into iommu/fixes Johannes Berg (7): iwlwifi: fix EEPROM/OTP reading endian annotations and a bug iwlwifi: fix more eeprom endian bugs mac80211: fix peer HT capabilities mac80211: fix WMM AP settings application wireless: remove remaining qual code cfg80211: fix race between deauth and assoc response cfg80211: fix error path in cfg80211_wext_siwscan John Fastabend (1): pktgen: ndo_start_xmit can return NET_XMIT_xxx values John Kacur (1): sony_pi: Remove the BKL from open and ioctl John W. Linville (1): Revert "b43: Enforce DMA descriptor memory constraints" Julia Lawall (5): drivers/net/wireless: Correct code taking the size of a pointer drivers/block/DAC960.c: use DAC960_V2_Controller drivers/dma: drop unnecesary memset drivers/dma: Correct use after free ext4: Eliminate potential double free on error path Kuninori Morimoto (1): ASoC: fsi-ak4642: Remove ak4642_add_i2c_device Kusanagi Kouichi (1): Documentation: Rename Documentation/DMA-mapping.txt Lai Jiangshan (3): tracing/kprobe: Show sign of fields in trace_kprobe format files tracing/syscalls: Fix typo in SYSCALL_DEFINE0 tracing: Fix sign fields in ftrace_define_fields_##call() Len Brown (9): dell-wmi: sys_init_module: 'dell_wmi'->init suspiciously returned 21, it should ACPI: hp-wmi, msi-wmi: clarify that wmi_install_notify_handler() returns an acpi_status dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value Merge branch 'wmi' into release Merge branch 'thinkpad' into release Merge branch 'bugzilla-13671' into release Merge branch 'video-error-case' into release dell-wmi: sys_init_module: 'dell_wmi'->init suspiciously returned 21, it should follow 0/-E convention Merge branch 'resume-sci-force-bootparam' into release Li Zefan (4): ksym_tracer: Fix to make the tracer work ksym_tracer: Fix to allow writing newline to ksym_trace_filter ksym_tracer: Fix race when incrementing count ksym_tracer: Remove trace_stat Linus Torvalds (32): Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://neil.brown.name/md Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'kvm-updates/2.6.33' of git://git.kernel.org/pub/scm/virt/kvm/kvm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 pci: avoid compiler warning in quirks.c twl4030-irq.c: fix compiler warning due to raw-spinlock conversion Merge branch 'reiserfs/kill-bkl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Merge branch 'sh/for-2.6.33' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'for-linus/samsung' of git://git.fluff.org/bjdooks/linux Merge branch 'limits_cleanup' of git://decibel.fi.muni.cz/~xslaby/linux Merge branch 'for-2.6.33' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 Linux 2.6.33-rc3 Luck, Tony (1): KVM: ia64: fix build breakage due to host spinlock change Luis R. Rodriguez (4): ath9k: wake hardware for interface IBSS/AP/Mesh removal ath9k: wake hardware during AMPDU TX actions mac80211: fix race with suspend and dynamic_ps_disable_work mac80211: fix propagation of failed hardware reconfigurations Manuel Lauss (1): ASoC: fixup oops in generic AC97 codec glue Marcelo Tosatti (2): KVM: MMU: remove prefault from invlpg handler KVM: LAPIC: make sure IRR bitmap is scanned after vm load Mark Brown (1): Merge commit 'v2.6.33-rc2' into for-2.6.33 Martin K. Petersen (2): block: Fix topology stacking for data and discard alignment block: Fix incorrect alignment offset reporting and update documentation Martin Schwidefsky (1): [S390] Update default configuration. Masami Hiramatsu (1): x86: Fix objdump version check in chkobjdump.awk for different formats. Masanari Iida (1): ALSA: Fix a typo in Procfile.txt Matthew Slattery (3): sfc: QT2025C: Work around PHY bug sfc: QT2025C: Switch into self-configure mode when not in loopback sfc: QT2025C: Work around PHY firmware initialisation bug Michael Chan (1): bnx2x: Initialize cnic status block during chip reset Mike Travis (2): x86: SGI UV: Fix writes to led registers on remote uv hubs x86_64 SGI UV: Fix writes to led registers on remote uv hubs. Neil Turton (1): sfc: Fix DMA mapping cleanup in case of an error in TSO NeilBrown (4): md: Fix unfortunate interaction with evms md: fix small irregularity with start_ro module parameter md: remove unnecessary code from do_md_run md: allow a resync that is waiting for other resync to complete, to be aborted. Nicolas Ferre (1): dma: at_hdmac: correct incompatible type for argument 1 of 'spin_lock_bh' OGAWA Hirofumi (1): block: Honor the gfp_mask for alloc_page() in blkdev_issue_discard() Paul Mundt (4): sh: Only provide a PCLK definition for legacy CPG CPUs. sh: Disable PMB for SH4AL-DSP CPUs. sh: Don't default enable PMB support. sh: update defconfigs. Paul Rolland (2): wmi: check find_guid() return value to prevent oops wmi: check find_guid() return value to prevent oops Pekka Enberg (3): x86: Use KERN_DEFAULT log-level in __show_regs() x86, kmemcheck: Use KERN_WARNING for error reporting SLAB: Fix lockdep annotation breakage Peter Huewe (1): ALSA: sound/arm: Fix build failure caused by missing struct aaci definition Peter Zijlstra (1): perf: Fix NULL deref in inheritance code Rafael J. Wysocki (2): PCI/PM: Propagate wake-up enable for PCIe devices too PCI: Fix build if quirks are not enabled Rakib Mullick (1): Input: wistron - fix test for CONFIG_PM Ralf Baechle (1): NET: XFRM: Fix spelling of neighbour. Randy Dunlap (4): Documentation: Update mmiotrace.txt Documentation: Update tracepoint-analysis.txt Documentation: Update ftrace-design.txt tracing: Kconfig spelling fixes and cleanups Reinette Chatre (4): iwlwifi: power up all devices for EEPROM read iwl3945: disable power save iwlwifi: initialize spinlock before use iwlwifi: fix 40MHz operation setting on cards that do not allow it RenĂ© Bolldorf (1): Input: psmouse - fix compile warning in hgpk module Richard Kennedy (1): ext4: return correct wbc.nr_to_write in ext4_da_writepages Robert P. J. Day (1): [S390] Have param.h simply include . Roel Kluin (4): drbd: fix test of unsigned in _drbd_fault_random() drbd: Fix test of unsigned in _drbd_fault_random() iwmc3200wifi: Fix test of unsigned in iwm_ntf_stop_resume_tx() wl1251: timeout one too soon in wl1251_boot_run_firmware() Rolf Eike Beer (1): kfifo: Fix typo in comment Rusty Russell (2): lguest: fix bug in setting guest GDT entry Revert "x86: Side-step lguest problem by only building cmpxchg8b_emu for pre-Pentium" Ryusuke Konishi (1): nilfs2: update mailing list address Samuel Ortiz (1): libertas: Remove carrier signaling from the scan code Sandeep Gopalpet (1): gianfar: Fix gianfar select_queue bogosity Sarveshwar Bandi (3): be2net: Bug fix to avoid soft lockup in loopback test. be2net: Bug fix to config NIC appropriately before loopback test be2net: Bug fix to return correct values in ethtool get_settings. Serge E. Hallyn (1): generic_permission: MAY_OPEN is not write access Shaohua Li (1): cfq-iosched: don't regard requests with long distance as close Shaun Ruffell (1): dma-debug: Do not add notifier when dma debugging is disabled. Sheng Yang (1): KVM: Fix possible circular locking in kvm_vm_ioctl_assign_device() Stefan Assmann (2): PCI: change PCI nomenclature in drivers/pci/ (comment changes) PCI: change PCI nomenclature in drivers/pci/ (non-comment changes) Stefan Richter (4): firewire: cdev: fix another memory leak in an error path firewire: ohci: always use packet-per-buffer mode for isochronous reception firewire, ieee1394: update MAINTAINERS entries firewire, ieee1394: update Kconfig help Steve French (1): [CIFS] Enable mmap on forcedirectio mounts Steve Hodgson (1): sfc: Move PHY software state initialisation from init() into probe() Steven Rostedt (1): tracing: Fix setting tracer specific options Sujith (4): ath9k: Fix bug in assigning sequence number ath9k: Fix TX queue draining ath9k: Stop ANI when doing a reset ath9k: fix suspend by waking device prior to stop Surbhi Palande (1): ext4: replace BUG() with return -EIO in ext4_ext_get_blocks Takashi Iwai (5): ALSA: hda - Disable tigger at pin-sensing on AD codecs ALSA: hda - use snd_hda_jack_detect() again in patch_sigmatel.c ALSA: hda - Don't cache beep controls ALSA: hda - Fix Oops at reloading beep devices Merge branch 'fix/hda' into for-linus Tao Ma (1): ocfs2: Handle O_DIRECT when writing to a refcounted cluster. Theodore Ts'o (5): ext4: add module aliases for ext2 and ext3 ext4, jbd2: Add barriers for file systems with exernal journals ext4: Patch up how we claim metadata blocks for quota purposes ext4: Fix accounting of reserved metadata blocks ext4: Calculate metadata requirements more accurately Tim Blechmann (1): perf: Rename perf_event_hw_event in design document Tobias Klauser (3): nilfs2: Storage class should be before const qualifier ath9k: Storage class should be before const qualifier iwlwifi: Storage class should be before const qualifier Vitaliy Gusev (1): tun: use tun_sk instead container_of Vivek Goyal (3): cfq-iosched: Remove the check for same cfq group from allow_merge cfq-iosched: Get rid of nr_groups cfq-iosched: Remove prio_change logic for workload selection Wenji Huang (1): perf kmem: Fix statistics typo Wey-Yi Guy (1): iwlwifi: fix syslog message for event log dump size Williams, Mitch A (1): igbvf: Make igbvf error message more informative Wu Fengguang (1): ALSA: hda - HDMI sticky stream tag support Zhang Rui (3): ACPI video: no warning message if "acpi_backlight=vendor" is used ACPI video: correct error-handling code ACPI: introduce kernel parameter acpi_sleep=sci_force_enable Zhu Yi (3): iwlwifi: allocated rx page accounting cleanup iwl3945: fix panic in iwl3945 driver iwmc3200wifi: fix array out-of-boundary access akpm@linux-foundation.org (1): drivers/net/wireless/iwlwifi/iwl-tx.c: fix gcc-3.4.5 warning ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:22:00 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_48 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMM0Hi144015 for ; Fri, 22 Jan 2010 16:22:00 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMLx1l143981; Fri, 22 Jan 2010 16:21:59 -0600 Date: Fri, 22 Jan 2010 16:21:59 -0600 Message-Id: <201001222221.o0MMLx1l143981@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.33-rc2, created. v2.6.33-rc2 X-Git-Refname: refs/tags/v2.6.33-rc2 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 331ce84170c8ebba5f0fadac64f66d6f00a438e4 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.33-rc2 has been created at 331ce84170c8ebba5f0fadac64f66d6f00a438e4 (tag) tagging 6b7b284958d47b77d06745b36bc7f36dab769d9b (commit) replaces v2.6.33-rc1 tagged by Linus Torvalds on Thu Dec 24 13:09:52 2009 -0800 - Log ----------------------------------------------------------------- Linux 2.6.33-rc2 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEABECAAYFAksz2KYACgkQF3YsRnbiHLupfgCcDHHNh2RN3/nJFHFFhhxL4pcg mIwAnRyqeoK4p4ExR9i+FfyV5QQoOVM1 =As7/ -----END PGP SIGNATURE----- Al Viro (4): fix braindamage in audit_tree.c untag_chunk() fix more leaks in audit_tree.c tag_chunk() Fix f_flags/f_mode in case of lookup_instantiate_filp() from open(pathname, 3) Sanitize f_flags helpers Alan Cox (1): jfs: Fix 32bit build warning Alan Stern (5): PM: Use pm_runtime_put_sync in system resume PM: Runtime PM documentation update USB: power management documentation update USB: rename usb_configure_device USB: fix bugs in usb_(de)authorize_device Albert Herranz (3): powerpc/gamecube/wii: Fix off-by-one error in ugecon/usbgecko_udbg powerpc/gc/wii: hlwd-pic: convert irq_desc.lock to raw_spinlock powerpc/gc/wii: Remove get_irq_desc() Alex Chiang (11): ACPI: processor: call _PDC early ACPI: processor: introduce arch_has_acpi_pdc ACPI: processor: unify arch_acpi_processor_init_pdc ACPI: processor: factor out common _PDC settings ACPI: processor: finish unifying arch_acpi_processor_init_pdc() ACPI: processor: unify arch_acpi_processor_cleanup_pdc ACPI: processor: introduce acpi_processor_alloc_pdc() ACPI: processor: change acpi_processor_eval_pdc interface ACPI: processor: open code acpi_processor_cleanup_pdc ACPI: processor: change acpi_processor_set_pdc() interface ACPI: processor: remove _PDC object list from struct acpi_processor Alex Deucher (6): drm/radeon/kms/atom: fill in proper defines for digital setup drm/radeon/kms: fix legacy rmx drm/radeon/kms: set proper default tv standard drm/radeon/kms: add cvt mode if we only have lvds w/h and no edid (v4) drm/radeon/kms: never combine LVDS with another encoder drm/radeon/kms: add definitions for v4 power tables Alexey Dobriyan (4): powerpc/iseries: Convert to proc_fops netns: fix net.ipv6.route.gc_min_interval_ms in netns asus_acpi: convert to seq_file toshiba_acpi: convert to seq_file Alexey Starikovskiy (1): ACPI: EC: Fix MSI DMI detection Anand Gadiyar (1): ARM: 5853/1: ARM: Fix build break on ARM v6 and v7 Anatolij Gustschin (1): powerpc/44x: Extend Katmai dts for ADMA and RAID56 support Andi Kleen (4): HWPOISON: Add PROC_FS dependency to hwpoison injector v2 DRM: Rename clamp variable SYSCTL: Print binary sysctl warnings (nearly) only once SYSCTL: Add a mutex to the page_alloc zone order sysctl Andreas Gruenbacher (1): Remove obsolete comment in fs.h Andreas Herrmann (1): x86, amd: Get multi-node CPU info from NodeId MSR instead of PCI config space Andreas Mohr (2): USB: ftdi_sio: isolate all device IDs to new ftdi_sio_ids.h header USB: ftdi_sio: sort PID/VID entries in new ftdi_sio_ids.h header Andrei Emeltchenko (1): Bluetooth: Fix L2CAP locking scheme regression Andres Salomon (1): watchdog: update geodewdt for new MFGPT API Andrew Lunn (1): Staging: batman-adv: Add Kconfig dependancies on PROC_FS and PACKET. Andrew Morton (1): arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c: avoid cross-CPU interrupts by using smp_call_function_any() Anisse Astier (3): MAINTAINERS: add maintainer for msi-wmi driver ALSA: hda - Add STAC9205 PCI_QUIRK for Dell Vostro 1700 wmi: Free the allocated acpi objects through wmi_get_event_data Anton Blanchard (3): powerpc/defconfigs: Reduce 64bit vmlinux by making acenic and cramfs modules powerpc/defconfigs: Disable token ring in powerpc defconfigs powerpc/defconfigs: Set HZ=100 on pseries and ppc64 defconfigs Anton Vorontsov (4): powerpc/fsl_pci: Fix P2P bridge handling for MPC83xx PCIe controllers powerpc/83xx/suspend: Clear deep_sleeping after devices resume powerpc/83xx/suspend: Save and restore SICRL, SICRH and SCCR powerpc/83xx: Add power management support for MPC8315E-RDB boards Arnaldo Carvalho de Melo (1): perf session: Make events_stats u64 to avoid overflow on 32-bit arches Arnaud Mandy (1): USB: musb: gadget: set otg tranceiver to idle when registering gadget Arnd Bergmann (2): drm: convert drm_ioctl to unlocked_ioctl fs/compat_ioctl.c: fix build error when !BLOCK Bartlomiej Zolnierkiewicz (1): pata_cmd64x: fix overclocking of UDMA0-2 modes Ben Skeggs (5): drm/nv40: implement ctxprog/state generation drm/nv50: fix two potential suspend/resume oopses drm/nouveau: prevent all channel creation if accel not available drm/nv50: fix suspend/resume delays without firmware present drm/nouveau: fix bug causing pinned buffers to lose their NO_EVICT flag Benjamin Herrenschmidt (4): powerpc/mm: Fix a WARN_ON() with CONFIG_DEBUG_PAGEALLOC and CONFIG_DEBUG_VM powerpc: Fix MSI support on U4 bridge PCIe slot Merge commit 'kumar/next' into merge Merge commit 'jwb/next' into merge Bernd Porr (2): Staging: comedi: usbdux.c: fix locking up of the driver when the comedi ringbuffer runs empty Staging: comedi: removed "depricated" from COMEDI_CB_BLOCK Bill Gatliff (1): USB: Fix double-linking of drivers/usb/otg when ULPI is selected Blaise Gassend (1): USB: serial: Extra device/vendor ID for mos7840 driver Bob Gleitsmann (1): drm/mm: fix logic for selection of best fit block Borislav Petkov (7): x86, msr: msrs_alloc/free for CONFIG_SMP=n amd64_edac: fix K8 chip select reporting amd64_edac: fix driver instance freeing amd64_edac: make driver loading more robust amd64_edac: fix forcing module load/unload amd64_edac: restrict PCI config space access edac, pci: remove pesky debug printk Breno Leitao (2): bnx2: reset_task is crashing the kernel. Fixing it. bnx2: fixing a timout error due not refreshing TX timers correctly Bruce Allan (1): e1000e: LED settings in EEPROM ignored on 82571 and 82572 Bryan Wu (1): USB: musb: workaround Blackfin FIFO anomalies Carlos R. Mafra (1): ACPI: do not select ACPI_DOCK from ATA_ACPI Christoph Hellwig (1): libata: use the WRITE_SAME_16 define Clemens Ladisch (2): sound: sgio2audio/pdaudiocf/usb-audio: initialize PCM buffer USB: emi62: fix crash when trying to load EMI 6|2 firmware Cliff Cai (4): USB: musb: fix compiling warning with min() macro USB: musb: correct DMA address for tx USB: audio gadget: fix wTotalLength calculation USB: audio gadget: free alsa devices when unloading Coly Li (2): ocfs2: explicit declare uninitialized var in user_cluster_connect() ocfs2: replace u8 by __u8 in ocfs2_fs.h Cory Maccarrone (1): i2c-omap: Don't write IE state in unidle if 0 Daniel T Chen (1): ALSA: hda: Set Front Mic to input vref 50% for Lenovo 3000 Y410 Daniele Calore (1): alpha: Wire up missing/new syscalls Dave Airlie (5): Merge remote branch 'korg/drm-vmware-staging' into drm-core-next Merge branch 'drm-linus' into drm-core-next drm/radeon: fix build on 64-bit with some compilers. Merge remote branch 'nouveau/for-airlied' into drm-linus Merge remote branch 'korg/drm-radeon-next' into drm-linus David Daney (2): powerpc: Convert BUG() to use unreachable() alpha: Convert BUG() to use unreachable() David Gibson (1): powerpc/mm: Fix stupid bug in subpge protection handling David Miller (1): sched: Fix cpu_clock() in NMIs, on !CONFIG_HAVE_UNSTABLE_SCHED_CLOCK David Vrabel (1): MAINTAINERS: update entries for WUSB, UWB and WLP subsystems Dmitry Eremin-Solenikov (4): powerpc/83xx: mpc8349emitx - add gpio controller declarations powerpc/83xx: mpc8349emitx - populate I2C busses in device tree powerpc/83xx: mpc8349emitx - add OF descriptions of LocalBus devices powerpc/83xx: mpc8349emitx - add leds-gpio binding Dmitry Monakhov (7): ext3: quota macros cleanup [V2] Add unlocked version of inode_add_bytes() function quota: decouple fs reserved space from quota reservation ext4: Convert to generic reserved quota's space management. quota: Move duplicated code to separate functions ext4: Fix potential quota deadlock ext4: fix sleep inside spinlock issue with quota and dealloc (#14739) Dmitry Torokhov (4): tc1100-wmi - switch to using attribute group tc1100-wmi - add error handling for device registration tc1100-wmi - switch to using dev_pm_ops dell-wmi: do not keep driver loaded on unsupported boxes Dominik Brodowski (1): resources: fix call to alignf() in allocate_resource() Donny Kurnia (1): USB: option: support hi speed for modem Haier CE100 Einar RĂĽnkaru (2): ALSA: hda - Fixed internal mic initialization for Dell Vostro 1015 ALSA: hda - Make use of beep device found in Dell Vostro 1015n Eric Millbrandt (1): ASoC: Do not write to invalid registers on the wm9712. Eric Sandeen (4): ext3: Remove outdated comment about lock_super() ext3: ext3_mark_recovery_complete() doesn't need to use lock_super ext3: Replace lock/unlock_super() with an explicit lock for the orphan list ext3: Replace lock/unlock_super() with an explicit lock for resizing Evgeniy Polyakov (1): pohmelfs needs I_LOCK Felipe Balbi (4): USB: musb: move musb_remove to __exit USB: musb: MAINTAINERS: Fix my tree's address USB: musb: do not work if no gadget driver is loaded usb: otg: isp1301_omap: fix compile error Felix Radensky (1): powerpc/85xx: Workaround MPC8572/MPC8536 GPIO 1 errata. Florian Fainelli (1): ALSA: sound/core/pcm_timer.c: use lib/gcd.c Francisco Jerez (4): drm/nv04-nv40: Fix "conflicting memory types" when saving/restoring VGA fonts. drm/i2c/ch7006: Fix load detection false positives right after system init. drm/nouveau: Fix up buffer eviction, and evict them to GART, if possible. drm/nv10: Add the initial graph context and soft methods needed for LMA. Frederic Weisbecker (4): sched: Teach might_sleep() about preemptible RCU perf events, x86/stacktrace: Make stack walking optional perf events, x86/stacktrace: Fix performance/softlockup by providing a special frame pointer-only stack walker hw-breakpoints: Fix hardware breakpoints -> perf events dependency Gautham R Shenoy (2): powerpc/pseries: Don't panic when H_PROD fails during cpu-online. powerpc/pseries: Make declarations of cpu_hotplug_driver_lock() ANSI compatible. George Kadianakis (3): Staging: fix rtl8187se compilation errors with mac80211 staging: fix rtl8192e compilation errors with mac80211 staging: fix rtl8192su compilation errors with mac80211 Greg Kroah-Hartman (3): Staging: batman: fix debug Kconfig option Merge branch 'master' of /home/gregkh/linux/git/torvalds-2.6 Staging: dst: remove from the tree Guennadi Liakhovetski (3): sh: dmaengine support for sh7724. ASoC: wm8974: fix a wrong bit definition ASoC: add missing parameter to mx27vis_hifi_hw_free() Gustavo F. Padovan (2): Bluetooth: Fix unset of RemoteBusy flag for L2CAP Bluetooth: Ack L2CAP I-frames before retransmit missing packet H Hartley Sweeten (2): pata_octeon_cf: use resource_size(), to fix resource sizing bug [WATCHDOG] use resource_size() H. Peter Anvin (3): x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers Makefile: set LC_CTYPE, LC_COLLATE, LC_NUMERIC to C Makefile: Unexport LC_ALL instead of clearing it Hector Martin (3): ALSA: HDA: simplify Aspire 8930G verb array ALSA: HDA: remove useless mixers on Aspire 8930G ALSA: HDA: add powersaving hook for Realtek Heiko Carstens (2): [S390] wire up sys_recvmmsg [S390] Use strim instead of strstrip to avoid false warnings. Ian Abbott (1): Staging: comedi: jr3_pci: Don't ioremap too much space. Check result. Imre Kaloz (1): [WATCHDOG] iTCO_wdt: add PCI ID for the Intel EP80579 (Tolapai) SoC Ingo Molnar (2): Merge branch 'linus' into sched/urgent sched: Make warning less noisy J. Bruce Fields (1): nfsd: fix "insecure" export option Jan Beulich (1): USB: fix section mismatch in early ehci dbgp Jan Glauber (2): [S390] qdio: remove superfluous log entries and WARN_ONs. [S390] qdio: add counter for input queue full condition Jan Kara (5): ocfs2: Always include ACL support ocfs2: Make acl use the default ocfs2: Set MS_POSIXACL on remount quota: Fix 64-bit limits setting on 32-bit archs quota: Improve checking of quota file header Jaroslav Kysela (2): Merge branch 'fix/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 into fixes ALSA: hda/realtek: Remove extra .capsrc_nids initialization for ALC889_INTEL Jean PIHET (1): ARM: 5849/1: ARMv7: fix Oprofile events count Jeff Garzik (2): sata_mv: remove pointless NULL test Revert "pata_cmd64x: implement serialization as per notes" Jeff Liu (1): ocfs2-devel: remove redundant OCFS2_MOUNT_POSIX_ACL check in ocfs2_get_acl_nolock() Jerome Glisse (2): drm/radeon/kms: Avoid crash when trying to cleanup uninitialized structure drm/radeon/kms: Check module arguments to be valid V2 Joe Perches (1): sched: Use pr_fmt() and pr_() Jon Smirl (1): ASoC: Fix disable of SPDIF on STAC9766 codec Jonathan Woithe (1): fujitu-laptop: fix tests of acpi_evaluate_integer() return value Julia Lawall (6): [S390] drivers: Correct size given to memset ALSA: Use kzalloc for allocating only one thing drivers/gpu: Use kzalloc for allocating only one thing Staging: wlan-ng: fix Correct size given to memset Staging: batman-adv: introduce missing kfree USB: gadget: Use ERR_PTR/IS_ERR Kailang Yang (1): ALSA: hda - More ALC663 fixes and support of compatible chips Kay Sievers (2): vfs: get_sb_single() - do not pass options twice devtmpfs: unlock mutex in case of string allocation error Krzysztof Helt (2): ALSA: fix incorrect rounding direction in snd_interval_ratnum() ALSA: sbawe: fix memory detection Kuninori Morimoto (2): ASoC: ak4642: Add default return value in ak4642_modinit sh: mach-ecovec24: setup.c detailed correction Len Brown (7): Merge branch 'osc' into release Merge branches 'bugzilla-14446', 'bugzilla-14753' and 'bugzilla-14824' into release Merge branch 'pdc' into release Merge branch 'classmate' into release Merge branch 'sony' into release Merge branch 'tc1100-wmi' into release Merge branch 'misc-2.6.33' into release Linus Torvalds (37): Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Revert "time: Remove xtime_cache" Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Revert "x86, ucode-amd: Ensure ucode update on suspend/resume after CPU off/online cycle" Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge branch 'i2c-fixes' of git://git.fluff.org/bjdooks/linux Merge branch 'sh/for-2.6.33' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6 Merge branch 'sysctl' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-misc-2.6 Linux 2.6.33-rc2 Maarten Maathuis (1): drm/nouveau: use drm debug levels Magnus Damm (1): serial: sh-sci: earlyprintk zero uartclk fix Manjunatha GK (1): i2c-omap: OMAP3: Fix I2C lockup during timeout/error cases Marcin KoĹ›cielnicki (4): drm/nouveau: Kill global state in NvShadowBIOS drm/nouveau: Kill global state in BIOS script interpreter drm/nv04: Fix NV04 set_operation software method. drm/nouveau: Add proper error handling to nouveau_card_init Marek Olšák (2): drm/radeon/kms: allow rendering while no colorbuffer is set on r300 drm/radeon/kms: add 3DC compression support Marin Mitov (1): drm/kms: silencing a false positive warning. Mark Ware (1): powerpc/cpm2_pic: Allow correct flow_types for port C interrupts Markus Pietrek (1): sh: Ensure all PG_dcache_dirty pages are written back. Martin Schwidefsky (1): [S390] rename NT_PRXSTATUS to NT_S390_HIGHREGS Masami Hiramatsu (4): perf probe: Fix libdwarf include path for Debian perf probe: Check whether debugfs path is correct kprobe-tracer: Check new event/group name perf probe: Check new event name Mattia Dongili (3): sony-laptop: add AVMode key mapping sony-laptop: rfkill support for newer models sony-laptop: enumerate rfkill devices using SN06 Maulik Mankad (2): USB: musb: Fix null pointer dereference issue USB: musb: Fix array index out of bounds issue Mel Gorman (1): powerpc/pseries: Select XICS and PCI_MSI PSERIES Michael Chan (1): bnx2: Fix bnx2_netif_stop() merge error. Michael Cree (1): alpha: Add minimal support for software performance events Michael Hennerich (1): Driver core: export platform_device_register_data as a GPL symbol Michael Holzheu (1): [S390] tape: Add pr_fmt() macro to all tape source files Mike Rapoport (1): ARM: 5857/1: ARM: dmabounce: fix build Nageswari Srinivasan (1): TI DaVinci EMAC: Fix MDIO bus frequency configuration Neil Campbell (1): powerpc: Handle VSX alignment faults correctly in little-endian mode Nitin Gupta (1): Staging: ramzswap: remove ARM specific d-cache hack Nobuhiro Iwamatsu (1): sh: dmaengine support for SH7785 Oleg Nesterov (1): [S390] ptrace: dont abuse PT_PTRACED Oliver Neukum (1): Bluetooth: Prevent ill-timed autosuspend in USB driver Pallipadi, Venkatesh (1): x86: Reenable TSC sync check at boot, even with NONSTOP_TSC Paul Mundt (5): sh: Fix up MAX_DMA_CHANNELS definition when DMA is disabled. sh: Restore bl bit toggling in idle loop. sh: Only use bl bit toggling for sleeping idle. serial: sh-sci: Convert tremaining ctrl_xxx I/O routines to __raw_xxx. Merge branch 'sh/g3-prep' into sh/for-2.6.33 Peter Feuerer (2): acerhdf: add new BIOS versions drivers/platform/x86/acerhdf.c: check BIOS information whether it begins with string of table Peter Huewe (2): Staging: panel: Fix compilation error with custom lcd charset Staging: panel: Adjust range for PANEL_KEYPAD in Kconfig Peter Korsgaard (1): powerpc/gpio: support gpio_to_irq() Peter Oberparleiter (1): [S390] cio: fix channel path vary Peter Zijlstra (20): sched: Mark boot-cpu active before smp_init() sched: Fix task_hot() test order sched: Select_task_rq_fair() must honour SD_LOAD_BALANCE sched: Use TASK_WAKING for fork wakups sched: Ensure set_task_cpu() is never called on blocked tasks sched: Fix sched_exec() balancing sched: Fix select_task_rq() vs hotplug issues sched: Move kthread_bind() back to kthread.c sched: Add pre and post wakeup hooks sched: Remove the cfs_rq dependency from set_task_cpu() sched: Simplify set_task_cpu() perf events: Dont report side-band events on each cpu for per-task-per-cpu events sched: Move TASK_STATE_TO_CHAR_STR near the TASK_state bits sched: Add missing state chars to TASK_STATE_TO_CHAR_STR sched: Update task_state_arraypwith new states sched: Assert task state bits at build time sched: Fix broken assertion sched: Restore printk sanity sched: Fix hotplug hang sched: Revert 738d2be, simplify set_task_cpu() Phil Carmody (4): Driver core: device_attribute parameters can often be const* Driver core: bin_attribute parameters can often be const* Driver core: driver_attribute parameters can often be const* driver core: Prevent reference to freed memory on error path Phillip Lougher (3): bzip2/lzma/gzip: pre-boot malloc doesn't return NULL on failure bzip2: Add missing checks for malloc returning NULL initramfs: add missing decompressor error check Rafael Avila de Espindola (1): ALSA: hda - Add support for the new 27 inch IMacs Rafael J. Wysocki (4): sched: Make wakeup side and atomic variants of completion API irq safe PM: Make the initcall_debug style timing for suspend/resume complete PM: Measure device suspend and resume times PM / Runtime: Use device type and device class callbacks RafaĹ‚ MiĹ‚ecki (2): drm/radeon/kms: prevent parallel AtomBIOS calls drm/radeon/kms: enable memory clock reading on legacy (V2) Randy Dunlap (6): lib/string.c: fix kernel-doc warnings mm tracing: cleanup Documentation/trace/events-kmem.txt kfifo: fix Error/broken kernel-doc notation Staging: rtl8192x: fix printk formats Staging/vt66*: kconfig, depends on WLAN USB core: fix recent kernel-doc warnings Robert Hancock (1): libata: fix reporting of drained bytes when clearing DRQ Robert Jennings (2): mm: Add notifier in pageblock isolation for balloon drivers powerpc: Make the CMM memory hotplug aware Robert P. J. Day (1): perf events: Remove unused perf_counter.h header file Roel Kluin (8): sound/oss/pss: Fix test of unsigned in pss_reset_dsp() and pss_download_boot() Bluetooth: Fix PTR_ERR return of wrong pointer in hidp_setup_hid() powerpc/85xx: Wrong variable returned on error [S390] dasd: PTR_ERR return of wrong pointer in [S390] s390: PTR_ERR return of wrong pointer in fallback_init_cip() [S390] tty: PTR_ERR return of wrong pointer in fs3270_open() broadcom: bcm54xx_shadow_read() errors ignored in bcm54xx_adjust_rxrefclk() Staging: rtl8192su: fix test for negative error in rtl8192_rx_isr() Roger Oksanen (1): e100: Fix broken cbs accounting due to missing memset. Roland Dreier (3): x86: Don't use POSIX character classes in gen-insn-attr-x86.awk alloc_file(): simplify handling of mnt_clone_write() errors anonfd: Allow making anon files read-only Russell King (13): ARM: Convert VFP/Crunch/XscaleCP thread_release() to exit_thread() ARM: Kill CONFIG_CPU_32 ALSA: AACI: simplify codec rate information ALSA: AACI: cleanup aaci_pcm_hw_params ALSA: AACI: factor common hw_params logic into aaci_pcm_hw_params ALSA: AACI: add double-rate support ALSA: AACI: switch to per-pcm locking ARM: add missing include to nwflash.c ARM: Fix wrong shared bit for CPU write buffer bug test ARM: fix PAGE_KERNEL ARM: footbridge: trim down old ISA rtc setup ARM: dma-isa: request cascade channel after registering it VIDEO: cyberpro: pci_request_regions needs a persistent name Sachin P. Sant (1): powerpc/mm: Fix hash_utils_64.c compile errors with DEBUG enabled. Saeed Bishara (6): sata_mv: increase PIO IORDY timeout sata_mv: support clkdev framework sata_mv: add power management support for the platform driver sata_mv: move the PCI bar description initialization code sata_mv: store the board_idx into the host private data sata_mv: add power management support for the PCI controllers. Sandeep Gopalpet (3): gianfar: Fix a filer bug gianfar: Fix stats support gianfar: Fix bit definitions of IMASK_GRSC and IMASK_GTSC Sean MacLennan (1): powerpc/44x: Increase warp SD buffer Sebastian Andrzej Siewior (2): powerpc/fsl: try to explain why the interrupt numbers are off by 16 Doc/stable rules: add new cherry-pick logic Sebastian Ott (1): [S390] cio: fix drvdata usage for the console subchannel Sergei Shtylyov (3): pata_hpt3x2n: fix clock turnaround USB: musb_gadget: fix kernel oops in txstate() USB: musb: gadget_ep0: avoid SetupEnd interrupt Shaohua Li (1): ACPI: fix OSC regression that caused aer and pciehp not to load Sheng Yang (1): x86: Add IA32_TSC_AUX MSR and use it Simon Horman (1): timers: Remove duplicate setting of new_base in __mod_timer() Sonic Zhang (2): pata_bf54x: handle portmuxing of pins through GPIO PORTs i2c-bfin-twi: fix CLKDIV calculation Stefan Bader (1): acerhdf: limit modalias matching to supported Stefan Haberland (1): [S390] dasd: move dasd-diag kmsg to dasd Stefani Seibold (10): kfifo: move struct kfifo in place kfifo: move out spinlock kfifo: cleanup namespace kfifo: rename kfifo_put... into kfifo_in... and kfifo_get... into kfifo_out... kfifo: fix warn_unused_result kfifo: add DEFINE_KFIFO and friends, add very tiny functions kfifo: add kfifo_skip, kfifo_from_user and kfifo_to_user kfifo: add record handling functions media video cx23888 driver: ported to new kfifo API Fix usb_serial_probe() problem introduced by the recent kfifo changes Stephane Glondu (1): staging: rtl8192su: add USB VID/PID for HWNUm-300 Stephen Hemminger (1): netxen: use module parameter correctly Sunil Mushran (3): ocfs2/cluster: Make fence method configurable - v2 fiemap: Add new extent flag FIEMAP_EXTENT_SHARED ocfs2: Use FIEMAP_EXTENT_SHARED Suresh Siddha (2): x86, cpuid: Add "volatile" to asm in native_cpuid() x86, irq: Allow 0xff for /proc/irq/[n]/smp_affinity on an 8-cpu system Swaminathan S (2): USB: musb: Populate the VBUS GPIO with the correct GPIO number USB: musb: fix for crash in DM646x USB when (CPPI)DMA is enabled Takashi Iwai (13): ALSA: hda - Fix missing capsrc_nids for ALC88x ALSA: hda - Fix quirk for Maxdata obook4-1 ALSA: aaci - Fix a typo Merge remote branch 'alsa/fixes' into fix/hda Merge branch 'fix/hda' into for-linus Merge branch 'fix/asoc' into for-linus Merge branch 'fix/misc' into for-linus ALSA: hda - Fix NULL dereference with enable_beep=0 option ALSA: hda - Add MSI blacklist ALSA: hda - Set mixer name after codec patch Merge branch 'fix/misc' into for-linus Merge branch 'fix/asoc' into for-linus Merge branch 'fix/hda' into for-linus Tao Ma (6): ocfs2: Find proper end cpos for a leaf refcount block. ocfs2: refcounttree.c cleanup. ocfs2: Add reflinked file's inode to inode hash eariler. ocfs2: Set i_nlink properly during reflink. ocfs2/trivial: Use proper mask for 2 places in hearbeat.c ocfs2/trivial: Use le16_to_cpu for a disk value in xattr.c Thadeu Lima de Souza Cascardo (1): classmate-laptop: add support for Classmate PC ACPI devices Thomas Gleixner (9): signal: Fix racy access to __task_cred in kill_pid_info_as_uid() signals: Fix more rcu assumptions sys: Fix missing rcu protection for __task_cred() access clockevents: Prevent clockevent_devices list corruption on cpu hotplug sched: Use rcu in sys_sched_getscheduler/sys_sched_getparam() sched: Use rcu in sched_get/set_affinity() sched: Use rcu in sched_get_rr_param() devtmpfs: Convert dirlock to a mutex Driver-core: Fix bogus 0 error return in device_add() Thomas Hellstrom (3): drm/vmwgfx: Fix unlocked ioctl and add proper access control drm/vmwgfx: Return -ERESTARTSYS when interrupted by a signal. drm/vmwgfx: Use TTM handles instead of SIDs as user-space surface handles. Thomas Renninger (2): acer-wmi, msi-wmi: Remove needless DMI MODULE_ALIAS hp-wmi: Fix two memleaks Tiger Yang (1): ocfs2: return -EAGAIN instead of EAGAIN in dlm Tristan Ye (2): Ocfs2: Should ocfs2 support fiemap for S_IFDIR inode? Ocfs2: Let ocfs2 support fiemap for symlink and fast symlink. Uwe Kleine-König (2): can/at91: don't check platform_get_irq's return value against zero ASoC: sh: FSI:: don't check platform_get_irq's return value against zero Wu Zhangjin (1): Staging: sm7xx: add a new framebuffer driver Xiaotian Feng (1): sched: Fix set_cpu_active() in cpu_down() Yang Hongyang (1): ipv6: fix an oops when force unload ipv6 module Yang Li (2): powerpc/mm: Fix typo of cpumask_clear_cpu() powerpc/mpic: Fix problem that affinity is not updated Yin Kangkai (1): jbd: jbd-debug and jbd2-debug should be writable Yinghai Lu (2): x86: Fix checking of SRAT when node 0 ram is not from 0 x86: Increase MAX_EARLY_RES; insufficient on 32-bit NUMA Yong Zhang (2): powerpc/iseries: use DECLARE_COMPLETION_ONSTACK for non-constant completion mISDN: use DECLARE_COMPLETION_ONSTACK for non-constant completion Zhang Rui (1): ACPI: disable _OSI(Windows 2009) on Asus K50IJ akpm@linux-foundation.org (1): x86: Fix objdump version check in arch/x86/tools/chkobjdump.awk pancho horrillo (2): USB: add device ID for Apple Cinema Display 23in 2007 USB: Fix a bug on appledisplay.c regarding signedness wanzongshun (3): ARM: 5854/1: fix compiling error for NUC900 ARM: 5855/1: putc support for nuc900 ARM: 5856/1: Fix bug of uart0 platfrom data for nuc900 ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:22:05 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_13,J_CHICKENPOX_21,J_CHICKENPOX_33, J_CHICKENPOX_54,J_CHICKENPOX_75,J_CHICKENPOX_84 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMM5dv144107 for ; Fri, 22 Jan 2010 16:22:05 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMM2B6144054; Fri, 22 Jan 2010 16:22:02 -0600 Date: Fri, 22 Jan 2010 16:22:02 -0600 Message-Id: <201001222222.o0MMM2B6144054@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.33-rc4, created. v2.6.33-rc4 X-Git-Refname: refs/tags/v2.6.33-rc4 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 5ba7808eabc37cb2464096077d0df55f33148245 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.33-rc4 has been created at 5ba7808eabc37cb2464096077d0df55f33148245 (tag) tagging 7284ce6c9f6153d1777df5f310c959724d1bd446 (commit) replaces v2.6.33-rc3 tagged by Linus Torvalds on Tue Jan 12 21:15:09 2010 -0800 - Log ----------------------------------------------------------------- Linux 2.6.33-rc4 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEABECAAYFAktNVuIACgkQF3YsRnbiHLs2YgCgpccLbDbVT5G+FmTKjapZYHvx +s0An3BgKLDnygVy/VVIPAH5ttqNr8Ze =1ZHO -----END PGP SIGNATURE----- Abhijit Pagare (1): ARM: OMAP3: PM: Fix the Invalid CM_CLKSTCTRL reg access. Adam Jackson (2): drm/edid: Skip empty CVT codepoints drm/edid: Fix CVT width/height decode Adrian Hunter (2): mmc_block: fix queue cleanup mmc: allow for MMC v4.4 Al Viro (1): mn10300: fix several bogus includes on abs2305 Alan Carvalho de Assis (1): mx27: mxt_td60: Remove not used UART pins Albin Tonnerre (4): lib: add support for LZO-compressed kernels arm: add support for LZO-compressed kernels x86: add support for LZO-compressed kernels Add LZO compression support for initramfs and old-style initrd Alex Deucher (10): drm/radeon/kms: fallback to default connector table drm/radeon/kms: add primary dac adj values table drm/radeon/kms: add missing breaks in i2c and ss lookups drm/radeon/kms: fix typo in atom connector type handling drm/radeon/kms: whitespace changes to ObjectID.h drm/radeon/kms: pull in the latest upstream ObjectID.h changes drm: Add eDP connector type drm/radeon/kms: add support for eDP (embedded DisplayPort) drm/radeon/kms: detect sideport memory on IGP chips drm/radeon/kms: add additional safe regs for r4xx/rs6xx and r5xx Alexander Beregalov (2): pcmcia: ncmlan_cs: remove odd bracket drm/radeon: mkregtable.c: close a file before exit Alexander Shishkin (1): omap2/3: make serial_in_override() address the right uart port Amit Kumar Salecha (4): netxen: fix tx ring memory leak netxen: fix smatch warning netxen: fix set mac addr netxen: update version to 4.0.72 Ananth N Mavinakayanahalli (1): Revert "x86, apic: Use logical flat on intel with <= 8 logical cpus" Andi Kleen (1): kernel/signal.c: fix kernel information leak with print-fatal-signals=1 Andrea Arcangeli (1): mm: hugetlb: fix clear_huge_page() Andreas Fenkart (1): mm: make totalhigh_pages unsigned long Andrew Lutomirski (1): drm/i915: Fix RC6 suspend/resume Andrew Morton (3): net/sctp/socket.c: squish warning drm/i915: fix unused var percpu: avoid calling __pcpu_ptr_to_addr(NULL) Andrew Vasquez (1): [SCSI] qla2xxx: Extend base EEH support in qla2xxx. Anil Ravindranath (1): [SCSI] pmcraid: fix to avoid twice scsi_dma_unmap for a command Anirban Chakraborty (1): [SCSI] qla2xxx: Fix for a multiqueue bug in CPU affinity mode Anisse Astier (1): hp-wmi: remove double free caused by merge conflict Anna Lemehova (1): mmc_block: add dev_t initialization check Anton Blanchard (2): [IA64] cpumask_of_node() should handle -1 as a node MIPS: cpumask_of_node() should handle -1 as a node Anton Vorontsov (4): phylib: Fix deadlock on resume phylib: Properly reinitialize PHYs after hibernation ucc_geth: Fix netdev watchdog triggering on suspend fsl_pq_mdio: Fix iomem unmapping for non-eTSEC2.0 controllers Arjan van de Ven (1): ipvs: Add boundary check on ioctl arguments Atsushi Nemoto (1): MIPS: TXx9: Cleanup builtin-cmdline processing Avi Kivity (1): core, x86: make LIST_POISON less deadly Bahadir Balban (1): ARM: 5858/1: Remove unused vma_vm_flags macro from v7wbi_flush_user_tlb_range Baruch Siach (3): mx25: s/NO_PAD_CTL/NO_PAD_CTRL/ mx25: add support for FEC on i.MX25 mx25: pdk: add platform code for FEC support Ben Dooks (1): ARM: S3C64XX: Fix possible clock look in EPLL and MPLL clock chains Ben Hutchings (4): via-velocity: Give RX descriptors to the NIC later on open or MTU change modules: Skip empty sections when exporting section notes dmfe/tulip: Let dmfe handle DM910x except for SPARC on-board chips Documentation/3c509: document ethtool support Ben Skeggs (9): drm/nv50: ignore vbios table's claim to the contrary if EDID says >8bpc drm/nouveau: fix handling of fbcon colours in 8bpp drm/nouveau: remove unused nouveau_channel_idle() function drm/nv50: restore correct cache1 get/put address on fifoctx load drm/nouveau: have ttm's fault handler called directly drm/nv50: prevent a possible ctxprog hang drm/nv04: differentiate between nv04/nv05 drm/nouveau: use dma.max rather than pushbuf size for checking GET validity drm/nouveau: initialise DMA tracking parameters earlier Bernard Pidoux F6BVP (1): rose_loopback_timer sets VC number <= ROSE_DEFAULT_MAXVC Bjorn Helgaas (3): agp/hp: fixup hp agp after ACPI changes agp/hp: fail gracefully if we don't find an IOC mn10300: use generic pci_enable_resources() Boaz Harrosh (2): exofs: fix pnfs_osd re-definitions in pre-pnfs trees exofs: simple_write_end does not mark_inode_dirty Bruce Allan (5): e1000e: call pci_save_state() after pci_restore_state() e1000e: don't accumulate PHY statistics on PHY read failure e1000e: perform 10/100 adaptive IFS only on parts that support it e1000e: e1000e_enable_tx_pkt_filtering() returns wrong value e1000e: fix and commonize code for setting the receive address registers Bryn M. Reeves (1): [SCSI] megaraid_sas: remove sysfs poll_mode_io world writeable permissions Chris Wilson (2): drm/i915: Hold struct mutex whilst pinning power context bo. drm/i915: Permit pinning whilst the device is 'suspended' Christoph Hellwig (3): nfsd: make sure data is on disk before calling ->fsync xfs: use DECLARE_EVENT_CLASS xfs: fix timestamp handling in xfs_setattr Clemens Ladisch (1): hwmon: (k10temp) Blacklist more family 10h processors Colin Tuckley (1): ARM: 5873/1: ARM: Fix the reset logic for ARM RealView boards Corbin Simpson (1): drm/radeon/kms: Workaround RV410/R420 CP errata (V3) Cory Maccarrone (4): omap: gpio: Simultaneously requested rising and falling edge omap1: Add 7xx clocks and pin muxes for SPI OMAP1 clock: Add missing clocks for OMAP 7xx OMAP1 clock: remove __initdata from struct clk_functions to prevent crash Cyril Hrubis (1): [ARM] pxa: fix strange characters in zaurus gpio .desc Dan Carpenter (3): hamradio: avoid null deref v3 rrunner: fix buffer overflow sound: oss: off by one bug Daniel T Chen (2): ALSA: atiixp: Specify codec for Foxconn RC4107MA-RS2 ALSA: ac97: Add Dell Dimension 2400 to Headphone/Line Jack Sense blacklist Daniel Vetter (1): drm/i915: fix order of fence release wrt flushing Darren Jenkins (5): drm/radeon/radeon_connectors.c: add a NULL test before dereference drm/radeon/radeon_fence.c: move a dereference below the NULL test drm/radeon/radeon_device.c: move a dereference below a NULL test gpu/drm/radeon/radeon_irq.c: move a dereference below a NULL test drm/radeon: fix a couple of array index errors Dave Airlie (6): Merge branch 'drm-core-next' into drm-linus Merge remote branch 'korg/drm-radeon-next' into drm-linus drm/kms/fb: check for depth changes from userspace for resizing. drm: reduce WARN_ON to a printk. Merge remote branch 'korg/drm-radeon-next' into drm-linus Merge branch 'for-airlied' of /ssd/git/drm-nouveau-next into drm-linus Dave Anderson (1): cgroups: fix 2.6.32 regression causing BUG_ON() in cgroup_diput() Dave Chinner (4): xfs: kill some warnings on i386 builds xfs: Don't flush stale inodes xfs: Ensure we force all busy extents in range to disk lib: Introduce generic list_sort function Dave Jones (1): remove my email address from checkpatch. Dave Liu (1): ucc_geth: Fix the wrong the Rx/Tx FIFO size David Daney (3): MIPS: Cleanup forgotten label_module_alloc in tlbex.c MIPS: Octeon: Add sched_clock() to csrc-octeon.c MIPS: Octeon: Use non-overflowing arithmetic in sched_clock David Howells (5): mn10300: wire up missing new syscalls mn10300: use KERN_ERR not KERN_ERROR mn10300: insert PCI root bus resources for the ASB2305 devel motherboard mn10300: make the ASB2305's PCnet32 NIC work by using the PCI bridge's SRAM mn10300: update the ASB2303 defconfig David John (2): PCI: Check the node argument passed to cpumask_of_node drm: Keep disabled outputs disabled after suspend / resume David S. Miller (2): cxgb3i: Fix flags test. Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6 David VomLehn (1): MIPS: PowerTV: Remove extra r4k_clockevent_init() call Denis Kirjanov (1): vxge: use pci_dma_mapping_error to test return value Duane Grigsby (1): [SCSI] qla2xxx: Added to EEH support. Ed Lin (1): [SCSI] stex: fix scan of nonexistent lun Eli Cohen (1): mlx4_core: Fix cleanup in __mlx4_init_one() error path Eric Anholt (1): drm/i915: In the debugfs interface, unmap our address instead of the page's. Eric Miao (4): [ARM] pxafb: fix building issue of incorrect reference [ARM] pxa/poodle: fix incorrect 'gpio_card_detect' of MMC [ARM] pxa: update pwm_backlight->notify() to include missed 'struct device *' [ARM] pxa: fix compiler warnings of unused variable 'id' in cpu_is_pxa9*() Felipe Balbi (1): OMAP2xxx clock: clk2xxx.c doesn't compile if CPUFREQ is enabled Florian Fainelli (3): ipvs: ip_vs_wrr.c: use lib/gcd.c .gitignore: ignore vmlinuz MIPS: BCM63xx: Fix whitespace damaged board_bcm963xx.c Florian Westphal (1): netfilter: ebtables: enforce CAP_NET_ADMIN Francisco Jerez (13): drm/nouveau: Add cache_flush/pull fifo engine functions. drm/nouveau: Pre-G80 tiling support. drm/nouveau: Make the MM aware of pre-G80 tiling. drm/i2c/ch7006: Drop build time dependency to nouveau. drm/nouveau: Fix "general protection fault" in the flipd/flips eviction path. drm/nouveau: No need to force evict=true when swapping evicted BOs back in. drm/nouveau: Drop redundant placement initialization. drm/nouveau: Clean up the nv17-nv4x load detection code a bit. drm/nouveau: Implement nv42-nv43 TV load detection. drm/nouveau: Don't skip card take down on nv0x. drm/nouveau: Allocate a per-channel instance of NV_SW. drm/nouveau: Use the software object for fencing. drm/nv04: Context switching fixes. Frederic Weisbecker (6): reiserfs: Fix mistake in down_write() conversion reiserfs: Fix recursive lock on lchown reiserfs: Relax the lock before truncating pages reiserfs: Relax lock on xattr removing reiserfs: Don't call reiserfs_get_acl() with the reiserfs lock reiserfs: Relax reiserfs_xattr_set_handle() while acquiring xattr locks Giridhar Malavali (1): [SCSI] qla2xxx: Update version number to 8.03.01-k9. Greg Ungerer (1): m68knommu: fix definitions of __pa() and __va() Guennadi Liakhovetski (1): mx3: add support for the mt9v022 camera sensor to pcm037 platform H Hartley Sweeten (1): [ARM] pxa: use resource_size() in pwm.c Haojian Zhuang (3): [ARM] pxa/zylonite: simplify reduntant gpio settings on mmc slot [ARM] pxa: do not enable L2 after MMU is enabled [ARM] pxa: enable L2 if present in XSC3 Heiko Carstens (1): x86: copy_from_user() should not return -EFAULT Hidetoshi Seto (1): PCI: pcie portdrv: style cleanup Huang Weiyi (1): OMAP2: remove duplicated #include J. Bruce Fields (1): nfsd: fix "insecure" export option Jack Morgenstein (1): IB/mlx4: Initialize SRQ scatter entries when creating an SRQ James Smart (6): [SCSI] lpfc 8.3.7: Fix FC protocol errors [SCSI] lpfc 8.3.7: Fix NPIV operation errors [SCSI] lpfc 8.3.7: Fix hardware/SLI relates issues [SCSI] lpfc 8.3.7: Fix SCSI protocol related errors. [SCSI] lpfc 8.3.7: Fix discovery failures. [SCSI] lpfc 8.3.7: Update Driver version to 8.3.7 Jamie Iles (1): ARM: 5866/1: arm ptrace: use unsigned types for kernel pt_regs Jan Dumon (6): hso: Add Vendor/Product ID's for new devices hso: Fix for endian issues on big endian machines hso: don't change the state of a closed port hso: Attempt to recover from usb bus errors hso: Fix for 5 sec timeouts with v2.x firmware hso: fixed missing newlines Jan Kara (1): quota: Fix dquot_transfer for filesystems different from ext4 Jani Nikula (1): gpiolib: fix poll(2) support reconfigure on sysfs polarity change Janusz Krzysztofik (1): omap: McBSP: Fix possible port lockout Jarek Poplawski (2): af_packet: Don't use skb after dev_queue_xmit() sky2: Fix oops in sky2_xmit_frame() after TX timeout Jarkko Lavinen (1): mmc_block: fix probe error cleanup bug Jaroslav Kysela (1): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into fixes Jason Wessel (2): maccess,probe_kernel: Allow arch specific override probe_kernel_(read|write) blackfin,kgdb,probe_kernel: Cleanup probe_kernel_read/write Jeff Layton (1): sunrpc: on successful gss error pipe write, don't return error Jerome Glisse (4): drm/radeon/kms: Schedule host path read cache flush through the ring V2 drm/radeon/kms: Make sure we release AGP device if we acquired it drm: Avoid calling vblank function is vblank wasn't initialized drm/radeon/kms: Don't try to enable IRQ if we have no handler installed Jesse Barnes (3): drm/i915: only enable hotplug for detected outputs drm/i915: execbuf2 support drm/i915: remove render reclock support Jie Zhang (1): NOMMU: Use copy_*_user_page() in access_process_vm() Jiri Slaby (4): [IA64] use helpers for rlimits drm/radeon/kms: fix memory leak NET: atlx, fix memory leak reiserfs: Fix unreachable statement Joakim Tjernlund (1): zlib: optimize inffast when copying direct from output Joe Perches (1): scripts/get_maintainer.pl: fix file exclusion X: logic Julia Lawall (4): drivers/isdn: eliminate duplicated test drivers/net/can: Correct NULL test drivers/net : Correct the size argument to kzalloc MIPS: Alchemy: Correct code taking the size of a pointer KOSAKI Motohiro (1): proc: partially revert "procfs: provide stack information for threads" Ken Kawasaki (1): pcnet_cs: add cis of KTI PE520 pcmcia network card Kevin Hilman (1): OMAP3: clock: add clockdomains for UART1 & 2 Kevin Winchester (1): agp: correct missing cleanup on error in agp_add_bridge Kristian Høgsberg (3): drm/i915: Move PCI IDs into i915 driver drm/i915: Implement IS_* macros using static tables drm/i915: Track whether cursor needs physical address in intel_device_info Krzysztof Halasa (1): dma-debug: allow DMA_BIDIRECTIONAL mappings to be synced with DMA_FROM_DEVICE and Krzysztof Helt (2): sbawe: fix memory detection part 2 ALSA: ac97: add AC97 STMicroelectronics' codecs Li Jie (3): ARM: 5863/1: fix bugs of clock source of NUC900 ARM: 5864/1: Implement arch_reset() in NUC900 ARM: 5865/1: nuc900 ethernet driver needs mii Linus Torvalds (33): Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 Merge branch 'davinci-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci Merge branch 'for-2.6.33' of git://linux-nfs.org/~bfields/linux Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip Merge branch 'for-linus/samsung' of git://git.fluff.org/bjdooks/linux Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'reiserfs/kill-bkl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'agp-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'for-linus' of git://gitorious.org/linux-omap-dss2/linux Merge git://git.infradead.org/battery-2.6 Linux 2.6.33-rc4 Linus Walleij (1): ARM: 5867/1: Update U300 defconfig Luca Barbieri (1): drm/nouveau: Fix null deref in nouveau_fence_emit due to deleted fence Luca Tettamanti (3): drm/radeon/kms: rs600: use correct mask for SW interrupt hwmon: (asus_atk0110) Refactor interface probe code hwmon: (asus_atk0110) Add debugfs interface Maarten Maathuis (2): drm/nouveau: better alignment of bo sizes and use roundup instead of ALIGN drm/nv50: make the blocksize depend on vram size Marc Zyngier (3): [ARM] pxa/zeus: make internal zeus_get_pcb_info static [ARM] pxa/zeus: relax memory timings on Zeus ethernet ports [ARM] pxa/zeus: provide power-source information when APM is enabled Marcin KoĹ›cielnicki (1): drm/nv04: Fix set_operation software method. Marcin Slusarz (2): drm/nv50: fix fillrect color drm/nouveau: create function for "dealing" with gpu lockup Marek Vasut (2): [ARM] pxa/littleton: add UART3 GPIO config [ARM] pxa/littleton: select CPU_PXA300 and CPU_PXA310 Mark Brown (2): cs89x0: Always report failure to request interrupt ASoC: Fix WM8350 DSP mode B configuration Mark Salter (3): mn10300: signal stack fix mn10300: objcopy flags fix mn10300: add cc clobbers to asm statements Masami Hiramatsu (1): kmod: fix resource leak in call_usermodehelper_pipe() Matthew Garrett (1): drm/i915: Don't check for lid presence when detecting LVDS Michael Hennerich (1): gpio: adp5588-gpio: new driver for ADP5588 GPIO expanders Michael Hernandez (1): [SCSI] qla2xxx: Get the link data rate explicitly during device resync. Miguel Aguilar (1): DaVinci: DM365: Add the device_enable for the DaVinci Keyscan Mikael Pettersson (1): sata_promise: don't classify overruns as HSM errors Mike Frysinger (2): FDPIC: Respect PT_GNU_STACK exec protection markings when creating NOMMU stack NOMMU: Avoiding duplicate icache flushes of shared maps Minchan Kim (1): smaps: fix wrong rss count Márton NĂ©meth (1): hwmon: Make PCI device ids constant OGAWA Hirofumi (2): nfs: fix oops in nfs_rename() rtc_cmos: convert shutdown to new pnp_driver->shutdown Octavian Purdila (2): ip: fix mc_loop checks for tunnels with multicast outer addresses tcp: update the netstamp_needed counter when cloning sockets Or Gerlitz (1): IB/mlx4: Fix queue overflow check in post_recv PJ Waskiewicz (1): ixgbe: Fix compiler warning about variable being used uninitialized Patrick McHardy (1): netfilter: nf_ct_ftp: fix out of bounds read in update_nl_seq() Paul Walmsley (7): OMAP2xxx IO mapping: mark DSP mappings as being 2420-only OMAP2420 IO mapping: move IVA mapping virtual address out of vmalloc space OMAP3 clock: McBSP 2, 3, 4 functional clock parent is PER_96M_FCLK, not CORE_96M_FCLK OMAP clock: remove incorrect EXPORT_SYMBOL()s OMAP2xxx OPP: clean up comments in OPP data OMAP clock/CPUFreq: add clk_exit_cpufreq_table() OMAP2 clock: dynamically allocate CPUFreq frequency table Peter Huewe (1): video/omap: add __init/__exit macros to drivers/video/omap/lcd_htcherald.c Peter HĂĽwe (2): ARM: 5870/1: arch/arm: Fix build failure for defconfigs without CONFIG_ISA_DMA_API set ARM: 5871/1: arch/arm: Fix build failure for lpd7a404_defconfig caused by missing includes Rabin Vincent (1): ARM: 5868/1: ARM: fix "BUG: using smp_processor_id() in preemptible code" Rafael J. Wysocki (2): PCI/PM: Use per-device D3 delays DRM / i915: Fix resume regression on MSI Wind U100 w/o KMS Rakesh Ranjan (2): [SCSI] cxgb3i: Fix a login over vlan issue cxgb3i: Fix a login over vlan issue Randy Dunlap (6): sunrpc: fix build-time warning kgdb: Fix kernel-doc format error in kgdb.h docs: large update to ioctl-number.txt power: fix kernel-doc notation Documentation: update ring-buffer-design.txt documentation: update kernel-doc-nano-HOWTO information Robert P. J. Day (1): IB/addr: Correct CONFIG_IPv6 to CONFIG_IPV6 Roel Kluin (5): ALSA: test off by one in setsamplerate() drm/kms: Fix &&/|| confusion in drm_fb_helper_connector_parse_command_line() omap: &&/|| confusion in iommu_put() omap3: add missing parentheses omap3: add missing parentheses Roger Blofeld (1): hwmon: (adt7462) Fix pin 28 monitoring Roland Dreier (1): Merge branches 'misc' and 'mlx4' into for-next Russell King (6): Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 ARM: add missing recvmmsg syscall number Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 ARM: Fix wrong dmb ARM: Ensure ARMv6/7 mm files are built using appropriate assembler options Rusty Russell (1): Revert "x86: Side-step lguest problem by only building cmpxchg8b_emu for pre-Pentium" Saeed Bishara (1): mv643xx_eth: don't include cache padding in rx desc buffer size Santosh Shilimkar (1): ARM: 5872/1: ARM: include needed linux/cpu.h in asm/cpu.h Sascha Hauer (1): lib/rational.c needs module.h Sekhar Nori (3): davinci: cp_intc: provide set_wake function davinci: da8xx/omap-l1: mark RTC as a wakeup source davinci: enable ARCH_HAS_HOLES_MEMORYMODEL for DaVinci Simon Kagstrom (1): ARM: 5874/1: serial21285: fix disable_irq-from-interrupt-handler deadlock Sonic Zhang (1): blackfin,kgdb: Do not put PC in gdb_regs into retx. Sriram (1): TI DaVinci EMAC: Handle emac module clock correctly. Stephen Hemminger (1): drivers/cpuidle/governors/menu.c: fix undefined reference to `__udivdi3' Steven Whitehouse (4): GFS2: Ensure uptodate inode size when using O_APPEND GFS2: Fix locking bug in rename GFS2: Fix gfs2_xattr_acl_chmod() GFS2: Use MAX_LFS_FILESIZE for meta inode size Sucheta Chakraborty (2): netxen: fix ethtool register dump netxen: fix ethtool link test Suresh Siddha (1): x86, irq: Check move_in_progress before freeing the vector mapping Takashi Iwai (5): ALSA: usb-audio - Avoid Oops after disconnect Merge remote branch 'alsa/fixes' into fix/misc ALSA: hda - Fix ALC861-VD capture source mixer Merge branch 'fix/hda' into for-linus Merge branch 'fix/asoc' into for-linus Tejun Heo (2): ata_piix: enable 32bit PIO on SATA piix libata: retry link resume if necessary Thomas Champagne (1): pmu_battery: Fix battery full reporting Tobias Klauser (1): drm/i915: Storage class should be before const qualifier Tomaz Mertelj (1): hwmon: driver for Texas Instruments amc6821 chip Tomi Valkeinen (12): OMAP: DSS2: DSI: fix VC channels in send_short and send_null OMAP: DSS2: DSI: print debug DCS cmd in hex OMAP: DSS2: Collect interrupt statistics OMAP: DSS2: Fix crash when panel doesn't define enable_te() OMAP: DSS2: RFBI: convert to new kfifo API OMAP: OMAPFB: fix clk_get for RFBI OMAP: OMAPFB: add dummy release function for omapdss MAINTAINERS: change omapfb maintainer MAINTAINERS: Combine DSS2 and OMAPFB2 into one entry OMAP: DSS2: OMAPFB: fix omapfb_free_fbmem() OMAP: DSS2: Make check-delay-loops consistent OMAP: DSS2: OMAPFB: fix crash when panel driver was not loaded Tony Lindgren (4): omap: Remove uninitialized warning for gpio.c omap1: Fix compile for omap1_bl.c omap3: Fix booting if package is uninitialized Merge branch 'for_2.6.33rc_c' of git://git.pwsan.com/linux-2.6 into omap-fixes-for-linus Tony Luck (3): [IA64] sanity in #include files. Move fnptr to types.h [IA64] __per_cpu_idtrs[] is a memory hog [IA64] move fnptr definition inside #ifdef __KERNEL__ Trond Myklebust (2): SUNRPC: Fix up an error return value in gss_import_sec_context_kerberos() SUNRPC: Fix the return value in gss_import_sec_context() Tuukka Toivonen (1): OMAP3 clock: Add capability to change rate of dpll4_m5_ck Ursula Braun (1): claw: use "claw" as root device name Uwe Kleine-König (3): [ARM] pxa/ttc_dkb: remove duplicate macro definition imx/mx3: depend on USB_ULPI for otg_ulpi_create vsnprintf: fix reference for compressed ipv6 addresses Vaibhav Hiremath (3): Davinci VPFE Capture: Take i2c adapter id through platform data omap3: EVM: Choose OMAP_PACKAGE_CBB OMAP: DSS2: Fix compile warning Valentin Longchamp (1): mx31moboard: fix usbh device names Vegard Nossum (1): kmemcheck: make bitfield annotations truly no-ops when disabled Ville Syrjälä (1): OMAP: DSS2: Reject scaling settings when they cannot be supported Vimal Singh (1): omap2/3: ZOOM: Correcting key mapping for few keys Wolfgang Denk (1): ARM: MX3: make CPU revision number detection work on all boards Wu Zhangjin (1): MIPS: Cleanup and Fixup of compressed kernel support Xiaotian Feng (1): sunrpc: fix peername failed on closed listener Yinghai Lu (2): x86: Fix size for ex trampoline with 32bit x86/pci: Intel ioh bus num reg accessing fix Yoichi Yuasa (13): MIPS: VR41xx: Use strlcat() for the command line arguments MIPS: AR7: Remove kgdb_enabled MIPS: PowerTV: Remove unused prom_getcmdline() MIPS: PowerTV: Remove unused ptv_memsize MIPS: PowerTV: Remove mips_machine_halt() MIPS: PowerTV: Remove unused platform_die() MIPS: PowerTV: simplify prom_init_cmdline() and merge into prom_init() MIPS: Cobalt use strlcat() for the command line arguments MIPS: AR7: Remove unused prom_getchar() MIPS: BCM63xx: Remove duplicate CONFIG_CMDLINE. MIPS: Malta, PowerTV: Remove unnecessary "Linux started" MIPS: Move vmlinux.ecoff to arch/mips/boot MIPS: Ignore vmlinux.* Yong Wang (1): hwmon: (coretemp) Fix TjMax for Atom N450/D410/D510 CPUs Youquan,Song (2): PCI: AER: fix aer inject result in kernel oops PCIe AER: prevent AER injection if hardware masks error reporting Zhao Yakui (6): drm/i915: Add MALATA PC-81005 to ACPI LID quirk list drm/i915: Update LVDS connector status when receiving ACPI LID event drm/i915: Enable/disable the dithering for LVDS based on VBT setting drm/i915: Make the BPC in FDI rx/transcoder be consistent with that in pipeconf on Ironlake drm/i915: Select the correct BPC for LVDS on Ironlake drm/i915: Add DP dpll limit on ironlake and use existing DPLL search function Zhenyu Wang (4): drm/i915: implement new pm ops for i915 drm/i915: Reload hangcheck timer too for Ironlake drm/i915: remove full registers dump debug drm: remove address mask param for drm_pci_alloc() roel kluin (5): usbnet: test off by one atarilance: timeout ignored in lance_open() niu: timeout ignored in tcam_wait_bit() net: Test off by one in sh_eth_reset() broadcom: Fix &&/|| confusion in bcm54xx_adjust_rxrefclk() ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From aelder@oss.sgi.com Fri Jan 22 16:22:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_21,J_CHICKENPOX_44 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMM8Uj144154 for ; Fri, 22 Jan 2010 16:22:08 -0600 Received: (from aelder@localhost) by oss.sgi.com (8.14.3/8.14.3/Submit) id o0MMM5S8144118; Fri, 22 Jan 2010 16:22:05 -0600 Date: Fri, 22 Jan 2010 16:22:05 -0600 Message-Id: <201001222222.o0MMM5S8144118@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree annotated tag, v2.6.33-rc5, created. v2.6.33-rc5 X-Git-Refname: refs/tags/v2.6.33-rc5 X-Git-Reftype: annotated tag X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 76efcb71c910774213480cdfe20b73e07c6a00aa This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The annotated tag, v2.6.33-rc5 has been created at 76efcb71c910774213480cdfe20b73e07c6a00aa (tag) tagging 92dcffb916d309aa01778bf8963a6932e4014d07 (commit) replaces v2.6.33-rc4 tagged by Linus Torvalds on Thu Jan 21 15:31:44 2010 -0800 - Log ----------------------------------------------------------------- Linux 2.6.33-rc5 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEABECAAYFAktY4+UACgkQF3YsRnbiHLucNQCfXFKFHyBgzRHrQPCj/deWgEOL KXEAn2nVyjby4I1ulC2uiVP7u8Yxu/0U =VRnb -----END PGP SIGNATURE----- Abhijeet Kolekar (1): iwlwifi: disable tx on beacon update notification Adam Jackson (1): Input: evdev - be less aggressive about sending SIGIO notifies Al Viro (12): fix autofs/afs/etc. magic mountpoint breakage Kill 9p readlink() hppfs: handle ->put_link() Unrot uml mconsole a bit Fix ACC_MODE() for real Fix the -ESTALE handling in do_filp_open() Fix configfs leak may_umount() needs namespace_sem attach_recursive_mnt() needs to hold vfsmount_lock over set_mnt_shared() mnt_flags fixes in do_remount() CIFS shouldn't make mountpoints shrinkable do_add_mount() should sanitize mnt_flags Alan Cox (4): x86: mce.h: Fix warning in header checks nozomi: quick fix for the close/close bug serial: Fix crash if the minimum rate of the device is > 9600 baud Staging: et131x: Fix 2.6.33rc1 regression in et131x Alan Jenkins (1): eeepc-laptop: disable cpu speed control on EeePC 701 Alan Stern (4): USB: fix bitmask merge error USB: EHCI: fix handling of unusual interrupt intervals USB: EHCI & UHCI: fix race between root-hub suspend and port resume USB: add missing delay during remote wakeup Alberto Panizzo (1): mfd: Unlock mc13783 before subsystems initialisation, at probe time. Alex Chiang (1): ACPI: processor: restrict early _PDC to opt-in platforms Alex Deucher (3): drm/radeon/kms: fix up LVDS handling on macs (v2) drm/radeon/kms/r6xx+: make irq handler less verbose drm/radeon/kms/rv100: reject modes > 135 Mhz on DVI (v2) Alex Murray (1): ALSA: hda - Improved MacBook (Pro) 5,1 / 5,2 support Alexander Beregalov (1): USB: FHCI: avoid NULL pointer dereference Alexander Duyck (1): ixgbe: Do not attempt to perform interrupts in netpoll when down Alexey Starikovskiy (3): ACPI: EC: Accelerate query execution ACPI: SBS: Move SBS HC callback to faster Notify queue ACPI: EC: Add wait for irq storm Andi Kleen (5): kfifo: use void * pointers for user buffers kfifo: sanitize *_user error handling kfifo: add kfifo_out_peek kfifo: add kfifo_initialized kfifo: document everywhere that size has to be power of two Anton Blanchard (3): alpha: cpumask_of_node() should handle -1 as a node powerpc/pseries: Fix xics interrupt affinity powerpc: cpumask_of_node() should handle -1 as a node Anton Vorontsov (1): powerpc/swsusp_32: Fix TLB invalidation Arjan van de Ven (1): perf timechart: Use tid not pid for COMM change Arnaldo Carvalho de Melo (2): perf tools: Move QUIET_STDERR def to before first use perf tools: Check if /dev/null can be used as the -o gcc argument Atsushi Nemoto (1): compat_ioctl: Supress "unknown cmd" message on serial /dev/console Ben Dooks (1): ARM: MINI2440: Fixup __initdata usage Ben Hutchings (2): sfc: Fix polling for slow MCDI operations sfc: Fix conditions for MDIO self-test Benjamin Herrenschmidt (4): zlib: Fix build of powerpc boot wrapper serial/pmac_zilog: Workaround problem due to interrupt on closed port Merge commit 'kumar/merge' into merge Merge commit 'gcl/merge' into merge Benoit Papillault (1): zd1211rw: Fix multicast filtering. Bruce Allan (2): e1000e: MDIO slow mode should always be done for 82577 e1000e: workaround link issues on busy hub in half duplex on 82577/82578 Chen Gong (1): acpi_pad: fix error checks Chris Mason (1): Btrfs: deal with NULL acl sent to btrfs_set_acl Christian Schuerer-Waldheim (1): HID: add device IDs for new model of Apple Wireless Keyboard Colin Tuckley (1): USB: Fix level of isp1760 Reloading ptd error message Corentin Chary (3): eeepc-laptop: dmi blacklist to disable pci hotplug code eeepc-laptop: add hotplug_disable parameter eeepc-laptop: disable wireless hotplug for 1201N Cyrill Gorcunov (1): x86: kernel_thread() -- initialize SS to a known state Daisuke Nishimura (1): memcg: ensure list is empty at rmdir Dan Carpenter (5): iwl: off by one bug iwlwifi: silence buffer overflow warning V4L/DVB (13955): cx25821: fix double unlock in medusa_video_init() mfd: WM8350 off by one bug ecryptfs: use after free Daniel Drake (1): Input: psmouse - fix Synaptics detection when protocol is disabled Darren Jenkins (1): ACPI: power_meter: remove double kfree() Dave Airlie (3): drm/radeon/kms: only evict to GTT if CP is ready drm: fix crtc no modes printf + typo Merge remote branch 'korg/drm-radeon-next' into drm-linus Dave Chinner (7): xfs: reclaim inodes under a write lock xfs: Avoid inodes in reclaim when flushing from inode cache xfs: reclaim all inodes by background tree walks xfs: Remove inode iolock held check during allocation xfs: fix stale inode flush avoidance xfs: fix missing error check in xfs_rtfree_range xfs: xfs_swap_extents needs to handle dynamic fork offsets Dave Young (1): drm: change drm set mode messages as DRM_DEBUG David Howells (6): nommu: fix SYSV SHM for NOMMU nommu: struct vm_region's vm_usage count need not be atomic nommu: remove a superfluous check of vm_region::vm_usage nommu: don't need get_unmapped_area() for NOMMU nommu: fix race between ramfs truncation and shared mmap nommu: fix shared mmap after truncate shrinkage problems David John (1): smp_call_function_any(): pass the node value to cpumask_of_node() David S. Miller (2): Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 ipv6: skb_dst() can be NULL in ipv6_hop_jumbo(). David Sharp (1): ring-buffer: Wrap a list.next reference with rb_list_head() David Woodhouse (1): V4L/DVB (13716): [Mantis] Bug: incorrect byte swap Divyesh Shah (1): cfq-iosched: Respect ioprio_class when preempting Dmitri Belimov (1): V4L/DVB (13966): DVB-T regression fix for saa7134 cards Dmitry Torokhov (5): Input: atkbd - fix canceling event_work in disconnect Input: xbox - do not use GFP_KERNEL under spinlock Input: add compat support for sysfs and /proc capabilities output eeepc-laptop: switch to using sparse keymap library sony-laptop - fix using of uninitialized variable Dominik Geyer (1): ath9k: Fix Kconfig depends for ATH9K_DEBUGFS Elliott Sales de Andrade (1): Input: i8042 - add Dritek quirk for Acer Aspire 5610. Erez Zadok (5): ecryptfs: initialize private persistent file before dereferencing pointer ecryptfs: don't ignore return value from lock_rename ecryptfs: remove unnecessary d_drop calls in ecryptfs_link ecryptfs: pass matching flags to interpose as defined and used there ecryptfs: fix interpose/interpolate typos in comments Eric Anholt (1): drm/i915: Remove chatty execbuf failure message. Eric Paris (2): inotify: do not reuse watch descriptors inotify: only warn once for inotify problems Eric W. Biederman (1): Input: serio - fix potential deadlock when unbinding drivers Erik Andren (1): V4L/DVB (13880): gspca - m5602-s5k4aa: Add vflip quirk for the Amilo Xi 2428 Erik AndrĂ©n (1): V4L/DVB (13882): gspca - stv06xx-vv6410: Ensure register STV_SCAN_RATE is zero Erik-Jan Post (2): viafb: do modesetting after updating variables viafb: fix acceleration for some chips Eugeni Dodonov (1): Staging: asus_oled: fix oops in 2.6.32.2 FUJITA Tomonori (2): x86/agp: Fix agp_amd64_init and agp_amd64_cleanup powerpc/pseries: Fix dlpar compile warning without CONFIG_PROC_DEVICETREE Felix Fietkau (2): mac80211: add missing sanity checks for action frames mac80211: fix queue selection for data frames on monitor interfaces Florian Tobias Schandinat (1): viafb: fix LCD hardware cursor regression Frederic Weisbecker (1): perf: Stop stack frame walking off kernel addresses boundaries Gertjan van Wingerde (2): rt2x00: Fix LED configuration setting for rt2800. rt2x00: Properly request tx headroom for alignment operations. Grant Likely (1): powerpc/5200: update defconfigs Greg Kroah-Hartman (4): Revert "sysdev: fix prototype for memory_sysdev_class show/store functions" tty: fix race in tty_fasync Staging: hv: fix smp problems in the hyperv core code USB: add speed values for USB 3.0 and wireless controllers H Hartley Sweeten (1): ACPI: Remove unnecessary cast. Hans Verkuil (1): MAINTAINERS: Andy Walls is the new ivtv maintainer Hans de Goede (1): feature-removal-schedule: Add v4l1 drivers obsoleted by gspca sub drivers Heiko Carstens (16): [S390] dasd: add missing compat ptr conversion [S390] cio: add missing compat ptr conversion [S390] vmcp: add missing compat ptr conversion [S390] fs3270: add missing compat ptr conversion [S390] smp: setup smp_processor_id early [S390] smp: remove volatile type quilifier from __cpu_logical_map [S390] tape_block: remove ioctl function [S390] Move __cpu_logical_map to smp.c [S390] bug: implement arch specific __WARN macro [S390] mmap: add missing compat_ptr conversion to both mmap compat syscalls [S390] dasd: add proper compat pointer conversion for symmetrix ioctl [S390] con3215: remove empty ioctl function [S390] unwire sys_recvmmsg again [S390] zcrypt: add sanity check before copy_from_user() [S390] tape_char: add missing compat_ptr conversion driver-core: fix devtmpfs crash on s390 Henrik Rydberg (1): Input: bcm5974 - report ABS_MT events Hui Zhu (1): markup_oops.pl: fix error with x86 Ian Campbell (2): xen: fix hang on suspend. x86: xen: 64-bit kernel RPL should be 0 Ian Molton (1): mfd: tmio_mmc hardware abstraction for CNF area Ingo Molnar (1): Merge branch 'tip/tracing/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent Jack Steiner (1): x86, uv: Add function retrieving node controller revision number Jan Engelhardt (1): btrfs: fix missing last-entry in readdir(3) Jan Kiszka (1): tracing/x86: Derive arch from bits argument in recordmcount.pl Jean-Francois Moine (4): V4L/DVB (13816): gspca - main: Set the current frame pointer when first qbuf. V4L/DVB (13622): gspca - ov534: Fix a compilation warning. V4L/DVB (13875): gspca - vc032x: Fix a possible crash with the vc0321 bridge. V4L/DVB (13900): gspca - sunplus: Fix bridge exchanges. Jeff Mahoney (1): virtio: fix section mismatch warnings Jens Axboe (2): Merge branch 'for-jens' of git://git.drbd.org/linux-2.6-drbd into for-linus Merge branch 'for-jens' of http://git.drbd.org/linux-2.6-drbd into for-linus Jesse Barnes (1): drm/i915: disable LVDS downclock by default Jiri Slaby (4): [S390] use helpers for rlimits powerpc: Use helpers for rlimits MAINTAINERS: ivtv-devel is moderated Btrfs, fix memory leaks in error paths Joakim Tjernlund (2): powerpc/8xx: Always pin kernel instruction TLB powerpc/8xx: Fix user space TLB walk in dcbX fixup Johan Hovold (1): usb: serial: fix memory leak in generic driver Johannes Berg (3): mac80211: fix skb buffering issue mac80211: fix endian error cfg80211: fix refcount imbalance when wext is disabled Johannes Thoma (2): drbd: Kconfig fix drbd: Don't go into StandAlone mode when authentification failes because of network error John W. Linville (2): mac80211: fix-up build breakage in 2.6.33 Revert "mac80211: replace netif_tx_{start,stop,wake}_all_queues" Jonathan Nieder (1): kbuild: really fix bzImage build with non-bash sh Josef Bacik (2): Btrfs: fix regression in orphan cleanup Btrfs: fix possible panic on unmount Julia Lawall (3): drivers/block/drbd: Correct NULL test drivers/block/drbd/drbd_receiver.c: correct NULL test ecryptfs: Eliminate useless code KOSAKI Motohiro (3): futexes: Remove rw parameter from get_futex_key() vmscan: kswapd: don't retry balance_pgdat() if all zones are unreclaimable page allocator: update NR_FREE_PAGES only when necessary Kamalesh Babulal (1): powerpc/hvc: Driver build breaks with !HVC_CONSOLE Kazuhisa Ichikawa (1): mm/page_alloc: fix the range check for backward merging Kirill Afonshin (1): block: removed unused as_io_context Kumar Gala (1): powerpc: 2.6.33 update of defconfigs for embedded 6xx/7xxx, 8xx, 8xxx Kunal Gangakhedkar (1): ALSA: hda - Fix mute led GPIO on HP dv-series notebooks Kuninori Morimoto (1): sh: ms7724: Correct sh-eth EEPROM polling timeout. Lars Ellenberg (1): drbd: check on CONFIG_LBDAF, not LBD Laurent Pinchart (3): V4L/DVB (13826): uvcvideo: Fix controls blacklisting V4L/DVB (13829): uvcvideo: Fix alternate setting selection in isochronous mode V4L/DVB (13831): uvcvideo: Fix oops caused by a race condition in buffer dequeuing Len Brown (14): x86, ACPI: delete acpi_boot_table_init() return value ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C ACPI: allow C3 > 1000usec ACPI: delete acpi_processor_power_verify_c2() Merge branch 'acpi-pad' into release Merge branch 'bugzilla-13577-video' into release Merge branch 'bugzilla-14483' into release Merge branch 'bugzilla-14858' into release Merge branch 'bugzilla-15064' into release Merge branch 'ec' into release Merge branch 'eeepc-laptop' into release Merge branch 'osc-bugfix' into release Merge branch 'misc' into release Merge branch 'bugzilla-14954' into release Lennert Buytenhek (2): mwl8k: fix configure_filter() memory leak on error mac80211: fix queue selection for packets injected via monitor interface Li Zefan (7): ftrace: Fix MATCH_END_ONLY function filter tracing/filters: Fix MATCH_FRONT_ONLY filter matching tracing/filters: Fix MATCH_END_ONLY filter matching lib: Introduce strnstr() tracing/filters: Fix MATCH_MIDDLE_ONLY filter matching tracing/filters: Fix MATCH_FULL filter matching for PTR_STRING tracing/filters: Add comment for match callbacks Linus Torvalds (42): fasync: split 'fasync_helper()' into separate add/remove functions Merge branch 'fasync-helper' Merge branch 'for-33' of git://repo.or.cz/linux-kbuild Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid Merge branch 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 Merge branch 'for-linus/bugfixes' of git://xenbits.xensource.com/people/ianc/linux-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 Merge branch 'sh/for-2.6.33' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha-2.6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp Merge branch 'for-linus/samsung' of git://git.fluff.org/bjdooks/linux Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'mantis' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog Merge master.kernel.org:/home/rmk/linux-2.6-arm Merge branch 'sh/for-2.6.33' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip Linux 2.6.33-rc5 Lothar Wassmann (2): USB: isp1362: better 64bit printf warning fixes USB: isp1362: fix build failure on ARM systems via irq_flags cleanup Luca Barbieri (1): hw-breakpoints, perf: Fix broken mmiotrace due to dr6 by reference change Luck, Tony (1): ACPI: Fix section mismatch error for acpi_early_processor_set_pdc() Luis R. Rodriguez (2): ath5k: Fix eeprom checksum check for custom sized eeproms cfg80211: fix syntax error on user regulatory hints Magnus Horlin (1): V4L/DVB (13748): [Mantis/VP-2040] Add support for VP-2040 (TDA10023 frontend based) Manu Abraham (101): V4L/DVB (13699): [Mantis, MB86A16] Initial checkin: Mantis, MB86A16 V4L/DVB (13700): [MB86A16] Need a bit of settling time V4L/DVB (13701): [MB86A16] Reduce Carrier Recovery range to 3Mhz V4L/DVB (13702): [MB86A16] need to wait a bit more than the computed time for a Factor of safety V4L/DVB (13703): [MB86A16] Fix wrong message printed out V4L/DVB (13704): [MB86A16] FIX: Don't loop again, if we have SYNC V4L/DVB (13705): [Mantis] FIX: Do not return IRQ_HANDLED in the unlikely case V4L/DVB (13706): [MB86A16] Overhaul V4L/DVB (13707): [Mantis] Whitespace cleanup V4L/DVB (13708): [Mantis] Remove some dead code V4L/DVB (13709): [Mantis/VP-1034] Switch 13/18v for the VP-1034 properly V4L/DVB (13710): [Mantis] FIX: Use swfilter (188/204) accordingly V4L/DVB (13712): [Mantis] Add locking for concurrent access V4L/DVB (13714): [MB86A16] FIX/Code simplification: use hwconfig->ts_size instead of ts_size V4L/DVB (13715): [Mantis] Kernel I2C changes: use PCI parent device V4L/DVB (13717): [MB86A16] Statistics Updates V4L/DVB (13719): [Mantis/VP-2033] Initial test switch to the tda10021, from the cu1216 V4L/DVB (13720): [Mantis/Terratec Cinergy C] Add support for the Terratec Cinergy C PCI V4L/DVB (13721): [Mantis] Bug! Before bailing out, Unlock V4L/DVB (13722): [Mantis] Revert 13560 V4L/DVB (13723): [Mantis/VP-2040, Terratec Cinergy C] Add support for the Cinergy C, VP-2040 clone V4L/DVB (13724): [Mantis/VP-1041] Initial support for Mantis VP-1041 V4L/DVB (13725): [Mantis/VP-1041] Revert to old register initialization parameters, for now. V4L/DVB (13726): [Mantis/Skystar HD2] Add support for the Technisat Skystar HD2 V4L/DVB (13727): [Mantis/VP-1041] Bugfix: Sigh! Don't look for the STOP bit V4L/DVB (13728): [Mantis] Add in some Host Interface definitions V4L/DVB (13729): [Mantis] Add in a license header V4L/DVB (13730): [Mantis] Add in some UART definitions V4L/DVB (13731): [Mantis] Add in a license header V4L/DVB (13732): [Mantis] Add in some Link Layer definitions V4L/DVB (13733): [Mantis] Start with the PCMCIA interface V4L/DVB (13734): [Mantis] Initial go at an Event Manager V4L/DVB (13735): [Mantis] Implement the Event Manager tasklet V4L/DVB (13736): [Mantis] Implement CAM Plug IN and Unplug events V4L/DVB (13737): [Mantis] Register the CA device, dummy functions for now V4L/DVB (13738): [Mantis] Enable IRQ0 events V4L/DVB (13739): [Mantis] Event Manager: Handle Masked events only V4L/DVB (13740): [Mantis] Schedule the work instead of handling the task directly V4L/DVB (13741): [Mantis] Implement HIF Mem Read/Write operations V4L/DVB (13742): [Mantis] Implement PCMCIA I/O Rd/Wr operations V4L/DVB (13743): [Mantis CA] Use DVB_CA Tuple parser V4L/DVB (13744): [Mantis CA] Use Module status to signal Slot events V4L/DVB (13745): [Mantis CA] Add some debug statements V4L/DVB (13746): [Mantis CA] Bug: Remove duplicated symbol V4L/DVB (13749): [Mantis CA] CA_SLAVE: Do not change Slave Configuration setup V4L/DVB (13750): [Mantis] GPIO_CONTROL: Cache a given GPIO Bit Setup for a given event V4L/DVB (13751): [Mantis] GPIO_CONTROL: Do not toggle GPIO CW's on HIF operations V4L/DVB (13752): [Mantis CA] CAM_CONTROL: All CAM control operations now handled by the worker thread V4L/DVB (13753): [Mantis CA] SLOT_CONTROL: Implement Slot RESET V4L/DVB (13754): [Mantis] CAM_CONTROL: Implement TS control V4L/DVB (13755): [Mantis CA] CAM_CONTROL: Use appropriate flags V4L/DVB (13756): [Mantis CA] CAM_CONTROL: Use CAMCHANGE_IRQ events V4L/DVB (13757): [Mantis CA] CAM_CONTROL: Use FRDA_IRQ Events V4L/DVB (13758): [Mantis CA] CAM_CONTROL: Use CAMREADY_IRQ event V4L/DVB (13759): [Mantis] HIF I/O: Use the LSB octet only V4L/DVB (13761): [Mantis] HIF I/O: Temporary workaround, use SBUF_OPDONE flag instead V4L/DVB (13762): [Mantis CA] CA_MODULE: Look for the module status on driver unload as well V4L/DVB (13763): [Mantis] HIF I/O: trim delays a bit appropriately V4L/DVB (13764): [Mantis CA] SLOT: Add some debug status V4L/DVB (13765): [Mantis] HIF I/O: Add some debug statements V4L/DVB (13767): [Mantis/VP-1041] Bug: Add in missing Master clock settings V4L/DVB (13768): [Mantis] Enable WRACK V4L/DVB (13769): [Mantis] Smart Buffer Burst Read Ready cannot flag FR/DA Irq V4L/DVB (13770): [Mantis] Bug Do not trigger FR/DA IRQ from SBUF OPDONE V4L/DVB (13771): [Mantis] Reset Flags at the earliest possible V4L/DVB (13772): [Mantis] Do not enable Common Memory Access V4L/DVB (13773): [Mantis] Enable all interrupts V4L/DVB (13775): [Mantis] Remove unnecessary job queues V4L/DVB (13776): [Mantis] Use a simple timeout instead, interruptible V4L/DVB (13777): [Mantis] Use a Write wait queue for Write events V4L/DVB (13778): [Mantis] Wr ACK is already handled in the fast path, V4L/DVB (13779): [Mantis] Missing wakeup for write queue V4L/DVB (13781): [Mantis CA] Bug: Fix wrong usage of HIFRDWRN V4L/DVB (13782): [Mantis] Temporarily disable FRDA irq V4L/DVB (13784): [Mantis] Use PCI API instead of hardcoded length V4L/DVB (13785): [Mantis] Do not disable IRQ's while being invoked V4L/DVB (13786): [Mantis] Bug: HIF bits already shifted .. V4L/DVB (13787): [Mantis] Fix build V4L/DVB (13788): [Mantis CA] use a lock for the relevant CI Read/Write operations V4L/DVB (13789): [Mantis CA] Initialize the mutex V4L/DVB (13790): [Mantis] Relocate queue initialization V4L/DVB (13794): [Mantis/VP-3028] Initial go at Serial interface implementation, add support for VP-3028 V4L/DVB (13795): [Mantis/Hopper] Code overhaul, add Hopper devices into the PCI ID list V4L/DVB (13796): [Mantis] Add missing file in previous commit V4L/DVB (13797): [Mantis/Hopper/TDA665x] Large overhaul, V4L/DVB (13798): [Mantis] Enable power for all cards, use byte mode only on relevant devices V4L/DVB (13799): [Mantis] Unregister frontend V4L/DVB (13800): [Mantis] I2C optimization. Required delay is much lesser than 1mS. V4L/DVB (13801): [MB86A16] Use the search callback V4L/DVB (13802): [Mantis/Hopper] Fix all build related warnings V4L/DVB (13803): Remove unused dependency on CU1216 V4L/DVB (13804): Remove unused I2C Adapter ID V4L/DVB (13805): Fix: Unregister the frontend before detaching V4L/DVB (13806): Register and Initialize Remote control V4L/DVB (13807): Fix: Free device in the device registration failure case V4L/DVB (13809): Fix Checkpatch violations V4L/DVB (13810): [MB86A16] Use DVB_* macros V4L/DVB (13811): [MB86A16] Update Copyright header V4L/DVB (13812): [Mantis/Hopper] Update Copyright header V4L/DVB (13808): [Mantis/Hopper] Build update for Mantis/Hopper based cards V4L/DVB (13851): Fix Input dependency for Mantis Mark Brown (4): ARM: SMDK6410: Specify no GPIO for B_PWR_5V regulator revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC Framebuffer" mfd: Correct WM835x ISINK ramp time defines mfd: WM835x GPIO direction register is not locked Marko Ristola (2): V4L/DVB (13711): [Mantis] FIX: Do nor toggle GPIF status V4L/DVB (13718): [Mantis] Use gpio_set_bits to turn OFF the bits as well Marko Viitamaki (1): V4L/DVB (13783): [Mantis/Technisat Cablestar HD2] Add support for the Technisat Cablestar HD2 Markus Pietrek (1): serial: sh-sci: using correct fifo size for SCIF and SCIFA ports. Martin K. Petersen (4): block: Correct handling of bottom device misaligment block: Fix discard alignment calculation and printing block: bdev_stack_limits wrapper DM: Fix device mapper topology stacking Martin Schwidefsky (4): [S390] fix loading of PER control registers for utrace. [S390] clear TIF_SINGLE_STEP for new process. [S390] duplicate SIGTRAP on signal delivery. [S390] remove superfluous TIF_USEDFPU bit Matt Carlson (5): tg3: Fix std prod ring nicaddr for 5787 and 57765 tg3: Fix std rx prod ring handling tg3: Add reliable serdes detection for 5717 A0 tg3: Disable 5717 serdes and B0 support tg3: Update copyright and driver version Matt Turner (1): alpha: add myself as a maintainer, and drop mention of 2.4 Matthew Garrett (1): serial: 8250_pnp: use wildcard for serial Wacom tablets Mauro Carvalho Chehab (5): V4L/DVB (13834): dib8000: fix compilation if !DVB_DIB8000 V4L/DVB (13858): ir-keytable: use the right header V4L/DVB(13808a): mantis: convert it to the new ir-core register/unregister functions V4L/DVB (13808b): mantis: replace DMA_nnBIT_MASK to DMA_BIT_MASK(32) V4L/DVB(13824a): mantis: Fix __devexit bad annotations Michael Ellerman (1): powerpc/iseries: Initialise on-stack completion Michael Krufky (2): V4L/DVB (13887): tda8290: add autodetection support for TDA8295c2 V4L/DVB (13934): tda8290: Fix FM radio easy programming standard selection for TDA8295 Michal Marek (1): Makefile: do not override LC_CTYPE Michal Simek (5): microblaze: Wire up recvmmsg syscall microblaze: Enable accept4 syscall microblaze: Add PT_ macros for special purpose regs microblaze: Add missing double apostrophe in Kconfig microblaze: pci_controller->arch_data really is a struct device_node * Michel Dänzer (1): drm/radeon/kms: Fix crash getting TV info with no BIOS. Miguel Aguilar (1): Input: davinci_keyscan - add device_enable method to platform data Mike Frysinger (1): modpost: fix segfault in sym_is() with prefixed arches Mike Galbraith (1): sched: Fix vmark regression on big machines Mike Travis (1): x86: SGI UV: Fix mapping of MMIO registers Ming Lei (1): ath9k: fix ito64 Márton NĂ©meth (4): powerpc/macintosh: Make Open Firmware device id constant i2c-ali1563: Remove sparse warnings acpi: make ACPI device id constant V4L/DVB (13941): rj54n1cb0c: remove compiler warning NISHIMOTO Hiroki (1): sh: mach-ecovec24: Add motion sensor driver support. Nathan Fontenot (2): powerpc: Move /proc/ppc64 to /proc/powerpc update powerpc: Move cpu hotplug driver lock from pseries to powerpc Nemeth Marton (1): V4L/DVB (13820): lgdt3305: make one-bit bitfields unsigned Niklas Edmundsson (2): V4L/DVB (13791): [TDA10021] Do not claim TDA10023 V4L/DVB (13792): [Mantis/VP-2033] Do not claim TDA10023 OGAWA Hirofumi (2): vfs: Fix vmtruncate() regression ecryptfs: Fix refcnt leak on ecryptfs_follow_link() error path Octavian Purdila (1): net: fix build erros with CONFIG_BUG=n, CONFIG_GENERIC_BUG=n Oliver Neukum (1): USB: Don't use GFP_KERNEL while we cannot reset a storage device Paul Mundt (2): sh: unwire sys_recvmmsg. sh64: wire up sys_accept4. Pavel Machek (1): serial: serial_cs: oxsemi quirk breaks resume Pavel Roskin (1): rt2x00: use correct headroom for transmission Pekka Enberg (2): perf kmem: Increase "Hit" column length perf kmem: Print usage help for unknown commands Peter Tyser (1): powerpc: Use scripts/mkuboot.sh instead of 'mkimage' Peter Zijlstra (3): perf: Fix perf_event_do_pending() fallback callsite perf: Honour event state for aux stream data perf: Change the is_software_event() definition Petr Ĺ tetiar (1): HID: blacklist ET&T TC5UH touchscreen controller Philipp Reisner (5): drbd: Use drbd_crypto_is_hash() instead of an open coded check drbd: Fix for a race between IO and a detach operation [Bugz 262] drbd: Silenced an assert that could triggered after changing write ordering method drbd: Allow online resizing of DRBD devices while peer not reachable (needs to be explicitly forced) drbd: The kernel code is now equivalent to out of tree release 8.3.7 Ping (1): serial/8250_pnp: add a new Fujitsu Wacom Tablet PC device Przemo Firszt (2): HID: fix pad button definition in hid-wacom HID: wacom: Add BTN_TOOL_FINGER for pad button reporting Rabin Vincent (1): ARM: 5883/1: Revert "disable NX support for OABI-supporting kernels" Rafael J. Wysocki (1): drm/i915: Fix resume regression on MSI Wind U100 w/o KMS Rakib Mullick (1): ACPI: Fix unused variable warning in sbs.c Ramax Lo (1): ARM: S3C: NAND: Check the existence of nr_map before copying Randy Dunlap (1): tty.h: make tty_port_get() static inline Robert Schedel (1): HID: Support 171 byte variant of Samsung USB IR receiver Roel Kluin (5): Input: gf2k - fix &&/|| confusion in gf2k_connect() amd64_edac: Ensure index stays within bounds in amd64_get_scrub_rate i2c: Test off by one in {piix4,vt596}_transaction() V4L/DVB (13868): gspca - sn9c20x: Fix test of unsigned. serial: imx: bit &/| confusion Roland Dreier (1): kernel.h: add BUILD_BUG_ON_NOT_POWER_OF_2() Russ Anderson (1): x86, uv: Ensure hub revision set for all ACPI modes. Russell King (1): ARM: fix badly placed mach/plat entries in Kconfig & Makefile Ryan May (1): USB: fix usbstorage for 2770:915d delivers no FAT Sarah Sharp (1): USB: Fix duplicate sysfs problem after device reset. Seth Heasley (1): [WATCHDOG] iTCO_wdt: Add Intel Cougar Point and PCH DeviceIDs Shannon Nelson (1): ixgbe: update copyright dates Sigmund Augdal (6): V4L/DVB (13713): [MB86A16] Fix: Initialize SNR/STATUS V4L/DVB (13747): [Mantis] Bug Fix!: Use Register Address rather than register field V4L/DVB (13760): [Mantis CA] CA_MODULE: Look for module status on driver load V4L/DVB (13766): [Mantis] Bug: Fix wrong exit condition V4L/DVB (13774): [Mantis] Remove redundant wait for Burst Reads, wakeup the HIF event V4L/DVB (13780): [Mantis] HIF I/O: Enable Interrupts for Read Stanislav Brabec (1): serial-core: resume serial hardware with no_console_suspend Stefan Roese (1): powerpc: Fix decrementer setup on 1GHz boards Stefani Seibold (2): kfifo: fix kfifo_out_locked race bug USB: serial: fix USB serial fix kfifo_len locking Stephane Eranian (1): perf: x86: Add support for the ANY bit Stephen Hemminger (1): genhd: overlapping variable definition Steven Rostedt (1): ring-buffer: Add rb_list_head() wrapper around new reader page next field Suresh Siddha (2): x86, apic: use physical mode for IBM summit platforms x86, apic: use logical flat for systems with <= 8 logical cpus Tai-hwa Liang (2): Input: pmouse - move Sentelic probe down the list Input: sentelic - fix left/right horizontal scroll mapping Takashi Iwai (5): ALSA: hda - Fix Toshiba NB20x quirk entry ALSA: hda - Fix missing capture mixer for ALC861/660 codecs ALSA: hda - Fix capture on Sony VAIO with single input ALSA: Remove warning message for invalid OSS minor ranges Merge branch 'fix/hda' into for-linus Tamas Vincze (1): edac: i5000_edac critical fix panic out of bounds Tejun Heo (1): libata: retry FS IOs even if it has failed with AC_ERR_INVALID Thadeu Lima de Souza Cascardo (2): ALSA: use subsys_initcall for sound core instead of module_init i2c: Do not use device name after device_unregister Thiago Farina (1): fs/bio.c: fix shadows sparse warning Tobias Klauser (1): i2c-core: Storage class should be before const qualifier Tony Lindgren (5): ARM: 5882/1: ARM: Fix uncompress code compile for different defines of flush(void) ARM: 5884/1: arm: Fix DCC console for v7 ARM: 5885/1: arm: Flush TLB entries in setup_mm_for_reboot() ARM: 5886/1: arm: Fix cpu_proc_fin() for proc-v7.S and make kexec work ARM: 5888/1: arm: Update comments in cacheflush.h and remove unnecessary V6 and V7 comments Tyler Hicks (3): eCryptfs: Use notify_change for truncating lower inodes eCryptfs: Add getattr function eCryptfs: Remove mmap from directory operations Uri Yosef (1): ARM: MINI2440: Fix crash on boot due to improper __initdata qualifier Uwe Kleine-König (2): V4L/DVB mx1_camera: don't check platform_get_irq's return value against zero V4L/DVB sh_mobile_ceu: don't check platform_get_irq's return value against zero Wolfram Sang (1): i2c/pca: Don't use *_interruptible Wu Fengguang (2): memory-hotplug: add 0x prefix to HEX block_size_bytes sysdev: fix prototype for memory_sysdev_class show/store functions Xiaotian Feng (1): ACPI: don't cond_resched if irq is disabled Yan, Zheng (2): Btrfs: align offsets for btrfs_ordered_update_i_size Btrfs: Fix race in btrfs_mark_extent_written Yong Zhang (1): sched: Reassign prev and switch_count when reacquire_kernel_lock() fail Yongseok Koh (1): vmalloc: remove BUG_ON due to racy counting of VM_LAZY_FREE Zhang Rui (1): ACPI video: Prune dupe video devices, unless "video.allow_duplicates" Zhao Yakui (8): drm/i915: Add HP nx9020/SamsungSX20S to ACPI LID quirk list drm/i915: Use find_pll function to calculate DPLL setting for LVDS downclock drm/i915: Fix Ironlake M/N/P ranges to match the spec drm/i915: Don't use the child device parsed from VBT to setup HDMI/DP drm/i915: Read the response after issuing DDC bus switch command drm/i915: try another possible DDC bus for the SDVO device with multiple outputs drm/i915: Fix the incorrect cursor A bit definition in DSPFW2 register ACPI: Advertise to BIOS in _OSC: _OST on _PPC changes Zhenyu Wang (6): drm/i915: disable TV hotplug status check drm/i915: Don't wait interruptible for possible plane buffer flush drm/i915: parse eDP panel color depth from VBT block drm/i915: fix pixel color depth setting on eDP drm/i915: fix eDP pipe mask drm/i915: enable 36bit physical address for hardware status page Zhu Yi (1): iwlwifi: fix iwl_queue_used bug when read_ptr == write_ptr Zou Nan hai (1): drm/i915: remove loop in Ironlake interrupt handler john stultz (1): m68knommu: fix invalid flags on coldfire pit clocksource ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From xfs-bounces@oss.sgi.com Fri Jan 22 16:33:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.6 required=5.0 tests=ALL_TRUSTED,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMM3SO144082 for ; Fri, 22 Jan 2010 16:22:03 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Subject: Your message to xfs awaits moderator approval From: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com Message-ID: Date: Fri, 22 Jan 2010 16:21:40 -0600 Precedence: bulk X-BeenThere: xfs@oss.sgi.com X-Mailman-Version: 2.1.11 List-Id: XFS Filesystem from SGI X-List-Administrivia: yes Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com Your mail to 'xfs' with the subject [XFS updates] XFS development tree annotated tag, v2.6.32-rc1, created. v2.6.32-rc1 Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 550811 bytes with a limit of 500 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://oss.sgi.com/mailman/confirm/xfs/ff7878d4d0cbbabacd5f12402b1748bc2fb951a9 From xfs-bounces@oss.sgi.com Fri Jan 22 16:33:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.6 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMLeCH143669 for ; Fri, 22 Jan 2010 16:21:40 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Subject: Your message to xfs awaits moderator approval From: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com Message-ID: Date: Fri, 22 Jan 2010 16:21:26 -0600 Precedence: bulk X-BeenThere: xfs@oss.sgi.com X-Mailman-Version: 2.1.11 List-Id: XFS Filesystem from SGI X-List-Administrivia: yes Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com Your mail to 'xfs' with the subject [XFS updates] XFS development tree annotated tag, v2.6.31-rc1, created. v2.6.31-rc1 Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 523389 bytes with a limit of 500 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://oss.sgi.com/mailman/confirm/xfs/79bc15833623f269368ad9793ae5554d03d8deb5 From xfs-bounces@oss.sgi.com Fri Jan 22 16:33:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.6 required=5.0 tests=ALL_TRUSTED,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMMYdk144227 for ; Fri, 22 Jan 2010 16:22:34 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Subject: Your message to xfs awaits moderator approval From: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com Message-ID: Date: Fri, 22 Jan 2010 16:22:14 -0600 Precedence: bulk X-BeenThere: xfs@oss.sgi.com X-Mailman-Version: 2.1.11 List-Id: XFS Filesystem from SGI X-List-Administrivia: yes Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com Your mail to 'xfs' with the subject [XFS updates] XFS development tree annotated tag, v2.6.33-rc1, created. v2.6.33-rc1 Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 534892 bytes with a limit of 500 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://oss.sgi.com/mailman/confirm/xfs/1211047af36509418146fc904c0ac624bb9f525a From xfs-bounces@oss.sgi.com Fri Jan 22 16:33:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.6 required=5.0 tests=ALL_TRUSTED,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0MMM3hw144088 for ; Fri, 22 Jan 2010 16:22:03 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Subject: Your message to xfs awaits moderator approval From: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com Message-ID: Date: Fri, 22 Jan 2010 16:21:41 -0600 Precedence: bulk X-BeenThere: xfs@oss.sgi.com X-Mailman-Version: 2.1.11 List-Id: XFS Filesystem from SGI X-List-Administrivia: yes Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com Your mail to 'xfs' with the subject [XFS updates] XFS development tree annotated tag, v2.6.32-rc2, created. v2.6.32-rc1 Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 550811 bytes with a limit of 500 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://oss.sgi.com/mailman/confirm/xfs/6831abdd6f9ac19091d9a3b4b6971e1d517d7a5a From sandeen@sandeen.net Fri Jan 22 22:38:41 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0N4cfZI165473 for ; Fri, 22 Jan 2010 22:38:41 -0600 X-ASG-Debug-ID: 1264221582-447f00c40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 52A2E185C36 for ; Fri, 22 Jan 2010 20:39:42 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id IGfv1D4Azgv2DqVr for ; Fri, 22 Jan 2010 20:39:42 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 33AA2111C6A7; Fri, 22 Jan 2010 22:39:42 -0600 (CST) Message-ID: <4B5A7D8E.3090001@sandeen.net> Date: Fri, 22 Jan 2010 22:39:42 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: nerovid@gmail.com CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Assistance needed mounting XFS version 1 filesystem Subject: Re: Assistance needed mounting XFS version 1 filesystem References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264221583 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20555 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Jordan wrote: > Hello, > I have been trying to mount an old Maxoptix optical drive with > XFS-formatted media for a week now without success. From what I can > tell, the media were formatted using XFS version 1, support for which > was removed from the Linux kernel a few years back. > > Here is the output of fdisk -l: > Disk /dev/sda (SGI disk label): 64 heads, 32 sectors, 1096 cylinders > Units = cylinders of 2048 * 512 bytes > > ----- partitions ----- > Pt# Device Info Start End Sectors Id System > 1: /dev/sda1 boot 2 986 2018340 a SGI xfs > 2: /dev/sda2 swap 987 1096 224490 3 SGI raw > 9: /dev/sda3 0 1 2100 0 SGI volhdr > 11: /dev/sda4 0 1096 2244930 6 SGI volume > ----- Bootinfo ----- > Bootfile: /unix > ----- Directory Entries ----- > 0: sgilabel sector 2 size 512 > > When I try to mount the /dev/sda1 partition, I get the following error: > > # mount -t xfs /dev/sda1 /optical > mount: block device /dev/sda1 is write-protected, mounting read-only > mount: /dev/sda1: can't read superblock > > # dmesg | tail > Current sda: sense key Data Protect > Additional sense: Write protected > end_request: I/O error, dev sda, sector 1017642 Seems like this might be a real IO error... it's within the size of sda1 (from above), and also within the filesystem geometry (from db output below) Maybe you can try creating a dd_rescue image of the fs, and mount that? -Eric > xfs_force_shutdown(sda1,0x1) called from line 353 of file > fs/xfs/xfs_rw.c. Return address = 0x44ff9bfa > Filesystem "sda1": I/O Error Detected. Shutting down filesystem: sda1 > Please umount the filesystem, and rectify the problem(s) > I/O error in filesystem ("sda1") meta-data dev sda1 block 0xf7dfe > ("xlog_bwrite") error 5 buf count 131072 > XFS: failed to locate log tail > XFS: log mount/recovery failed > XFS: log mount failed > > xfs_check comes back with no errors. > > # xfs_db /dev/sda1 > xfs_db> sb 0 > xfs_db> p > magicnum = 0x58465342 > blocksize = 4096 > dblocks = 252292 > rblocks = 0 > rextents = 0 > uuid = d4bc0c01-b21d-1001-866b-0800690a794d > logstart = 131076 > rootino = 128 > rbmino = 129 > rsumino = 130 > rextsize = 16 > agblocks = 31537 > agcount = 8 > rbmblocks = 0 > logblocks = 1000 > versionnum = 0x1 > sectsize = 512 > inodesize = 256 > inopblock = 16 > fname = "\000\000\000\000\000\000\000\000\000\000\000\000" > blocklog = 12 > sectlog = 9 > inodelog = 8 > inopblog = 4 > agblklog = 15 > rextslog = 0 > inprogress = 0 > imax_pct = 25 > icount = 704 > ifree = 322 > fdblocks = 122918 > frextents = 0 > uquotino = 0 > gquotino = 0 > qflags = 0 > flags = 0 > shared_vn = 0 > inoalignmt = 0 > unit = 0 > width = 0 > dirblklog = 0 > logsectlog = 0 > logsectsize = 0 > logsunit = 0 > features2 = 0 > xfs_db> > > My running kernel is 2.6.5-1.358 on Fedora Core 2. I went with an old > distribution to try to find a kernel that still has XFS version 1 > support built in. > > Any help or advice you could provide would be great. > > Jordan > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From SRS0+I2Ds+52+fromorbit.com=david@internode.on.net Sat Jan 23 05:59:01 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_44,J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0NBx0iW184421 for ; Sat, 23 Jan 2010 05:59:00 -0600 X-ASG-Debug-ID: 1264247998-5bfc014c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 175D5135AB3F for ; Sat, 23 Jan 2010 03:59:58 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id hxSoI7tcLuU2ZGqu for ; Sat, 23 Jan 2010 03:59:58 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11423994-1927428 for multiple; Sat, 23 Jan 2010 22:29:57 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NYeeh-000173-2t; Sat, 23 Jan 2010 22:59:55 +1100 Date: Sat, 23 Jan 2010 22:59:55 +1100 From: Dave Chinner To: Alex Elder Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [RFC] xfstests: define an INTENSITY level for testing Subject: Re: [RFC] xfstests: define an INTENSITY level for testing Message-ID: <20100123115955.GD25842@discord.disaster> References: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69B2@cf--amer001e--3.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69B2@cf--amer001e--3.americas.sgi.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1264248000 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20575 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 21, 2010 at 03:36:07PM -0600, Alex Elder wrote: > I've often felt it would be nice if testing could be > done to a specified level of intensity. That way, > for example, I could perform a full suite of tests > but have them just do very basic stuff, so that I > get coverage but without having to wait as long as > is required for a hard-core test. Similarly, before > a release I'd like to run tests exhaustively, to > make sure things get really exercised. At first glance, this sounds like a good idea to control the runtime of test runs. However, after thinking about it for a while and reflecting on the approach the QA group in ASG (long live ASG!) took for release testing, I have a few concerns about using the concept in xfstests. > Right now there is a "quick" group defined for xfstests, > but what I'm talking about is more of a parameter applied > to all tests so that certain functions could be lightly > tested that might not otherwise be covered by one of the > "quick" ones. We might even be able to get rid of the > "quick" group. And an inherently long-running test > might make itself not run if the intensity level was > not high enough. IIRC we introduced the "quick" group as a way to provide developers sufficient coverage to flush out major bugs in patches quickly, not provide complete test coverage. i.e. to speed up the development process, not speed up or improve the QA process. Patches still need to pass the "auto" group tests without regressions before being posted for review.... > So I propse we defined a global, set in common.rc, which > defines an integer 0 < INTENSITY <= 100, which would > define how hard each test should push. INTENSITY of > 100, would cause all tests would do their most exhaustive > and/or demanding exercises. INTENSITY of 1 would do very > superficial testing. Default might be 50. How would you solve the problem that "intensity" is very dependent on the system the tests are being run on? e.g. Something run on an SSD is going to run far faster than the same test on a UML instance on a slow laptop disk, even though they run at the same "intensity" level. Another concern I have is that "intensity" might have different causes on different systems. e.g. on UML, it is forking new processes that causes the massive slowdowns (300ms for a fork+exec on a 2GHz Athlon64), not the amount of IO. Hence changing the number of files or IOPS won't really change the runtime of tests significantly if the problem is that the test runs "expr" 100,000 times. e.g: http://git.kernel.org/?p=fs/xfs/xfstests-dev.git;a=commit;h=e714acc0ef37031b9a5a522703f2832f139c22e0 > Tests can simply ignore the INTENSITY value, and initially > that will be the case for most tests. It may not even make > sense for a given test to have its activity scaled by this > setting. Once we define it though, tests can be adapted > to make use of it where possible. > > Below is a patch that shows how such feature might be > used for tests 104 and 109. /me looks at the changes I think this is the wrong fix for decreasing test 104 runtime. The fstress processes only need to run while the grows are in progress, once they are complete the fsstress processes can be killed rather than waited for. Using kill then wait would reduce the runtime without potentially compromising the test - if the number of ops are too low then fsstress doesn't run long enough to effectively load up the filesystem during the grow process to trigger the deadlock conditions. For 109 I think changing the number of files compromises the initial conditions required to trigger the deadlock on kernels <= 2.6.18. It's an enospc test on a 160MB filesystem and the number of files it uses is for fragementing free space sufficiently to trigger out-of-order AG locking when ENOSPC in and AG occurs. Changing the number of files results in different freespace fragmentation patterns and hence may not trigger the deadlock condition.... ---- Stepping back and looking at this from an overall QA coverage point of view, it seems to me that you are trying to make xfstests be something that it is not intended to be. You want "exhaustive" test coverage before a release, but xfstests have never been a vehicle for exhaustive testing. That is, xfstests is really designed to provide maximal code coverage with some load and stress tests thrown in, but it is not intended to be the only testing mechanism for the filesystem. It might be instructive to go back and look at what the old SGI ASG (long live ASG!) test group were doing (I hope it was archived!). They were running xfstests on multiple platforms (x86_64, PPC and ia64) for code coverage but not stress. To improve coverage, every second xfstest run used a different set of non-default mkfs and mount options to exercise different code paths (e.g. blocksize < pagesize, directory block size > page size, etc) which otherwise would not be tested. There were separate test plans, procedures, processes and scripts to execute long running stress and load tests. These were run as part of the QA validation prior to major releases (the angle you appear to be coming from, Alex) rather than day-to-day testing of the current dev kernels. More importantly, the load/stress tests weren't aimed at specific XFS features (already handled by xfstests) - instead they were high level tests aimed at trying to break the system. e.g. one of the stress tests was running tens of local processes creating and destroying large and small files simultaneously with NFS clients doing the same thing on the same filesystem whilst turning quotas on and off randomly and running concurrent filesystem snapshots and then mounting and running filesystem checks on the snapshots to ensure they were consistent. These tests would run for up to a week at a time, so it takes dedicated resources to run this sort of testing. For load point tests, similar tests were run but the number of processes creating load were varied over time so that the system load varied between almost idle to almost 100% to ensure that there weren't problems that light or medium loads exposed. Once again these were long running tests on multiple platforms. ---- In my experience, exhaustive testing requires a combination of testing from low level point tests (xfstests) all the way up to high level system level integration tests. The methods and test processes for these are different as the focus for the tests are different. Hence I agree with your intent and reasoning behind intensity level based stress testing, but I think that xfstests is not the right sort of test suite to use for this type of testing. I think we'd do better to try to recover some of the high level stress tests and processes from the corpse of ASG than to try to use xfstests for this.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+ARMe+52+fromorbit.com=david@internode.on.net Sat Jan 23 06:08:43 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_14 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0NC8hR6184826 for ; Sat, 23 Jan 2010 06:08:43 -0600 X-ASG-Debug-ID: 1264248583-532f02a90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7B12212F5D47 for ; Sat, 23 Jan 2010 04:09:44 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id xUOClYqzjucIZlxp for ; Sat, 23 Jan 2010 04:09:44 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11581453-1927428 for multiple; Sat, 23 Jan 2010 22:39:43 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NYeo9-00017w-Hb; Sat, 23 Jan 2010 23:09:41 +1100 Date: Sat, 23 Jan 2010 23:09:41 +1100 From: Dave Chinner To: "Richard Troxell (rtroxell)" Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.23 kdb in xfs_bmbt_get_block with unwritten extents Subject: Re: 2.6.23 kdb in xfs_bmbt_get_block with unwritten extents Message-ID: <20100123120941.GE25842@discord.disaster> References: <212AA327A3557741A058E787E06188731FA4AA@xmb-sjc-219.amer.cisco.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <212AA327A3557741A058E787E06188731FA4AA@xmb-sjc-219.amer.cisco.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1264248585 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20576 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 21, 2010 at 05:41:48PM -0800, Richard Troxell (rtroxell) wrote: > Hello All, > > I am getting random kdbs when creating preallocated files that are > excessively 'holey' (ex: 500MB+ file with alternating 4K written > 4K unwritten extents). Creating such files is not my intention, > and is being addressing in the userspace writer. That said, I am > still concerned with running into kdb. > > I am currently running 2.6.23.9, and have done some digging > through the changelogs, but cant seem to find a match. Also, > 2.6.24 seems to have a massive rewrite in this area, which > significantly limits the scope that I can search. > > The cause of the crash is a straigtforward NULL derference in > xfs_bmap_btree.c:xfs_bmbt_get_block(), but I suspect the root > cause is going to be some complex condition that corrupts the > cursor... There were lots of bugs found and fixed in the btree code between 2.6.23 and 2.6.26 that caused filesystem corruption or crashes like this one. If you are hitting such problems, I'd suggest your easiest solution is to upgrade to >= 2.6.27 and you should see the problems go away. > Given the trace, I assume that if I avoid all B+tree managed > unwritten extents, I can avoid the crash. However avoiding such > files completely seems a bit unrealistic, as I have the need to > store files with a reasonable amount of holes... The problems really had nothing to do with unwritten extents; writing into holes or unwritten extents were simply one way to trigger the corner cases containing the bugs. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+iZDP+52+fromorbit.com=david@internode.on.net Sat Jan 23 06:29:57 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0NCTuaE185539 for ; Sat, 23 Jan 2010 06:29:56 -0600 X-ASG-Debug-ID: 1264249857-533903b00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D871412F5E34 for ; Sat, 23 Jan 2010 04:30:57 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id 5PjdHBa8MwD7H3rz for ; Sat, 23 Jan 2010 04:30:57 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11561512-1927428 for multiple; Sat, 23 Jan 2010 23:00:56 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NYf8g-00018q-0X; Sat, 23 Jan 2010 23:30:54 +1100 Date: Sat, 23 Jan 2010 23:30:53 +1100 From: Dave Chinner To: bpm@sgi.com Cc: Emmanuel Florac , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: nfs performance delta between filesystems Subject: Re: nfs performance delta between filesystems Message-ID: <20100123123053.GF25842@discord.disaster> References: <20100122185419.63ae6430@harpe.intellique.com> <20100122183848.GB28561@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100122183848.GB28561@sgi.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1264249858 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20576 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 22, 2010 at 12:38:48PM -0600, bpm@sgi.com wrote: > Hey Emmanuel, > > I did some research on this in April last year on an old, old kernel. > One of the codepaths I flagged: > > nfsd_create > write_inode_now > __sync_single_inode > write_inode > xfs_fs_write_inode > xfs_inode_flush > xfs_iflush > > There were small gains to be had by reordering the sync of the parent and > child syncs where the two inodes were in the same cluster. The larger > problem seemed to be that we're not treating the log as stable storage. > By calling write_inode_now we've written the changes to the log first > and then gone and also written them out to the inode. Pretty much right, but there are historical reasons for that behaviour. The ->write_inode() path is the only method for the higher layers to say "write this inode to disk". That's how XFS has been treating it for a long time - as a command to _physically_ write a dirty inode some time after it was first changed and the transaction is already on disk. Unfortunately, NFS is using the same call for is a method for saying "commit this changed inode to disk immediately", which is a different semantic to the way the sync code uses it and physical inode IO really hurts here. > nfsd_create, nfsd_link, and nfsd_setattr all do this (or do in the old > kernel I'm looking at). I have a patchset that changes > this to an fsync so we force the log and call it good. I'll be happy to > dust it off if someone hasn't already addressed this situation. The delayed write inode flushing patchset I'm finalising does this. We now have reliable tracking of dirty inodes in XFS and a method for efficient physical writeback, so we no longer need to rely on ->write_inode to tell us to write inodes to disk. Hence the patchset turns the inode write into a an xfs_fsync() if it is a sync write or a delayed write if it is async. I'm hoping to have that ready for .34 inclusion sometime next week... Cheers, Dave. -- Dave Chinner david@fromorbit.com From jpiszcz@lucidpixels.com Sat Jan 23 08:08:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.1 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0NE8JYP188961 for ; Sat, 23 Jan 2010 08:08:20 -0600 X-ASG-Debug-ID: 1264255759-16c102690000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2F402135CF6F for ; Sat, 23 Jan 2010 06:09:19 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id UZ03HBJ7BjcsAQNw for ; Sat, 23 Jan 2010 06:09:19 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 5504B8EFF8; Sat, 23 Jan 2010 09:09:19 -0500 (EST) Date: Sat, 23 Jan 2010 09:09:19 -0500 (EST) From: Justin Piszcz To: linux-kernel@vger.kernel.org cc: linux-raid@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: 2.6.32.3: INFO: task flush-9:3:29267 blocked for more than 120 seconds. Subject: 2.6.32.3: INFO: task flush-9:3:29267 blocked for more than 120 seconds. Message-ID: User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1264255761 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20583 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hello, I recently saw this under 2.6.32.3: Running raid-1 w/2 raptors & a raid-5 with some 750GB drives. All mdadm / 0.90 superblocks / XFS. Debian Testing x86_64 Is this normal? [1128155.188452] md: data-check of RAID array md0 [1128155.188465] md: minimum _guaranteed_ speed: 30000 KB/sec/disk. [1128155.188468] md: using maximum available idle IO bandwidth (but not more than 50000 KB/sec) for data-check. [1128155.188473] md: using 128k window, over a total of 16787776 blocks. [1128156.201359] md: delaying data-check of md1 until md0 has finished (they share one or more physical units) [1128157.204843] md: delaying data-check of md2 until md1 has finished (they share one or more physical units) [1128157.204907] md: delaying data-check of md1 until md0 has finished (they share one or more physical units) [1128158.208350] md: data-check of RAID array md3 [1128158.208363] md: minimum _guaranteed_ speed: 1000 KB/sec/disk. [1128158.208366] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for data-check. [1128158.208373] md: using 128k window, over a total of 732571648 blocks. [1128493.349066] md: md0: data-check done. [1128493.368842] md: data-check of RAID array md1 [1128493.368846] md: delaying data-check of md2 until md1 has finished (they share one or more physical units) [1128493.368864] md: minimum _guaranteed_ speed: 30000 KB/sec/disk. [1128493.368867] md: using maximum available idle IO bandwidth (but not more than 50000 KB/sec) for data-check. [1128493.368871] md: using 128k window, over a total of 136448 blocks. [1128496.003606] md: md1: data-check done. [1128496.026560] md: data-check of RAID array md2 [1128496.026578] md: minimum _guaranteed_ speed: 30000 KB/sec/disk. [1128496.026581] md: using maximum available idle IO bandwidth (but not more than 50000 KB/sec) for data-check. [1128496.026588] md: using 128k window, over a total of 129596288 blocks. [1131179.410906] md: md2: data-check done. [1148640.440503] INFO: task xfssyncd:1655 blocked for more than 120 seconds. [1148640.440516] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [1148640.440520] xfssyncd D ffff88023fb6a028 0 1655 2 0x00000000 [1148640.440533] ffff8800af9693e0 0000000000000046 ffff8801f866e6d8 000000002baa9928 [1148640.440545] 000000000000c928 ffff88023a329fd8 ffff88023f956210 ffff88023f956488 [1148640.440552] 0000000100000000 ffffffff8134cb47 ffff88002828c928 ffff88023f956488 [1148640.440558] Call Trace: [1148640.440572] [] ? get_active_stripe+0x417/0x630 [1148640.440577] [] ? md_write_start+0xb5/0x1b0 [1148640.440583] [] ? autoremove_wake_function+0x0/0x30 [1148640.440587] [] ? release_stripe+0x3d/0x60 [1148640.440592] [] ? make_request+0x3c/0x700 [1148640.440595] [] ? autoremove_wake_function+0x0/0x30 [1148640.440603] [] ? cpumask_next_and+0x23/0x40 [1148640.440606] [] ? md_make_request+0xbc/0x130 [1148640.440612] [] ? generic_make_request+0x1ec/0x2f0 [1148640.440616] [] ? submit_bio+0x5a/0xe0 [1148640.440620] [] ? _xfs_buf_ioapply+0x120/0x280 [1148640.440626] [] ? xfs_buf_iorequest+0x29/0x90 [1148640.440631] [] ? xlog_bdstrat_cb+0x3d/0x50 [1148640.440638] [] ? xlog_sync+0x20b/0x4e0 [1148640.440641] [] ? xlog_state_sync_all+0x1b8/0x230 [1148640.440647] [] ? del_timer_sync+0x1a/0x30 [1148640.440650] [] ? _xfs_log_force+0x6b/0x80 [1148640.440654] [] ? xfs_log_force+0xb/0x40 [1148640.440658] [] ? xfs_sync_worker+0x19/0x60 [1148640.440662] [] ? xfssyncd+0x13c/0x1c0 [1148640.440665] [] ? xfssyncd+0x0/0x1c0 [1148640.440668] [] ? kthread+0x96/0xa0 [1148640.440674] [] ? child_rip+0xa/0x20 [1148640.440680] [] ? kthread+0x0/0xa0 [1148640.440683] [] ? child_rip+0x0/0x20 [1148640.440730] INFO: task flush-9:3:29267 blocked for more than 120 seconds. [1148640.440733] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [1148640.440736] flush-9:3 D ffff88023fb6a028 0 29267 2 0x00000000 [1148640.440743] ffff88023f9578d0 0000000000000046 ffff8801f868e108 ffff880109a41900 [1148640.440749] 000000000000c928 ffff880109a41fd8 ffff88023fa82bf0 ffff88023fa82e68 [1148640.440758] 0000000209a41944 ffffffff811babef 0000000000000000 ffff88023fa82e68 [1148640.440764] Call Trace: [1148640.440770] [] ? xfs_bmap_search_multi_extents+0xaf/0x120 [1148640.440774] [] ? md_write_start+0xb5/0x1b0 [1148640.440780] [] ? autoremove_wake_function+0x0/0x30 [1148640.440784] [] ? make_request+0x3c/0x700 [1148640.440790] [] ? test_set_page_writeback+0xd4/0x170 [1148640.440794] [] ? md_make_request+0xbc/0x130 [1148640.440798] [] ? generic_make_request+0x1ec/0x2f0 [1148640.440805] [] ? xfs_cluster_write+0x11c/0x160 [1148640.440809] [] ? submit_bio+0x5a/0xe0 [1148640.440815] [] ? __mark_inode_dirty+0x68/0x170 [1148640.440819] [] ? xfs_submit_ioend_bio+0x4f/0x70 [1148640.440822] [] ? xfs_submit_ioend+0x9a/0xd0 [1148640.440826] [] ? xfs_page_state_convert+0x3e2/0x6c0 [1148640.440830] [] ? xfs_vm_writepage+0x77/0x130 [1148640.440834] [] ? __writepage+0xa/0x40 [1148640.440840] [] ? write_cache_pages+0x1df/0x3c0 [1148640.440844] [] ? __writepage+0x0/0x40 [1148640.440848] [] ? writeback_single_inode+0xd2/0x390 [1148640.440851] [] ? writeback_inodes_wb+0x3ff/0x5e0 [1148640.440856] [] ? wb_writeback+0x11e/0x1f0 [1148640.440859] [] ? try_to_del_timer_sync+0x5e/0x90 [1148640.440863] [] ? wb_do_writeback+0x17b/0x180 [1148640.440866] [] ? bdi_writeback_task+0x5d/0xa0 [1148640.440871] [] ? bdi_start_fn+0x0/0xf0 [1148640.440874] [] ? bdi_start_fn+0x7e/0xf0 [1148640.440877] [] ? bdi_start_fn+0x0/0xf0 [1148640.440880] [] ? kthread+0x96/0xa0 [1148640.440884] [] ? child_rip+0xa/0x20 [1148640.440888] [] ? kthread+0x0/0xa0 [1148640.440893] [] ? child_rip+0x0/0x20 [1148760.440444] INFO: task xfssyncd:1655 blocked for more than 120 seconds. [1148760.440458] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [1148760.440462] xfssyncd D ffff88023fb6a028 0 1655 2 0x00000000 [1148760.440469] ffff8800af9693e0 0000000000000046 ffff8801f866e6d8 000000002baa9928 [1148760.440483] 000000000000c928 ffff88023a329fd8 ffff88023f956210 ffff88023f956488 [1148760.440489] 0000000100000000 ffffffff8134cb47 ffff88002828c928 ffff88023f956488 [1148760.440497] Call Trace: [1148760.440510] [] ? get_active_stripe+0x417/0x630 [1148760.440516] [] ? md_write_start+0xb5/0x1b0 [1148760.440523] [] ? autoremove_wake_function+0x0/0x30 [1148760.440528] [] ? release_stripe+0x3d/0x60 [1148760.440532] [] ? make_request+0x3c/0x700 [1148760.440536] [] ? autoremove_wake_function+0x0/0x30 [1148760.440542] [] ? cpumask_next_and+0x23/0x40 [1148760.440546] [] ? md_make_request+0xbc/0x130 [1148760.440551] [] ? generic_make_request+0x1ec/0x2f0 [1148760.440556] [] ? submit_bio+0x5a/0xe0 [1148760.440561] [] ? _xfs_buf_ioapply+0x120/0x280 [1148760.440565] [] ? xfs_buf_iorequest+0x29/0x90 [1148760.440572] [] ? xlog_bdstrat_cb+0x3d/0x50 [1148760.440576] [] ? xlog_sync+0x20b/0x4e0 [1148760.440580] [] ? xlog_state_sync_all+0x1b8/0x230 [1148760.440586] [] ? del_timer_sync+0x1a/0x30 [1148760.440590] [] ? _xfs_log_force+0x6b/0x80 [1148760.440593] [] ? xfs_log_force+0xb/0x40 [1148760.440598] [] ? xfs_sync_worker+0x19/0x60 [1148760.440601] [] ? xfssyncd+0x13c/0x1c0 [1148760.440605] [] ? xfssyncd+0x0/0x1c0 [1148760.440609] [] ? kthread+0x96/0xa0 [1148760.440615] [] ? child_rip+0xa/0x20 [1148760.440619] [] ? kthread+0x0/0xa0 [1148760.440623] [] ? child_rip+0x0/0x20 [1148760.440667] INFO: task flush-9:3:29267 blocked for more than 120 seconds. [1148760.440671] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [1148760.440673] flush-9:3 D ffff88023fb6a028 0 29267 2 0x00000000 [1148760.440679] ffff88023f9578d0 0000000000000046 ffff8801f868e108 ffff880109a41900 [1148760.440686] 000000000000c928 ffff880109a41fd8 ffff88023fa82bf0 ffff88023fa82e68 [1148760.440693] 0000000209a41944 ffffffff811babef 0000000000000000 ffff88023fa82e68 [1148760.440701] Call Trace: [1148760.440707] [] ? xfs_bmap_search_multi_extents+0xaf/0x120 [1148760.440711] [] ? md_write_start+0xb5/0x1b0 [1148760.440716] [] ? autoremove_wake_function+0x0/0x30 [1148760.440720] [] ? make_request+0x3c/0x700 [1148760.440725] [] ? test_set_page_writeback+0xd4/0x170 [1148760.440730] [] ? md_make_request+0xbc/0x130 [1148760.440733] [] ? generic_make_request+0x1ec/0x2f0 [1148760.440738] [] ? xfs_cluster_write+0x11c/0x160 [1148760.440742] [] ? submit_bio+0x5a/0xe0 [1148760.440748] [] ? __mark_inode_dirty+0x68/0x170 [1148760.440751] [] ? xfs_submit_ioend_bio+0x4f/0x70 [1148760.440755] [] ? xfs_submit_ioend+0x9a/0xd0 [1148760.440759] [] ? xfs_page_state_convert+0x3e2/0x6c0 [1148760.440764] [] ? xfs_vm_writepage+0x77/0x130 [1148760.440767] [] ? __writepage+0xa/0x40 [1148760.440770] [] ? write_cache_pages+0x1df/0x3c0 [1148760.440774] [] ? __writepage+0x0/0x40 [1148760.440778] [] ? writeback_single_inode+0xd2/0x390 [1148760.440782] [] ? writeback_inodes_wb+0x3ff/0x5e0 [1148760.440786] [] ? wb_writeback+0x11e/0x1f0 [1148760.440791] [] ? try_to_del_timer_sync+0x5e/0x90 [1148760.440794] [] ? wb_do_writeback+0x17b/0x180 [1148760.440798] [] ? bdi_writeback_task+0x5d/0xa0 [1148760.440802] [] ? bdi_start_fn+0x0/0xf0 [1148760.440805] [] ? bdi_start_fn+0x7e/0xf0 [1148760.440808] [] ? bdi_start_fn+0x0/0xf0 [1148760.440812] [] ? kthread+0x96/0xa0 [1148760.440816] [] ? child_rip+0xa/0x20 [1148760.440819] [] ? kthread+0x0/0xa0 [1148760.440822] [] ? child_rip+0x0/0x20 [1148880.440706] INFO: task xfssyncd:1655 blocked for more than 120 seconds. [1148880.440718] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [1148880.440723] xfssyncd D ffff88023fb6a028 0 1655 2 0x00000000 [1148880.440730] ffff8800af9693e0 0000000000000046 ffff8801f866e6d8 000000002baa9928 [1148880.440744] 000000000000c928 ffff88023a329fd8 ffff88023f956210 ffff88023f956488 [1148880.440751] 0000000100000000 ffffffff8134cb47 ffff88002828c928 ffff88023f956488 [1148880.440757] Call Trace: [1148880.440767] [] ? get_active_stripe+0x417/0x630 [1148880.440771] [] ? md_write_start+0xb5/0x1b0 [1148880.440777] [] ? autoremove_wake_function+0x0/0x30 [1148880.440781] [] ? release_stripe+0x3d/0x60 [1148880.440785] [] ? make_request+0x3c/0x700 [1148880.440790] [] ? autoremove_wake_function+0x0/0x30 [1148880.440796] [] ? cpumask_next_and+0x23/0x40 [1148880.440801] [] ? md_make_request+0xbc/0x130 [1148880.440806] [] ? generic_make_request+0x1ec/0x2f0 [1148880.440810] [] ? submit_bio+0x5a/0xe0 [1148880.440817] [] ? _xfs_buf_ioapply+0x120/0x280 [1148880.440820] [] ? xfs_buf_iorequest+0x29/0x90 [1148880.440825] [] ? xlog_bdstrat_cb+0x3d/0x50 [1148880.440829] [] ? xlog_sync+0x20b/0x4e0 [1148880.440832] [] ? xlog_state_sync_all+0x1b8/0x230 [1148880.440838] [] ? del_timer_sync+0x1a/0x30 [1148880.440842] [] ? _xfs_log_force+0x6b/0x80 [1148880.440845] [] ? xfs_log_force+0xb/0x40 [1148880.440849] [] ? xfs_sync_worker+0x19/0x60 [1148880.440853] [] ? xfssyncd+0x13c/0x1c0 [1148880.440856] [] ? xfssyncd+0x0/0x1c0 [1148880.440859] [] ? kthread+0x96/0xa0 [1148880.440864] [] ? child_rip+0xa/0x20 [1148880.440868] [] ? kthread+0x0/0xa0 [1148880.440871] [] ? child_rip+0x0/0x20 [1148880.440914] INFO: task flush-9:3:29267 blocked for more than 120 seconds. [1148880.440917] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [1148880.440919] flush-9:3 D ffff88023fb6a028 0 29267 2 0x00000000 [1148880.440925] ffff88023f9578d0 0000000000000046 ffff8801f868e108 ffff880109a41900 [1148880.440934] 000000000000c928 ffff880109a41fd8 ffff88023fa82bf0 ffff88023fa82e68 [1148880.440944] 0000000209a41944 ffffffff811babef 0000000000000000 ffff88023fa82e68 [1148880.440953] Call Trace: [1148880.440959] [] ? xfs_bmap_search_multi_extents+0xaf/0x120 [1148880.440963] [] ? md_write_start+0xb5/0x1b0 [1148880.440968] [] ? autoremove_wake_function+0x0/0x30 [1148880.440972] [] ? make_request+0x3c/0x700 [1148880.440976] [] ? test_set_page_writeback+0xd4/0x170 [1148880.440982] [] ? md_make_request+0xbc/0x130 [1148880.440987] [] ? generic_make_request+0x1ec/0x2f0 [1148880.440992] [] ? xfs_cluster_write+0x11c/0x160 [1148880.440997] [] ? submit_bio+0x5a/0xe0 [1148880.441002] [] ? __mark_inode_dirty+0x68/0x170 [1148880.441006] [] ? xfs_submit_ioend_bio+0x4f/0x70 [1148880.441009] [] ? xfs_submit_ioend+0x9a/0xd0 [1148880.441013] [] ? xfs_page_state_convert+0x3e2/0x6c0 [1148880.441017] [] ? xfs_vm_writepage+0x77/0x130 [1148880.441020] [] ? __writepage+0xa/0x40 [1148880.441023] [] ? write_cache_pages+0x1df/0x3c0 [1148880.441026] [] ? __writepage+0x0/0x40 [1148880.441030] [] ? writeback_single_inode+0xd2/0x390 [1148880.441034] [] ? writeback_inodes_wb+0x3ff/0x5e0 [1148880.441037] [] ? wb_writeback+0x11e/0x1f0 [1148880.441044] [] ? try_to_del_timer_sync+0x5e/0x90 [1148880.441048] [] ? wb_do_writeback+0x17b/0x180 [1148880.441051] [] ? bdi_writeback_task+0x5d/0xa0 [1148880.441055] [] ? bdi_start_fn+0x0/0xf0 [1148880.441059] [] ? bdi_start_fn+0x7e/0xf0 [1148880.441062] [] ? bdi_start_fn+0x0/0xf0 [1148880.441066] [] ? kthread+0x96/0xa0 [1148880.441069] [] ? child_rip+0xa/0x20 [1148880.441072] [] ? kthread+0x0/0xa0 [1148880.441075] [] ? child_rip+0x0/0x20 [1149000.440407] INFO: task xfssyncd:1655 blocked for more than 120 seconds. [1149000.440421] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [1149000.440427] xfssyncd D ffff88023fb6a028 0 1655 2 0x00000000 [1149000.440438] ffff8800af9693e0 0000000000000046 ffff8801f866e6d8 000000002baa9928 [1149000.440446] 000000000000c928 ffff88023a329fd8 ffff88023f956210 ffff88023f956488 [1149000.440452] 0000000100000000 ffffffff8134cb47 ffff88002828c928 ffff88023f956488 [1149000.440461] Call Trace: [1149000.440475] [] ? get_active_stripe+0x417/0x630 [1149000.440481] [] ? md_write_start+0xb5/0x1b0 [1149000.440488] [] ? autoremove_wake_function+0x0/0x30 [1149000.440493] [] ? release_stripe+0x3d/0x60 [1149000.440497] [] ? make_request+0x3c/0x700 [1149000.440501] [] ? autoremove_wake_function+0x0/0x30 [1149000.440506] [] ? cpumask_next_and+0x23/0x40 [1149000.440510] [] ? md_make_request+0xbc/0x130 [1149000.440515] [] ? generic_make_request+0x1ec/0x2f0 [1149000.440520] [] ? submit_bio+0x5a/0xe0 [1149000.440524] [] ? _xfs_buf_ioapply+0x120/0x280 [1149000.440528] [] ? xfs_buf_iorequest+0x29/0x90 [1149000.440532] [] ? xlog_bdstrat_cb+0x3d/0x50 [1149000.440536] [] ? xlog_sync+0x20b/0x4e0 [1149000.440544] [] ? xlog_state_sync_all+0x1b8/0x230 [1149000.440549] [] ? del_timer_sync+0x1a/0x30 [1149000.440553] [] ? _xfs_log_force+0x6b/0x80 [1149000.440556] [] ? xfs_log_force+0xb/0x40 [1149000.440560] [] ? xfs_sync_worker+0x19/0x60 [1149000.440563] [] ? xfssyncd+0x13c/0x1c0 [1149000.440567] [] ? xfssyncd+0x0/0x1c0 [1149000.440570] [] ? kthread+0x96/0xa0 [1149000.440578] [] ? child_rip+0xa/0x20 [1149000.440582] [] ? kthread+0x0/0xa0 [1149000.440585] [] ? child_rip+0x0/0x20 [1149000.440633] INFO: task flush-9:3:29267 blocked for more than 120 seconds. [1149000.440635] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [1149000.440637] flush-9:3 D ffff88023fb6a028 0 29267 2 0x00000000 [1149000.440643] ffff88023f9578d0 0000000000000046 ffff8801f868e108 ffff880109a41900 [1149000.440654] 000000000000c928 ffff880109a41fd8 ffff88023fa82bf0 ffff88023fa82e68 [1149000.440660] 0000000209a41944 ffffffff811babef 0000000000000000 ffff88023fa82e68 [1149000.440669] Call Trace: [1149000.440676] [] ? xfs_bmap_search_multi_extents+0xaf/0x120 [1149000.440680] [] ? md_write_start+0xb5/0x1b0 [1149000.440684] [] ? autoremove_wake_function+0x0/0x30 [1149000.440687] [] ? make_request+0x3c/0x700 [1149000.440691] [] ? test_set_page_writeback+0xd4/0x170 [1149000.440697] [] ? md_make_request+0xbc/0x130 [1149000.440701] [] ? generic_make_request+0x1ec/0x2f0 [1149000.440710] [] ? xfs_cluster_write+0x11c/0x160 [1149000.440713] [] ? submit_bio+0x5a/0xe0 [1149000.440719] [] ? __mark_inode_dirty+0x68/0x170 [1149000.440723] [] ? xfs_submit_ioend_bio+0x4f/0x70 [1149000.440727] [] ? xfs_submit_ioend+0x9a/0xd0 [1149000.440731] [] ? xfs_page_state_convert+0x3e2/0x6c0 [1149000.440736] [] ? xfs_vm_writepage+0x77/0x130 [1149000.440739] [] ? __writepage+0xa/0x40 [1149000.440743] [] ? write_cache_pages+0x1df/0x3c0 [1149000.440745] [] ? __writepage+0x0/0x40 [1149000.440749] [] ? writeback_single_inode+0xd2/0x390 [1149000.440753] [] ? writeback_inodes_wb+0x3ff/0x5e0 [1149000.440756] [] ? wb_writeback+0x11e/0x1f0 [1149000.440760] [] ? try_to_del_timer_sync+0x5e/0x90 [1149000.440764] [] ? wb_do_writeback+0x17b/0x180 [1149000.440767] [] ? bdi_writeback_task+0x5d/0xa0 [1149000.440774] [] ? bdi_start_fn+0x0/0xf0 [1149000.440776] [] ? bdi_start_fn+0x7e/0xf0 [1149000.440780] [] ? bdi_start_fn+0x0/0xf0 [1149000.440783] [] ? kthread+0x96/0xa0 [1149000.440786] [] ? child_rip+0xa/0x20 [1149000.440790] [] ? kthread+0x0/0xa0 [1149000.440793] [] ? child_rip+0x0/0x20 [1149120.440754] INFO: task xfssyncd:1655 blocked for more than 120 seconds. [1149120.440768] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [1149120.440772] xfssyncd D ffff88023fb6a028 0 1655 2 0x00000000 [1149120.440778] ffff8800af9693e0 0000000000000046 ffff8801f866e6d8 000000002baa9928 [1149120.440786] 000000000000c928 ffff88023a329fd8 ffff88023f956210 ffff88023f956488 [1149120.440792] 0000000100000000 ffffffff8134cb47 ffff88002828c928 ffff88023f956488 [1149120.440802] Call Trace: [1149120.440812] [] ? get_active_stripe+0x417/0x630 [1149120.440817] [] ? md_write_start+0xb5/0x1b0 [1149120.440824] [] ? autoremove_wake_function+0x0/0x30 [1149120.440828] [] ? release_stripe+0x3d/0x60 [1149120.440831] [] ? make_request+0x3c/0x700 [1149120.440835] [] ? autoremove_wake_function+0x0/0x30 [1149120.440840] [] ? cpumask_next_and+0x23/0x40 [1149120.440845] [] ? md_make_request+0xbc/0x130 [1149120.440851] [] ? generic_make_request+0x1ec/0x2f0 [1149120.440855] [] ? submit_bio+0x5a/0xe0 [1149120.440860] [] ? _xfs_buf_ioapply+0x120/0x280 [1149120.440863] [] ? xfs_buf_iorequest+0x29/0x90 [1149120.440869] [] ? xlog_bdstrat_cb+0x3d/0x50 [1149120.440874] [] ? xlog_sync+0x20b/0x4e0 [1149120.440878] [] ? xlog_state_sync_all+0x1b8/0x230 [1149120.440883] [] ? del_timer_sync+0x1a/0x30 [1149120.440886] [] ? _xfs_log_force+0x6b/0x80 [1149120.440889] [] ? xfs_log_force+0xb/0x40 [1149120.440894] [] ? xfs_sync_worker+0x19/0x60 [1149120.440898] [] ? xfssyncd+0x13c/0x1c0 [1149120.440902] [] ? xfssyncd+0x0/0x1c0 [1149120.440906] [] ? kthread+0x96/0xa0 [1149120.440914] [] ? child_rip+0xa/0x20 [1149120.440917] [] ? kthread+0x0/0xa0 [1149120.440920] [] ? child_rip+0x0/0x20 [1149120.440962] INFO: task flush-9:3:29267 blocked for more than 120 seconds. [1149120.440965] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [1149120.440968] flush-9:3 D ffff88023fb6a028 0 29267 2 0x00000000 [1149120.440973] ffff88023f9578d0 0000000000000046 ffff8801f868e108 ffff880109a41900 [1149120.440979] 000000000000c928 ffff880109a41fd8 ffff88023fa82bf0 ffff88023fa82e68 [1149120.440985] 0000000209a41944 ffffffff811babef 0000000000000000 ffff88023fa82e68 [1149120.440992] Call Trace: [1149120.440997] [] ? xfs_bmap_search_multi_extents+0xaf/0x120 [1149120.441001] [] ? md_write_start+0xb5/0x1b0 [1149120.441005] [] ? autoremove_wake_function+0x0/0x30 [1149120.441011] [] ? make_request+0x3c/0x700 [1149120.441015] [] ? test_set_page_writeback+0xd4/0x170 [1149120.441019] [] ? md_make_request+0xbc/0x130 [1149120.441023] [] ? generic_make_request+0x1ec/0x2f0 [1149120.441027] [] ? xfs_cluster_write+0x11c/0x160 [1149120.441030] [] ? submit_bio+0x5a/0xe0 [1149120.441034] [] ? __mark_inode_dirty+0x68/0x170 [1149120.441040] [] ? xfs_submit_ioend_bio+0x4f/0x70 [1149120.441043] [] ? xfs_submit_ioend+0x9a/0xd0 [1149120.441047] [] ? xfs_page_state_convert+0x3e2/0x6c0 [1149120.441052] [] ? xfs_vm_writepage+0x77/0x130 [1149120.441055] [] ? __writepage+0xa/0x40 [1149120.441059] [] ? write_cache_pages+0x1df/0x3c0 [1149120.441062] [] ? __writepage+0x0/0x40 [1149120.441069] [] ? writeback_single_inode+0xd2/0x390 [1149120.441073] [] ? writeback_inodes_wb+0x3ff/0x5e0 [1149120.441076] [] ? wb_writeback+0x11e/0x1f0 [1149120.441080] [] ? try_to_del_timer_sync+0x5e/0x90 [1149120.441083] [] ? wb_do_writeback+0x17b/0x180 [1149120.441086] [] ? bdi_writeback_task+0x5d/0xa0 [1149120.441090] [] ? bdi_start_fn+0x0/0xf0 [1149120.441093] [] ? bdi_start_fn+0x7e/0xf0 [1149120.441096] [] ? bdi_start_fn+0x0/0xf0 [1149120.441101] [] ? kthread+0x96/0xa0 [1149120.441104] [] ? child_rip+0xa/0x20 [1149120.441108] [] ? kthread+0x0/0xa0 [1149120.441112] [] ? child_rip+0x0/0x20 Justin. From sandeen@sandeen.net Sat Jan 23 15:14:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0NLEXLx207249 for ; Sat, 23 Jan 2010 15:14:33 -0600 X-ASG-Debug-ID: 1264281333-715e00070000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 16B3F186AD2 for ; Sat, 23 Jan 2010 13:15:33 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id 6b02CljfFykcwBKR for ; Sat, 23 Jan 2010 13:15:33 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 540F0A2129D for ; Sat, 23 Jan 2010 15:15:33 -0600 (CST) Message-ID: <4B5B66F5.7060608@sandeen.net> Date: Sat, 23 Jan 2010 15:15:33 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] repair: add missing newlines to scan.c Subject: [PATCH] repair: add missing newlines to scan.c Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264281335 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20609 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Commit c83b756da0dac727457022d88d2a0ace30a6dc09 added some new do_warn's but omitted the "\n" leading to some pretty messy output when we go down this path. Signed-off-by: Eric Sandeen --- diff --git a/repair/scan.c b/repair/scan.c index c4d2825..85017ff 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -563,13 +563,13 @@ _("%s freespace btree block claimed (state %d), agno %d, bno %d, suspect %d\n"), if (b == 0 || !verify_agbno(mp, agno, b)) { do_warn( - _("invalid start block %u in record %u of %d btree block %u/%u"), + _("invalid start block %u in record %u of %d btree block %u/%u\n"), b, i, name, agno, bno); continue; } if (len == 0 || !verify_agbno(mp, agno, end - 1)) { do_warn( - _("invalid length %u in record %u of %d btree block %u/%u"), + _("invalid length %u in record %u of %d btree block %u/%u\n"), len, i, name, agno, bno); continue; } From chingimleong@yahoo.com.sg Sun Jan 24 00:43:10 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, RCVD_IN_BRBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0O6hAXq233594 for ; Sun, 24 Jan 2010 00:43:10 -0600 X-ASG-Debug-ID: 1264315450-4923017f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web76215.mail.sg1.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id ACD4CF4225F for ; Sat, 23 Jan 2010 22:44:10 -0800 (PST) Received: from web76215.mail.sg1.yahoo.com (web76215.mail.sg1.yahoo.com [124.108.115.166]) by cuda.sgi.com with SMTP id HODPOAQKVW2YcO6A for ; Sat, 23 Jan 2010 22:44:10 -0800 (PST) Received: (qmail 21959 invoked by uid 60001); 24 Jan 2010 06:44:09 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com.sg; s=s1024; t=1264315449; bh=oVDtQm3U6/mXoCb4WQAYS1NMEKcmiC6V+upWrOW+tmc=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=QHwUpWjx5SLVVe5kxsvi9xdmp+ansUhyIOBrRghtGNTUv1DcIX+XxE9v4CXThgoMNw9wYeUfiT8B5zS++eQI6Q01VnXwf7VqmxdbT0FWHCy6QJT9SDTFybtDzwnwSXRUfyUHOxoeN1+77SdBfQy0dB7zc/ciBpToaz3mYCj4Hk4= DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com.sg; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding; b=6QIvWc3TM9CZRLUQ3gXYrev4/xjyHVUETFIpS+lQ3BtHAa27wVvG5tVlVA9Nn3zh9nEG9HTq7sxlc98WY7pCxkh8KWtXT2/5W5XGhShv9/0SUJsLUX50/XTnWzPxfRokvetOWPWphVsMUDBVcnvqv8jy3XRvfWE6W/8YVZrRJRc=; Message-ID: <48356.21588.qm@web76215.mail.sg1.yahoo.com> X-YMail-OSG: RrbCRjwVM1mJimee1q7ProqGwxazA3dFabdP_sootQWKZHkKnk1X3.KI1On0kcxcVsBheg5mCeyVVeGXy0_Wjmees1g8le_lQhAw07oVlq.WZKReBcCsKdqpZWfkDw056xoMgzdeG_pjlMLbCKvW4tkYTOqZmH26W7V6MEyA7xttmgAhazFJBQm.YrOm7PRo.YjKoQ6Ik0RCNPmhfcGXUuWrIuRofgCwKoyhdm8M3cw6lXL3agv.pF2bTR3Ry4esYIaIids1_7RjV2FXMDJedxwVnfLTIOsRgU7mYPwh3CssCWvUvHpBaQ6btEnD6ggRJE3XqeCZvCiYViJcU_TRYiguo34MnyyTd0ei4NGLwDSVC5pPQZ9ImMbBtenxzycPoLGzdshqWlIYWkYMFEuU1_dwKwRMMgcS1XBJIPK39L61_IIsZuPqPv2VYcJPdupEF7cbv_60twTNfFI.zA8TL05m4Z2qCw9t Received: from [202.156.228.51] by web76215.mail.sg1.yahoo.com via HTTP; Sun, 24 Jan 2010 14:44:08 SGT X-Mailer: YahooMailClassic/9.1.10 YahooMailWebService/0.8.100.260964 Date: Sun, 24 Jan 2010 14:44:08 +0800 (SGT) From: Gim Leong Chin X-ASG-Orig-Subj: Re: allocsize mount option Subject: Re: allocsize mount option To: Dave Chinner Cc: Eric Sandeen , xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: web76215.mail.sg1.yahoo.com[124.108.115.166] X-Barracuda-Start-Time: 1264315452 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20646 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Guys,=0A=0A=0AAn update:=0A=0ASUSE Linux Enterprise 11 SP1 will be based= on kernel 2.6.32, according to Novell support, when I asked for backportin= g. That will solve my problems.=0A=0AI do confirm that all the drives (no = file system testing) were tested with NCQ enabled on the Tyan Opteron mothe= rboard. What I did learn was that the note book drives nowadays come with = NCQ, and that all the SATA desktop and note book drives showed very poor se= quential write performance with cache disabled.=0A=0AOn another note, there= was a post by Michael Monnerie on 20 NOV 2009 about kernel 2.6.27, XFS, in= ode64 and NFS.=0AI have the 10.9 TB inode64 XFS file system exported via NF= S 4 by SLED 11, and mounted by SLES 10 SP2, and I have no problems with it.= =0A=0AFinally, A big Thank You to Dave Chinner and Eric Sandeen for your ki= nd assistance!=0A=0A=0AGL=0A=0A--- On Fri, 15/1/10, Gim Leong Chin wrote:=0A=0A> From: Gim Leong Chin =0A> Subject: Re: allocsize mount option=0A> To: "Dave Chinner" =0A> Cc: "Eric Sandeen" , xfs@oss.sgi= .com=0A> Date: Friday, 15 January, 2010, 11:08 AM=0A> Hi Dave,=0A> =0A> Tha= nk you for the advice!=0A> =0A> I have done Direct IO dd tests writing the = same 20 GB=0A> files.=C2=A0 The results are an eye opener!=C2=A0 bs=3D1GB, = count=3D2=0A> =0A> Single instance repeats of 830, 800 MB/s, compared to=0A= > >100 to under 300 MB/s for buffered.=0A> =0A> Two instances aggregate of = 304 MB/s, six instances=0A> aggregate of 587 MB/s.=0A> =0A> System drive /h= ome RAID 1 of 130 MB/s compared to 51 MB/s=0A> buffered.=0A> =0A> So the pr= oblem is with the buffered writes.=0A> =0A> =0A> > You=E1=BC=80d have to ge= t all the fixes from 2.6.30 to=0A> 2.6.32,=0A> > and the=0A> > backport wou= ld be very difficult to get right. Better=0A> > would=0A> > be =D8=B7ust to= upgrade the kernel to 2.6.32 ;)=0A> =0A> =0A> If I change the kernel, I wo= uld have no support from=0A> Novell.=C2=A0 I would try my luck and convince= them.=0A> =0A> > > > I'd suggest that you might need to look at=0A> > incr= easing the=0A> > > > maximum IO=0A> > > > size for the block device=0A> > >= > (/sys/block/sdb/queue/max_sectors_kb),=0A> > > > maybe the request queue= depth as well to=0A> get=0A> > larger IOs to=0A> > > > be pushed=0A> > > >= to the raid controller. if you can, at least=0A> get=0A> > it to the=0A> >= > > stripe=0A> > > > width of 1536k....=0A> > > =0A> > > Could you give a = good reference for performance=0A> tuning=0A> > of these=0A> > > parameters= ?=C2=A0 I am at a total loss here.=0A> > =0A> > Welcome to the black art of= storage subsystem tuning=0A> ;)=0A> > =0A> > I'm not sure there is a good = reference for tuning the=0A> block=0A> > device=0A> > parameters - most of = what I know was handed down by=0A> word of=0A> > mouth=0A> > from gurus on = high mountains.=0A> > =0A> > The overriding principle, though, is to try to= ensure=0A> that=0A> > the=0A> > stripe width sized IOs can be issued right= through the=0A> IO=0A> > stack to=0A> > the hardware, and that those IOs a= re correctly aligned=0A> to=0A> > the=0A> > stripes. You've got the filesys= tem configuration and=0A> layout=0A> > part=0A> > correct, now it's just tu= ning the block layer to pass=0A> the=0A> > IO's=0A> > through.=0A> =0A> Can= I confirm that=0A> (/sys/block/sdb/queue/max_sectors_kb)=3Dstripe width 15= 36 kB=0A> =0A> Which parameter is "request queue depth"?=C2=A0 What should = be=0A> the value?=0A> =0A> =0A> =0A> > FWIW, your tests are not timing how= longit takes for=0A> all=0A> > the=0A> > data to hit the disk, only how lo= ng it takes to get=0A> into=0A> > cache.=0A> =0A> =0A> Thank you!=C2=A0 I d= o know that XFS buffers writes=0A> extensively.=C2=A0 The drive LEDs remain= lighted long after=0A> the OS says the writes are completed.=C2=A0 Plus so= me=0A> timings are physically impossible.=0A> =0A> =0A> > That sounds wron= g - it sounds like NCQ is not=0A> functioning=0A> > properly=0A> > as with = NCQ enabled, disabling the drive cache should=0A> not=0A> > impact=0A> > th= roughput at all....=0A> =0A> I do not remember clearly if NCQ is available = for that=0A> motherboard, it is an Ubuntu 32-bit, but I do remember=0A> see= ing queue depth in the kernel.=C2=A0 I will check it out=0A> next week.=0A>= =0A> But what I read is that NCQ hurts single write=0A> performance.=C2=A0= That is also what I found with another=0A> Areca SATA RAID in Windows XP.= =0A> =0A> What I found with all the drives we tested was that=0A> disabling= the cache badly hurt sequential write performance=0A> (no file system, wri= te data directly to designated LBA).=0A> =0A> =0A> =0A> > I'd suggest tryin= g to find another distributor that=0A> will=0A> > bring them=0A> > in for y= ou. Putting that many drives in a single=0A> chassis is=0A> > almost=0A> > = certainly going to cause vibration problems,=0A> especially if=0A> > you ge= t=0A> > all the disk heads moving in close synchronisation=0A> (which=0A> >= is what=0A> > happens when you get all your IO sizing and alignment=0A> > = right).=0A> =0A> I am working on changing to the WD Caviar RE4 drives.=C2= =A0=0A> Not sure if I can pull it off.=0A> =0A> =0A> =0A> Chin Gim Leong=0A= > =0A> =0A> =C2=A0 =C2=A0 =C2=A0 New Email names for you! =0A> Get the Emai= l name you've always wanted on the new=0A> @ymail and @rocketmail. =0A> Hur= ry before someone else does!=0A=0A> http://mail.promotions.yahoo.com/newdom= ains/sg/=0A> =0A=0A=0A _______________________________________________= _______________________=0ASearch, browse and book your hotels and flights t= hrough Yahoo! Travel.=0Ahttp://sg.travel.yahoo.com From SRS0+1Nmg+53+fromorbit.com=david@internode.on.net Sun Jan 24 01:15:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0O7FW8w234757 for ; Sun, 24 Jan 2010 01:15:33 -0600 X-ASG-Debug-ID: 1264317394-492202be0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C9D84F42897 for ; Sat, 23 Jan 2010 23:16:34 -0800 (PST) Received: from mail.internode.on.net (bld-mail13.adl6.internode.on.net [150.101.137.98]) by cuda.sgi.com with ESMTP id 7lK7dL5vaeb1DihF for ; Sat, 23 Jan 2010 23:16:34 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11665918-1927428 for multiple; Sun, 24 Jan 2010 17:46:33 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NYwhz-0001vV-Gc; Sun, 24 Jan 2010 18:16:31 +1100 Date: Sun, 24 Jan 2010 18:16:31 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] xfstests: rebuild aclocal.m4 Subject: Re: [PATCH 1/2] xfstests: rebuild aclocal.m4 Message-ID: <20100124071631.GH25842@discord.disaster> References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-2-git-send-email-david@fromorbit.com> <20100121112115.GA27634@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100121112115.GA27634@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail13.adl6.internode.on.net[150.101.137.98] X-Barracuda-Start-Time: 1264317395 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20648 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 21, 2010 at 06:21:15AM -0500, Christoph Hellwig wrote: > On Thu, Jan 21, 2010 at 05:02:52PM +1100, Dave Chinner wrote: > > The local m4 configuration has not been built in a long time. > > Trying to rebuild it results in failures with dmapi library > > detection and libxfs.h detection macros. Fix the errors and rebuild > > it. > > > > Note: the new format for the aclocal.m4 file uses m4_include > > directives which means it is much smaller th an before and won't > > need updating unless we include new m4 macro files. > > Looks good, but shouldn't we create aclocal.m4 automocatically as part > of make configure which generates the rest of the auto* stuff and stop > having it checked into the git repository? I'll do that as a separate patch - I'm not sure what is involved in doing this yet. No need to hold up the automatic dependency changes for this.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+7GXk+53+fromorbit.com=david@internode.on.net Sun Jan 24 01:16:54 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0O7Grfa234832 for ; Sun, 24 Jan 2010 01:16:54 -0600 X-ASG-Debug-ID: 1264317474-54b4009e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E86831C73DDA for ; Sat, 23 Jan 2010 23:17:55 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id tfrpVYCMl4BMdh41 for ; Sat, 23 Jan 2010 23:17:55 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11562276-1927428 for multiple; Sun, 24 Jan 2010 17:47:54 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NYwjI-0001vi-Mg; Sun, 24 Jan 2010 18:17:52 +1100 Date: Sun, 24 Jan 2010 18:17:52 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Subject: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Message-ID: <20100124071752.GI25842@discord.disaster> References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-3-git-send-email-david@fromorbit.com> <20100121112426.GB27634@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100121112426.GB27634@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1264317476 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20647 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 21, 2010 at 06:24:26AM -0500, Christoph Hellwig wrote: > > LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize \ > > - preallo_rw_pattern_reader preallo_rw_pattern_writer ftrunc trunc \ > > - fs_perms testx looptest locktest unwritten_mmap \ > > + ftrunc trunc fs_perms testx looptest locktest unwritten_mmap \ > > bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ > > t_futimens > > > > +SUBDIRS = > > + > > LLDLIBS = $(LIBATTR) $(LIBHANDLE) $(LIBACL) > > > > ifeq ($(HAVE_XLOG_ASSIGN_LSN), true) > > @@ -27,6 +28,7 @@ endif > > IRIX_TARGETS = open_unlink > > > > ifeq ($(PKG_PLATFORM),linux) > > +PREALLO_TARGETS = preallo_rw_pattern_reader > > What happens to the writer here? Oops, missed it. > > Before introducing more special cases > for this duplicates let me post my patch to make the file compiled more > normal, will send it out ASAP. OK, I'll pull your patch into my series and rebase my change on it before pushing the lot of them. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+yJoQ+54+fromorbit.com=david@internode.on.net Sun Jan 24 22:28:28 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P4SRmh029759 for ; Sun, 24 Jan 2010 22:28:27 -0600 X-ASG-Debug-ID: 1264393767-378301cb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 319EB11FD2C1 for ; Sun, 24 Jan 2010 20:29:28 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id EIjVhaZ0HwFLvBuA for ; Sun, 24 Jan 2010 20:29:28 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11729019-1927428 for multiple; Mon, 25 Jan 2010 14:59:27 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NZGZp-0002rH-2n; Mon, 25 Jan 2010 15:29:25 +1100 Date: Mon, 25 Jan 2010 15:29:25 +1100 From: Dave Chinner To: Stephen Rothwell Cc: Eric Paris , Al Viro , linux-next@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: linux-next: vfs/fsnotify trees build warning Subject: Re: linux-next: vfs/fsnotify trees build warning Message-ID: <20100125042925.GM25842@discord.disaster> References: <20100125150456.c796f0b0.sfr@canb.auug.org.au> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125150456.c796f0b0.sfr@canb.auug.org.au> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1264393770 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20725 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 03:04:56PM +1100, Stephen Rothwell wrote: > Hi Eric, Al, > > Today's linux-next build (x86_64 allmodconfig) produced these warnings: > > In file included from include/linux/security.h:26, > from fs/xfs/linux-2.6/xfs_iops.c:56: > include/linux/fsnotify.h: In function 'fsnotify_move': > include/linux/fsnotify.h:87: warning: pointer targets in initialization differ in signedness > include/linux/fsnotify.h: In function 'fsnotify_create': > include/linux/fsnotify.h:154: warning: pointer targets in passing argument 5 of 'fsnotify' differ in signedness > include/linux/fsnotify_backend.h:300: note: expected 'const char *' but argument is of type 'const unsigned char *' > include/linux/fsnotify.h: In function 'fsnotify_link': > include/linux/fsnotify.h:167: warning: pointer targets in passing argument 5 of 'fsnotify' differ in signedness > include/linux/fsnotify_backend.h:300: note: expected 'const char *' but argument is of type 'const unsigned char *' > include/linux/fsnotify.h: In function 'fsnotify_mkdir': > include/linux/fsnotify.h:180: warning: pointer targets in passing argument 5 of 'fsnotify' differ in signedness > include/linux/fsnotify_backend.h:300: note: expected 'const char *' but argument is of type 'const unsigned char *' > > I am not sure why these started turning up (they were there on Friday as > well and I may have missed them earlier). I cleaned up the all the sign warnings in the XFS code because we mirror the kernel code into userspace for tool building (libxfs) and that results in lots of sign warnings. I left the kernel warnings switched on in the XFS makefile so we wouldn't re-introduce the same problems. Don't know why this isn't showing up in my build though, because: CONFIG_FSNOTIFY=y is set and it is obvious the fsnotify wrappers are passing an unsigned char * (dentry name) to fsnotify() which takes a const char * for the file name. There's mismatches like this all over the VFS, so I'm not going to try to fix them.... The patch below should silence the warnings, though. Cheers, Dave. -- Dave Chinner david@fromorbit.com xfs: turn off sign warnings Because they cause warnings in static inline functions conditionally compiled into XFS from the VFS (e.g. fsnotify). Signed-off-by: Dave Chinner --- fs/xfs/Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/Makefile b/fs/xfs/Makefile index 1926701..5c5a366 100644 --- a/fs/xfs/Makefile +++ b/fs/xfs/Makefile @@ -16,7 +16,7 @@ # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -EXTRA_CFLAGS += -I$(src) -I$(src)/linux-2.6 -Wpointer-sign +EXTRA_CFLAGS += -I$(src) -I$(src)/linux-2.6 XFS_LINUX := linux-2.6 From SRS0+VJ07+54+fromorbit.com=dave@internode.on.net Sun Jan 24 23:31:54 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P5Vs9q033113 for ; Sun, 24 Jan 2010 23:31:54 -0600 X-ASG-Debug-ID: 1264397575-6fe8011e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5B081184F33 for ; Sun, 24 Jan 2010 21:32:56 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id ZEOixBFpcRLzWJOH for ; Sun, 24 Jan 2010 21:32:56 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11549003-1927428 for ; Mon, 25 Jan 2010 16:02:55 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZHZF-0002uf-IB for xfs@oss.sgi.com; Mon, 25 Jan 2010 16:32:53 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZHZE-0004lD-CH for xfs@oss.sgi.com; Mon, 25 Jan 2010 16:32:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: don't hold onto reserved blocks on remount,ro Subject: [PATCH] xfs: don't hold onto reserved blocks on remount,ro Date: Mon, 25 Jan 2010 16:32:52 +1100 Message-Id: <1264397572-18230-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1264397577 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20730 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean If we hold onto reserved blocks when doing a remount,ro we end up writing the blocks used count to disk that includes the reserved blocks. Reserved blocks are not actually used, so this results in the values in the superblock being incorrect. Hence if we run xfs_check or xfs_repair -n while the filesystem is mounted remount,ro we end up with an inconsistent filesystem being reported. Also, running xfs_copy on the remount,ro filesystem will result in an inconsistent image being generated. To fix this, unreserve the blocks when doing the remount,ro, and reserved them again on remount,rw. This way a remount,ro filesystem will appear consistent on disk to all utilities. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 28 ++++++++++++++++++++++++++++ fs/xfs/xfs_mount.h | 1 + 2 files changed, 29 insertions(+), 0 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 9f2e398..67001ec 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -1318,6 +1318,8 @@ xfs_fs_remount( /* ro -> rw */ if ((mp->m_flags & XFS_MOUNT_RDONLY) && !(*flags & MS_RDONLY)) { + __uint64_t resblks; + mp->m_flags &= ~XFS_MOUNT_RDONLY; if (mp->m_flags & XFS_MOUNT_BARRIER) xfs_mountfs_check_barriers(mp); @@ -1335,11 +1337,37 @@ xfs_fs_remount( } mp->m_update_flags = 0; } + + /* + * Fill out the reserve pool if it is empty. Use the stashed + * value if it is non-zero, otherwise go with the default. + */ + if (mp->m_resblks_ro) { + resblks = mp->m_resblks_ro; + mp->m_resblks_ro = 0; + } else { + resblks = mp->m_sb.sb_dblocks; + do_div(resblks, 20); + resblks = min_t(__uint64_t, resblks, 1024); + } + xfs_reserve_blocks(mp, &resblks, NULL); } /* rw -> ro */ if (!(mp->m_flags & XFS_MOUNT_RDONLY) && (*flags & MS_RDONLY)) { + /* + * After we have synced the data but before we sync the + * metadata, we need to free up the reserve block pool so that + * the used block count in the superblock on disk is correct at + * the end of the remount. Stash the current reserve pool size + * so that if we get remounted rw, we can return it to the same + * size. + */ + __uint64_t resblks = 0; + xfs_quiesce_data(mp); + mp->m_resblks_ro = mp->m_resblks; + xfs_reserve_blocks(mp, &resblks, NULL); xfs_quiesce_attr(mp); mp->m_flags |= XFS_MOUNT_RDONLY; } diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index f4d1441..a3de553 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -225,6 +225,7 @@ typedef struct xfs_mount { __uint64_t m_maxioffset; /* maximum inode offset */ __uint64_t m_resblks; /* total reserved blocks */ __uint64_t m_resblks_avail;/* available reserved blocks */ + __uint64_t m_resblks_ro; /* reserved blks @ remount,ro */ int m_dalign; /* stripe unit */ int m_swidth; /* stripe width */ int m_sinoalign; /* stripe unit inode alignment */ -- 1.6.5 From SRS0+VJ07+54+fromorbit.com=dave@internode.on.net Sun Jan 24 23:32:27 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P5WQHH033169 for ; Sun, 24 Jan 2010 23:32:26 -0600 X-ASG-Debug-ID: 1264397608-3c5a028d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3B0E51C6DD3E for ; Sun, 24 Jan 2010 21:33:28 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id 9EhO4pcODNC7m9Eh for ; Sun, 24 Jan 2010 21:33:28 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11565127-1927428 for ; Mon, 25 Jan 2010 16:03:27 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZHZj-0002uj-Sb for xfs@oss.sgi.com; Mon, 25 Jan 2010 16:33:23 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZHZi-0004vr-PE for xfs@oss.sgi.com; Mon, 25 Jan 2010 16:33:22 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: turn off sign warnings Subject: [PATCH] xfs: turn off sign warnings Date: Mon, 25 Jan 2010 16:33:22 +1100 Message-Id: <1264397602-18868-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1264397610 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20730 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Because they cause warnings in static inline functions conditionally compiled into XFS from the VFS (e.g. fsnotify). Signed-off-by: Dave Chinner --- fs/xfs/Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/Makefile b/fs/xfs/Makefile index 1926701..5c5a366 100644 --- a/fs/xfs/Makefile +++ b/fs/xfs/Makefile @@ -16,7 +16,7 @@ # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -EXTRA_CFLAGS += -I$(src) -I$(src)/linux-2.6 -Wpointer-sign +EXTRA_CFLAGS += -I$(src) -I$(src)/linux-2.6 XFS_LINUX := linux-2.6 -- 1.6.5 From SRS0+VJ07+54+fromorbit.com=dave@internode.on.net Mon Jan 25 00:21:48 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P6LmjU037468 for ; Mon, 25 Jan 2010 00:21:48 -0600 X-ASG-Debug-ID: 1264400570-30f003d20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E48401C76759 for ; Sun, 24 Jan 2010 22:22:50 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id 77dVnmmfEp2MTXkF for ; Sun, 24 Jan 2010 22:22:50 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11565359-1927428 for ; Mon, 25 Jan 2010 16:52:49 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZILY-0002xU-FC for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:48 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZILX-0003o4-DR for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/7] xfs: Use delay write promotion for dquot flushing Subject: [PATCH 5/7] xfs: Use delay write promotion for dquot flushing Date: Mon, 25 Jan 2010 17:22:42 +1100 Message-Id: <1264400564-19704-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1264400564-19704-1-git-send-email-david@fromorbit.com> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1264400571 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20733 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean xfs_qm_dqflock_pushbuf_wait() does a very similar trick to item pushing used to do to flush out delayed write dquot buffers. Change it to use the new promotion method rather than an async flush. Also, xfs_qm_dqflock_pushbuf_wait() can return without the flush lock held, yet the callers make the assumption that after this call the flush lock is held. Always return with the flush lock held. Signed-off-by: Dave Chinner --- fs/xfs/quota/xfs_dquot.c | 25 ++++++++++--------------- 1 files changed, 10 insertions(+), 15 deletions(-) diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c index f9baeed..1620a56 100644 --- a/fs/xfs/quota/xfs_dquot.c +++ b/fs/xfs/quota/xfs_dquot.c @@ -1528,21 +1528,16 @@ xfs_qm_dqflock_pushbuf_wait( */ bp = xfs_incore(dqp->q_mount->m_ddev_targp, dqp->q_blkno, XFS_QI_DQCHUNKLEN(dqp->q_mount), XBF_TRYLOCK); - if (bp != NULL) { - if (XFS_BUF_ISDELAYWRITE(bp)) { - int error; - - if (XFS_BUF_ISPINNED(bp)) - xfs_log_force(dqp->q_mount, 0); - error = xfs_bawrite(dqp->q_mount, bp); - if (error) - xfs_fs_cmn_err(CE_WARN, dqp->q_mount, - "xfs_qm_dqflock_pushbuf_wait: " - "pushbuf error %d on dqp %p, bp %p", - error, dqp, bp); - } else { - xfs_buf_relse(bp); - } + if (!bp) + goto out_lock; + + if (XFS_BUF_ISDELAYWRITE(bp)) { + if (XFS_BUF_ISPINNED(bp)) + xfs_log_force(dqp->q_mount, 0); + xfs_buf_delwri_promote(bp); + wake_up_process(bp->b_target->bt_task); } + xfs_buf_relse(bp); +out_lock: xfs_dqflock(dqp); } -- 1.6.5 From SRS0+Nbh5+54+fromorbit.com=dave@internode.on.net Mon Jan 25 00:21:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P6Lnw4037472 for ; Mon, 25 Jan 2010 00:21:49 -0600 X-ASG-Debug-ID: 1264400570-6fe602200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9B9691888FE for ; Sun, 24 Jan 2010 22:22:51 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id YNxtGI1BKeP60wlP for ; Sun, 24 Jan 2010 22:22:51 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11427982-1927428 for ; Mon, 25 Jan 2010 16:52:50 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZILY-0002xI-7B for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:48 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZILX-0003nr-3R for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/7] xfs: Make inode reclaim states explicit Subject: [PATCH 1/7] xfs: Make inode reclaim states explicit Date: Mon, 25 Jan 2010 17:22:38 +1100 Message-Id: <1264400564-19704-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1264400564-19704-1-git-send-email-david@fromorbit.com> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1264400572 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20733 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean A.K.A.: don't rely on xfs_iflush() return value in reclaim We have gradually been moving checks out of the reclaim code because they are duplicated in xfs_iflush(). We've had a history of problems in this area, and many of them stem from the overloading of the return values from xfs_iflush() and interaction with inode flush locking to determine if the inode is safe to reclaim. With the desire to move to delayed write flushing of inodes and non-blocking inode tree reclaim walks, the overloading of the return value of xfs_iflush makes it very difficult to determine the correct thing to do next. This patch explicitly re-adds the checks to the inode reclaim code, removing the reliance on the return value of xfs_iflush() to determine what to do next. It also means that we can clearly document all the inode states that reclaim must handle and hence we can easily see that we handled all the necessary cases. This also removes the need for the xfs_inode_clean() check in xfs_iflush() as all callers now check this first (safely). Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_sync.c | 80 ++++++++++++++++++++++++++++++++---------- fs/xfs/xfs_inode.c | 11 +----- fs/xfs/xfs_inode.h | 1 + 3 files changed, 63 insertions(+), 29 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index c9b863e..98b8937 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -706,12 +706,43 @@ __xfs_inode_clear_reclaim_tag( XFS_INO_TO_AGINO(mp, ip->i_ino), XFS_ICI_RECLAIM_TAG); } +/* + * Inodes in different states need to be treated differently, and the return + * value of xfs_iflush is not sufficient to get this right. The following table + * lists the inode states and the reclaim actions necessary for non-blocking + * reclaim: + * + * + * inode state iflush ret required action + * --------------- ---------- --------------- + * bad - reclaim + * shutdown EIO unpin and reclaim + * clean, unpinned 0 reclaim + * stale, unpinned 0 reclaim + * clean, pinned(*) 0 unpin and reclaim + * stale, pinned 0 unpin and reclaim + * dirty, async 0 block on flush lock, reclaim + * dirty, sync flush 0 block on flush lock, reclaim + * + * (*) dgc: I don't think the clean, pinned state is possible but it gets + * handled anyway given the order of checks implemented. + * + * Hence the order of actions after gaining the locks should be: + * bad => reclaim + * shutdown => unpin and reclaim + * pinned => unpin + * stale => reclaim + * clean => reclaim + * dirty => flush, wait and reclaim + */ STATIC int xfs_reclaim_inode( struct xfs_inode *ip, struct xfs_perag *pag, int sync_mode) { + int error; + /* * The radix tree lock here protects a thread in xfs_iget from racing * with us starting reclaim on the inode. Once we have the @@ -729,30 +760,41 @@ xfs_reclaim_inode( spin_unlock(&ip->i_flags_lock); write_unlock(&pag->pag_ici_lock); - /* - * If the inode is still dirty, then flush it out. If the inode - * is not in the AIL, then it will be OK to flush it delwri as - * long as xfs_iflush() does not keep any references to the inode. - * We leave that decision up to xfs_iflush() since it has the - * knowledge of whether it's OK to simply do a delwri flush of - * the inode or whether we need to wait until the inode is - * pulled from the AIL. - * We get the flush lock regardless, though, just to make sure - * we don't free it while it is being flushed. - */ xfs_ilock(ip, XFS_ILOCK_EXCL); xfs_iflock(ip); - /* - * In the case of a forced shutdown we rely on xfs_iflush() to - * wait for the inode to be unpinned before returning an error. - */ - if (!is_bad_inode(VFS_I(ip)) && xfs_iflush(ip, sync_mode) == 0) { - /* synchronize with xfs_iflush_done */ - xfs_iflock(ip); - xfs_ifunlock(ip); + if (is_bad_inode(VFS_I(ip))) + goto reclaim; + if (XFS_FORCED_SHUTDOWN(ip->i_mount)) { + xfs_iunpin_wait(ip); + goto reclaim; + } + if (xfs_ipincount(ip)) + xfs_iunpin_wait(ip); + if (xfs_iflags_test(ip, XFS_ISTALE)) + goto reclaim; + if (xfs_inode_clean(ip)) + goto reclaim; + + /* Now we have an inode that needs flushing */ + error = xfs_iflush(ip, sync_mode); + if (!error) { + switch(sync_mode) { + case XFS_IFLUSH_DELWRI_ELSE_ASYNC: + case XFS_IFLUSH_DELWRI: + case XFS_IFLUSH_ASYNC: + case XFS_IFLUSH_DELWRI_ELSE_SYNC: + case XFS_IFLUSH_SYNC: + /* IO issued, synchronise with IO completion */ + xfs_iflock(ip); + default: + ASSERT(0); + break; + } } +reclaim: + xfs_ifunlock(ip); xfs_iunlock(ip, XFS_ILOCK_EXCL); xfs_ireclaim(ip); return 0; diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index d0d1b5a..8d0666d 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2493,7 +2493,7 @@ __xfs_iunpin_wait( wait_event(ip->i_ipin_wait, (atomic_read(&ip->i_pincount) == 0)); } -static inline void +void xfs_iunpin_wait( xfs_inode_t *ip) { @@ -2849,15 +2849,6 @@ xfs_iflush( mp = ip->i_mount; /* - * If the inode isn't dirty, then just release the inode flush lock and - * do nothing. - */ - if (xfs_inode_clean(ip)) { - xfs_ifunlock(ip); - return 0; - } - - /* * We can't flush the inode until it is unpinned, so wait for it if we * are allowed to block. We know noone new can pin it, because we are * holding the inode lock shared and you need to hold it exclusively to diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index ec1f28c..8b618ea 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -483,6 +483,7 @@ int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); void xfs_iext_realloc(xfs_inode_t *, int, int); void xfs_ipin(xfs_inode_t *); void xfs_iunpin(xfs_inode_t *); +void xfs_iunpin_wait(xfs_inode_t *); int xfs_iflush(xfs_inode_t *, uint); void xfs_ichgtime(xfs_inode_t *, int); void xfs_lock_inodes(xfs_inode_t **, int, uint); -- 1.6.5 From SRS0+VJ07+54+fromorbit.com=dave@internode.on.net Mon Jan 25 00:21:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P6Ln41037490 for ; Mon, 25 Jan 2010 00:21:50 -0600 X-ASG-Debug-ID: 1264400571-19b002820000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0D332F47727 for ; Sun, 24 Jan 2010 22:22:51 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id Ctvlt9Bbt6rGTgHS for ; Sun, 24 Jan 2010 22:22:51 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11729534-1927428 for ; Mon, 25 Jan 2010 16:52:50 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZILY-0002xJ-9h for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:48 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZILX-0003nu-7P for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Subject: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Date: Mon, 25 Jan 2010 17:22:39 +1100 Message-Id: <1264400564-19704-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1264400564-19704-1-git-send-email-david@fromorbit.com> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1264400573 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20732 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We currently do background inode flush asynchronously, resulting in inodes being written in whatever order the background writeback issues them. Not only that, there are also blocking and non-blocking asynchronous inode flushes, depending on where the flush comes from. This patch completely removes asynchronous inode writeback. It removes all the strange writeback modes and replaces them with either a synchronous flush or a non-blocking delayed write flush. That is, inode flushes will only issue IO directly if they are synchronous, and background flushing may do nothing if the operation would block (e.g. on a pinned inode or buffer lock). Delayed write flushes will now result in the inode buffer sitting in the delwri queue of the buffer cache to be flushed by either an AIL push or by the xfsbufd timing out the buffer. This will allow accumulation of dirty inode buffers in memory and allow optimisation of inode cluster writeback at the xfsbufd level where we have much greater queue depths than the block layer elevators. We will also get adjacent inode cluster buffer IO merging for free when a later patch in the series allows sorting of the delayed write buffers before dispatch. This effectively means that any inode that is written back by background writeback will be seen as flush locked during AIL pushing, and will result in the buffers being pushed from there. This writeback path is currently non-optimal, but the next patch in the series will fix that problem. A side effect of this delayed write mechanism is that background inode reclaim will no longer directly flush inodes, nor can it wait on the flush lock. The result is that inode reclaim must leave the inode in the reclaimable state until it is clean. Hence attempts to reclaim a dirty inode in the background will simply skip the inode until it is clean and this allows other mechanisms (i.e. xfsbufd) to do more optimal writeback of the dirty buffers. As a result, the inode reclaim code has been rewritten so that it no longer relies on the ambiguous return values of xfs_iflush() to determine whether it is safe to reclaim an inode. Portions of this patch are derived from a patch by Christoph Hellwig. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 4 +- fs/xfs/linux-2.6/xfs_sync.c | 88 ++++++++++++++++++++++++++++------------- fs/xfs/xfs_inode.c | 75 ++--------------------------------- fs/xfs/xfs_inode.h | 10 ----- fs/xfs/xfs_inode_item.c | 10 +++- fs/xfs/xfs_mount.c | 13 ++++++- 6 files changed, 86 insertions(+), 114 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 67001ec..5ed0468 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -1064,7 +1064,7 @@ xfs_fs_write_inode( xfs_ilock(ip, XFS_ILOCK_SHARED); xfs_iflock(ip); - error = xfs_iflush(ip, XFS_IFLUSH_SYNC); + error = xfs_iflush(ip, SYNC_WAIT); } else { error = EAGAIN; if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) @@ -1072,7 +1072,7 @@ xfs_fs_write_inode( if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) goto out_unlock; - error = xfs_iflush(ip, XFS_IFLUSH_ASYNC_NOBLOCK); + error = xfs_iflush(ip, 0); } out_unlock: diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 98b8937..ca0cc59 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -270,8 +270,7 @@ xfs_sync_inode_attr( goto out_unlock; } - error = xfs_iflush(ip, (flags & SYNC_WAIT) ? - XFS_IFLUSH_SYNC : XFS_IFLUSH_DELWRI); + error = xfs_iflush(ip, (flags & SYNC_WAIT)); out_unlock: xfs_iunlock(ip, XFS_ILOCK_SHARED); @@ -460,16 +459,18 @@ xfs_quiesce_fs( { int count = 0, pincount; + xfs_reclaim_inodes(mp, 0); xfs_flush_buftarg(mp->m_ddev_targp, 0); - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); /* * This loop must run at least twice. The first instance of the loop * will flush most meta data but that will generate more meta data * (typically directory updates). Which then must be flushed and - * logged before we can write the unmount record. + * logged before we can write the unmount record. We also so sync + * reclaim of inodes to catch any that the above delwri flush skipped. */ do { + xfs_reclaim_inodes(mp, SYNC_WAIT); xfs_sync_attr(mp, SYNC_WAIT); pincount = xfs_flush_buftarg(mp->m_ddev_targp, 1); if (!pincount) { @@ -585,7 +586,7 @@ xfs_sync_worker( if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { xfs_log_force(mp, 0); - xfs_reclaim_inodes(mp, XFS_IFLUSH_DELWRI_ELSE_ASYNC); + xfs_reclaim_inodes(mp, 0); /* dgc: errors ignored here */ error = xfs_qm_sync(mp, SYNC_TRYLOCK); error = xfs_sync_fsdata(mp, SYNC_TRYLOCK); @@ -719,21 +720,42 @@ __xfs_inode_clear_reclaim_tag( * shutdown EIO unpin and reclaim * clean, unpinned 0 reclaim * stale, unpinned 0 reclaim - * clean, pinned(*) 0 unpin and reclaim - * stale, pinned 0 unpin and reclaim - * dirty, async 0 block on flush lock, reclaim - * dirty, sync flush 0 block on flush lock, reclaim + * clean, pinned(*) 0 requeue + * stale, pinned EAGAIN requeue + * dirty, delwri ok 0 requeue + * dirty, delwri blocked EAGAIN requeue + * dirty, sync flush 0 reclaim * * (*) dgc: I don't think the clean, pinned state is possible but it gets * handled anyway given the order of checks implemented. * + * As can be seen from the table, the return value of xfs_iflush() is not + * sufficient to correctly decide the reclaim action here. The checks in + * xfs_iflush() might look like duplicates, but they are not. + * + * Also, because we get the flush lock first, we know that any inode that has + * been flushed delwri has had the flush completed by the time we check that + * the inode is clean. The clean inode check needs to be done before flushing + * the inode delwri otherwise we would loop forever requeuing clean inodes as + * we cannot tell apart a successful delwri flush and a clean inode from the + * return value of xfs_iflush(). + * + * Note that because the inode is flushed delayed write by background + * writeback, the flush lock may already be held here and waiting on it can + * result in very long latencies. Hence for sync reclaims, where we wait on the + * flush lock, the caller should push out delayed write inodes first before + * trying to reclaim them to minimise the amount of time spent waiting. For + * background relaim, we just requeue the inode for the next pass. + * * Hence the order of actions after gaining the locks should be: * bad => reclaim * shutdown => unpin and reclaim - * pinned => unpin + * pinned, delwri => requeue + * pinned, sync => unpin * stale => reclaim * clean => reclaim - * dirty => flush, wait and reclaim + * dirty, delwri => flush and requeue + * dirty, sync => flush, wait and reclaim */ STATIC int xfs_reclaim_inode( @@ -741,7 +763,7 @@ xfs_reclaim_inode( struct xfs_perag *pag, int sync_mode) { - int error; + int error = 0; /* * The radix tree lock here protects a thread in xfs_iget from racing @@ -761,7 +783,11 @@ xfs_reclaim_inode( write_unlock(&pag->pag_ici_lock); xfs_ilock(ip, XFS_ILOCK_EXCL); - xfs_iflock(ip); + if (!xfs_iflock_nowait(ip)) { + if (!(sync_mode & SYNC_WAIT)) + goto requeue_no_flock; + xfs_iflock(ip); + } if (is_bad_inode(VFS_I(ip))) goto reclaim; @@ -769,8 +795,11 @@ xfs_reclaim_inode( xfs_iunpin_wait(ip); goto reclaim; } - if (xfs_ipincount(ip)) + if (xfs_ipincount(ip)) { + if (!(sync_mode & SYNC_WAIT)) + goto requeue; xfs_iunpin_wait(ip); + } if (xfs_iflags_test(ip, XFS_ISTALE)) goto reclaim; if (xfs_inode_clean(ip)) @@ -778,25 +807,28 @@ xfs_reclaim_inode( /* Now we have an inode that needs flushing */ error = xfs_iflush(ip, sync_mode); - if (!error) { - switch(sync_mode) { - case XFS_IFLUSH_DELWRI_ELSE_ASYNC: - case XFS_IFLUSH_DELWRI: - case XFS_IFLUSH_ASYNC: - case XFS_IFLUSH_DELWRI_ELSE_SYNC: - case XFS_IFLUSH_SYNC: - /* IO issued, synchronise with IO completion */ - xfs_iflock(ip); - default: - ASSERT(0); - break; - } - } + if (!(sync_mode & SYNC_WAIT)) + goto requeue_no_flock; + xfs_iflock(ip); reclaim: xfs_ifunlock(ip); xfs_iunlock(ip, XFS_ILOCK_EXCL); xfs_ireclaim(ip); + return error; + +requeue: + xfs_ifunlock(ip); +requeue_no_flock: + xfs_iflags_clear(ip, XFS_IRECLAIM); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + /* + * We could return EAGAIN here to make reclaim rescan the inode tree in + * a short while. However, this just burns CPU time scanning the tree + * waiting for IO to complete and xfssyncd never goes back to the idle + * state. Instead, return 0 to let the next scheduled background reclaim + * attempt to reclaim the inode again. + */ return 0; } diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 8d0666d..fa31360 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2835,8 +2835,6 @@ xfs_iflush( xfs_dinode_t *dip; xfs_mount_t *mp; int error; - int noblock = (flags == XFS_IFLUSH_ASYNC_NOBLOCK); - enum { INT_DELWRI = (1 << 0), INT_ASYNC = (1 << 1) }; XFS_STATS_INC(xs_iflush_count); @@ -2859,7 +2857,7 @@ xfs_iflush( * in the same cluster are dirty, they will probably write the inode * out for us if they occur after the log force completes. */ - if (noblock && xfs_ipincount(ip)) { + if (!(flags & SYNC_WAIT) && xfs_ipincount(ip)) { xfs_iunpin_nowait(ip); xfs_ifunlock(ip); return EAGAIN; @@ -2893,60 +2891,10 @@ xfs_iflush( } /* - * Decide how buffer will be flushed out. This is done before - * the call to xfs_iflush_int because this field is zeroed by it. - */ - if (iip != NULL && iip->ili_format.ilf_fields != 0) { - /* - * Flush out the inode buffer according to the directions - * of the caller. In the cases where the caller has given - * us a choice choose the non-delwri case. This is because - * the inode is in the AIL and we need to get it out soon. - */ - switch (flags) { - case XFS_IFLUSH_SYNC: - case XFS_IFLUSH_DELWRI_ELSE_SYNC: - flags = 0; - break; - case XFS_IFLUSH_ASYNC_NOBLOCK: - case XFS_IFLUSH_ASYNC: - case XFS_IFLUSH_DELWRI_ELSE_ASYNC: - flags = INT_ASYNC; - break; - case XFS_IFLUSH_DELWRI: - flags = INT_DELWRI; - break; - default: - ASSERT(0); - flags = 0; - break; - } - } else { - switch (flags) { - case XFS_IFLUSH_DELWRI_ELSE_SYNC: - case XFS_IFLUSH_DELWRI_ELSE_ASYNC: - case XFS_IFLUSH_DELWRI: - flags = INT_DELWRI; - break; - case XFS_IFLUSH_ASYNC_NOBLOCK: - case XFS_IFLUSH_ASYNC: - flags = INT_ASYNC; - break; - case XFS_IFLUSH_SYNC: - flags = 0; - break; - default: - ASSERT(0); - flags = 0; - break; - } - } - - /* * Get the buffer containing the on-disk inode. */ error = xfs_itobp(mp, NULL, ip, &dip, &bp, - noblock ? XBF_TRYLOCK : XBF_LOCK); + (flags & SYNC_WAIT) ? XBF_LOCK : XBF_TRYLOCK); if (error || !bp) { xfs_ifunlock(ip); return error; @@ -2974,13 +2922,10 @@ xfs_iflush( if (error) goto cluster_corrupt_out; - if (flags & INT_DELWRI) { - xfs_bdwrite(mp, bp); - } else if (flags & INT_ASYNC) { - error = xfs_bawrite(mp, bp); - } else { + if (flags & SYNC_WAIT) error = xfs_bwrite(mp, bp); - } + else + xfs_bdwrite(mp, bp); return error; corrupt_out: @@ -3015,16 +2960,6 @@ xfs_iflush_int( iip = ip->i_itemp; mp = ip->i_mount; - - /* - * If the inode isn't dirty, then just release the inode - * flush lock and do nothing. - */ - if (xfs_inode_clean(ip)) { - xfs_ifunlock(ip); - return 0; - } - /* set *dip = inode's place in the buffer */ dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 8b618ea..6c912b0 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -420,16 +420,6 @@ static inline void xfs_ifunlock(xfs_inode_t *ip) #define XFS_ILOCK_DEP(flags) (((flags) & XFS_ILOCK_DEP_MASK) >> XFS_ILOCK_SHIFT) /* - * Flags for xfs_iflush() - */ -#define XFS_IFLUSH_DELWRI_ELSE_SYNC 1 -#define XFS_IFLUSH_DELWRI_ELSE_ASYNC 2 -#define XFS_IFLUSH_SYNC 3 -#define XFS_IFLUSH_ASYNC 4 -#define XFS_IFLUSH_DELWRI 5 -#define XFS_IFLUSH_ASYNC_NOBLOCK 6 - -/* * Flags for xfs_itruncate_start(). */ #define XFS_ITRUNC_DEFINITE 0x1 diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index 48ec1c0..9ec41e6 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -866,10 +866,14 @@ xfs_inode_item_push( iip->ili_format.ilf_fields != 0); /* - * Write out the inode. The completion routine ('iflush_done') will - * pull it from the AIL, mark it clean, unlock the flush lock. + * Push the inode to it's backing buffer. This will not remove + * the inode from the AIL - a further push will be required to trigger + * a buffer push. However, this allows all the dirty inodes to be pushed to + * the buffer before it is pushed to disk. THe buffer IO completion + * will pull th einode from the AIL, mark it clean and unlock the flush + * lock. */ - (void) xfs_iflush(ip, XFS_IFLUSH_ASYNC); + (void) xfs_iflush(ip, 0); xfs_iunlock(ip, XFS_ILOCK_SHARED); return; diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 7f81ed7..9a036f4 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -1456,7 +1456,18 @@ xfs_unmountfs( * need to force the log first. */ xfs_log_force(mp, XFS_LOG_SYNC); - xfs_reclaim_inodes(mp, XFS_IFLUSH_ASYNC); + + /* + * Do a delwri reclaim pass first so that as many dirty inodes are + * queued up for IO as possible. Then flush the buffers before making + * a synchronous path to catch all the remaining inodes are reclaimed. + * This makes the reclaim process as quick as possible by avoiding + * synchronous writeout and blocking on inodes already in the delwri + * state as much as possible. + */ + xfs_reclaim_inodes(mp, 0); + XFS_bflush(mp->m_ddev_targp); + xfs_reclaim_inodes(mp, SYNC_WAIT); xfs_qm_unmount(mp); -- 1.6.5 From SRS0+liHd+54+fromorbit.com=dave@internode.on.net Mon Jan 25 00:21:53 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_54,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P6Lrfb037510 for ; Mon, 25 Jan 2010 00:21:53 -0600 X-ASG-Debug-ID: 1264400575-357903c80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 365FD188905 for ; Sun, 24 Jan 2010 22:22:55 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id nciQgg62HnC6OvK1 for ; Sun, 24 Jan 2010 22:22:55 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11585216-1927428 for ; Mon, 25 Jan 2010 16:52:54 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZILY-0002xH-5M for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:48 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZILX-0003no-1d for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/7] Delayed write metadata writeback V3 Subject: [PATCH 0/7] Delayed write metadata writeback V3 Date: Mon, 25 Jan 2010 17:22:37 +1100 Message-Id: <1264400564-19704-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1264400577 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20733 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean (a.k.a. kill async inode writeback V3) While I started with killing async inode writeback, the series has grown. It's not really limited to inode writeback - it touches dquot flushing, changes the way the AIL pushes on buffers, adds xfsbufd sortingi for delayed write buffers, adds a real non-blocking mode to inode reclaim and avoids physical inode writeback from the VFS while fixing bugs in handling delayed write inodes. Hence this is more about enabling efficient delayed write metadata than it is able killing async inode writeback. The idea behind this series is to make metadata buffers get written from xfsbufd via the delayed write queue rather than being issued asynchronously from all over the place. To do this, async buffer writeback is almost entirely removed from XFS, replaced instead by delayed writes and a method to expedite flushing of delayed write buffers when required. The result of funnelling all the buffer IO into a single place is that we can more tightly control and therefore optimise the submission of metadata IO. Aggregating the buffers before dispatch allows much better sort efficiency of the buffers as the sort window is not limited to the size of the elevator congestion hysteresis limit. Hence we can approach 100% merge effeciency on large numbers of buffers when dispatched for IO and greatly reduce the amount of seeking metadata writeback causes. The major change is to the inode flushing and reclaim code. Delayed write inodes hold the flush lock for much longer than for async writeback, and hence blocking on the flush lock can cause extremely long latencies without other mechanisms to expedite the release of the flush locks. To prevent needing to flush inodes immeidately, all operations are done non-blocking unless synchronous. THis required a significant rework of the inode reclaim code, but it greatly simplified other pieces of code (e.g. log item pushing). Version 3 - rework inode reclaim to: - separate it from xfs_iflush return values - provide a non-blocking mode for background operation - apply delwri buffer promotion tricks to dquot flushing - kill unneeded dquot flushing flags, similar to inode flushing flag removal - fix sync inode flush bug when trying to flush delwri inodes Version 2: - use generic list sort function - when unmounting, push the delwri buffers first, then do sync inode reclaim so that reclaim doesn't block for 15 seconds waiting for delwri inode buffers to be aged and written before the inodes can be reclaimed. Performance numbers for this version are the same as V2, which were as follows: Perf results (average of 3 runs) on a debug XFS build (means allocation patterns are randomly varied, so runtimes are also a bit variable): Untar 2.6.32 kernel tarball, sync, then remove: Untar+sync rm -rf xfs-dev: 25.2s 13.0s xfs-dev-delwri-1: 22.5s 9.1s xfs-dev-delwri-2: 21.9s 8.4s 4 processes each creating 100,000, five byte files in separate directories concurrently, then 4 processes removing a directory each concurrently. create rm -rf xfs-dev: 8m32s 4m10s xfs-dev-delwri-1: 4m55s 3m42s xfs-dev-delwri-2: 4m56s 3m33s The patch series (plus the couple of previous bug fixes) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/dgc/xfs for-2.6.34 Dave Chinner (9): xfs: don't hold onto reserved blocks on remount,ro xfs: turn off sign warnings xfs: Make inode reclaim states explicit xfs: Use delayed write for inodes rather than async xfs: Don't issue buffer IO direct from AIL push xfs: Sort delayed write buffers before dispatch xfs: Use delay write promotion for dquot flushing xfs: kill the unused XFS_QMOPT_* flush flags xfs: xfs_fs_write_inode() can fail to write inodes synchronously fs/xfs/Makefile | 2 +- fs/xfs/linux-2.6/xfs_buf.c | 117 +++++++++++++++++++++++++++++--------- fs/xfs/linux-2.6/xfs_buf.h | 2 + fs/xfs/linux-2.6/xfs_super.c | 72 ++++++++++++++++++------ fs/xfs/linux-2.6/xfs_sync.c | 124 ++++++++++++++++++++++++++++++++-------- fs/xfs/linux-2.6/xfs_trace.h | 1 + fs/xfs/quota/xfs_dquot.c | 38 +++++------- fs/xfs/quota/xfs_dquot_item.c | 87 ++++------------------------ fs/xfs/quota/xfs_dquot_item.h | 4 - fs/xfs/quota/xfs_qm.c | 14 ++--- fs/xfs/xfs_buf_item.c | 64 ++++++++++++---------- fs/xfs/xfs_inode.c | 86 ++-------------------------- fs/xfs/xfs_inode.h | 11 +--- fs/xfs/xfs_inode_item.c | 108 +++++++---------------------------- fs/xfs/xfs_inode_item.h | 6 -- fs/xfs/xfs_mount.c | 13 ++++- fs/xfs/xfs_mount.h | 1 + fs/xfs/xfs_quota.h | 8 +-- fs/xfs/xfs_trans_ail.c | 7 ++ 19 files changed, 367 insertions(+), 398 deletions(-) From SRS0+VJ07+54+fromorbit.com=dave@internode.on.net Mon Jan 25 00:21:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P6LwD4037528 for ; Mon, 25 Jan 2010 00:21:58 -0600 X-ASG-Debug-ID: 1264400580-3c5d03360000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AB2A31C767A7 for ; Sun, 24 Jan 2010 22:23:00 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id r9wBg5HaAT7ANqaN for ; Sun, 24 Jan 2010 22:23:00 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11565360-1927428 for ; Mon, 25 Jan 2010 16:52:59 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZILi-0002xZ-HL for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:58 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZILX-0003oD-Gx for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 7/7] xfs: xfs_fs_write_inode() can fail to write inodes synchronously Subject: [PATCH 7/7] xfs: xfs_fs_write_inode() can fail to write inodes synchronously Date: Mon, 25 Jan 2010 17:22:44 +1100 Message-Id: <1264400564-19704-8-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1264400564-19704-1-git-send-email-david@fromorbit.com> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1264400581 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20733 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When an inode has already be flushed delayed write, xfs_inode_clean() returns true and hence xfs_fs_write_inode() can return on a synchronous inode write without having written the inode. Currently these sycnhronous writes only come from the unmount path or the nfsd on a synchronous export so should be fairly rare. Realistically, a synchronous inode write is not necessary here; we can treat this like fsync where we either force the log if there are no unlogged changes, or do a sync transaction if there are unlogged changes. The will result real synchronous semantics as the fsync will issue barriers, but may slow down the above two configurations as a result. However, if the inode is not pinned and has no unlogged changes, then the fsync code is a no-op and hence it may be faster than the existing code. For the asynchronous write, move the clean check until after we have locked up the inode. With the inode locked and the flush lock held, we know that if the inodis clean there are no pending changes in the log and there are no current outstanding delayed writes or IO in progress, so if it reports clean now it really is clean. This matches the order of locking and checks in xfs_sync_inode_attr(). Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_super.c | 44 ++++++++++++++++++++++++----------------- 1 files changed, 26 insertions(+), 18 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 5ed0468..4cfc82a 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -1045,14 +1045,18 @@ xfs_fs_write_inode( error = xfs_wait_on_pages(ip, 0, -1); if (error) goto out; + /* + * The fsync operation makes inode changes stable and it + * reduces the IOs we have to do here from two (log and inode) + * to just the log. We still need to do a delwri write of the + * inode after this to flush it to the bacing buffer so that + * bulkstat works properly. + */ + error = xfs_fsync(ip); + if (error) + goto out; } - /* - * Bypass inodes which have already been cleaned by - * the inode flush clustering code inside xfs_iflush - */ - if (xfs_inode_clean(ip)) - goto out; /* * We make this non-blocking if the inode is contended, return @@ -1060,20 +1064,24 @@ xfs_fs_write_inode( * This prevents the flush path from blocking on inodes inside * another operation right now, they get caught later by xfs_sync. */ - if (sync) { - xfs_ilock(ip, XFS_ILOCK_SHARED); - xfs_iflock(ip); - - error = xfs_iflush(ip, SYNC_WAIT); - } else { - error = EAGAIN; - if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) - goto out; - if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) - goto out_unlock; + error = EAGAIN; + if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) + goto out; + if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) + goto out_unlock; - error = xfs_iflush(ip, 0); + /* + * Now we have the flush lock and the inode is not pinned, we can check + * if the inode is really clean as we know that there are no pending + * transaction completions, it is not waiting on the delayed write + * queue and there is no IO in progress. + */ + error = 0; + if (xfs_inode_clean(ip)) { + xfs_ifunlock(ip); + goto out_unlock; } + error = xfs_iflush(ip, 0); out_unlock: xfs_iunlock(ip, XFS_ILOCK_SHARED); -- 1.6.5 From SRS0+Nbh5+54+fromorbit.com=dave@internode.on.net Mon Jan 25 00:21:58 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P6Lw8L037529 for ; Mon, 25 Jan 2010 00:21:58 -0600 X-ASG-Debug-ID: 1264400580-357a03ae0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B74BA188907 for ; Sun, 24 Jan 2010 22:23:00 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id k3ZyGZANwwJkCj7o for ; Sun, 24 Jan 2010 22:23:00 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11427985-1927428 for ; Mon, 25 Jan 2010 16:52:59 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZILi-0002xQ-CC for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:58 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZILX-0003o1-Bn for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/7] xfs: Sort delayed write buffers before dispatch Subject: [PATCH 4/7] xfs: Sort delayed write buffers before dispatch Date: Mon, 25 Jan 2010 17:22:41 +1100 Message-Id: <1264400564-19704-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1264400564-19704-1-git-send-email-david@fromorbit.com> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1264400581 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20733 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Currently when the xfsbufd writes delayed write buffers, it pushes them to disk in the order they come off the delayed write list. If there are lots of buffers Ń•pread widely over the disk, this results in overwhelming the elevator sort queues in the block layer and we end up losing the posibility of merging adjacent buffers to minimise the number of IOs. Use the new generic list_sort function to sort the delwri dispatch queue before issue to ensure that the buffers are pushed in the most friendly order possible to the lower layers. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_buf.c | 88 ++++++++++++++++++++++++++++++------------- 1 files changed, 61 insertions(+), 27 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index b306265..a53afb3 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "xfs_sb.h" #include "xfs_inum.h" @@ -1877,14 +1878,42 @@ xfs_buf_delwri_split( } +/* + * Compare function is more complex than it needs to be because + * the return value is only 32 bits and we are doing comparisons + * on 64 bit values + */ +static int +xfs_buf_cmp( + void *priv, + struct list_head *a, + struct list_head *b) +{ + struct xfs_buf *ap = container_of(a, struct xfs_buf, b_list); + struct xfs_buf *bp = container_of(b, struct xfs_buf, b_list); + xfs_daddr_t diff; + + diff = ap->b_bn - bp->b_bn; + if (diff < 0) + return -1; + if (diff > 0) + return 1; + return 0; +} + +void +xfs_buf_delwri_sort( + xfs_buftarg_t *target, + struct list_head *list) +{ + list_sort(NULL, list, xfs_buf_cmp); +} + STATIC int xfsbufd( void *data) { - struct list_head tmp; - xfs_buftarg_t *target = (xfs_buftarg_t *)data; - int count; - xfs_buf_t *bp; + xfs_buftarg_t *target = (xfs_buftarg_t *)data; current->flags |= PF_MEMALLOC; @@ -1893,6 +1922,8 @@ xfsbufd( do { long age = xfs_buf_age_centisecs * msecs_to_jiffies(10); long tout = xfs_buf_timer_centisecs * msecs_to_jiffies(10); + int count = 0; + struct list_head tmp; if (unlikely(freezing(current))) { set_bit(XBT_FORCE_SLEEP, &target->bt_flags); @@ -1907,11 +1938,10 @@ xfsbufd( schedule_timeout_interruptible(tout); xfs_buf_delwri_split(target, &tmp, age); - count = 0; + list_sort(NULL, &tmp, xfs_buf_cmp); while (!list_empty(&tmp)) { - bp = list_entry(tmp.next, xfs_buf_t, b_list); - ASSERT(target == bp->b_target); - + struct xfs_buf *bp; + bp = list_first_entry(&tmp, struct xfs_buf, b_list); list_del_init(&bp->b_list); xfs_buf_iostrategy(bp); count++; @@ -1937,42 +1967,46 @@ xfs_flush_buftarg( xfs_buftarg_t *target, int wait) { - struct list_head tmp; - xfs_buf_t *bp, *n; + xfs_buf_t *bp; int pincount = 0; + LIST_HEAD(tmp_list); + LIST_HEAD(wait_list); xfs_buf_runall_queues(xfsconvertd_workqueue); xfs_buf_runall_queues(xfsdatad_workqueue); xfs_buf_runall_queues(xfslogd_workqueue); set_bit(XBT_FORCE_FLUSH, &target->bt_flags); - pincount = xfs_buf_delwri_split(target, &tmp, 0); + pincount = xfs_buf_delwri_split(target, &tmp_list, 0); /* - * Dropped the delayed write list lock, now walk the temporary list + * Dropped the delayed write list lock, now walk the temporary list. + * All I/O is issued async and then if we need to wait for completion + * we do that after issuing all the IO. */ - list_for_each_entry_safe(bp, n, &tmp, b_list) { + list_sort(NULL, &tmp_list, xfs_buf_cmp); + while (!list_empty(&tmp_list)) { + struct xfs_buf *bp; + bp = list_first_entry(&tmp_list, struct xfs_buf, b_list); ASSERT(target == bp->b_target); - if (wait) + list_del_init(&bp->b_list); + if (wait) { bp->b_flags &= ~XBF_ASYNC; - else - list_del_init(&bp->b_list); - + list_add(&bp->b_list, &wait_list); + } xfs_buf_iostrategy(bp); } - if (wait) + if (wait) { + /* Expedite and wait for IO to complete. */ blk_run_address_space(target->bt_mapping); + while (!list_empty(&wait_list)) { + bp = list_first_entry(&wait_list, struct xfs_buf, b_list); - /* - * Remaining list items must be flushed before returning - */ - while (!list_empty(&tmp)) { - bp = list_entry(tmp.next, xfs_buf_t, b_list); - - list_del_init(&bp->b_list); - xfs_iowait(bp); - xfs_buf_relse(bp); + list_del_init(&bp->b_list); + xfs_iowait(bp); + xfs_buf_relse(bp); + } } return pincount; -- 1.6.5 From SRS0+VJ07+54+fromorbit.com=dave@internode.on.net Mon Jan 25 00:21:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,LOCAL_GNU_PATCH autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P6Lx2k037544 for ; Mon, 25 Jan 2010 00:21:59 -0600 X-ASG-Debug-ID: 1264400580-3c6003510000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6C6421C767A7 for ; Sun, 24 Jan 2010 22:23:01 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id LF0L7eGfmeOCJ9rx for ; Sun, 24 Jan 2010 22:23:01 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11565361-1927428 for ; Mon, 25 Jan 2010 16:53:00 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZILY-0002xW-Gh for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:48 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZILX-0003o9-F2 for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 6/7] xfs: kill the unused XFS_QMOPT_* flush flags Subject: [PATCH 6/7] xfs: kill the unused XFS_QMOPT_* flush flags Date: Mon, 25 Jan 2010 17:22:43 +1100 Message-Id: <1264400564-19704-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1264400564-19704-1-git-send-email-david@fromorbit.com> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1264400582 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20733 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean dquots are never flushed asynchronously. Remove the flag and the async write support from the flush function. Make the default flush a delwri flush to make the inode flush code, which leaves the XFS_QMOPT_SYNC the only flag remaining. Convert that to use SYNC_WAIT instead, just like the inode flush code. Signed-off-by: Dave Chinner --- fs/xfs/quota/xfs_dquot.c | 13 ++++++------- fs/xfs/quota/xfs_dquot_item.c | 2 +- fs/xfs/quota/xfs_qm.c | 14 ++++++-------- fs/xfs/xfs_quota.h | 8 +------- 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c index 1620a56..5f79dd7 100644 --- a/fs/xfs/quota/xfs_dquot.c +++ b/fs/xfs/quota/xfs_dquot.c @@ -1187,7 +1187,7 @@ xfs_qm_dqflush( * block, nada. */ if (!XFS_DQ_IS_DIRTY(dqp) || - (!(flags & XFS_QMOPT_SYNC) && atomic_read(&dqp->q_pincount) > 0)) { + (!(flags & SYNC_WAIT) && atomic_read(&dqp->q_pincount) > 0)) { xfs_dqfunlock(dqp); return 0; } @@ -1251,18 +1251,17 @@ xfs_qm_dqflush( xfs_log_force(mp, 0); } - if (flags & XFS_QMOPT_DELWRI) { - xfs_bdwrite(mp, bp); - } else { + if (flags & SYNC_WAIT) error = xfs_bwrite(mp, bp); - } + else + xfs_bdwrite(mp, bp); trace_xfs_dqflush_done(dqp); /* * dqp is still locked, but caller is free to unlock it now. */ - return (error); + return error; } @@ -1443,7 +1442,7 @@ xfs_qm_dqpurge( * We don't care about getting disk errors here. We need * to purge this dquot anyway, so we go ahead regardless. */ - error = xfs_qm_dqflush(dqp, XFS_QMOPT_SYNC); + error = xfs_qm_dqflush(dqp, SYNC_WAIT); if (error) xfs_fs_cmn_err(CE_WARN, mp, "xfs_qm_dqpurge: dquot %p flush failed", dqp); diff --git a/fs/xfs/quota/xfs_dquot_item.c b/fs/xfs/quota/xfs_dquot_item.c index dda0fb0..4e4ee9a 100644 --- a/fs/xfs/quota/xfs_dquot_item.c +++ b/fs/xfs/quota/xfs_dquot_item.c @@ -153,7 +153,7 @@ xfs_qm_dquot_logitem_push( * lock without sleeping, then there must not have been * anyone in the process of flushing the dquot. */ - error = xfs_qm_dqflush(dqp, XFS_QMOPT_DELWRI); + error = xfs_qm_dqflush(dqp, 0); if (error) xfs_fs_cmn_err(CE_WARN, dqp->q_mount, "xfs_qm_dquot_logitem_push: push error %d on dqp %p", diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index 11cfd82..8112a26 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c @@ -450,7 +450,7 @@ xfs_qm_unmount_quotas( STATIC int xfs_qm_dqflush_all( xfs_mount_t *mp, - int flags) + int sync_mode) { int recl; xfs_dquot_t *dqp; @@ -486,7 +486,7 @@ again: * across a disk write. */ xfs_qm_mplist_unlock(mp); - error = xfs_qm_dqflush(dqp, flags); + error = xfs_qm_dqflush(dqp, sync_mode); xfs_dqunlock(dqp); if (error) return error; @@ -926,13 +926,11 @@ xfs_qm_sync( { int recl, restarts; xfs_dquot_t *dqp; - uint flush_flags; int error; if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) return 0; - flush_flags = (flags & SYNC_WAIT) ? XFS_QMOPT_SYNC : XFS_QMOPT_DELWRI; restarts = 0; again: @@ -992,7 +990,7 @@ xfs_qm_sync( * across a disk write */ xfs_qm_mplist_unlock(mp); - error = xfs_qm_dqflush(dqp, flush_flags); + error = xfs_qm_dqflush(dqp, (flags & SYNC_WAIT)); xfs_dqunlock(dqp); if (error && XFS_FORCED_SHUTDOWN(mp)) return 0; /* Need to prevent umount failure */ @@ -1796,7 +1794,7 @@ xfs_qm_quotacheck( * successfully. */ if (!error) - error = xfs_qm_dqflush_all(mp, XFS_QMOPT_DELWRI); + error = xfs_qm_dqflush_all(mp, 0); /* * We can get this error if we couldn't do a dquot allocation inside @@ -2018,7 +2016,7 @@ xfs_qm_shake_freelist( * We flush it delayed write, so don't bother * releasing the mplock. */ - error = xfs_qm_dqflush(dqp, XFS_QMOPT_DELWRI); + error = xfs_qm_dqflush(dqp, 0); if (error) { xfs_fs_cmn_err(CE_WARN, dqp->q_mount, "xfs_qm_dqflush_all: dquot %p flush failed", dqp); @@ -2201,7 +2199,7 @@ xfs_qm_dqreclaim_one(void) * We flush it delayed write, so don't bother * releasing the freelist lock. */ - error = xfs_qm_dqflush(dqp, XFS_QMOPT_DELWRI); + error = xfs_qm_dqflush(dqp, 0); if (error) { xfs_fs_cmn_err(CE_WARN, dqp->q_mount, "xfs_qm_dqreclaim: dquot %p flush failed", dqp); diff --git a/fs/xfs/xfs_quota.h b/fs/xfs/xfs_quota.h index 21d11d9..fdcab3f 100644 --- a/fs/xfs/xfs_quota.h +++ b/fs/xfs/xfs_quota.h @@ -223,15 +223,9 @@ typedef struct xfs_qoff_logformat { #define XFS_QMOPT_RES_INOS 0x0800000 /* - * flags for dqflush and dqflush_all. - */ -#define XFS_QMOPT_SYNC 0x1000000 -#define XFS_QMOPT_DELWRI 0x4000000 - -/* * flags for dqalloc. */ -#define XFS_QMOPT_INHERIT 0x8000000 +#define XFS_QMOPT_INHERIT 0x1000000 /* * flags to xfs_trans_mod_dquot. -- 1.6.5 From SRS0+Nbh5+54+fromorbit.com=dave@internode.on.net Mon Jan 25 00:22:00 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P6M0fR037560 for ; Mon, 25 Jan 2010 00:22:00 -0600 X-ASG-Debug-ID: 1264400581-357e03df0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 223A6188955 for ; Sun, 24 Jan 2010 22:23:01 -0800 (PST) Received: from mail.internode.on.net (bld-mail17.adl2.internode.on.net [150.101.137.102]) by cuda.sgi.com with ESMTP id 1tCyxg2ISCNANLM7 for ; Sun, 24 Jan 2010 22:23:01 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11427986-1927428 for ; Mon, 25 Jan 2010 16:53:00 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZILY-0002xM-Bk for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:48 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZILX-0003ny-9v for xfs@oss.sgi.com; Mon, 25 Jan 2010 17:22:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/7] xfs: Don't issue buffer IO direct from AIL push Subject: [PATCH 3/7] xfs: Don't issue buffer IO direct from AIL push Date: Mon, 25 Jan 2010 17:22:40 +1100 Message-Id: <1264400564-19704-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 In-Reply-To: <1264400564-19704-1-git-send-email-david@fromorbit.com> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: bld-mail17.adl2.internode.on.net[150.101.137.102] X-Barracuda-Start-Time: 1264400583 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20733 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean All buffers logged into the AIL are marked as delayed write. When the AIL needs to push the buffer out, it issues an async write of the buffer. This means that IO patterns are dependent on the order of buffers in the AIL. Instead of flushing the buffer, promote the buffer in the delayed write list so that the next time the xfsbufd is run the buffer will be flushed by the xfsbufd. Return the state to the xfsaild that the buffer was promoted so that the xfsaild knows that it needs to cause the xfsbufd to run to flush the buffers that were promoted. Using the xfsbufd for issuing the IO allows us to dispatch all buffer IO from the one queue. This means that we can make much more enlightened decisions on what order to flush buffers to disk as we don't have multiple places issuing IO. Optimisations to xfsbufd will be in a future patch. Signed-off-by: Dave Chinner --- fs/xfs/linux-2.6/xfs_buf.c | 29 ++++++++++++ fs/xfs/linux-2.6/xfs_buf.h | 2 + fs/xfs/linux-2.6/xfs_trace.h | 1 + fs/xfs/quota/xfs_dquot_item.c | 85 +++++------------------------------ fs/xfs/quota/xfs_dquot_item.h | 4 -- fs/xfs/xfs_buf_item.c | 64 +++++++++++++++------------ fs/xfs/xfs_inode_item.c | 98 ++++++---------------------------------- fs/xfs/xfs_inode_item.h | 6 --- fs/xfs/xfs_trans_ail.c | 7 +++ 9 files changed, 101 insertions(+), 195 deletions(-) diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 44e20e5..b306265 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -1778,6 +1778,35 @@ xfs_buf_delwri_dequeue( trace_xfs_buf_delwri_dequeue(bp, _RET_IP_); } +/* + * If a delwri buffer needs to be pushed before it has aged out, then promote + * it to the head of the delwri queue so that it will be flushed on the next + * xfsbufd run. We do this by resetting the queuetime of the buffer to be older + * than the age currently needed to flush the buffer. Hence the next time the + * xfsbufd sees it is guaranteed to be considered old enough to flush. + */ +void +xfs_buf_delwri_promote( + struct xfs_buf *bp) +{ + struct xfs_buftarg *btp = bp->b_target; + long age = xfs_buf_age_centisecs * msecs_to_jiffies(10) + 1; + + ASSERT(bp->b_flags & XBF_DELWRI); + ASSERT(bp->b_flags & _XBF_DELWRI_Q); + + /* + * Check the buffer age before locking the delayed write queue as we + * don't need to promote buffers that are already past the flush age. + */ + if (bp->b_queuetime < jiffies - age) + return; + bp->b_queuetime = jiffies - age; + spin_lock(&btp->bt_delwrite_lock); + list_move(&bp->b_list, &btp->bt_delwrite_queue); + spin_unlock(&btp->bt_delwrite_lock); +} + STATIC void xfs_buf_runall_queues( struct workqueue_struct *queue) diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h index ea8c198..be45e8c 100644 --- a/fs/xfs/linux-2.6/xfs_buf.h +++ b/fs/xfs/linux-2.6/xfs_buf.h @@ -266,6 +266,7 @@ extern int xfs_buf_ispin(xfs_buf_t *); /* Delayed Write Buffer Routines */ extern void xfs_buf_delwri_dequeue(xfs_buf_t *); +extern void xfs_buf_delwri_promote(xfs_buf_t *); /* Buffer Daemon Setup Routines */ extern int xfs_buf_init(void); @@ -395,6 +396,7 @@ extern void xfs_free_buftarg(struct xfs_mount *, struct xfs_buftarg *); extern void xfs_wait_buftarg(xfs_buftarg_t *); extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int); extern int xfs_flush_buftarg(xfs_buftarg_t *, int); + #ifdef CONFIG_KDB_MODULES extern struct list_head *xfs_get_buftarg_list(void); #endif diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h index 1bb09e7..a4574dc 100644 --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h @@ -483,6 +483,7 @@ DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unlock); DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unlock_stale); DEFINE_BUF_ITEM_EVENT(xfs_buf_item_committed); DEFINE_BUF_ITEM_EVENT(xfs_buf_item_push); +DEFINE_BUF_ITEM_EVENT(xfs_buf_item_pushbuf); DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf); DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf_recur); DEFINE_BUF_ITEM_EVENT(xfs_trans_getsb); diff --git a/fs/xfs/quota/xfs_dquot_item.c b/fs/xfs/quota/xfs_dquot_item.c index 1b56437..dda0fb0 100644 --- a/fs/xfs/quota/xfs_dquot_item.c +++ b/fs/xfs/quota/xfs_dquot_item.c @@ -212,66 +212,31 @@ xfs_qm_dquot_logitem_pushbuf( xfs_dquot_t *dqp; xfs_mount_t *mp; xfs_buf_t *bp; - uint dopush; dqp = qip->qli_dquot; ASSERT(XFS_DQ_IS_LOCKED(dqp)); /* - * The qli_pushbuf_flag keeps others from - * trying to duplicate our effort. - */ - ASSERT(qip->qli_pushbuf_flag != 0); - ASSERT(qip->qli_push_owner == current_pid()); - - /* * If flushlock isn't locked anymore, chances are that the * inode flush completed and the inode was taken off the AIL. * So, just get out. */ if (completion_done(&dqp->q_flush) || ((qip->qli_item.li_flags & XFS_LI_IN_AIL) == 0)) { - qip->qli_pushbuf_flag = 0; xfs_dqunlock(dqp); return; } mp = dqp->q_mount; bp = xfs_incore(mp->m_ddev_targp, qip->qli_format.qlf_blkno, XFS_QI_DQCHUNKLEN(mp), XBF_TRYLOCK); - if (bp != NULL) { - if (XFS_BUF_ISDELAYWRITE(bp)) { - dopush = ((qip->qli_item.li_flags & XFS_LI_IN_AIL) && - !completion_done(&dqp->q_flush)); - qip->qli_pushbuf_flag = 0; - xfs_dqunlock(dqp); - - if (XFS_BUF_ISPINNED(bp)) - xfs_log_force(mp, 0); - - if (dopush) { - int error; -#ifdef XFSRACEDEBUG - delay_for_intr(); - delay(300); -#endif - error = xfs_bawrite(mp, bp); - if (error) - xfs_fs_cmn_err(CE_WARN, mp, - "xfs_qm_dquot_logitem_pushbuf: pushbuf error %d on qip %p, bp %p", - error, qip, bp); - } else { - xfs_buf_relse(bp); - } - } else { - qip->qli_pushbuf_flag = 0; - xfs_dqunlock(dqp); - xfs_buf_relse(bp); - } + xfs_dqunlock(dqp); + if (!bp) return; - } + if (XFS_BUF_ISDELAYWRITE(bp)) + xfs_buf_delwri_promote(bp); + xfs_buf_relse(bp); + return; - qip->qli_pushbuf_flag = 0; - xfs_dqunlock(dqp); } /* @@ -289,50 +254,24 @@ xfs_qm_dquot_logitem_trylock( xfs_dq_logitem_t *qip) { xfs_dquot_t *dqp; - uint retval; dqp = qip->qli_dquot; if (atomic_read(&dqp->q_pincount) > 0) - return (XFS_ITEM_PINNED); + return XFS_ITEM_PINNED; if (! xfs_qm_dqlock_nowait(dqp)) - return (XFS_ITEM_LOCKED); + return XFS_ITEM_LOCKED; - retval = XFS_ITEM_SUCCESS; if (!xfs_dqflock_nowait(dqp)) { /* - * The dquot is already being flushed. It may have been - * flushed delayed write, however, and we don't want to - * get stuck waiting for that to complete. So, we want to check - * to see if we can lock the dquot's buffer without sleeping. - * If we can and it is marked for delayed write, then we - * hold it and send it out from the push routine. We don't - * want to do that now since we might sleep in the device - * strategy routine. We also don't want to grab the buffer lock - * here because we'd like not to call into the buffer cache - * while holding the AIL lock. - * Make sure to only return PUSHBUF if we set pushbuf_flag - * ourselves. If someone else is doing it then we don't - * want to go to the push routine and duplicate their efforts. + * dquot has already been flushed to the backing buffer, + * leave it locked, pushbuf routine will unlock it. */ - if (qip->qli_pushbuf_flag == 0) { - qip->qli_pushbuf_flag = 1; - ASSERT(qip->qli_format.qlf_blkno == dqp->q_blkno); -#ifdef DEBUG - qip->qli_push_owner = current_pid(); -#endif - /* - * The dquot is left locked. - */ - retval = XFS_ITEM_PUSHBUF; - } else { - retval = XFS_ITEM_FLUSHING; - xfs_dqunlock_nonotify(dqp); - } + return XFS_ITEM_PUSHBUF; } ASSERT(qip->qli_item.li_flags & XFS_LI_IN_AIL); - return (retval); + return XFS_ITEM_SUCCESS; } diff --git a/fs/xfs/quota/xfs_dquot_item.h b/fs/xfs/quota/xfs_dquot_item.h index 5a63253..5acae2a 100644 --- a/fs/xfs/quota/xfs_dquot_item.h +++ b/fs/xfs/quota/xfs_dquot_item.h @@ -27,10 +27,6 @@ typedef struct xfs_dq_logitem { xfs_log_item_t qli_item; /* common portion */ struct xfs_dquot *qli_dquot; /* dquot ptr */ xfs_lsn_t qli_flush_lsn; /* lsn at last flush */ - unsigned short qli_pushbuf_flag; /* 1 bit used in push_ail */ -#ifdef DEBUG - uint64_t qli_push_owner; -#endif xfs_dq_logformat_t qli_format; /* logged structure */ } xfs_dq_logitem_t; diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index e0a1158..f3c49e6 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c @@ -467,8 +467,10 @@ xfs_buf_item_unpin_remove( /* * This is called to attempt to lock the buffer associated with this * buf log item. Don't sleep on the buffer lock. If we can't get - * the lock right away, return 0. If we can get the lock, pull the - * buffer from the free list, mark it busy, and return 1. + * the lock right away, return 0. If we can get the lock, take a + * reference to the buffer. If this is a delayed write buffer that + * needs AIL help to be written back, invoke the pushbuf routine + * rather than the normal success path. */ STATIC uint xfs_buf_item_trylock( @@ -477,24 +479,18 @@ xfs_buf_item_trylock( xfs_buf_t *bp; bp = bip->bli_buf; - - if (XFS_BUF_ISPINNED(bp)) { + if (XFS_BUF_ISPINNED(bp)) return XFS_ITEM_PINNED; - } - - if (!XFS_BUF_CPSEMA(bp)) { + if (!XFS_BUF_CPSEMA(bp)) return XFS_ITEM_LOCKED; - } - /* - * Remove the buffer from the free list. Only do this - * if it's on the free list. Private buffers like the - * superblock buffer are not. - */ + /* take a reference to the buffer. */ XFS_BUF_HOLD(bp); ASSERT(!(bip->bli_flags & XFS_BLI_STALE)); trace_xfs_buf_item_trylock(bip); + if (XFS_BUF_ISDELAYWRITE(bp)) + return XFS_ITEM_PUSHBUF; return XFS_ITEM_SUCCESS; } @@ -626,11 +622,9 @@ xfs_buf_item_committed( } /* - * This is called to asynchronously write the buffer associated with this - * buf log item out to disk. The buffer will already have been locked by - * a successful call to xfs_buf_item_trylock(). If the buffer still has - * B_DELWRI set, then get it going out to disk with a call to bawrite(). - * If not, then just release the buffer. + * The buffer is locked, but is not a delayed write buffer. This happens + * if we race with IO completion and hence we don't want to try to write it + * again. Just release the buffer. */ STATIC void xfs_buf_item_push( @@ -642,17 +636,29 @@ xfs_buf_item_push( trace_xfs_buf_item_push(bip); bp = bip->bli_buf; + ASSERT(!XFS_BUF_ISDELAYWRITE(bp)); + xfs_buf_relse(bp); +} - if (XFS_BUF_ISDELAYWRITE(bp)) { - int error; - error = xfs_bawrite(bip->bli_item.li_mountp, bp); - if (error) - xfs_fs_cmn_err(CE_WARN, bip->bli_item.li_mountp, - "xfs_buf_item_push: pushbuf error %d on bip %p, bp %p", - error, bip, bp); - } else { - xfs_buf_relse(bp); - } +/* + * The buffer is locked and is a delayed write buffer. Promote the buffer + * in the delayed write queue as the caller knows that they must invoke + * the xfsbufd to get this buffer written. We have to unlock the buffer + * to allow the xfsbufd to write it, too. + */ +STATIC void +xfs_buf_item_pushbuf( + xfs_buf_log_item_t *bip) +{ + xfs_buf_t *bp; + + ASSERT(!(bip->bli_flags & XFS_BLI_STALE)); + trace_xfs_buf_item_pushbuf(bip); + + bp = bip->bli_buf; + ASSERT(XFS_BUF_ISDELAYWRITE(bp)); + xfs_buf_delwri_promote(bp); + xfs_buf_relse(bp); } /* ARGSUSED */ @@ -677,7 +683,7 @@ static struct xfs_item_ops xfs_buf_item_ops = { .iop_committed = (xfs_lsn_t(*)(xfs_log_item_t*, xfs_lsn_t)) xfs_buf_item_committed, .iop_push = (void(*)(xfs_log_item_t*))xfs_buf_item_push, - .iop_pushbuf = NULL, + .iop_pushbuf = (void(*)(xfs_log_item_t*))xfs_buf_item_pushbuf, .iop_committing = (void(*)(xfs_log_item_t*, xfs_lsn_t)) xfs_buf_item_committing }; diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index 9ec41e6..25387b0 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -602,33 +602,20 @@ xfs_inode_item_trylock( if (!xfs_iflock_nowait(ip)) { /* - * If someone else isn't already trying to push the inode - * buffer, we get to do it. + * inode has already been flushed to the backing buffer, + * leave it locked in shared mode, pushbuf routine will + * unlock it. */ - if (iip->ili_pushbuf_flag == 0) { - iip->ili_pushbuf_flag = 1; -#ifdef DEBUG - iip->ili_push_owner = current_pid(); -#endif - /* - * Inode is left locked in shared mode. - * Pushbuf routine gets to unlock it. - */ - return XFS_ITEM_PUSHBUF; - } else { - /* - * We hold the AIL lock, so we must specify the - * NONOTIFY flag so that we won't double trip. - */ - xfs_iunlock(ip, XFS_ILOCK_SHARED|XFS_IUNLOCK_NONOTIFY); - return XFS_ITEM_FLUSHING; - } - /* NOTREACHED */ + return XFS_ITEM_PUSHBUF; } /* Stale items should force out the iclog */ if (ip->i_flags & XFS_ISTALE) { xfs_ifunlock(ip); + /* + * we hold the AIL lock - notify the unlock routine of this + * so it doesn't try to get the lock again. + */ xfs_iunlock(ip, XFS_ILOCK_SHARED|XFS_IUNLOCK_NONOTIFY); return XFS_ITEM_PINNED; } @@ -746,11 +733,8 @@ xfs_inode_item_committed( * This gets called by xfs_trans_push_ail(), when IOP_TRYLOCK * failed to get the inode flush lock but did get the inode locked SHARED. * Here we're trying to see if the inode buffer is incore, and if so whether it's - * marked delayed write. If that's the case, we'll initiate a bawrite on that - * buffer to expedite the process. - * - * We aren't holding the AIL lock (or the flush lock) when this gets called, - * so it is inherently race-y. + * marked delayed write. If that's the case, we'll promote it and that will + * allow the caller to write the buffer by triggering the xfsbufd to run. */ STATIC void xfs_inode_item_pushbuf( @@ -759,26 +743,16 @@ xfs_inode_item_pushbuf( xfs_inode_t *ip; xfs_mount_t *mp; xfs_buf_t *bp; - uint dopush; ip = iip->ili_inode; - ASSERT(xfs_isilocked(ip, XFS_ILOCK_SHARED)); /* - * The ili_pushbuf_flag keeps others from - * trying to duplicate our effort. - */ - ASSERT(iip->ili_pushbuf_flag != 0); - ASSERT(iip->ili_push_owner == current_pid()); - - /* * If a flush is not in progress anymore, chances are that the * inode was taken off the AIL. So, just get out. */ if (completion_done(&ip->i_flush) || ((iip->ili_item.li_flags & XFS_LI_IN_AIL) == 0)) { - iip->ili_pushbuf_flag = 0; xfs_iunlock(ip, XFS_ILOCK_SHARED); return; } @@ -787,53 +761,12 @@ xfs_inode_item_pushbuf( bp = xfs_incore(mp->m_ddev_targp, iip->ili_format.ilf_blkno, iip->ili_format.ilf_len, XBF_TRYLOCK); - if (bp != NULL) { - if (XFS_BUF_ISDELAYWRITE(bp)) { - /* - * We were racing with iflush because we don't hold - * the AIL lock or the flush lock. However, at this point, - * we have the buffer, and we know that it's dirty. - * So, it's possible that iflush raced with us, and - * this item is already taken off the AIL. - * If not, we can flush it async. - */ - dopush = ((iip->ili_item.li_flags & XFS_LI_IN_AIL) && - !completion_done(&ip->i_flush)); - iip->ili_pushbuf_flag = 0; - xfs_iunlock(ip, XFS_ILOCK_SHARED); - - trace_xfs_inode_item_push(bp, _RET_IP_); - - if (XFS_BUF_ISPINNED(bp)) - xfs_log_force(mp, 0); - - if (dopush) { - int error; - error = xfs_bawrite(mp, bp); - if (error) - xfs_fs_cmn_err(CE_WARN, mp, - "xfs_inode_item_pushbuf: pushbuf error %d on iip %p, bp %p", - error, iip, bp); - } else { - xfs_buf_relse(bp); - } - } else { - iip->ili_pushbuf_flag = 0; - xfs_iunlock(ip, XFS_ILOCK_SHARED); - xfs_buf_relse(bp); - } - return; - } - /* - * We have to be careful about resetting pushbuf flag too early (above). - * Even though in theory we can do it as soon as we have the buflock, - * we don't want others to be doing work needlessly. They'll come to - * this function thinking that pushing the buffer is their - * responsibility only to find that the buffer is still locked by - * another doing the same thing - */ - iip->ili_pushbuf_flag = 0; xfs_iunlock(ip, XFS_ILOCK_SHARED); + if (!bp) + return; + if (XFS_BUF_ISDELAYWRITE(bp)) + xfs_buf_delwri_promote(bp); + xfs_buf_relse(bp); return; } @@ -937,7 +870,6 @@ xfs_inode_item_init( /* We have zeroed memory. No need ... iip->ili_extents_buf = NULL; - iip->ili_pushbuf_flag = 0; */ iip->ili_format.ilf_type = XFS_LI_INODE; diff --git a/fs/xfs/xfs_inode_item.h b/fs/xfs/xfs_inode_item.h index cc8df1a..9a46795 100644 --- a/fs/xfs/xfs_inode_item.h +++ b/fs/xfs/xfs_inode_item.h @@ -144,12 +144,6 @@ typedef struct xfs_inode_log_item { data exts */ struct xfs_bmbt_rec *ili_aextents_buf; /* array of logged attr exts */ - unsigned int ili_pushbuf_flag; /* one bit used in push_ail */ - -#ifdef DEBUG - uint64_t ili_push_owner; /* one who sets pushbuf_flag - above gets to push the buf */ -#endif #ifdef XFS_TRANS_DEBUG int ili_root_size; char *ili_orig_root; diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index d7b1af8..760ceeb 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c @@ -253,6 +253,7 @@ xfsaild_push( int flush_log, count, stuck; xfs_mount_t *mp = ailp->xa_mount; struct xfs_ail_cursor *cur = &ailp->xa_cursors; + int push_xfsbufd = 0; spin_lock(&ailp->xa_lock); xfs_trans_ail_cursor_init(ailp, cur); @@ -308,6 +309,7 @@ xfsaild_push( XFS_STATS_INC(xs_push_ail_pushbuf); IOP_PUSHBUF(lip); last_pushed_lsn = lsn; + push_xfsbufd = 1; break; case XFS_ITEM_PINNED: @@ -374,6 +376,11 @@ xfsaild_push( xfs_log_force(mp, 0); } + if (push_xfsbufd) { + /* we've got delayed write buffers to flush */ + wake_up_process(mp->m_ddev_targp->bt_task); + } + if (!count) { /* We're past our target or empty, so idle */ last_pushed_lsn = 0; -- 1.6.5 From npiggin@suse.de Mon Jan 25 01:53:49 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P7rmwL042108 for ; Mon, 25 Jan 2010 01:53:49 -0600 X-ASG-Debug-ID: 1264406089-684401590000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A6B03F48618 for ; Sun, 24 Jan 2010 23:54:50 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id 1BmxZaE6WXNS8m5k for ; Sun, 24 Jan 2010 23:54:50 -0800 (PST) Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.221.2]) by mx2.suse.de (Postfix) with ESMTP id EC3A786A2E; Mon, 25 Jan 2010 08:54:48 +0100 (CET) Received: by laptop.local0.net (Postfix, from userid 1000) id C30C129857; Mon, 25 Jan 2010 18:54:45 +1100 (EST) Date: Mon, 25 Jan 2010 18:54:45 +1100 From: Nick Piggin To: Christoph Hellwig Cc: xfs@oss.sgi.com, linux-mm@kvack.org X-ASG-Orig-Subj: Re: [patch 2/2] xfs: use scalable vmap API Subject: Re: [patch 2/2] xfs: use scalable vmap API Message-ID: <20100125075445.GD19664@laptop> References: <20081021082542.GA6974@wotan.suse.de> <20081021082735.GB6974@wotan.suse.de> <20081021120932.GB13348@infradead.org> <20081022093018.GD4359@wotan.suse.de> <20100119121505.GA9428@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100119121505.GA9428@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1264406090 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20738 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 19, 2010 at 07:15:05AM -0500, Christoph Hellwig wrote: > Hi Nick, > > I've looked into retesting and re-enabling the swithc to your > scalabale vmap API (original commit 95f8e302c04c0b0c6de35ab399a5551605eeb006). > > The good thing is that I can't reproduce the original regressions in > xfstests I've seen. The bad news is that starting from the second > consequitive xfstests run we're not able to vmalloc the log buffers > anymore. It seems the use of this API introduces some leak of vmalloc > space. Any idea how to debug this further? Hi Christoph, OK, that's worrying. It's silly have all that vmap layer work in the tree and no users, not surprised to have a bug there. Is this on a 32-bit system with small vmalloc area? Basically in the scalable API implementation, we allocate per-CPU vmap chunks (struct vmap_block) from the normal global allocator, and then subsequently do allocations from those chunks using the simple bitmap allocator. Now there is more room for fragmentation with this approach, and a few problems that I should really fix: firstly, a chunk with say a 1 page hole left in it that is never used will never get freed. So it will be good to free those chunks. Secondly, one CPU should be able to steal from others if it can't find more memory. So if you have small vmalloc space, it could be just these issues making vmalloc consumption worse. Otherwise yes there could be a real leak there unrelated to fragmentation. When the vmap allocation fails, it would be good to basically see the alloc_map and dirty_map for each of the vmap_blocks. This is going to be a lot of information. Basically for all blocks with free+dirty == VMAP_BBMAP_BITS are ones that could be released and you could try the alloc again. Thanks, Nick From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 02:16:47 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P8GkdK043242 for ; Mon, 25 Jan 2010 02:16:47 -0600 X-ASG-Debug-ID: 1264407470-11f300ec0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CA85E1C77168 for ; Mon, 25 Jan 2010 00:17:50 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id U5d4ndpYJ34xmLbH for ; Mon, 25 Jan 2010 00:17:50 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZK8s-0005EM-4N; Mon, 25 Jan 2010 08:17:50 +0000 Date: Mon, 25 Jan 2010 03:17:50 -0500 From: Christoph Hellwig To: Nick Piggin Cc: Christoph Hellwig , xfs@oss.sgi.com, linux-mm@kvack.org X-ASG-Orig-Subj: Re: [patch 2/2] xfs: use scalable vmap API Subject: Re: [patch 2/2] xfs: use scalable vmap API Message-ID: <20100125081750.GA20012@infradead.org> References: <20081021082542.GA6974@wotan.suse.de> <20081021082735.GB6974@wotan.suse.de> <20081021120932.GB13348@infradead.org> <20081022093018.GD4359@wotan.suse.de> <20100119121505.GA9428@infradead.org> <20100125075445.GD19664@laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125075445.GD19664@laptop> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264407470 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 06:54:45PM +1100, Nick Piggin wrote: > Is this on a 32-bit system with small vmalloc area? Yes. > When the vmap allocation fails, it would be good to basically see the > alloc_map and dirty_map for each of the vmap_blocks. This is going to be > a lot of information. Basically for all blocks with > free+dirty == VMAP_BBMAP_BITS are ones that could be released and you > could try the alloc again. Any easy way to get them? Sorry, not uptodate on your new vmalloc implementation anymore. From npiggin@suse.de Mon Jan 25 02:29:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P8TMvB043730 for ; Mon, 25 Jan 2010 02:29:23 -0600 X-ASG-Debug-ID: 1264408224-10ca00570000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C1E54F49DBC for ; Mon, 25 Jan 2010 00:30:25 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id BFamG1KTzZO85Wra for ; Mon, 25 Jan 2010 00:30:25 -0800 (PST) Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) by mx2.suse.de (Postfix) with ESMTP id 672F58891E; Mon, 25 Jan 2010 09:30:24 +0100 (CET) Received: by laptop.local0.net (Postfix, from userid 1000) id EE3B529857; Mon, 25 Jan 2010 19:30:20 +1100 (EST) Date: Mon, 25 Jan 2010 19:30:20 +1100 From: Nick Piggin To: Christoph Hellwig Cc: xfs@oss.sgi.com, linux-mm@kvack.org X-ASG-Orig-Subj: Re: [patch 2/2] xfs: use scalable vmap API Subject: Re: [patch 2/2] xfs: use scalable vmap API Message-ID: <20100125083020.GE19664@laptop> References: <20081021082542.GA6974@wotan.suse.de> <20081021082735.GB6974@wotan.suse.de> <20081021120932.GB13348@infradead.org> <20081022093018.GD4359@wotan.suse.de> <20100119121505.GA9428@infradead.org> <20100125075445.GD19664@laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125075445.GD19664@laptop> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1264408225 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20740 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 06:54:45PM +1100, Nick Piggin wrote: > When the vmap allocation fails, it would be good to basically see the > alloc_map and dirty_map for each of the vmap_blocks. This is going to be > a lot of information. Basically for all blocks with > free+dirty == VMAP_BBMAP_BITS are ones that could be released and you > could try the alloc again. Something like this (untested) is what I'm thinking of. I'll try the XFS patch again and get something testable over here. There are RCU bugs in the vmap block list I noticed too which I will split out and submit seperately. -- Index: linux-2.6/mm/vmalloc.c =================================================================== --- linux-2.6.orig/mm/vmalloc.c +++ linux-2.6/mm/vmalloc.c @@ -509,6 +509,9 @@ static unsigned long lazy_max_pages(void static atomic_t vmap_lazy_nr = ATOMIC_INIT(0); +/* for per-CPU blocks */ +static void purge_fragmented_blocks(void); + /* * Purges all lazily-freed vmap areas. * @@ -539,6 +542,8 @@ static void __purge_vmap_area_lazy(unsig } else spin_lock(&purge_lock); + purge_fragmented_blocks(); + rcu_read_lock(); list_for_each_entry_rcu(va, &vmap_area_list, list) { if (va->flags & VM_LAZY_FREE) { @@ -669,8 +674,6 @@ static bool vmap_initialized __read_most struct vmap_block_queue { spinlock_t lock; struct list_head free; - struct list_head dirty; - unsigned int nr_dirty; }; struct vmap_block { @@ -680,10 +683,9 @@ struct vmap_block { unsigned long free, dirty; DECLARE_BITMAP(alloc_map, VMAP_BBMAP_BITS); DECLARE_BITMAP(dirty_map, VMAP_BBMAP_BITS); - union { - struct list_head free_list; - struct rcu_head rcu_head; - }; + struct list_head free_list; + struct rcu_head rcu_head; + struct list_head purge; }; /* Queue of free and dirty vmap blocks, for allocation and flushing purposes */ @@ -759,7 +761,7 @@ static struct vmap_block *new_vmap_block vbq = &get_cpu_var(vmap_block_queue); vb->vbq = vbq; spin_lock(&vbq->lock); - list_add(&vb->free_list, &vbq->free); + list_add_rcu(&vb->free_list, &vbq->free); spin_unlock(&vbq->lock); put_cpu_var(vmap_block_queue); @@ -808,23 +810,27 @@ again: int i; spin_lock(&vb->lock); + if (vb->free < 1UL << order) + goto next; + i = bitmap_find_free_region(vb->alloc_map, VMAP_BBMAP_BITS, order); - if (i >= 0) { - addr = vb->va->va_start + (i << PAGE_SHIFT); - BUG_ON(addr_to_vb_idx(addr) != - addr_to_vb_idx(vb->va->va_start)); - vb->free -= 1UL << order; - if (vb->free == 0) { - spin_lock(&vbq->lock); - list_del_init(&vb->free_list); - spin_unlock(&vbq->lock); - } - spin_unlock(&vb->lock); - break; + if (i < 0) + goto next; + addr = vb->va->va_start + (i << PAGE_SHIFT); + BUG_ON(addr_to_vb_idx(addr) != + addr_to_vb_idx(vb->va->va_start)); + vb->free -= 1UL << order; + if (vb->free == 0) { + spin_lock(&vbq->lock); + list_del_rcu(&vb->free_list); + spin_unlock(&vbq->lock); } spin_unlock(&vb->lock); + break; +next: + spin_unlock(&vb->lock); } put_cpu_var(vmap_block_queue); rcu_read_unlock(); @@ -873,6 +879,43 @@ static void vb_free(const void *addr, un spin_unlock(&vb->lock); } +static void purge_fragmented_blocks(void) +{ + LIST_HEAD(purge); + int cpu; + struct vmap_block *vb; + struct vmap_block *n_vb; + + for_each_possible_cpu(cpu) { + struct vmap_block_queue *vbq = &per_cpu(vmap_block_queue, cpu); + + rcu_read_lock(); + list_for_each_entry_rcu(vb, &vbq->free, free_list) { + + if (vb->free + vb->dirty != VMAP_BBMAP_BITS && vb->dirty != VMAP_BBMAP_BITS) + continue; + + spin_lock(&vb->lock); + if (vb->free + vb->dirty == VMAP_BBMAP_BITS && vb->dirty != VMAP_BBMAP_BITS) { + vb->free = 0; /* prevent further allocs after releasing lock */ + vb->dirty = VMAP_BBMAP_BITS; /* prevent purging it again */ + spin_lock(&vbq->lock); + list_del_rcu(&vb->free_list); + spin_unlock(&vbq->lock); + spin_unlock(&vb->lock); + list_add_tail(&vb->purge, &purge); + } else + spin_unlock(&vb->lock); + } + rcu_read_unlock(); + } + + list_for_each_entry_safe(vb, n_vb, &purge, purge) { + list_del(&vb->purge); + free_vmap_block(vb); + } +} + /** * vm_unmap_aliases - unmap outstanding lazy aliases in the vmap layer * @@ -1035,8 +1078,6 @@ void __init vmalloc_init(void) vbq = &per_cpu(vmap_block_queue, i); spin_lock_init(&vbq->lock); INIT_LIST_HEAD(&vbq->free); - INIT_LIST_HEAD(&vbq->dirty); - vbq->nr_dirty = 0; } /* Import existing vmlist entries. */ From npiggin@suse.de Mon Jan 25 02:32:09 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P8W8cR043884 for ; Mon, 25 Jan 2010 02:32:08 -0600 X-ASG-Debug-ID: 1264408392-199600e00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9AC3D1C77282 for ; Mon, 25 Jan 2010 00:33:12 -0800 (PST) Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id eLmCOccHDzLIKamp for ; Mon, 25 Jan 2010 00:33:12 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id 5380594430; Mon, 25 Jan 2010 09:33:11 +0100 (CET) Received: by laptop.local0.net (Postfix, from userid 1000) id 3C8EC29857; Mon, 25 Jan 2010 19:33:09 +1100 (EST) Date: Mon, 25 Jan 2010 19:33:09 +1100 From: Nick Piggin To: Christoph Hellwig Cc: xfs@oss.sgi.com, linux-mm@kvack.org X-ASG-Orig-Subj: Re: [patch 2/2] xfs: use scalable vmap API Subject: Re: [patch 2/2] xfs: use scalable vmap API Message-ID: <20100125083309.GF19664@laptop> References: <20081021082542.GA6974@wotan.suse.de> <20081021082735.GB6974@wotan.suse.de> <20081021120932.GB13348@infradead.org> <20081022093018.GD4359@wotan.suse.de> <20100119121505.GA9428@infradead.org> <20100125075445.GD19664@laptop> <20100125081750.GA20012@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125081750.GA20012@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: cantor.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1264408392 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 03:17:50AM -0500, Christoph Hellwig wrote: > On Mon, Jan 25, 2010 at 06:54:45PM +1100, Nick Piggin wrote: > > Is this on a 32-bit system with small vmalloc area? > > Yes. OK, I would say it could easily be just due to fragmentation then. > > When the vmap allocation fails, it would be good to basically see the > > alloc_map and dirty_map for each of the vmap_blocks. This is going to be > > a lot of information. Basically for all blocks with > > free+dirty == VMAP_BBMAP_BITS are ones that could be released and you > > could try the alloc again. > > Any easy way to get them? Sorry, not uptodate on your new vmalloc > implementation anymore. Let me try writing a few (tested) patches here first that I can send you. From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 02:33:01 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0P8X03V043926 for ; Mon, 25 Jan 2010 02:33:01 -0600 X-ASG-Debug-ID: 1264408444-4ae802b10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CA76F188CE8 for ; Mon, 25 Jan 2010 00:34:04 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id KD1JH14Zkt2pyv6K for ; Mon, 25 Jan 2010 00:34:04 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZKOZ-0000eb-8X; Mon, 25 Jan 2010 08:34:03 +0000 Date: Mon, 25 Jan 2010 03:34:03 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: turn off sign warnings Subject: Re: [PATCH] xfs: turn off sign warnings Message-ID: <20100125083403.GA1851@infradead.org> References: <1264397602-18868-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264397602-18868-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264408444 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 04:33:22PM +1100, Dave Chinner wrote: > Because they cause warnings in static inline functions conditionally > compiled into XFS from the VFS (e.g. fsnotify). Ok. As I already mention I feared something like this could happen. Would be great to get it on for the whole kernel. Reviewed-by: Christoph Hellwig From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 04:02:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PA2dF6048204 for ; Mon, 25 Jan 2010 04:02:40 -0600 X-ASG-Debug-ID: 1264413823-77e302590000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E9626188EEA for ; Mon, 25 Jan 2010 02:03:43 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Di0iyR548HGUFE0d for ; Mon, 25 Jan 2010 02:03:43 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZLnL-0005wd-7r; Mon, 25 Jan 2010 10:03:43 +0000 Date: Mon, 25 Jan 2010 05:03:43 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] repair: add missing newlines to scan.c Subject: Re: [PATCH] repair: add missing newlines to scan.c Message-ID: <20100125100343.GA22748@infradead.org> References: <4B5B66F5.7060608@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B5B66F5.7060608@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264413823 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 23, 2010 at 03:15:33PM -0600, Eric Sandeen wrote: > Commit c83b756da0dac727457022d88d2a0ace30a6dc09 added some new > do_warn's but omitted the "\n" leading to some pretty messy > output when we go down this path. Looks good, Reviewed-by: Christoph Hellwig From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 05:43:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PBhVQS051909 for ; Mon, 25 Jan 2010 05:43:32 -0600 X-ASG-Debug-ID: 1264419875-3df102e50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7BD041C77777 for ; Mon, 25 Jan 2010 03:44:35 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id YpsjHSThpALDCgJ5 for ; Mon, 25 Jan 2010 03:44:35 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZNMv-0002Vy-IA; Mon, 25 Jan 2010 11:44:33 +0000 Date: Mon, 25 Jan 2010 06:44:33 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: don't hold onto reserved blocks on remount,ro Subject: Re: [PATCH] xfs: don't hold onto reserved blocks on remount,ro Message-ID: <20100125114433.GA8595@infradead.org> References: <1264397572-18230-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264397572-18230-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264419875 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 04:32:52PM +1100, Dave Chinner wrote: > If we hold onto reserved blocks when doing a remount,ro we end > up writing the blocks used count to disk that includes the reserved > blocks. Reserved blocks are not actually used, so this results in > the values in the superblock being incorrect. > > Hence if we run xfs_check or xfs_repair -n while the filesystem is > mounted remount,ro we end up with an inconsistent filesystem being > reported. Also, running xfs_copy on the remount,ro filesystem will > result in an inconsistent image being generated. > > To fix this, unreserve the blocks when doing the remount,ro, and > reserved them again on remount,rw. This way a remount,ro filesystem > will appear consistent on disk to all utilities. Looks good to me, the only thing that was rather confusing when trying to read the patch is the m_resblks_ro field in struct xfs_mount, it's more a m_resblks_save, as in the saved value before we modified the block count during remount,ro. From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 05:46:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PBkM4X052034 for ; Mon, 25 Jan 2010 05:46:23 -0600 X-ASG-Debug-ID: 1264420046-12f801590000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F0D564D0498 for ; Mon, 25 Jan 2010 03:47:26 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id CbJmA3tY2D46KbRQ for ; Mon, 25 Jan 2010 03:47:26 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZNPi-0003o7-IW; Mon, 25 Jan 2010 11:47:26 +0000 Date: Mon, 25 Jan 2010 06:47:26 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/7] xfs: Make inode reclaim states explicit Subject: Re: [PATCH 1/7] xfs: Make inode reclaim states explicit Message-ID: <20100125114726.GB8595@infradead.org> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264400564-19704-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264420046 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 05:52:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PBq636052236 for ; Mon, 25 Jan 2010 05:52:06 -0600 X-ASG-Debug-ID: 1264420389-790903dd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E9274135DD40 for ; Mon, 25 Jan 2010 03:53:09 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id GiDWs9Lt1ScEMR1a for ; Mon, 25 Jan 2010 03:53:09 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZNVE-0005Kj-PR; Mon, 25 Jan 2010 11:53:08 +0000 Date: Mon, 25 Jan 2010 06:53:08 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Subject: Re: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Message-ID: <20100125115308.GC8595@infradead.org> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264400564-19704-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264420389 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c > index 98b8937..ca0cc59 100644 > --- a/fs/xfs/linux-2.6/xfs_sync.c > +++ b/fs/xfs/linux-2.6/xfs_sync.c > @@ -270,8 +270,7 @@ xfs_sync_inode_attr( > goto out_unlock; > } > > - error = xfs_iflush(ip, (flags & SYNC_WAIT) ? > - XFS_IFLUSH_SYNC : XFS_IFLUSH_DELWRI); > + error = xfs_iflush(ip, (flags & SYNC_WAIT)); No need for the masking here, as xfs_iflush simply ignores SYNC_TRYLOCK. > /* Now we have an inode that needs flushing */ > error = xfs_iflush(ip, sync_mode); > + if (!(sync_mode & SYNC_WAIT)) > + goto requeue_no_flock; So for the !wait case we entirely ignore the return value? We should at least check for an I/O error here I think. Also in this context the requeue label name doesn't fit too well, even if it's the same action as the requeue. From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 05:58:26 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PBwQZe052454 for ; Mon, 25 Jan 2010 05:58:26 -0600 X-ASG-Debug-ID: 1264420770-3dc2037d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 57FC91C77A64 for ; Mon, 25 Jan 2010 03:59:30 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 4IyAUNAc2qetT2kQ for ; Mon, 25 Jan 2010 03:59:30 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZNbO-0007L0-1J; Mon, 25 Jan 2010 11:59:30 +0000 Date: Mon, 25 Jan 2010 06:59:30 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/7] xfs: Don't issue buffer IO direct from AIL push Subject: Re: [PATCH 3/7] xfs: Don't issue buffer IO direct from AIL push Message-ID: <20100125115930.GD8595@infradead.org> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264400564-19704-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264420770 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Looks good, Reviewed-by: Christoph Hellwig Btw, this patch kill the last two places returning XFS_ITEM_FLUSHING, so you might want to kill that, too. From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 05:59:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PBxpM4052516 for ; Mon, 25 Jan 2010 05:59:51 -0600 X-ASG-Debug-ID: 1264420854-633f013a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 270E01C77A71 for ; Mon, 25 Jan 2010 04:00:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id TYHiKc9tVYJqCnrO for ; Mon, 25 Jan 2010 04:00:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZNck-00006f-RC; Mon, 25 Jan 2010 12:00:54 +0000 Date: Mon, 25 Jan 2010 07:00:54 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/7] xfs: Sort delayed write buffers before dispatch Subject: Re: [PATCH 4/7] xfs: Sort delayed write buffers before dispatch Message-ID: <20100125120054.GE8595@infradead.org> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264400564-19704-5-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264420855 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > @@ -1937,42 +1967,46 @@ xfs_flush_buftarg( > xfs_buftarg_t *target, > int wait) > { > - struct list_head tmp; > - xfs_buf_t *bp, *n; > + xfs_buf_t *bp; > int pincount = 0; > + LIST_HEAD(tmp_list); > + LIST_HEAD(wait_list); > > xfs_buf_runall_queues(xfsconvertd_workqueue); > xfs_buf_runall_queues(xfsdatad_workqueue); > xfs_buf_runall_queues(xfslogd_workqueue); > > set_bit(XBT_FORCE_FLUSH, &target->bt_flags); > - pincount = xfs_buf_delwri_split(target, &tmp, 0); > + pincount = xfs_buf_delwri_split(target, &tmp_list, 0); > > /* > - * Dropped the delayed write list lock, now walk the temporary list > + * Dropped the delayed write list lock, now walk the temporary list. > + * All I/O is issued async and then if we need to wait for completion > + * we do that after issuing all the IO. > */ > - list_for_each_entry_safe(bp, n, &tmp, b_list) { > + list_sort(NULL, &tmp_list, xfs_buf_cmp); > + while (!list_empty(&tmp_list)) { > + struct xfs_buf *bp; This now has a bp variable both in functionp-wide scope and a local one here. Might be worth to decide for either style. Otherwise looks good, Reviewed-by: Christoph Hellwig From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 06:02:11 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PC2AWf052621 for ; Mon, 25 Jan 2010 06:02:11 -0600 X-ASG-Debug-ID: 1264420994-341f00520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B745C135E0F5 for ; Mon, 25 Jan 2010 04:03:14 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id xA1iSyLdZlDZvfHa for ; Mon, 25 Jan 2010 04:03:14 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZNf0-0000lz-6a; Mon, 25 Jan 2010 12:03:14 +0000 Date: Mon, 25 Jan 2010 07:03:14 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/7] xfs: Use delay write promotion for dquot flushing Subject: Re: [PATCH 5/7] xfs: Use delay write promotion for dquot flushing Message-ID: <20100125120314.GF8595@infradead.org> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-6-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264400564-19704-6-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264420994 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 05:22:42PM +1100, Dave Chinner wrote: > xfs_qm_dqflock_pushbuf_wait() does a very similar trick to item > pushing used to do to flush out delayed write dquot buffers. Change > it to use the new promotion method rather than an async flush. > > Also, xfs_qm_dqflock_pushbuf_wait() can return without the flush lock > held, yet the callers make the assumption that after this call the > flush lock is held. Always return with the flush lock held. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig This also removes the last user of xfs_bawrite, so you might want to kill it. From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 06:03:07 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PC36Rg052673 for ; Mon, 25 Jan 2010 06:03:07 -0600 X-ASG-Debug-ID: 1264421050-3df103cc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CF7F01C77A81 for ; Mon, 25 Jan 2010 04:04:10 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id jVjB4XRM13GyBsgs for ; Mon, 25 Jan 2010 04:04:10 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZNfu-00015A-EO; Mon, 25 Jan 2010 12:04:10 +0000 Date: Mon, 25 Jan 2010 07:04:10 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 6/7] xfs: kill the unused XFS_QMOPT_* flush flags Subject: Re: [PATCH 6/7] xfs: kill the unused XFS_QMOPT_* flush flags Message-ID: <20100125120410.GG8595@infradead.org> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-7-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264400564-19704-7-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264421050 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > + error = xfs_qm_dqflush(dqp, (flags & SYNC_WAIT)); Just pass down the full flags, the other flag is ignored by xfs_qm_dqflush. From npiggin@suse.de Mon Jan 25 06:36:50 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PCaoEx054278 for ; Mon, 25 Jan 2010 06:36:50 -0600 X-ASG-Debug-ID: 1264423072-0d1f03900000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E7D944D0833 for ; Mon, 25 Jan 2010 04:37:53 -0800 (PST) Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id gYw7eTtWyvzRm6ZL for ; Mon, 25 Jan 2010 04:37:53 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id 4EF0B947EC; Mon, 25 Jan 2010 13:37:52 +0100 (CET) Received: by laptop.local0.net (Postfix, from userid 1000) id 9673F29857; Mon, 25 Jan 2010 23:37:46 +1100 (EST) Date: Mon, 25 Jan 2010 23:37:46 +1100 From: Nick Piggin To: Christoph Hellwig Cc: xfs@oss.sgi.com, linux-mm@kvack.org X-ASG-Orig-Subj: Re: [patch 2/2] xfs: use scalable vmap API Subject: Re: [patch 2/2] xfs: use scalable vmap API Message-ID: <20100125123746.GA24406@laptop> References: <20081021082542.GA6974@wotan.suse.de> <20081021082735.GB6974@wotan.suse.de> <20081021120932.GB13348@infradead.org> <20081022093018.GD4359@wotan.suse.de> <20100119121505.GA9428@infradead.org> <20100125075445.GD19664@laptop> <20100125081750.GA20012@infradead.org> <20100125083309.GF19664@laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125083309.GF19664@laptop> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: cantor.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1264423073 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 07:33:09PM +1100, Nick Piggin wrote: > > Any easy way to get them? Sorry, not uptodate on your new vmalloc > > implementation anymore. > > Let me try writing a few (tested) patches here first that I can send you. Well is it easy to reproduce the vmap failure? Here is a better tested patch if you can try it. It fixes a couple of bugs and does some purging of fragmented blocks. If it does not help, can you tell me how many CPUs in your system? Thanks, Nick -- Index: linux-2.6/mm/vmalloc.c =================================================================== --- linux-2.6.orig/mm/vmalloc.c 2010-01-25 23:35:03.000000000 +1100 +++ linux-2.6/mm/vmalloc.c 2010-01-25 23:35:15.000000000 +1100 @@ -509,6 +509,9 @@ static unsigned long lazy_max_pages(void static atomic_t vmap_lazy_nr = ATOMIC_INIT(0); +/* for per-CPU blocks */ +static void purge_fragmented_blocks_allcpus(void); + /* * Purges all lazily-freed vmap areas. * @@ -539,6 +542,9 @@ static void __purge_vmap_area_lazy(unsig } else spin_lock(&purge_lock); + if (sync) + purge_fragmented_blocks_allcpus(); + rcu_read_lock(); list_for_each_entry_rcu(va, &vmap_area_list, list) { if (va->flags & VM_LAZY_FREE) { @@ -667,8 +673,6 @@ static bool vmap_initialized __read_most struct vmap_block_queue { spinlock_t lock; struct list_head free; - struct list_head dirty; - unsigned int nr_dirty; }; struct vmap_block { @@ -678,10 +682,9 @@ struct vmap_block { unsigned long free, dirty; DECLARE_BITMAP(alloc_map, VMAP_BBMAP_BITS); DECLARE_BITMAP(dirty_map, VMAP_BBMAP_BITS); - union { - struct list_head free_list; - struct rcu_head rcu_head; - }; + struct list_head free_list; + struct rcu_head rcu_head; + struct list_head purge; }; /* Queue of free and dirty vmap blocks, for allocation and flushing purposes */ @@ -757,7 +760,7 @@ static struct vmap_block *new_vmap_block vbq = &get_cpu_var(vmap_block_queue); vb->vbq = vbq; spin_lock(&vbq->lock); - list_add(&vb->free_list, &vbq->free); + list_add_rcu(&vb->free_list, &vbq->free); spin_unlock(&vbq->lock); put_cpu_var(vmap_block_queue); @@ -776,8 +779,6 @@ static void free_vmap_block(struct vmap_ struct vmap_block *tmp; unsigned long vb_idx; - BUG_ON(!list_empty(&vb->free_list)); - vb_idx = addr_to_vb_idx(vb->va->va_start); spin_lock(&vmap_block_tree_lock); tmp = radix_tree_delete(&vmap_block_tree, vb_idx); @@ -788,12 +789,61 @@ static void free_vmap_block(struct vmap_ call_rcu(&vb->rcu_head, rcu_free_vb); } +static void purge_fragmented_blocks(int cpu) +{ + LIST_HEAD(purge); + struct vmap_block *vb; + struct vmap_block *n_vb; + struct vmap_block_queue *vbq = &per_cpu(vmap_block_queue, cpu); + + rcu_read_lock(); + list_for_each_entry_rcu(vb, &vbq->free, free_list) { + + if (!(vb->free + vb->dirty == VMAP_BBMAP_BITS && vb->dirty != VMAP_BBMAP_BITS)) + continue; + + spin_lock(&vb->lock); + if (vb->free + vb->dirty == VMAP_BBMAP_BITS && vb->dirty != VMAP_BBMAP_BITS) { + vb->free = 0; /* prevent further allocs after releasing lock */ + vb->dirty = VMAP_BBMAP_BITS; /* prevent purging it again */ + bitmap_fill(vb->alloc_map, VMAP_BBMAP_BITS); + bitmap_fill(vb->dirty_map, VMAP_BBMAP_BITS); + spin_lock(&vbq->lock); + list_del_rcu(&vb->free_list); + spin_unlock(&vbq->lock); + spin_unlock(&vb->lock); + list_add_tail(&vb->purge, &purge); + } else + spin_unlock(&vb->lock); + } + rcu_read_unlock(); + + list_for_each_entry_safe(vb, n_vb, &purge, purge) { + list_del(&vb->purge); + free_vmap_block(vb); + } +} + +static void purge_fragmented_blocks_thiscpu(void) +{ + purge_fragmented_blocks(smp_processor_id()); +} + +static void purge_fragmented_blocks_allcpus(void) +{ + int cpu; + + for_each_possible_cpu(cpu) + purge_fragmented_blocks(cpu); +} + static void *vb_alloc(unsigned long size, gfp_t gfp_mask) { struct vmap_block_queue *vbq; struct vmap_block *vb; unsigned long addr = 0; unsigned int order; + int purge = 0; BUG_ON(size & ~PAGE_MASK); BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC); @@ -806,24 +856,38 @@ again: int i; spin_lock(&vb->lock); + if (vb->free < 1UL << order) + goto next; + i = bitmap_find_free_region(vb->alloc_map, VMAP_BBMAP_BITS, order); - if (i >= 0) { - addr = vb->va->va_start + (i << PAGE_SHIFT); - BUG_ON(addr_to_vb_idx(addr) != - addr_to_vb_idx(vb->va->va_start)); - vb->free -= 1UL << order; - if (vb->free == 0) { - spin_lock(&vbq->lock); - list_del_init(&vb->free_list); - spin_unlock(&vbq->lock); + if (i < 0) { + if (vb->free + vb->dirty == VMAP_BBMAP_BITS) { + /* fragmented and no outstanding allocations */ + BUG_ON(vb->dirty != VMAP_BBMAP_BITS); + purge = 1; } - spin_unlock(&vb->lock); - break; + goto next; } + addr = vb->va->va_start + (i << PAGE_SHIFT); + BUG_ON(addr_to_vb_idx(addr) != + addr_to_vb_idx(vb->va->va_start)); + vb->free -= 1UL << order; + if (vb->free == 0) { + spin_lock(&vbq->lock); + list_del_rcu(&vb->free_list); + spin_unlock(&vbq->lock); + } + spin_unlock(&vb->lock); + break; +next: spin_unlock(&vb->lock); } + + if (purge) + purge_fragmented_blocks_thiscpu(); + put_cpu_var(vmap_block_queue); rcu_read_unlock(); @@ -860,11 +924,11 @@ static void vb_free(const void *addr, un BUG_ON(!vb); spin_lock(&vb->lock); - bitmap_allocate_region(vb->dirty_map, offset >> PAGE_SHIFT, order); + BUG_ON(bitmap_allocate_region(vb->dirty_map, offset >> PAGE_SHIFT, order)); vb->dirty += 1UL << order; if (vb->dirty == VMAP_BBMAP_BITS) { - BUG_ON(vb->free || !list_empty(&vb->free_list)); + BUG_ON(vb->free); spin_unlock(&vb->lock); free_vmap_block(vb); } else @@ -1033,8 +1097,6 @@ void __init vmalloc_init(void) vbq = &per_cpu(vmap_block_queue, i); spin_lock_init(&vbq->lock); INIT_LIST_HEAD(&vbq->free); - INIT_LIST_HEAD(&vbq->dirty); - vbq->nr_dirty = 0; } /* Import existing vmlist entries. */ From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 06:38:41 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PCceds054352 for ; Mon, 25 Jan 2010 06:38:41 -0600 X-ASG-Debug-ID: 1264423184-33e4025b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A4BCA135E674 for ; Mon, 25 Jan 2010 04:39:44 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id L9lF38MiziAEQbeB for ; Mon, 25 Jan 2010 04:39:44 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZOEK-000242-1m; Mon, 25 Jan 2010 12:39:44 +0000 Date: Mon, 25 Jan 2010 07:39:44 -0500 From: Christoph Hellwig To: Nick Piggin Cc: Christoph Hellwig , xfs@oss.sgi.com, linux-mm@kvack.org X-ASG-Orig-Subj: Re: [patch 2/2] xfs: use scalable vmap API Subject: Re: [patch 2/2] xfs: use scalable vmap API Message-ID: <20100125123943.GA7394@infradead.org> References: <20081021082542.GA6974@wotan.suse.de> <20081021082735.GB6974@wotan.suse.de> <20081021120932.GB13348@infradead.org> <20081022093018.GD4359@wotan.suse.de> <20100119121505.GA9428@infradead.org> <20100125075445.GD19664@laptop> <20100125081750.GA20012@infradead.org> <20100125083309.GF19664@laptop> <20100125123746.GA24406@laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125123746.GA24406@laptop> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264423184 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 11:37:46PM +1100, Nick Piggin wrote: > On Mon, Jan 25, 2010 at 07:33:09PM +1100, Nick Piggin wrote: > > > Any easy way to get them? Sorry, not uptodate on your new vmalloc > > > implementation anymore. > > > > Let me try writing a few (tested) patches here first that I can send you. > > Well is it easy to reproduce the vmap failure? Here is a better tested > patch if you can try it. It fixes a couple of bugs and does some purging > of fragmented blocks. > > If it does not help, can you tell me how many CPUs in your system? The simplest one to reproduce it is a 1 cpu kvm virtual machine. Will give your patch a try ASAP - while it's easy to reproduce it takes some time as I appears only when doing a second xfstests run after a first finished fine, which makes it look like a leak to me. From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 09:03:09 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PF37Er060708 for ; Mon, 25 Jan 2010 09:03:08 -0600 X-ASG-Debug-ID: 1264431851-4f5900aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 79A5D4D1397; Mon, 25 Jan 2010 07:04:11 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id TMqS9vanEqlZ7L5n; Mon, 25 Jan 2010 07:04:11 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZQU6-0000zu-HV; Mon, 25 Jan 2010 15:04:10 +0000 Date: Mon, 25 Jan 2010 10:04:10 -0500 From: Christoph Hellwig To: bpm@sgi.com Cc: Emmanuel Florac , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: nfs performance delta between filesystems Subject: Re: nfs performance delta between filesystems Message-ID: <20100125150410.GA25699@infradead.org> References: <20100122185419.63ae6430@harpe.intellique.com> <20100122183848.GB28561@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100122183848.GB28561@sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264431851 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 22, 2010 at 12:38:48PM -0600, bpm@sgi.com wrote: > Hey Emmanuel, > > I did some research on this in April last year on an old, old kernel. > One of the codepaths I flagged: > > nfsd_create > write_inode_now > __sync_single_inode > write_inode > xfs_fs_write_inode > xfs_inode_flush > xfs_iflush > > There were small gains to be had by reordering the sync of the parent and > child syncs where the two inodes were in the same cluster. The larger > problem seemed to be that we're not treating the log as stable storage. > By calling write_inode_now we've written the changes to the log first > and then gone and also written them out to the inode. > > nfsd_create, nfsd_link, and nfsd_setattr all do this (or do in the old > kernel I'm looking at). I have a patchset that changes > this to an fsync so we force the log and call it good. I'll be happy to > dust it off if someone hasn't already addressed this situation. Dave and I had had some discussion about this when going through his inode writeback changes. Changing to ->fsync might indeed be the easiest option, but on the other hand I'm really trying to get rid of the special case of ->fsync without a file argument in the VFS as it complicates stackable filesystem layers and also creates a rather annoying and under/un documented assumtion that filesystem that need the file pointer can't be NFS exported. One option if we want to keep these semantics is to add a new export operation just for synchronizations things in NFS. But given that the current use case in NFS is to pair one write_inode call with one actual VFS operation it might be better to just automatically turn on the wsync mount option in XFS, we'd need a hook from NFSD into the filesystem to implement this, but I've been looking into adding this anyway to allow for checking other paramters like the file handle size against filesystem limitations. Any chance you could run your tests against a wsync filesystem? But all this affects metadata performance, and only for sync exports, while the OP does a simple dd which is streaming data I/O and uses the (extremly unsafe) async export operation that disables the write_inode calls. From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 09:28:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PFSS4g061702 for ; Mon, 25 Jan 2010 09:28:29 -0600 X-ASG-Debug-ID: 1264433372-14b602dd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CF4ED1DB4563 for ; Mon, 25 Jan 2010 07:29:32 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id WOQTdJ3znZKPMsXH for ; Mon, 25 Jan 2010 07:29:32 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZQsd-0007rC-BO; Mon, 25 Jan 2010 15:29:31 +0000 Date: Mon, 25 Jan 2010 10:29:31 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Subject: Re: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Message-ID: <20100125152931.GA19111@infradead.org> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264400564-19704-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264433372 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > /* > - * Write out the inode. The completion routine ('iflush_done') will > - * pull it from the AIL, mark it clean, unlock the flush lock. > + * Push the inode to it's backing buffer. This will not remove > + * the inode from the AIL - a further push will be required to trigger > + * a buffer push. However, this allows all the dirty inodes to be pushed to Btw, this creates a rather annoying and pointless too long line in the source file. From jordan.chadwick@gmail.com Mon Jan 25 09:40:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PFeNMJ062276 for ; Mon, 25 Jan 2010 09:40:24 -0600 X-ASG-Debug-ID: 1264434086-1ceb02b20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-fx0-f223.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6B44B1C758DF for ; Mon, 25 Jan 2010 07:41:26 -0800 (PST) Received: from mail-fx0-f223.google.com (mail-fx0-f223.google.com [209.85.220.223]) by cuda.sgi.com with ESMTP id WmdxzEyPVfYB2BZJ for ; Mon, 25 Jan 2010 07:41:26 -0800 (PST) Received: by fxm23 with SMTP id 23so3700569fxm.18 for ; Mon, 25 Jan 2010 07:41:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=RJ1FBfjpOKiRR+aFGPkMz8+ejokDvxS+l3fOvZGTLek=; b=TH6tia3tkzDmO4L/5Qz/9u+LrgLR3qV3zbPrIpvPcuAug3Xsgoyux9J+l6S9NABsXT tWEuG8Eb19IYL/lEzQm/oYdmUWYFZIRUCNkpLvlPU1r1+Ooyd86o2AyRAfnYInsc/KdJ ckIO6YJoEvHYxsxf9CVfFVojWEcpgrXz8fVOM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=DHmaprfyWo30PfObZuaXdy0EZvxOhG//Kk6VPIbmf9K3k76DOxQ+AyMDTH1xwMNhM+ rfCo24zneuBzhV24pL6T5/dD59Z8ZVzma8utRaKxbkm3P/dHr/4ixsYjXQ7EZCksPVwC vUuFVufMFO5+3icR+4Vlz+pTrqflqHT6mwOW8= MIME-Version: 1.0 Received: by 10.216.89.195 with SMTP id c45mr1396501wef.38.1264434085677; Mon, 25 Jan 2010 07:41:25 -0800 (PST) In-Reply-To: <4B5A7D8E.3090001@sandeen.net> References: <4B5A7D8E.3090001@sandeen.net> Date: Mon, 25 Jan 2010 10:41:25 -0500 Message-ID: X-ASG-Orig-Subj: Re: Assistance needed mounting XFS version 1 filesystem Subject: Re: Assistance needed mounting XFS version 1 filesystem From: Jordan To: Eric Sandeen Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-fx0-f223.google.com[209.85.220.223] X-Barracuda-Start-Time: 1264434087 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20760 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 22, 2010 at 11:39 PM, Eric Sandeen wrote: > Jordan wrote: >> Hello, >> I have been trying to mount an old Maxoptix optical drive with >> XFS-formatted media for a week now without success. =A0From what I can >> tell, the media were formatted using XFS version 1, support for which >> was removed from the Linux kernel a few years back. >> >> Here is the output of fdisk -l: >> Disk /dev/sda (SGI disk label): 64 heads, 32 sectors, 1096 cylinders >> Units =3D cylinders of 2048 * 512 bytes >> >> ----- partitions ----- >> Pt# =A0 =A0 Device =A0Info =A0 =A0 Start =A0 =A0 =A0 End =A0 Sectors =A0= Id =A0System >> =A01: =A0/dev/sda1 =A0boot =A0 =A0 =A0 =A0 2 =A0 =A0 =A0 986 =A0 2018340= =A0 a =A0SGI xfs >> =A02: =A0/dev/sda2 =A0swap =A0 =A0 =A0 987 =A0 =A0 =A01096 =A0 =A0224490= =A0 3 =A0SGI raw >> =A09: =A0/dev/sda3 =A0 =A0 =A0 =A0 =A0 =A0 =A0 0 =A0 =A0 =A0 =A0 1 =A0 = =A0 =A02100 =A0 0 =A0SGI volhdr >> 11: =A0/dev/sda4 =A0 =A0 =A0 =A0 =A0 =A0 =A0 0 =A0 =A0 =A01096 =A0 22449= 30 =A0 6 =A0SGI volume >> ----- Bootinfo ----- >> Bootfile: /unix >> ----- Directory Entries ----- >> =A00: sgilabel =A0 sector =A0 =A02 size =A0 =A0 512 >> >> When I try to mount the /dev/sda1 partition, I get the following error: >> >> # mount -t xfs /dev/sda1 /optical >> mount: block device /dev/sda1 is write-protected, mounting read-only >> mount: /dev/sda1: can't read superblock >> >> # dmesg | tail >> Current sda: sense key Data Protect >> Additional sense: Write protected >> end_request: I/O error, dev sda, sector 1017642 > > Seems like this might be a real IO error... it's within the size > of sda1 (from above), and also within the filesystem geometry > (from db output below) > > Maybe you can try creating a dd_rescue image of the fs, and mount that? > > -Eric That did the trick. Thanks very much for the idea, I hadn't thought to try accessing it through another means besides mount. Jordan > >> xfs_force_shutdown(sda1,0x1) called from line 353 of file >> fs/xfs/xfs_rw.c. =A0Return address =3D 0x44ff9bfa >> Filesystem "sda1": I/O Error Detected. =A0Shutting down filesystem: sda1 >> Please umount the filesystem, and rectify the problem(s) >> I/O error in filesystem ("sda1") meta-data dev sda1 block 0xf7dfe >> =A0("xlog_bwrite") error 5 buf count 131072 >> XFS: failed to locate log tail >> XFS: log mount/recovery failed >> XFS: log mount failed >> >> xfs_check comes back with no errors. >> >> # xfs_db /dev/sda1 >> xfs_db> sb 0 >> xfs_db> p >> magicnum =3D 0x58465342 >> blocksize =3D 4096 >> dblocks =3D 252292 >> rblocks =3D 0 >> rextents =3D 0 >> uuid =3D d4bc0c01-b21d-1001-866b-0800690a794d >> logstart =3D 131076 >> rootino =3D 128 >> rbmino =3D 129 >> rsumino =3D 130 >> rextsize =3D 16 >> agblocks =3D 31537 >> agcount =3D 8 >> rbmblocks =3D 0 >> logblocks =3D 1000 >> versionnum =3D 0x1 >> sectsize =3D 512 >> inodesize =3D 256 >> inopblock =3D 16 >> fname =3D "\000\000\000\000\000\000\000\000\000\000\000\000" >> blocklog =3D 12 >> sectlog =3D 9 >> inodelog =3D 8 >> inopblog =3D 4 >> agblklog =3D 15 >> rextslog =3D 0 >> inprogress =3D 0 >> imax_pct =3D 25 >> icount =3D 704 >> ifree =3D 322 >> fdblocks =3D 122918 >> frextents =3D 0 >> uquotino =3D 0 >> gquotino =3D 0 >> qflags =3D 0 >> flags =3D 0 >> shared_vn =3D 0 >> inoalignmt =3D 0 >> unit =3D 0 >> width =3D 0 >> dirblklog =3D 0 >> logsectlog =3D 0 >> logsectsize =3D 0 >> logsunit =3D 0 >> features2 =3D 0 >> xfs_db> >> >> My running kernel is 2.6.5-1.358 on Fedora Core 2. =A0I went with an old >> distribution to try to find a kernel that still has XFS version 1 >> support built in. >> >> Any help or advice you could provide would be great. >> >> Jordan >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs >> > > From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 10:02:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PG2pOm063152 for ; Mon, 25 Jan 2010 10:02:51 -0600 X-ASG-Debug-ID: 1264435435-500d03cf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3A79C1894AB for ; Mon, 25 Jan 2010 08:03:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id VtSxhTjiswn1sDeg for ; Mon, 25 Jan 2010 08:03:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZRPu-0008CN-H9; Mon, 25 Jan 2010 16:03:54 +0000 Date: Mon, 25 Jan 2010 11:03:54 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/7] xfs: xfs_fs_write_inode() can fail to write inodes synchronously Subject: Re: [PATCH 7/7] xfs: xfs_fs_write_inode() can fail to write inodes synchronously Message-ID: <20100125160354.GA30227@infradead.org> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-8-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264400564-19704-8-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264435435 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 05:22:44PM +1100, Dave Chinner wrote: > When an inode has already be flushed delayed write, > xfs_inode_clean() returns true and hence xfs_fs_write_inode() can > return on a synchronous inode write without having written the > inode. Currently these sycnhronous writes only come from the unmount > path or the nfsd on a synchronous export so should be fairly rare. They also come from sync_filesystem, which is uses by the sync system call, in the unmount code and from cachefiles. > Realistically, a synchronous inode write is not necessary here; we > can treat this like fsync where we either force the log if there are > no unlogged changes, or do a sync transaction if there are unlogged > changes. The will result real synchronous semantics as the fsync > will issue barriers, but may slow down the above two configurations > as a result. However, if the inode is not pinned and has no unlogged > changes, then the fsync code is a no-op and hence it may be faster > than the existing code. If we get a lot of cases where we need to write out the inode synchronously the barrier might hit us really hard, though. If we have a lot of delalloc I/O outstanding I fear this might actually happen in practice as the inode gets modified between the first ->write_inode with wait == 0 by I/O completion. > + error = EAGAIN; > + if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) > + goto out; > + if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) > + goto out_unlock; So if we make this non-blocking even for the wait case, don't we still have a race window there bulkstat could miss the updates, even after a sync? From bpm@sgi.com Mon Jan 25 14:27:10 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PKRAr3074199 for ; Mon, 25 Jan 2010 14:27:10 -0600 Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id D995A304071; Mon, 25 Jan 2010 12:28:11 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 3ADC54266A1; Mon, 25 Jan 2010 14:28:39 -0600 (CST) Date: Mon, 25 Jan 2010 14:28:39 -0600 From: bpm@sgi.com To: Christoph Hellwig Cc: Emmanuel Florac , xfs@oss.sgi.com Subject: Re: nfs performance delta between filesystems Message-ID: <20100125202839.GA28087@sgi.com> References: <20100122185419.63ae6430@harpe.intellique.com> <20100122183848.GB28561@sgi.com> <20100125150410.GA25699@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125150410.GA25699@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 10:04:10AM -0500, Christoph Hellwig wrote: > On Fri, Jan 22, 2010 at 12:38:48PM -0600, bpm@sgi.com wrote: > > Hey Emmanuel, > > > > I did some research on this in April last year on an old, old kernel. > > One of the codepaths I flagged: > > > > nfsd_create > > write_inode_now > > __sync_single_inode > > write_inode > > xfs_fs_write_inode > > xfs_inode_flush > > xfs_iflush > > > > There were small gains to be had by reordering the sync of the parent and > > child syncs where the two inodes were in the same cluster. The larger > > problem seemed to be that we're not treating the log as stable storage. > > By calling write_inode_now we've written the changes to the log first > > and then gone and also written them out to the inode. > > > > nfsd_create, nfsd_link, and nfsd_setattr all do this (or do in the old > > kernel I'm looking at). I have a patchset that changes > > this to an fsync so we force the log and call it good. I'll be happy to > > dust it off if someone hasn't already addressed this situation. > > Dave and I had had some discussion about this when going through his > inode writeback changes. Changing to ->fsync might indeed be the > easiest option, but on the other hand I'm really trying to get rid of > the special case of ->fsync without a file argument in the VFS as it > complicates stackable filesystem layers and also creates a rather > annoying and under/un documented assumtion that filesystem that need > the file pointer can't be NFS exported. One option if we want to > keep these semantics is to add a new export operation just for > synchronizations things in NFS. > > But given that the current use case in NFS is to pair one write_inode > call with one actual VFS operation it might be better to just > automatically turn on the wsync mount option in XFS, we'd need a hook > from NFSD into the filesystem to implement this, but I've been looking > into adding this anyway to allow for checking other paramters like the > file handle size against filesystem limitations. Any chance you > could run your tests against a wsync filesystem? The original tests were done with the wsync mount option. I'm not really sure that it was necessary. Test case was "tar -xvf ImageMagick.tar". 'fdatasync' represents whether the export option controlling usage of write_inode_now vs fsync was set. internal log, no wsync, no fdatasync 2m48.632s 2m59.676s 2m42.450s internal log, wsync, no fdatasync 3m1.320s 3m10.961s 2m53.560s internal log, wsync, fdatasync 1m40.191s 1m38.780s 1m35.758s external log, no wsync, no fdatasync 1m37.069s 1m37.850s 1m38.303s external log, wsync, no fdatasync 1m48.948s 1m47.804s 1m50.219s external log, wsync, fdatasync 1m19.265s 1m19.129s 1m19.635s > But all this affects metadata performance, and only for sync exports, > while the OP does a simple dd which is streaming data I/O and uses the > (extremly unsafe) async export operation that disables the write_inode > calls. Right. This might not apply to Emmanuel's problem. I've been wondering if a recent change to not hold the inode mutex over the sync helps in the streaming io case. Any idea? Anyway, looks like Dave's patchset addresses this. -Ben From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 14:39:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PKdIhb074689 for ; Mon, 25 Jan 2010 14:39:18 -0600 X-ASG-Debug-ID: 1264452021-40b001200000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6D69F18A5F8; Mon, 25 Jan 2010 12:40:22 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ChRJJynVj4Q4JDFc; Mon, 25 Jan 2010 12:40:22 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZVjR-0004dm-Np; Mon, 25 Jan 2010 20:40:21 +0000 Date: Mon, 25 Jan 2010 15:40:21 -0500 From: Christoph Hellwig To: bpm@sgi.com Cc: Christoph Hellwig , Emmanuel Florac , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: nfs performance delta between filesystems Subject: Re: nfs performance delta between filesystems Message-ID: <20100125204021.GA6191@infradead.org> References: <20100122185419.63ae6430@harpe.intellique.com> <20100122183848.GB28561@sgi.com> <20100125150410.GA25699@infradead.org> <20100125202839.GA28087@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125202839.GA28087@sgi.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264452022 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 02:28:39PM -0600, bpm@sgi.com wrote: > The original tests were done with the wsync mount option. I'm not > really sure that it was necessary. Test case was "tar -xvf > ImageMagick.tar". 'fdatasync' represents whether the export option > controlling usage of write_inode_now vs fsync was set. Ok. Btw, you need to call ->fsync with fdatasync = 0 for NFS as it also wants to catch non-data changes to the inode. Doesn't matter for XFS as we currently always force a full fsync, but I'm going to change that soon. > internal log, no wsync, no fdatasync > 2m48.632s 2m59.676s 2m42.450s > > internal log, wsync, no fdatasync > 3m1.320s 3m10.961s 2m53.560s > > internal log, wsync, fdatasync > 1m40.191s 1m38.780s 1m35.758s The wsync case always still includes either the ->fsync or write_inode call, right? If we use wsync we shouldn't need either in theory as the transactions already commit synchronously. Anyway, given the massive improvements of ->fsync vs write_inode you really should post that patch to the NFS list for discussion ASAP. > > But all this affects metadata performance, and only for sync exports, > > while the OP does a simple dd which is streaming data I/O and uses the > > (extremly unsafe) async export operation that disables the write_inode > > calls. > > Right. This might not apply to Emmanuel's problem. I've been wondering > if a recent change to not hold the inode mutex over the sync helps in > the streaming io case. Any idea? It should help a bit. I'm not sure it can cause that much of a difference for such a simple single-threaded workload. Emmanuel, is there any chance you could try the latest 2.6.32-stable kernel or even 2.6.33-rc as those changes are included there? From BATV+03252ad7dd204e0591eb+2346+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 25 15:33:00 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PLX0Wf077408 for ; Mon, 25 Jan 2010 15:33:00 -0600 X-ASG-Debug-ID: 1264455243-0fbd01f60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4BAE511FF35A for ; Mon, 25 Jan 2010 13:34:04 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id xDeK9RQOdV9uICbi for ; Mon, 25 Jan 2010 13:34:04 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZWZP-0000ZZ-6L; Mon, 25 Jan 2010 21:34:03 +0000 Date: Mon, 25 Jan 2010 16:34:03 -0500 From: Christoph Hellwig To: Nick Piggin Cc: Christoph Hellwig , xfs@oss.sgi.com, linux-mm@kvack.org X-ASG-Orig-Subj: Re: [patch 2/2] xfs: use scalable vmap API Subject: Re: [patch 2/2] xfs: use scalable vmap API Message-ID: <20100125213403.GA1309@infradead.org> References: <20081021082542.GA6974@wotan.suse.de> <20081021082735.GB6974@wotan.suse.de> <20081021120932.GB13348@infradead.org> <20081022093018.GD4359@wotan.suse.de> <20100119121505.GA9428@infradead.org> <20100125075445.GD19664@laptop> <20100125081750.GA20012@infradead.org> <20100125083309.GF19664@laptop> <20100125123746.GA24406@laptop> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125123746.GA24406@laptop> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264455244 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 11:37:46PM +1100, Nick Piggin wrote: > On Mon, Jan 25, 2010 at 07:33:09PM +1100, Nick Piggin wrote: > > > Any easy way to get them? Sorry, not uptodate on your new vmalloc > > > implementation anymore. > > > > Let me try writing a few (tested) patches here first that I can send you. > > Well is it easy to reproduce the vmap failure? Here is a better tested > patch if you can try it. It fixes a couple of bugs and does some purging > of fragmented blocks. So far I've not run out of vmalloc space yet with quite a few xfstests iterations and not encountered any other problems either. Thanks for looking into this! From SRS0+94FZ+54+fromorbit.com=david@internode.on.net Mon Jan 25 16:30:43 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0PMUgVE080829 for ; Mon, 25 Jan 2010 16:30:43 -0600 X-ASG-Debug-ID: 1264458704-5abe000f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2210C1C760A2 for ; Mon, 25 Jan 2010 14:31:44 -0800 (PST) Received: from mail.internode.on.net (bld-mail19.adl2.internode.on.net [150.101.137.104]) by cuda.sgi.com with ESMTP id zoFDHturZKGTmukZ for ; Mon, 25 Jan 2010 14:31:44 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11472502-1927428 for multiple; Tue, 26 Jan 2010 09:01:42 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NZXTB-0003qa-1F; Tue, 26 Jan 2010 09:31:41 +1100 Date: Tue, 26 Jan 2010 09:31:40 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Subject: Re: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Message-ID: <20100125223140.GN25842@discord.disaster> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-3-git-send-email-david@fromorbit.com> <20100125115308.GC8595@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125115308.GC8595@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail19.adl2.internode.on.net[150.101.137.104] X-Barracuda-Start-Time: 1264458706 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20786 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 06:53:08AM -0500, Christoph Hellwig wrote: > > diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c > > index 98b8937..ca0cc59 100644 > > --- a/fs/xfs/linux-2.6/xfs_sync.c > > +++ b/fs/xfs/linux-2.6/xfs_sync.c > > @@ -270,8 +270,7 @@ xfs_sync_inode_attr( > > goto out_unlock; > > } > > > > - error = xfs_iflush(ip, (flags & SYNC_WAIT) ? > > - XFS_IFLUSH_SYNC : XFS_IFLUSH_DELWRI); > > + error = xfs_iflush(ip, (flags & SYNC_WAIT)); > > No need for the masking here, as xfs_iflush simply ignores SYNC_TRYLOCK. OK. > > /* Now we have an inode that needs flushing */ > > error = xfs_iflush(ip, sync_mode); > > + if (!(sync_mode & SYNC_WAIT)) > > + goto requeue_no_flock; > > So for the !wait case we entirely ignore the return value? We should > at least check for an I/O error here I think. I'm not sure we can get an error on a delayed write that we need to take action on. We don't actually issue the IO from this call, so the only error case is on reading the buffer. If we get an error there, what should be do? My thinking was that if we can't write back the inode, we can't reclaim it, and if the error is from a transient read error (e.g. FC path failover) we should be retrying anyway as we do in xfs_buf_iodone_callbacks()... > Also in this context > the requeue label name doesn't fit too well, even if it's the same > action as the requeue. I'm open to suggestions for a better name ;) Cheers, Dave -- Dave Chinner david@fromorbit.com From SRS0+IPBT+55+fromorbit.com=dave@internode.on.net Mon Jan 25 21:24:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0Q3OM8K096432 for ; Mon, 25 Jan 2010 21:24:22 -0600 X-ASG-Debug-ID: 1264476324-20f902810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 16A571C62635 for ; Mon, 25 Jan 2010 19:25:24 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id FhNwglht76BgAxw5 for ; Mon, 25 Jan 2010 19:25:24 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11731313-1927428 for ; Tue, 26 Jan 2010 13:55:23 +1030 (CDT) Received: from [192.168.1.6] (helo=disturbed) by discord with esmtp (Exim 4.69) (envelope-from ) id 1NZc3O-00047w-9F for xfs@oss.sgi.com; Tue, 26 Jan 2010 14:25:22 +1100 Received: from dave by disturbed with local (Exim 4.71) (envelope-from ) id 1NZc3C-0004zK-Qb for xfs@oss.sgi.com; Tue, 26 Jan 2010 14:25:10 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: clean up .dep files on make clean Subject: [PATCH] xfsprogs: clean up .dep files on make clean Date: Tue, 26 Jan 2010 14:25:10 +1100 Message-Id: <1264476310-19127-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.6.5 X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1264476326 X-Barracuda-Bayes: INNOCENT GLOBAL 0.6675 1.0000 1.1358 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.14 X-Barracuda-Spam-Status: No, SCORE=1.14 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20804 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean And make git ignore them, too. Signed-off-by: Dave Chinner --- .gitignore | 1 + include/buildrules | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/.gitignore b/.gitignore index b06e074..aa6cd35 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # object files *.o +.dep # build system .census diff --git a/include/buildrules b/include/buildrules index d1a3a6f..1695e23 100644 --- a/include/buildrules +++ b/include/buildrules @@ -7,7 +7,7 @@ _BUILDRULES_INCLUDED_ = 1 include $(TOPDIR)/include/builddefs clean clobber : $(addsuffix -clean,$(SUBDIRS)) - @rm -f $(DIRT) + @rm -f $(DIRT) .dep @rm -fr $(DIRDIRT) %-clean: @echo "Cleaning $*" -- 1.6.5 From SRS0+fng7+55+fromorbit.com=david@internode.on.net Mon Jan 25 22:08:47 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0Q48lkt098671 for ; Mon, 25 Jan 2010 22:08:47 -0600 X-ASG-Debug-ID: 1264478989-40b503060000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 709211360387 for ; Mon, 25 Jan 2010 20:09:49 -0800 (PST) Received: from mail.internode.on.net (bld-mail12.adl6.internode.on.net [150.101.137.97]) by cuda.sgi.com with ESMTP id DeFCwDEdpDf1FffW for ; Mon, 25 Jan 2010 20:09:49 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11587632-1927428 for multiple; Tue, 26 Jan 2010 14:39:47 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NZckL-0004Br-Uv; Tue, 26 Jan 2010 15:09:45 +1100 Date: Tue, 26 Jan 2010 15:09:45 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs: don't hold onto reserved blocks on remount,ro Subject: Re: [PATCH] xfs: don't hold onto reserved blocks on remount,ro Message-ID: <20100126040945.GA15853@discord.disaster> References: <1264397572-18230-1-git-send-email-david@fromorbit.com> <20100125114433.GA8595@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125114433.GA8595@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail12.adl6.internode.on.net[150.101.137.97] X-Barracuda-Start-Time: 1264478991 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20808 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 06:44:33AM -0500, Christoph Hellwig wrote: > On Mon, Jan 25, 2010 at 04:32:52PM +1100, Dave Chinner wrote: > > If we hold onto reserved blocks when doing a remount,ro we end > > up writing the blocks used count to disk that includes the reserved > > blocks. Reserved blocks are not actually used, so this results in > > the values in the superblock being incorrect. > > > > Hence if we run xfs_check or xfs_repair -n while the filesystem is > > mounted remount,ro we end up with an inconsistent filesystem being > > reported. Also, running xfs_copy on the remount,ro filesystem will > > result in an inconsistent image being generated. > > > > To fix this, unreserve the blocks when doing the remount,ro, and > > reserved them again on remount,rw. This way a remount,ro filesystem > > will appear consistent on disk to all utilities. > > Looks good to me, the only thing that was rather confusing when trying > to read the patch is the m_resblks_ro field in struct xfs_mount, it's > more a m_resblks_save, as in the saved value before we modified the > block count during remount,ro. Ok, I changed the variable name. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+rQCC+55+fromorbit.com=david@internode.on.net Mon Jan 25 22:12:17 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0Q4CHwC098837 for ; Mon, 25 Jan 2010 22:12:17 -0600 X-ASG-Debug-ID: 1264479199-79d100580000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E3B351C7A30D for ; Mon, 25 Jan 2010 20:13:20 -0800 (PST) Received: from mail.internode.on.net (bld-mail16.adl2.internode.on.net [150.101.137.101]) by cuda.sgi.com with ESMTP id R0GZ7BVm7gJZ2UO8 for ; Mon, 25 Jan 2010 20:13:20 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11567289-1927428 for multiple; Tue, 26 Jan 2010 14:43:19 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NZcnl-0004C2-Vt; Tue, 26 Jan 2010 15:13:18 +1100 Date: Tue, 26 Jan 2010 15:13:17 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/7] xfs: Sort delayed write buffers before dispatch Subject: Re: [PATCH 4/7] xfs: Sort delayed write buffers before dispatch Message-ID: <20100126041317.GB15853@discord.disaster> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-5-git-send-email-david@fromorbit.com> <20100125120054.GE8595@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125120054.GE8595@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail16.adl2.internode.on.net[150.101.137.101] X-Barracuda-Start-Time: 1264479201 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20807 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 07:00:54AM -0500, Christoph Hellwig wrote: > > @@ -1937,42 +1967,46 @@ xfs_flush_buftarg( > > xfs_buftarg_t *target, > > int wait) > > { > > - struct list_head tmp; > > - xfs_buf_t *bp, *n; > > + xfs_buf_t *bp; > > int pincount = 0; > > + LIST_HEAD(tmp_list); > > + LIST_HEAD(wait_list); > > > > xfs_buf_runall_queues(xfsconvertd_workqueue); > > xfs_buf_runall_queues(xfsdatad_workqueue); > > xfs_buf_runall_queues(xfslogd_workqueue); > > > > set_bit(XBT_FORCE_FLUSH, &target->bt_flags); > > - pincount = xfs_buf_delwri_split(target, &tmp, 0); > > + pincount = xfs_buf_delwri_split(target, &tmp_list, 0); > > > > /* > > - * Dropped the delayed write list lock, now walk the temporary list > > + * Dropped the delayed write list lock, now walk the temporary list. > > + * All I/O is issued async and then if we need to wait for completion > > + * we do that after issuing all the IO. > > */ > > - list_for_each_entry_safe(bp, n, &tmp, b_list) { > > + list_sort(NULL, &tmp_list, xfs_buf_cmp); > > + while (!list_empty(&tmp_list)) { > > + struct xfs_buf *bp; > > This now has a bp variable both in functionp-wide scope and a local one > here. Might be worth to decide for either style. I removed the second declaration. Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+rQCC+55+fromorbit.com=david@internode.on.net Mon Jan 25 22:50:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0Q4ooxB100740 for ; Mon, 25 Jan 2010 22:50:50 -0600 X-ASG-Debug-ID: 1264481512-6f4d005f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1E3E418BA8C for ; Mon, 25 Jan 2010 20:51:52 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id hdjyv99EC7lf9fmd for ; Mon, 25 Jan 2010 20:51:52 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11550981-1927428 for multiple; Tue, 26 Jan 2010 15:21:51 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NZdP3-0004EL-Un; Tue, 26 Jan 2010 15:51:50 +1100 Date: Tue, 26 Jan 2010 15:51:49 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 7/7] xfs: xfs_fs_write_inode() can fail to write inodes synchronously Subject: Re: [PATCH 7/7] xfs: xfs_fs_write_inode() can fail to write inodes synchronously Message-ID: <20100126045149.GC15853@discord.disaster> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-8-git-send-email-david@fromorbit.com> <20100125160354.GA30227@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125160354.GA30227@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1264481514 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20811 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 11:03:54AM -0500, Christoph Hellwig wrote: > On Mon, Jan 25, 2010 at 05:22:44PM +1100, Dave Chinner wrote: > > When an inode has already be flushed delayed write, > > xfs_inode_clean() returns true and hence xfs_fs_write_inode() can > > return on a synchronous inode write without having written the > > inode. Currently these sycnhronous writes only come from the unmount > > path or the nfsd on a synchronous export so should be fairly rare. > > They also come from sync_filesystem, which is uses by the sync system > call, in the unmount code and from cachefiles. True - I'll update the comment - but I still think it'll be fairly rare. > > Realistically, a synchronous inode write is not necessary here; we > > can treat this like fsync where we either force the log if there are > > no unlogged changes, or do a sync transaction if there are unlogged > > changes. The will result real synchronous semantics as the fsync > > will issue barriers, but may slow down the above two configurations > > as a result. However, if the inode is not pinned and has no unlogged > > changes, then the fsync code is a no-op and hence it may be faster > > than the existing code. > > If we get a lot of cases where we need to write out the inode > synchronously the barrier might hit us really hard, though. No different to running wsync, though, where all transactions are synchronous and will issue barriers all the time. > If > we have a lot of delalloc I/O outstanding I fear this might actually > happen in practice as the inode gets modified between the first > ->write_inode with wait == 0 by I/O completion. So far in my testing I haven't seen a big hit - the performance tests I've done are on filesystems with barriers enabled. I just checked barrier vs nobarrier sync times after creating 400,000 single block files in parallel - nobarrier = 27s, barrier = 29s. > > + error = EAGAIN; > > + if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) > > + goto out; > > + if (xfs_ipincount(ip) || !xfs_iflock_nowait(ip)) > > + goto out_unlock; > > So if we make this non-blocking even for the wait case, don't we > still have a race window there bulkstat could miss the updates, even > after a sync? Yes, you're right. But even if we lock here properly, a delwri flush is non-blocking and hence can still return EAGAIN. We really only need this if a newly allocated inode has not been previously flushed for bulkstat to work correctly. We would need to race with a concurrent transaction between the fsync call and the below checks for this flush to fail, which I think should be a relatively rare ocurrence. What I will look at is whether I can get xfs_fsync() to take a locked inode and return with it still locked. Then this race condition will go away completely and hence the delwri flush will only occur if the inode has not been flushed yet (based on the flock). Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+rQCC+55+fromorbit.com=david@internode.on.net Tue Jan 26 01:28:04 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0Q7S3mX110060 for ; Tue, 26 Jan 2010 01:28:04 -0600 X-ASG-Debug-ID: 1264490917-1cfe03280000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E7D718A03C for ; Mon, 25 Jan 2010 23:28:38 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id jXoK5W0kDuHhKdu4 for ; Mon, 25 Jan 2010 23:28:38 -0800 (PST) Received: from discord (unverified [121.44.156.64]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11551219-1927428 for multiple; Tue, 26 Jan 2010 17:58:37 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NZfql-0004MK-D6; Tue, 26 Jan 2010 18:28:35 +1100 Date: Tue, 26 Jan 2010 18:28:35 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Subject: Re: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Message-ID: <20100126072835.GE15853@discord.disaster> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-3-git-send-email-david@fromorbit.com> <20100125115308.GC8595@infradead.org> <20100125223140.GN25842@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125223140.GN25842@discord.disaster> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1264490919 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20821 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 26, 2010 at 09:31:40AM +1100, Dave Chinner wrote: > On Mon, Jan 25, 2010 at 06:53:08AM -0500, Christoph Hellwig wrote: > > > diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c > > > index 98b8937..ca0cc59 100644 > > > --- a/fs/xfs/linux-2.6/xfs_sync.c > > > +++ b/fs/xfs/linux-2.6/xfs_sync.c > > > @@ -270,8 +270,7 @@ xfs_sync_inode_attr( > > > goto out_unlock; > > > } > > > > > > - error = xfs_iflush(ip, (flags & SYNC_WAIT) ? > > > - XFS_IFLUSH_SYNC : XFS_IFLUSH_DELWRI); > > > + error = xfs_iflush(ip, (flags & SYNC_WAIT)); > > > > No need for the masking here, as xfs_iflush simply ignores SYNC_TRYLOCK. > > OK. > > > > /* Now we have an inode that needs flushing */ > > > error = xfs_iflush(ip, sync_mode); > > > + if (!(sync_mode & SYNC_WAIT)) > > > + goto requeue_no_flock; > > > > So for the !wait case we entirely ignore the return value? We should > > at least check for an I/O error here I think. > > I'm not sure we can get an error on a delayed write that we > need to take action on. We don't actually issue the IO from this > call, so the only error case is on reading the buffer. If we get > an error there, what should be do? > > My thinking was that if we can't write back the inode, we can't > reclaim it, and if the error is from a transient read error (e.g. FC > path failover) we should be retrying anyway as we do in > xfs_buf_iodone_callbacks()... I forgot to mention that it will get caught by a sync reclaim pass when there is a context to return the error to.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+351228fd47603a48a0b8+2347+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 26 09:57:36 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0QFvYFH132015 for ; Tue, 26 Jan 2010 09:57:36 -0600 X-ASG-Debug-ID: 1264521518-114a020a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1A20B1C7D375 for ; Tue, 26 Jan 2010 07:58:38 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id I6WW4aPE7g9dYEYw for ; Tue, 26 Jan 2010 07:58:38 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZnoL-0006L9-2R; Tue, 26 Jan 2010 15:58:37 +0000 Date: Tue, 26 Jan 2010 10:58:37 -0500 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: clean up .dep files on make clean Subject: Re: [PATCH] xfsprogs: clean up .dep files on make clean Message-ID: <20100126155837.GA24152@infradead.org> References: <1264476310-19127-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1264476310-19127-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264521519 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Jan 26, 2010 at 02:25:10PM +1100, Dave Chinner wrote: > And make git ignore them, too. Looks good, Reviewed-by: Christoph Hellwig From BATV+351228fd47603a48a0b8+2347+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 26 10:09:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0QG9fDE132645 for ; Tue, 26 Jan 2010 10:09:41 -0600 X-ASG-Debug-ID: 1264522246-299b014f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 59763151E86D for ; Tue, 26 Jan 2010 08:10:46 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 7s23QXrXYvM0jH5V for ; Tue, 26 Jan 2010 08:10:46 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZo05-0001oC-9S; Tue, 26 Jan 2010 16:10:45 +0000 Date: Tue, 26 Jan 2010 11:10:45 -0500 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Subject: Re: [PATCH 2/7] xfs: Use delayed write for inodes rather than async Message-ID: <20100126161045.GB24152@infradead.org> References: <1264400564-19704-1-git-send-email-david@fromorbit.com> <1264400564-19704-3-git-send-email-david@fromorbit.com> <20100125115308.GC8595@infradead.org> <20100125223140.GN25842@discord.disaster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125223140.GN25842@discord.disaster> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264522246 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > > Also in this context > > the requeue label name doesn't fit too well, even if it's the same > > action as the requeue. > > I'm open to suggestions for a better name ;) What do you think about this version? Index: xfs/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_sync.c 2010-01-26 17:01:49.610012226 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_sync.c 2010-01-26 17:06:50.533006103 +0100 @@ -785,7 +785,7 @@ xfs_reclaim_inode( xfs_ilock(ip, XFS_ILOCK_EXCL); if (!xfs_iflock_nowait(ip)) { if (!(sync_mode & SYNC_WAIT)) - goto requeue_no_flock; + goto out; xfs_iflock(ip); } @@ -796,8 +796,10 @@ xfs_reclaim_inode( goto reclaim; } if (xfs_ipincount(ip)) { - if (!(sync_mode & SYNC_WAIT)) - goto requeue; + if (!(sync_mode & SYNC_WAIT)) { + xfs_ifunlock(ip); + goto out; + } xfs_iunpin_wait(ip); } if (xfs_iflags_test(ip, XFS_ISTALE)) @@ -807,19 +809,18 @@ xfs_reclaim_inode( /* Now we have an inode that needs flushing */ error = xfs_iflush(ip, sync_mode); - if (!(sync_mode & SYNC_WAIT)) - goto requeue_no_flock; - xfs_iflock(ip); - -reclaim: - xfs_ifunlock(ip); - xfs_iunlock(ip, XFS_ILOCK_EXCL); - xfs_ireclaim(ip); - return error; + if (sync_mode & SYNC_WAIT) { + xfs_iflock(ip); + goto reclaim; + } -requeue: - xfs_ifunlock(ip); -requeue_no_flock: + /* + * When we have to flush an inode but don't have SYNC_WAIT set, we + * flush the inode out with using a delwri buffer and wait for + * the next call into the reclaim to find it in a clean state + * instead of doing it now. + */ +out: xfs_iflags_clear(ip, XFS_IRECLAIM); xfs_iunlock(ip, XFS_ILOCK_EXCL); /* @@ -830,6 +831,12 @@ requeue_no_flock: * attempt to reclaim the inode again. */ return 0; + +reclaim: + xfs_ifunlock(ip); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + xfs_ireclaim(ip); + return error; } int From BATV+351228fd47603a48a0b8+2347+infradead.org+hch@bombadil.srs.infradead.org Tue Jan 26 15:37:53 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0QLblnU148005 for ; Tue, 26 Jan 2010 15:37:53 -0600 X-ASG-Debug-ID: 1264541931-057302e30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 83AC81C7EEC5 for ; Tue, 26 Jan 2010 13:38:52 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id jDW0EzRBAedwqewj for ; Tue, 26 Jan 2010 13:38:52 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NZt7b-0003wY-JR for xfs@oss.sgi.com; Tue, 26 Jan 2010 21:38:51 +0000 Date: Tue, 26 Jan 2010 16:38:51 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs: remove invalid barrier optimization from xfs_fsync Subject: [PATCH] xfs: remove invalid barrier optimization from xfs_fsync Message-ID: <20100126213851.GA14927@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264541932 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean We always need to flush the disk write cache and can't skip it just because the no inode attributes have changed. Signed-off-by: Christoph Hellwig diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index fd108b7..43241e2 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -597,7 +597,7 @@ xfs_fsync( { xfs_trans_t *tp; int error = 0; - int log_flushed = 0, changed = 1; + int log_flushed = 0; xfs_itrace_entry(ip); @@ -627,18 +627,10 @@ xfs_fsync( * disk yet, the inode will be still be pinned. If it is, * force the log. */ - xfs_iunlock(ip, XFS_ILOCK_SHARED); - if (xfs_ipincount(ip)) { error = _xfs_log_force(ip->i_mount, XFS_LOG_SYNC, &log_flushed); - } else { - /* - * If the inode is not pinned and nothing has changed - * we don't need to flush the cache. - */ - changed = 0; } } else { /* @@ -673,7 +665,7 @@ xfs_fsync( xfs_iunlock(ip, XFS_ILOCK_EXCL); } - if ((ip->i_mount->m_flags & XFS_MOUNT_BARRIER) && changed) { + if (ip->i_mount->m_flags & XFS_MOUNT_BARRIER) { /* * If the log write didn't issue an ordered tag we need * to flush the disk cache for the data device now. From aelder@sgi.com Tue Jan 26 15:38:47 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_44,J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0QLckXr148062 for ; Tue, 26 Jan 2010 15:38:47 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay1.corp.sgi.com (Postfix) with ESMTP id EE2278F808F; Tue, 26 Jan 2010 13:39:48 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [RFC] xfstests: define an INTENSITY level for testing Date: Tue, 26 Jan 2010 15:39:48 -0600 Message-ID: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A69E6@cf--amer001e--3.americas.sgi.com> In-Reply-To: <20100123115955.GD25842@discord.disaster> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [RFC] xfstests: define an INTENSITY level for testing Thread-Index: AcqcI5ndW4NszUHKSviDOiJhwx0VtQCpQw2Q From: "Alex Elder" To: "Dave Chinner" Cc: X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > On Thu, Jan 21, 2010 at 03:36:07PM -0600, Alex Elder wrote: >> I've often felt it would be nice if testing could be >> done to a specified level of intensity. That way, >> for example, I could perform a full suite of tests >> but have them just do very basic stuff, so that I >> get coverage but without having to wait as long as >> is required for a hard-core test. Similarly, before >> a release I'd like to run tests exhaustively, to >> make sure things get really exercised. >=20 > At first glance, this sounds like a good idea to control > the runtime of test runs. I know this is all a bit long, but I think it's a good discussion. I have some responses below. I think you and I are in pretty close agreement on the role of tests, and maybe philosophy toward testing code... > However, after thinking about it for a while and reflecting on > the approach the QA group in ASG (long live ASG!) took for release > testing, I have a few concerns about using the concept in xfstests. >=20 >> Right now there is a "quick" group defined for xfstests, >> but what I'm talking about is more of a parameter applied >> to all tests so that certain functions could be lightly >> tested that might not otherwise be covered by one of the >> "quick" ones. We might even be able to get rid of the >> "quick" group. And an inherently long-running test >> might make itself not run if the intensity level was >> not high enough. >=20 > IIRC we introduced the "quick" group as a way to provide developers > sufficient coverage to flush out major bugs in patches quickly, not > provide complete test coverage. i.e. to speed up the development > process, not speed up or improve the QA process. Patches still need > to pass the "auto" group tests without regressions before being > posted for review.... >=20 >> So I propse we defined a global, set in common.rc, which >> defines an integer 0 < INTENSITY <=3D 100, which would >> define how hard each test should push. INTENSITY of >> 100, would cause all tests would do their most exhaustive >> and/or demanding exercises. INTENSITY of 1 would do very >> superficial testing. Default might be 50. >=20 > How would you solve the problem that "intensity" is very dependent > on the system the tests are being run on? e.g. Something run on an > SSD is going to run far faster than the same test on a UML instance > on a slow laptop disk, even though they run at the same "intensity" > level. There is an unlimited number of ways one could define "stress" or "intensity" of a test--each particular test will be doing something very specific. No single parameter (like "intensity") could possibly capture all of them. That being said, my purpose is to define a single knob with an approximate definition, to be interpreted as appropriate for each test. You're right, in some setups (e.g., under UML) the intensity setting might have undesirable results--and the person who decides to make a test key on the intensity setting should take that into account. (By the same argument the value/meaning/ result of a given test--intense or not--may change depending on the setup, so we're already faced with that issue.) > Another concern I have is that "intensity" might have different causes > on different systems. e.g. on UML, it is forking new processes that > causes the massive slowdowns (300ms for a fork+exec on a 2GHz > Athlon64), not the amount of IO. Hence changing the number of files > or IOPS won't really change the runtime of tests significantly if > the problem is that the test runs "expr" 100,000 times. e.g: >=20 > = http://git.kernel.org/?p=3Dfs/xfs/xfstests-dev.git;a=3Dcommit;h=3De714acc= 0ef37031b9a5a522703f2832f139c22e0 The meaning of "intensity" should be defined by the focus of what is being tested, not how long that takes. I.e., if you're trying to test lots of concurrent I/O, then higher intensity should mean doing *more* concurrent I/O, regardless of the particular system under test. Adjusting run time is admittedly one of the goals, but it shouldn't really be taken as the meaning for this setting. (An example below elaborates on this a bit more.) If you want to limit runtime, then some other knob might be defined for that (but I don't advocate that). >> Tests can simply ignore the INTENSITY value, and initially >> that will be the case for most tests. It may not even make >> sense for a given test to have its activity scaled by this >> setting. Once we define it though, tests can be adapted >> to make use of it where possible. >>=20 >> Below is a patch that shows how such feature might be >> used for tests 104 and 109. >=20 > /me looks at the changes I didn't really make this clear in my initial post, but I sort of contrived those two examples for the purpose of demonstration. I looked for relatively long-running tests, and found a simple thing that could be tweaked. I make no claim that the examples were the correct way to use this concept. > I think this is the wrong fix for decreasing test 104 runtime. > The fstress processes only need to run while the grows are in > progress, once they are complete the fsstress processes > can be killed rather than waited for. Using kill then wait > would reduce the runtime without potentially compromising the > test - if the number of ops are too low then fsstress doesn't run > long enough to effectively load up the filesystem during the grow > process to trigger the deadlock conditions. That's likely a better way to do it. Using an intensity level may not even make sense in some circumstances. (And again, runtime isn't the goal.) > For 109 I think changing the number of files compromises the initial > conditions required to trigger the deadlock on kernels <=3D 2.6.18. > It's an enospc test on a 160MB filesystem and the number of files it > uses is for fragementing free space sufficiently to trigger > out-of-order AG locking when ENOSPC in and AG occurs. Changing the > number of files results in different freespace fragmentation > patterns and hence may not trigger the deadlock condition.... So this is a bad example, but it does demonstrate the sort of thing that could be done. Each test really would need to be looked at individually, and if used at all, intensity scaling would be done in a way that makes sense for the test. > ---- >=20 > Stepping back and looking at this from an overall QA coverage point > of view, it seems to me that you are trying to make xfstests be > something that it is not intended to be. You want "exhaustive" test > coverage before a release, but xfstests have never been a vehicle > for exhaustive testing. That is, xfstests is really designed to > provide maximal code coverage with some load and stress tests > thrown in, but it is not intended to be the only testing mechanism > for the filesystem. I totally agree that xfstests is not sufficient for exhaustive tests. There needs to be a sort of meta- layer of testing that covers option combinations, platforms, grouping of things concurrently, etc. (which you kind of get into, below). Still, I think this "intensity" (or whatever you might call it) can be a useful concept--even if it's used "only" as you describe. > It might be instructive to go back and look at what the old SGI ASG > (long live ASG!) test group were doing (I hope it was archived!). > They were running xfstests on multiple platforms (x86_64, PPC and > ia64) for code coverage but not stress. To improve coverage, every > second xfstest run used a different set of non-default mkfs and > mount options to exercise different code paths (e.g. blocksize < > pagesize, directory block size > page size, etc) which otherwise > would not be tested. I'm doing some of this stuff now and am working on expanding it as I can. I do not have the hardware or even software setup that was present in ASG (long live ASG!) but I wish I did, and intend to keep building on what I have. We have QA people to run some things too, and I'm hoping we can focus their efforts more on pushing limits, doing layered testing (like concurrent tests, for example) and perhaps much larger systems than I typically have. > There were separate test plans, procedures, processes and scripts to > execute long running stress and load tests. These were run as part > of the QA validation prior to major releases (the angle you appear > to be coming from, Alex) rather than day-to-day testing of the > current dev kernels. Actually, I'm coming from it more from the other end, but the point is still there. I want to ensure that developers can do their day-to-day testing in a reasonable time. We will be adding more and more tests (which is good!) and in time, scaling things *back* might become more important. Still, as long as you're writing a test, it would be good while you're thinking about it to be able to lay out just how one might do both a minimal but sufficient test, as well as how one might really do something extreme. > More importantly, the load/stress tests weren't aimed at specific > XFS features (already handled by xfstests) - instead they were high > level tests aimed at trying to break the system. e.g. one of the > stress tests was running tens of local processes creating and > destroying large and small files simultaneously with NFS clients > doing the same thing on the same filesystem whilst turning quotas on > and off randomly and running concurrent filesystem snapshots and > then mounting and running filesystem checks on the snapshots to > ensure they were consistent. These tests would run for up to a week > at a time, so it takes dedicated resources to run this sort of > testing. >=20 > For load point tests, similar tests were run but the number of > processes creating load were varied over time so that the system > load varied between almost idle to almost 100% to ensure that > there weren't problems that light or medium loads exposed. Once > again these were long running tests on multiple platforms. All of the above are great. > ---- >=20 > In my experience, exhaustive testing requires a combination of > testing from low level point tests (xfstests) all the way up to high > level system level integration tests. The methods and test processes > for these are different as the focus for the tests are different. >=20 > Hence I agree with your intent and reasoning behind intensity level > based stress testing, but I think that xfstests is not the right > sort of test suite to use for this type of testing. I think we'd > do better to try to recover some of the high level stress tests > and processes from the corpse of ASG than to try to use xfstests > for this.... To reiterate, I agree that xfstests alone aren't enough. They're a tool for doing single tests, one at a time, on a single system and more or less a single file system. However, I still think there's *some* value to this concept, even for xfstests. Here's another example to consider. Suppose a change goes in to XFS, and all of a sudden test 306 is failing intermittently. I put in a fix, and now test 306 hasn't failed in a long time. But to be really sure, I'd like to do whatever test 306 is doing, but even more so. So in that case, I'd like to be able to run the EXTREME version of test 306, and if it passes that I have more confidence that my fix has eliminated the problem. I don't really care if it takes a lot longer to run this test, I'm looking for a more rigorous form of the test than a normal xfstests run might do. Yes, I could go look at the test and figure out myself how to make it more extreme, but that's missing the point. If there were an intensity level supported by that test already, I can have some assurance that using it will give me just the kind of hard-core version of the test I'm looking for. I really appreciate your thoughtful response. And you should know that even though I haven't replicated what the ASG test people were doing (long live ASG!) I'm working toward getting at least some of what they did back again. Thanks. -Alex > Cheers, >=20 > Dave. From info@spt.vn Tue Jan 26 19:32:18 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.5 required=5.0 tests=BAYES_50,FH_DATE_PAST_20XX, MIME_8BIT_HEADER autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0R1WHsr158907 for ; Tue, 26 Jan 2010 19:32:17 -0600 X-ASG-Debug-ID: 1264555993-61e1003f0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from gwserv1.spt.vn (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 739581DB5471; Tue, 26 Jan 2010 17:33:14 -0800 (PST) Received: from gwserv1.spt.vn (gwserv1.spt.vn [221.133.1.46]) by cuda.sgi.com with ESMTP id E7faqPsAKI70d5YQ; Tue, 26 Jan 2010 17:33:14 -0800 (PST) Received: from localhost (localhost.localdomain [127.0.0.1]) by gwserv1.spt.vn (Postfix) with ESMTP id 249BF9299D0; Wed, 27 Jan 2010 07:28:26 +0700 (ICT) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Scanned: amavisd-new at Received: from gwserv1.spt.vn ([127.0.0.1]) by localhost (gwserv1.spt.vn [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5hGc3tdtUEtI; Wed, 27 Jan 2010 07:28:25 +0700 (ICT) Received: from mailserv.spt.vn (mailserv.spt.vn [221.133.1.60]) by gwserv1.spt.vn (Postfix) with ESMTP id 92352A883E7; Wed, 27 Jan 2010 07:16:32 +0700 (ICT) Received: from localhost (localhost.localdomain [127.0.0.1]) by mailserv.spt.vn (Postfix) with ESMTP id 26213AF8AB6; Wed, 27 Jan 2010 07:14:03 +0700 (ICT) X-Virus-Scanned: amavisd-new at Received: from mailserv.spt.vn ([127.0.0.1]) by localhost (mailserv.spt.vn [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UMLWp2cEX4tp; Wed, 27 Jan 2010 07:14:02 +0700 (ICT) Received: from mailserv.spt.vn (mailserv.spt.vn [221.133.1.60]) by mailserv.spt.vn (Postfix) with ESMTP id 8F6D0AF8AA4; Wed, 27 Jan 2010 07:13:58 +0700 (ICT) Date: Wed, 27 Jan 2010 07:13:58 +0700 (ICT) From: Gen Wilson Reply-To: Gen Wilson Message-ID: <748895532.451264551238580.JavaMail.root@mailserv> X-ASG-Orig-Subj: =?utf-8?Q?Secret_Shopper_=C2=AE__Position_Available?= Subject: =?utf-8?Q?Secret_Shopper_=C2=AE__Position_Available?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [41.219.212.93] X-Mailer: Zimbra 5.0.8_GA_2462.RHEL5_64 (zclient/5.0.8_GA_2462.RHEL5_64) To: undisclosed-recipients:; X-Barracuda-Connect: gwserv1.spt.vn[221.133.1.46] X-Barracuda-Start-Time: 1264555999 X-Barracuda-Bayes: INNOCENT GLOBAL 0.7683 1.0000 1.9325 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.93 X-Barracuda-Spam-Status: No, SCORE=1.93 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20888 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean There is a secret shopping evaluation in your area and we would like you to= participate in it. It's fun and rewarding. To sign-up please send the info= rmation: full Name, complete address including city, state and zip code,cel= lphone number. We will contact you back as soon as possible. Regards Secret Shopper=C2=AE Gen Wilson GENESIS EVALUATION INCORPORATION (A Division of Harvey Consulting) 605 Madeline Jane Ln. Reno, Nv 89503 7755934979 Company Registration No. - 14-4392289 VAT Registration N From npiggin@suse.de Wed Jan 27 02:37:21 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0R8bKHF180457 for ; Wed, 27 Jan 2010 02:37:21 -0600 X-ASG-Debug-ID: 1264581504-6d5102f70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4F3AAF5D90C for ; Wed, 27 Jan 2010 00:38:24 -0800 (PST) Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id pfv6n6EmPn4CVr6B for ; Wed, 27 Jan 2010 00:38:24 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id 6E2FE90975; Wed, 27 Jan 2010 09:38:23 +0100 (CET) Received: by laptop.local0.net (Postfix, from userid 1000) id CA88329857; Wed, 27 Jan 2010 19:38:19 +1100 (EST) Date: Wed, 27 Jan 2010 19:38:19 +1100 From: Nick Piggin To: Christoph Hellwig Cc: xfs@oss.sgi.com, linux-mm@kvack.org X-ASG-Orig-Subj: Re: [patch 2/2] xfs: use scalable vmap API Subject: Re: [patch 2/2] xfs: use scalable vmap API Message-ID: <20100127083819.GA11072@laptop> References: <20081021082542.GA6974@wotan.suse.de> <20081021082735.GB6974@wotan.suse.de> <20081021120932.GB13348@infradead.org> <20081022093018.GD4359@wotan.suse.de> <20100119121505.GA9428@infradead.org> <20100125075445.GD19664@laptop> <20100125081750.GA20012@infradead.org> <20100125083309.GF19664@laptop> <20100125123746.GA24406@laptop> <20100125213403.GA1309@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100125213403.GA1309@infradead.org> User-Agent: Mutt/1.5.20 (2009-06-14) X-Barracuda-Connect: cantor.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1264581505 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Mon, Jan 25, 2010 at 04:34:03PM -0500, Christoph Hellwig wrote: > On Mon, Jan 25, 2010 at 11:37:46PM +1100, Nick Piggin wrote: > > On Mon, Jan 25, 2010 at 07:33:09PM +1100, Nick Piggin wrote: > > > > Any easy way to get them? Sorry, not uptodate on your new vmalloc > > > > implementation anymore. > > > > > > Let me try writing a few (tested) patches here first that I can send you. > > > > Well is it easy to reproduce the vmap failure? Here is a better tested > > patch if you can try it. It fixes a couple of bugs and does some purging > > of fragmented blocks. > > So far I've not run out of vmalloc space yet with quite a few xfstests > iterations and not encountered any other problems either. > > Thanks for looking into this! OK thanks for testing. I'll send it upstream if you haven't had any problems so far. From sandeen@sandeen.net Wed Jan 27 13:24:41 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0RJOeYB209746 for ; Wed, 27 Jan 2010 13:24:40 -0600 X-ASG-Debug-ID: 1264620344-722f02b10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D5579193E87 for ; Wed, 27 Jan 2010 11:25:44 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id kHDsHZzJdpwXWkjC for ; Wed, 27 Jan 2010 11:25:44 -0800 (PST) Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0RJPYvS021799 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 27 Jan 2010 14:25:34 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0RJPXoG020635; Wed, 27 Jan 2010 14:25:33 -0500 Message-ID: <4B60932D.7060709@sandeen.net> Date: Wed, 27 Jan 2010 13:25:33 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Subject: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-3-git-send-email-david@fromorbit.com> In-Reply-To: <1264053773-6054-3-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1264620345 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20952 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > Currently the xfstest builds do not have any automatic dependency > calculations. It relies on a separate make depend run to build or > update dependency information. It also relies on an external > makedepend binary. If that binary does not exist, the dependencies > do not get calculated. > > To remove the dependency on makedepend, gcc can be used instead as > it has a command to generate dependency information. This patch > changes the dependency rule building to use gcc. > > In case anyone uses an old (several years) gcc compiler or a > compiler that doesn't support gcc compatible dependency generation, > a new configure check is added to turn off dependency checking so > builds can still be done. > > To use the dependencies automatically, we need to use a special > include makefile directive to include the build dependencies into > the current makefile. Essentially once the dependencies are > calculated, they can be included into the makefile and make will > recalculate the build dependencies automatically based on that > information. > > Hence we get a build that automatically calculates and keeps > dependencies up to date without dependence on any external tools. > > Signed-off-by: Dave Chinner seems to be some fallout from this at least on my F10 box: /usr/bin/makedepend: warning: ignoring option -Wall /usr/bin/makedepend: error: cannot open "no-strict-aliasing" also this change: - preallo_rw_pattern_reader preallo_rw_pattern_writer ftrunc trunc \ - fs_perms testx looptest locktest unwritten_mmap \ + ftrunc trunc fs_perms testx looptest locktest unwritten_mmap \ bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ ... +PREALLO_TARGETS = preallo_rw_pattern_reader seems to have lost the build of preallo_rw_pattern_reader & writer. Was that stray, or what were you going for there? -Eric From BATV+ab3fe071ad14cffcf75a+2348+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 27 14:16:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0RKGUbk212238 for ; Wed, 27 Jan 2010 14:16:31 -0600 X-ASG-Debug-ID: 1264623455-0e2d02fe0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D3DD71C82EE9 for ; Wed, 27 Jan 2010 12:17:35 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id DLXAd1AdmDS4oIlT for ; Wed, 27 Jan 2010 12:17:35 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NaEKT-0002aT-4T; Wed, 27 Jan 2010 20:17:33 +0000 Date: Wed, 27 Jan 2010 15:17:33 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Subject: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Message-ID: <20100127201733.GA32057@infradead.org> References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-3-git-send-email-david@fromorbit.com> <4B60932D.7060709@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B60932D.7060709@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264623455 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 27, 2010 at 01:25:33PM -0600, Eric Sandeen wrote: > seems to be some fallout from this at least on my F10 box: > > /usr/bin/makedepend: warning: ignoring option -Wall > /usr/bin/makedepend: error: cannot open "no-strict-aliasing" > > also this change: > > - preallo_rw_pattern_reader preallo_rw_pattern_writer ftrunc trunc \ > - fs_perms testx looptest locktest unwritten_mmap \ > + ftrunc trunc fs_perms testx looptest locktest unwritten_mmap \ > bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ > > ... > > > +PREALLO_TARGETS = preallo_rw_pattern_reader > > seems to have lost the build of preallo_rw_pattern_reader & writer. > > Was that stray, or what were you going for there? It's stray now that I fixed up the way preallo_rw_pattern_reader/write are compiled. The patch needs a little respin. From sandeen@sandeen.net Wed Jan 27 14:20:04 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0RKK4xf212540 for ; Wed, 27 Jan 2010 14:20:04 -0600 X-ASG-Debug-ID: 1264623668-57da005c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 97FBF194274 for ; Wed, 27 Jan 2010 12:21:09 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id scMurWhVWljnLnXn for ; Wed, 27 Jan 2010 12:21:09 -0800 (PST) Received: from int-mx04.intmail.prod.int.phx2.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.17]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0RKKuNQ004346 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 27 Jan 2010 15:20:56 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx04.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0RKKsHR015276; Wed, 27 Jan 2010 15:20:55 -0500 Message-ID: <4B60A026.30905@sandeen.net> Date: Wed, 27 Jan 2010 14:20:54 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Subject: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-3-git-send-email-david@fromorbit.com> <4B60932D.7060709@sandeen.net> <20100127201733.GA32057@infradead.org> In-Reply-To: <20100127201733.GA32057@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.17 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1264623669 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20956 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Wed, Jan 27, 2010 at 01:25:33PM -0600, Eric Sandeen wrote: >> seems to be some fallout from this at least on my F10 box: >> >> /usr/bin/makedepend: warning: ignoring option -Wall >> /usr/bin/makedepend: error: cannot open "no-strict-aliasing" >> >> also this change: >> >> - preallo_rw_pattern_reader preallo_rw_pattern_writer ftrunc trunc \ >> - fs_perms testx looptest locktest unwritten_mmap \ >> + ftrunc trunc fs_perms testx looptest locktest unwritten_mmap \ >> bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ >> >> ... >> >> >> +PREALLO_TARGETS = preallo_rw_pattern_reader >> >> seems to have lost the build of preallo_rw_pattern_reader & writer. >> >> Was that stray, or what were you going for there? > > It's stray now that I fixed up the way preallo_rw_pattern_reader/write > are compiled. The patch needs a little respin. > ok, whatever is in the repo at this point is busted :) -Eric From BATV+ab3fe071ad14cffcf75a+2348+infradead.org+hch@bombadil.srs.infradead.org Wed Jan 27 14:25:34 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0RKPXuR212835 for ; Wed, 27 Jan 2010 14:25:33 -0600 X-ASG-Debug-ID: 1264623998-76a201bf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7B516F1480C for ; Wed, 27 Jan 2010 12:26:38 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id lI28DdGtFFHeenYE for ; Wed, 27 Jan 2010 12:26:38 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NaETE-0005BY-RQ; Wed, 27 Jan 2010 20:26:36 +0000 Date: Wed, 27 Jan 2010 15:26:36 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: fix compilation of iopat targets Subject: [PATCH] xfstests: fix compilation of iopat targets Message-ID: <20100127202636.GA15643@infradead.org> References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-3-git-send-email-david@fromorbit.com> <4B60932D.7060709@sandeen.net> <20100127201733.GA32057@infradead.org> <4B60A026.30905@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B60A026.30905@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264623998 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Now that PREALLO_TARGETS is gone these tests must be listed in the main LINUX_TARGETS list. Signed-off-by: Christoph Hellwig Index: xfstests-dev/src/Makefile =================================================================== --- xfstests-dev.orig/src/Makefile 2010-01-27 21:21:18.810261335 +0100 +++ xfstests-dev/src/Makefile 2010-01-27 21:22:08.535005799 +0100 @@ -12,10 +12,10 @@ TARGETS = dirstress fill fill2 getpagesi godown resvtest writemod makeextents itrash rename \ multi_open_unlink dmiperf unwritten_sync genhashnames -LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize \ - ftrunc trunc fs_perms testx looptest locktest unwritten_mmap \ - bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ - t_futimens +LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize preallo_rw_pattern_reader \ + preallo_rw_pattern_writer ftrunc trunc fs_perms testx looptest \ + locktest unwritten_mmap bulkstat_unlink_test \ + bulkstat_unlink_test_modified t_dir_offset t_futimens t_immutable SUBDIRS = @@ -28,9 +28,7 @@ endif IRIX_TARGETS = open_unlink ifeq ($(PKG_PLATFORM),linux) -PREALLO_TARGETS = preallo_rw_pattern_reader TARGETS += $(LINUX_TARGETS) -TARGETS += t_immutable endif ifeq ($(PKG_PLATFORM),irix) From sandeen@sandeen.net Wed Jan 27 14:28:22 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0RKSLqQ212997 for ; Wed, 27 Jan 2010 14:28:21 -0600 X-ASG-Debug-ID: 1264624165-602d023f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DF7B51C82D63 for ; Wed, 27 Jan 2010 12:29:25 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Vm6k03EuvW04Jbca for ; Wed, 27 Jan 2010 12:29:25 -0800 (PST) Received: from int-mx03.intmail.prod.int.phx2.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0RKTGxX030724 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 27 Jan 2010 15:29:16 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx03.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0RKTFNv003369; Wed, 27 Jan 2010 15:29:15 -0500 Message-ID: <4B60A21B.9050106@sandeen.net> Date: Wed, 27 Jan 2010 14:29:15 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Christoph Hellwig CC: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfstests: fix compilation of iopat targets Subject: Re: [PATCH] xfstests: fix compilation of iopat targets References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-3-git-send-email-david@fromorbit.com> <4B60932D.7060709@sandeen.net> <20100127201733.GA32057@infradead.org> <4B60A026.30905@sandeen.net> <20100127202636.GA15643@infradead.org> In-Reply-To: <20100127202636.GA15643@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.16 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1264624166 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20956 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Now that PREALLO_TARGETS is gone these tests must be listed in the main > LINUX_TARGETS list. > > Signed-off-by: Christoph Hellwig Thanks, Reviewed-by: Eric Sandeen > Index: xfstests-dev/src/Makefile > =================================================================== > --- xfstests-dev.orig/src/Makefile 2010-01-27 21:21:18.810261335 +0100 > +++ xfstests-dev/src/Makefile 2010-01-27 21:22:08.535005799 +0100 > @@ -12,10 +12,10 @@ TARGETS = dirstress fill fill2 getpagesi > godown resvtest writemod makeextents itrash rename \ > multi_open_unlink dmiperf unwritten_sync genhashnames > > -LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize \ > - ftrunc trunc fs_perms testx looptest locktest unwritten_mmap \ > - bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ > - t_futimens > +LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize preallo_rw_pattern_reader \ > + preallo_rw_pattern_writer ftrunc trunc fs_perms testx looptest \ > + locktest unwritten_mmap bulkstat_unlink_test \ > + bulkstat_unlink_test_modified t_dir_offset t_futimens t_immutable > > SUBDIRS = > > @@ -28,9 +28,7 @@ endif > IRIX_TARGETS = open_unlink > > ifeq ($(PKG_PLATFORM),linux) > -PREALLO_TARGETS = preallo_rw_pattern_reader > TARGETS += $(LINUX_TARGETS) > -TARGETS += t_immutable > endif > > ifeq ($(PKG_PLATFORM),irix) > From SRS0+o6vA+56+fromorbit.com=david@internode.on.net Wed Jan 27 16:56:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0RMuwfr234427 for ; Wed, 27 Jan 2010 16:56:59 -0600 X-ASG-Debug-ID: 1264633080-23ae02a50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CA2331C83850 for ; Wed, 27 Jan 2010 14:58:00 -0800 (PST) Received: from mail.internode.on.net (bld-mail18.adl2.internode.on.net [150.101.137.103]) by cuda.sgi.com with ESMTP id dq1ZJ7ssthlARvCK for ; Wed, 27 Jan 2010 14:58:00 -0800 (PST) Received: from discord (unverified [121.44.78.16]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11584241-1927428 for multiple; Thu, 28 Jan 2010 09:27:59 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NaGpX-0006sI-PP; Thu, 28 Jan 2010 09:57:47 +1100 Date: Thu, 28 Jan 2010 09:57:37 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Subject: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Message-ID: <20100127225737.GG15853@discord.disaster> References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-3-git-send-email-david@fromorbit.com> <4B60932D.7060709@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B60932D.7060709@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail18.adl2.internode.on.net[150.101.137.103] X-Barracuda-Start-Time: 1264633082 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20962 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 27, 2010 at 01:25:33PM -0600, Eric Sandeen wrote: > Dave Chinner wrote: > > Currently the xfstest builds do not have any automatic dependency > > calculations. It relies on a separate make depend run to build or > > update dependency information. It also relies on an external > > makedepend binary. If that binary does not exist, the dependencies > > do not get calculated. > > > > To remove the dependency on makedepend, gcc can be used instead as > > it has a command to generate dependency information. This patch > > changes the dependency rule building to use gcc. > > > > In case anyone uses an old (several years) gcc compiler or a > > compiler that doesn't support gcc compatible dependency generation, > > a new configure check is added to turn off dependency checking so > > builds can still be done. > > > > To use the dependencies automatically, we need to use a special > > include makefile directive to include the build dependencies into > > the current makefile. Essentially once the dependencies are > > calculated, they can be included into the makefile and make will > > recalculate the build dependencies automatically based on that > > information. > > > > Hence we get a build that automatically calculates and keeps > > dependencies up to date without dependence on any external tools. > > > > Signed-off-by: Dave Chinner > > seems to be some fallout from this at least on my F10 box: > > /usr/bin/makedepend: warning: ignoring option -Wall > /usr/bin/makedepend: error: cannot open "no-strict-aliasing" > > also this change: > > - preallo_rw_pattern_reader preallo_rw_pattern_writer ftrunc trunc \ > - fs_perms testx looptest locktest unwritten_mmap \ > + ftrunc trunc fs_perms testx looptest locktest unwritten_mmap \ > bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ > > ... > > > +PREALLO_TARGETS = preallo_rw_pattern_reader > > seems to have lost the build of preallo_rw_pattern_reader & writer. > > Was that stray, or what were you going for there? I thought I fixed all that up after hch's patches went in. Bugger. I'll try to get a few minutes at lunchtime to fix it. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Wed Jan 27 17:05:32 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0RN5W3s237175 for ; Wed, 27 Jan 2010 17:05:32 -0600 X-ASG-Debug-ID: 1264633596-702002890000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 69B95194E8F for ; Wed, 27 Jan 2010 15:06:36 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id vTeFDztgEwMFhwLv for ; Wed, 27 Jan 2010 15:06:36 -0800 (PST) Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0RN6Vxw030853 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 27 Jan 2010 18:06:31 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0RN6UCE025855; Wed, 27 Jan 2010 18:06:31 -0500 Message-ID: <4B60C6F6.9060006@sandeen.net> Date: Wed, 27 Jan 2010 17:06:30 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations Subject: Re: [PATCH 2/2] xfstests: Automatic build dependency calculations References: <1264053773-6054-1-git-send-email-david@fromorbit.com> <1264053773-6054-3-git-send-email-david@fromorbit.com> <4B60932D.7060709@sandeen.net> <20100127225737.GG15853@discord.disaster> In-Reply-To: <20100127225737.GG15853@discord.disaster> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1264633597 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20962 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > On Wed, Jan 27, 2010 at 01:25:33PM -0600, Eric Sandeen wrote: >> Dave Chinner wrote: >>> Currently the xfstest builds do not have any automatic dependency >>> calculations. It relies on a separate make depend run to build or >>> update dependency information. It also relies on an external >>> makedepend binary. If that binary does not exist, the dependencies >>> do not get calculated. >>> >>> To remove the dependency on makedepend, gcc can be used instead as >>> it has a command to generate dependency information. This patch >>> changes the dependency rule building to use gcc. >>> >>> In case anyone uses an old (several years) gcc compiler or a >>> compiler that doesn't support gcc compatible dependency generation, >>> a new configure check is added to turn off dependency checking so >>> builds can still be done. >>> >>> To use the dependencies automatically, we need to use a special >>> include makefile directive to include the build dependencies into >>> the current makefile. Essentially once the dependencies are >>> calculated, they can be included into the makefile and make will >>> recalculate the build dependencies automatically based on that >>> information. >>> >>> Hence we get a build that automatically calculates and keeps >>> dependencies up to date without dependence on any external tools. >>> >>> Signed-off-by: Dave Chinner >> seems to be some fallout from this at least on my F10 box: >> >> /usr/bin/makedepend: warning: ignoring option -Wall >> /usr/bin/makedepend: error: cannot open "no-strict-aliasing" >> >> also this change: >> >> - preallo_rw_pattern_reader preallo_rw_pattern_writer ftrunc trunc \ >> - fs_perms testx looptest locktest unwritten_mmap \ >> + ftrunc trunc fs_perms testx looptest locktest unwritten_mmap \ >> bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset \ >> >> ... >> >> >> +PREALLO_TARGETS = preallo_rw_pattern_reader >> >> seems to have lost the build of preallo_rw_pattern_reader & writer. >> >> Was that stray, or what were you going for there? > > I thought I fixed all that up after hch's patches went in. Bugger. > I'll try to get a few minutes at lunchtime to fix it. hch has the 2nd one fixed already. not sure about the warnings. -Eric From sandeen@sandeen.net Wed Jan 27 17:13:52 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0RNDpdZ238967 for ; Wed, 27 Jan 2010 17:13:51 -0600 X-ASG-Debug-ID: 1264634096-2ae103a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BEA24F6460D for ; Wed, 27 Jan 2010 15:14:56 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 4PKSB0vf1hkZcses for ; Wed, 27 Jan 2010 15:14:56 -0800 (PST) Received: from int-mx08.intmail.prod.int.phx2.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0RNEuR5024326 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 27 Jan 2010 18:14:56 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by int-mx08.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0RNEsMG015084 for ; Wed, 27 Jan 2010 18:14:55 -0500 Message-ID: <4B60C8EE.5080700@sandeen.net> Date: Wed, 27 Jan 2010 17:14:54 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.21 (X11/20090320) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH, RFC] more reserved blocks fixups Subject: [PATCH, RFC] more reserved blocks fixups Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.21 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1264634096 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20962 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This mangles the reserved blocks counts a little more. 1) add a helper function for the default reserved count 2) add helper functions to save/restore counts on ro/rw 3) save/restore reserved blocks on freeze/thaw 4) disallow changing reserved count while readonly for 2) - maybe better names (save_and_clear?) for 4) - maybe allow, but change the _ro field instead? (TBH not tested yet but wondered if this seems sane) Signed-off-by: Eric Sandeen --- diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c index 5bb523d..5f06150 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.c +++ b/fs/xfs/linux-2.6/xfs_ioctl.c @@ -1430,6 +1430,9 @@ xfs_file_ioctl( if (!capable(CAP_SYS_ADMIN)) return -EPERM; + if (mp->m_flags & XFS_MOUNT_RDONLY) + return -XFS_ERROR(EROFS); + if (copy_from_user(&inout, arg, sizeof(inout))) return -XFS_ERROR(EFAULT); diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 7b15ed0..5f50372 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c @@ -1237,6 +1237,29 @@ xfs_fs_statfs( return 0; } +STATIC void +xfs_save_resvblks(struct xfs_mount *mp) +{ + __uint64_t resblks = 0; + + mp->m_resblks_ro = mp->m_resblks; + xfs_reserve_blocks(mp, &resblks, NULL); +} + +STATIC void +xfs_restore_resvblks(struct xfs_mount *mp) +{ + __uint64_t resblks; + + if (mp->m_resblks_ro) { + resblks = mp->m_resblks_ro; + mp->m_resblks_ro = 0; + } else + resblks = xfs_default_resblks(mp); + + xfs_reserve_blocks(mp, &resblks, NULL); +} + STATIC int xfs_fs_remount( struct super_block *sb, @@ -1299,8 +1322,6 @@ xfs_fs_remount( /* ro -> rw */ if ((mp->m_flags & XFS_MOUNT_RDONLY) && !(*flags & MS_RDONLY)) { - __uint64_t resblks; - mp->m_flags &= ~XFS_MOUNT_RDONLY; if (mp->m_flags & XFS_MOUNT_BARRIER) xfs_mountfs_check_barriers(mp); @@ -1323,15 +1344,7 @@ xfs_fs_remount( * Fill out the reserve pool if it is empty. Use the stashed * value if it is non-zero, otherwise go with the default. */ - if (mp->m_resblks_ro) { - resblks = mp->m_resblks_ro; - mp->m_resblks_ro = 0; - } else { - resblks = mp->m_sb.sb_dblocks; - do_div(resblks, 20); - resblks = min_t(__uint64_t, resblks, 1024); - } - xfs_reserve_blocks(mp, &resblks, NULL); + xfs_restore_resvblks(mp); } /* rw -> ro */ @@ -1344,11 +1357,9 @@ xfs_fs_remount( * so that if we get remounted rw, we can return it to the same * size. */ - __uint64_t resblks = 0; xfs_quiesce_data(mp); - mp->m_resblks_ro = mp->m_resblks; - xfs_reserve_blocks(mp, &resblks, NULL); + xfs_save_resvblks(mp); xfs_quiesce_attr(mp); mp->m_flags |= XFS_MOUNT_RDONLY; } @@ -1367,11 +1378,22 @@ xfs_fs_freeze( { struct xfs_mount *mp = XFS_M(sb); + xfs_save_resvblks(mp); xfs_quiesce_attr(mp); return -xfs_fs_log_dummy(mp); } STATIC int +xfs_fs_unfreeze( + struct super_block *sb) +{ + struct xfs_mount *mp = XFS_M(sb); + + xfs_restore_resvblks(mp); + return 0; +} + +STATIC int xfs_fs_show_options( struct seq_file *m, struct vfsmount *mnt) @@ -1595,6 +1617,7 @@ static const struct super_operations xfs_super_operations = { .put_super = xfs_fs_put_super, .sync_fs = xfs_fs_sync_fs, .freeze_fs = xfs_fs_freeze, + .unfreeze_fs = xfs_fs_unfreeze, .statfs = xfs_fs_statfs, .remount_fs = xfs_fs_remount, .show_options = xfs_fs_show_options, diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 8b6c9e8..0d1fbc1 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -1006,6 +1006,22 @@ xfs_mount_reset_sbqflags( return xfs_trans_commit(tp, 0); } +__uint64_t +xfs_default_resblks(xfs_mount_t *mp) +{ + __uint64_t resblks; + + /* + * We default to 5% or 1024 fsbs of space reserved, whichever is smaller. + * This may drive us straight to ENOSPC on mount, but that implies + * we were already there on the last unmount. Warn if this occurs. + */ + resblks = mp->m_sb.sb_dblocks; + do_div(resblks, 20); + resblks = min_t(__uint64_t, resblks, 1024); + return resblks; +} + /* * This function does the following on an initial mount of a file system: * - reads the superblock from disk and init the mount struct @@ -1316,18 +1332,14 @@ xfs_mountfs( * when at ENOSPC. This is needed for operations like create with * attr, unwritten extent conversion at ENOSPC, etc. Data allocations * are not allowed to use this reserved space. - * - * We default to 5% or 1024 fsbs of space reserved, whichever is smaller. - * This may drive us straight to ENOSPC on mount, but that implies - * we were already there on the last unmount. Warn if this occurs. */ - resblks = mp->m_sb.sb_dblocks; - do_div(resblks, 20); - resblks = min_t(__uint64_t, resblks, 1024); - error = xfs_reserve_blocks(mp, &resblks, NULL); - if (error) - cmn_err(CE_WARN, "XFS: Unable to allocate reserve blocks. " - "Continuing without a reserve pool."); + if (!(mp->m_flags & XFS_MOUNT_RDONLY)) { + resblks = xfs_default_resblks(mp); + error = xfs_reserve_blocks(mp, &resblks, NULL); + if (error) + cmn_err(CE_WARN, "XFS: Unable to allocate reserve " + "blocks. Continuing without a reserve pool."); + } return 0; diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 1205844..4ab7f40 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -414,6 +414,7 @@ typedef struct xfs_mod_sb { } xfs_mod_sb_t; extern int xfs_log_sbcount(xfs_mount_t *, uint); +extern __uint64_t xfs_default_resblks(xfs_mount_t *mp); extern int xfs_mountfs(xfs_mount_t *mp); extern void xfs_unmountfs(xfs_mount_t *); From SRS0+EpnX+57+fromorbit.com=david@internode.on.net Wed Jan 27 19:58:04 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0S1w3Gd254327 for ; Wed, 27 Jan 2010 19:58:04 -0600 X-ASG-Debug-ID: 1264643920-321703230000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 990CA1953FA for ; Wed, 27 Jan 2010 17:58:41 -0800 (PST) Received: from mail.internode.on.net (bld-mail14.adl6.internode.on.net [150.101.137.99]) by cuda.sgi.com with ESMTP id TnXAfbiOK80GGuVy for ; Wed, 27 Jan 2010 17:58:41 -0800 (PST) Received: from discord (unverified [121.44.78.16]) by mail.internode.on.net (SurgeMail 3.8f2) with ESMTP id 11791596-1927428 for multiple; Thu, 28 Jan 2010 12:28:39 +1030 (CDT) Received: from dave by discord with local (Exim 4.69) (envelope-from ) id 1NaJeN-00074d-N5; Thu, 28 Jan 2010 12:58:27 +1100 Date: Thu, 28 Jan 2010 12:58:17 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH, RFC] more reserved blocks fixups Subject: Re: [PATCH, RFC] more reserved blocks fixups Message-ID: <20100128015817.GH15853@discord.disaster> References: <4B60C8EE.5080700@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B60C8EE.5080700@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: bld-mail14.adl6.internode.on.net[150.101.137.99] X-Barracuda-Start-Time: 1264643922 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0007 1.0000 -2.0167 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.20974 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Wed, Jan 27, 2010 at 05:14:54PM -0600, Eric Sandeen wrote: > This mangles the reserved blocks counts a little more. > > 1) add a helper function for the default reserved count > 2) add helper functions to save/restore counts on ro/rw > 3) save/restore reserved blocks on freeze/thaw > 4) disallow changing reserved count while readonly > > for 2) - maybe better names (save_and_clear?) > for 4) - maybe allow, but change the _ro field instead? > > (TBH not tested yet but wondered if this seems sane) I was wondering if the save/restore could be encapsualted entirely within xfs_quiesce_attr(). i.e. save before the superblock write, restore directly after. That removes the need for a variable in the xfs_mount structure, and catches both remount,ro and freeze. What do you think? Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Thu Jan 28 10:55:24 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0SGtNXM038860 for ; Thu, 28 Jan 2010 10:55:24 -0600 X-ASG-Debug-ID: 1264697788-6ce101d80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5776FF63E0E for ; Thu, 28 Jan 2010 08:56:28 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id B1wevdv9j1CQ4Nc6 for ; Thu, 28 Jan 2010 08:56:28 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 5B76C9E7274 for ; Thu, 28 Jan 2010 10:56:28 -0600 (CST) Message-ID: <4B61C1BC.4050800@sandeen.net> Date: Thu, 28 Jan 2010 10:56:28 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests: filter selinux output in _acl_ls Subject: [PATCH] xfstests: filter selinux output in _acl_ls Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264697789 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21020 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When selinux is on, ls -l gives us a "." to indicate selinux attrs, which breaks some tests: === Test minimal ACE === Setup file --rwxrw-r-- id1 id2 file1 +-rwxrw-r--. id1 id2 file1 so filter that out. Signed-off-by: Eric Sandeen --- Index: xfstests/common.attr =================================================================== --- xfstests.orig/common.attr +++ xfstests/common.attr @@ -58,7 +58,10 @@ _acl_filter_id() # _acl_ls() { - ls -ln $* | awk '{ print $1, $3, $4, $NF }' | _acl_filter_id + ls -ln $* | \ + sed "s/\(.*\)\. /\1 /" | \ + awk '{ print $1, $3, $4, $NF }' | \ + _acl_filter_id } # From sandeen@sandeen.net Thu Jan 28 15:03:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_52,J_CHICKENPOX_82 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0SL37Y7051270 for ; Thu, 28 Jan 2010 15:03:08 -0600 X-ASG-Debug-ID: 1264712352-6381019f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A07C219890E for ; Thu, 28 Jan 2010 12:59:12 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id YUc1rPFrceH2zJWf for ; Thu, 28 Jan 2010 12:59:12 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 5A50C9E7260; Thu, 28 Jan 2010 14:59:12 -0600 (CST) Message-ID: <4B61FAA0.8020304@sandeen.net> Date: Thu, 28 Jan 2010 14:59:12 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, Eric Blake X-ASG-Orig-Subj: Re: [PATCH] xfstests: add test for ctimes updates in futimens Subject: Re: [PATCH] xfstests: add test for ctimes updates in futimens References: <20100110215227.GA15354@infradead.org> In-Reply-To: <20100110215227.GA15354@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264712353 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21032 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > This adds Erik's testcase for the ctime update in futimes that I fixed > a while ago. > > Erik, can you double check the attribution and licensing for your > testcase? > > > +main(int argc, char **argv) > +{ > + int fd = creat ("file", 0600); > + struct stat st1, st2; > + struct timespec t[2] = { { 1000000000, 0 }, { 0, UTIME_OMIT } }; > + > + fstat(fd, &st1); > + sleep(1); > + futimens(fd, t); > + fstat(fd, &st2); > + > + if (st1.st_ctime == st2.st_ctime) > + printf("failed to update ctime!\n"); > + return 0; > +} Late on review, but this won't build on older glibc's :( need some auto-fu somewhere? was going to put: +# +# Check if we have a working futimens libc call +# +AC_DEFUN([AC_HAVE_FUTIMENS], + [ AC_MSG_CHECKING([for futimens ]) + AC_TRY_COMPILE([ +#define _GNU_SOURCE +#include + ], [ + struct timespec t[2] = { { 1000000000, 0 }, { 0, UTIME_OMIT } }; + futimens(0, t); + ], have_futimens=yes + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no)) + AC_SUBST(have_futimens) + ]) into m4/package_libcdev.m4 but the whole file seems unused. my auto-fu is weaker than it used to be. Anyone know offhand how to fix this up? Thanks, -Eric From sandeen@sandeen.net Thu Jan 28 16:51:21 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_43,J_CHICKENPOX_48,J_CHICKENPOX_52 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0SMpLxN057147 for ; Thu, 28 Jan 2010 16:51:21 -0600 X-ASG-Debug-ID: 1264719145-1ab400b60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CA9ED1C87885 for ; Thu, 28 Jan 2010 14:52:25 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id ySget6ugksLjFM6f for ; Thu, 28 Jan 2010 14:52:25 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id A1A919E7278; Thu, 28 Jan 2010 16:52:25 -0600 (CST) Message-ID: <4B621529.20708@sandeen.net> Date: Thu, 28 Jan 2010 16:52:25 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss CC: ext4 development X-ASG-Orig-Subj: [PATCH] xfstests: 223 - test file alignment on stripe geometry Subject: [PATCH] xfstests: 223 - test file alignment on stripe geometry Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264719146 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21040 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean A first-cut test to ensure that files are well-aligned on filesystems with stripe geometry. Several sizes of stripe units are mkfs'd, and then files are written and fallocated in various multiples of those stripe sizes. Each file is checked to ensure that the first block is stripe-aligned. (Ideally, for any fragmented files, we should ensure that each fragment start is well-aligned, but this does not do that yet) (slightly unrelated: don't send scratch mkfs output to /dev/null) Signed-off-by: Eric Sandeen --- diff --git a/223 b/223 new file mode 100755 index 0000000..f679397 --- /dev/null +++ b/223 @@ -0,0 +1,120 @@ +#! /bin/bash +# FS QA Test No. 223 +# +# File alignment tests +# +#----------------------------------------------------------------------- +# Copyright (c) 2010 Eric Sandeen. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=sandeen@sandeen.net + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_scratch +_require_xfs_io_falloc + +rm -f $seq.full + +_filter_scratch() +{ + sed -e "s,$SCRATCH_MNT,SCRATCH_MNT,g" +} + +BLOCKSIZE=4096 + +scratch_mkfs_geom() +{ + sunit_bytes=$1 + swidth_mult=$2 + + let sunit_blocks=$sunit_bytes/$BLOCKSIZE + let swidth_blocks=$sunit_blocks*$swidth_mult + + case $FSTYP in + xfs) + MKFS_OPTIONS="-b size=$BLOCKSIZE, -d su=$sunit_bytes,sw=$swidth_mult" + ;; + ext4) + MKFS_OPTIONS="-b $BLOCKSIZE -E stride=$sunit_blocks,stripe_width=$swidth_blocks" + ;; + *) + _notrun "can't mkfs $FSTYP with geometry" + ;; + esac + echo "=== mkfs with su $sunit_blocks blocks x $swidth_mult ===" + _scratch_mkfs &>> $seq.full +} + +# Emulate a 4-data-disk stripe w/ various stripe units + +for SUNIT_K in 8 16 32 64 128; do + let SUNIT_BYTES=$SUNIT_K*1024 + let SUNIT_BLOCKS=$SUNIT_BYTES/$BLOCKSIZE + + scratch_mkfs_geom $SUNIT_BYTES 4 + _scratch_mount + + for SIZE_MULT in 1 2 8 64 256; do + let SIZE=$SIZE_MULT*$SUNIT_BYTES + + echo "=== Testing size ${SIZE_MULT}*${SUNIT_K}k on ${SUNIT_K}k stripe ===" + for FILE in 1 2 3 4; do + xfs_io -F -f -c "falloc 0 $SIZE" $SCRATCH_MNT/file-$FILE-$SIZE-falloc &>> $seq.full + xfs_io -F -f -c "pwrite 0 $SIZE" $SCRATCH_MNT/file-$FILE-$SIZE-write &>> $seq.full + src/fibmap $SCRATCH_MNT/file-$FILE-$SIZE-falloc $SUNIT_BLOCKS | \ + _filter_scratch + src/fibmap $SCRATCH_MNT/file-$FILE-$SIZE-write $SUNIT_BLOCKS | \ + _filter_scratch + done + done + + echo "=== Testing size 1g falloc on ${SUNIT_K}k stripe ===" + xfs_io -F -f -c "falloc 0 1g" $SCRATCH_MNT/file-1g-falloc &>> $seq.full + src/fibmap $SCRATCH_MNT/file-1g-falloc $SUNIT_BLOCKS + + rm -f $SCRATCH_MNT/file-1g-falloc | _filter_scratch + + echo "=== Testing size 1073745920 falloc on ${SUNIT_K}k stripe ===" + xfs_io -F -f -c "falloc 0 1073745920" $SCRATCH_MNT/file-1073745920-falloc &>> $seq.full + src/fibmap $SCRATCH_MNT/file-1073745920-falloc $SUNIT_BLOCKS | _filter_scratch + + _scratch_unmount +done + +status=0 ; exit diff --git a/223.out b/223.out new file mode 100644 index 0000000..c9588ef --- /dev/null +++ b/223.out @@ -0,0 +1,251 @@ +QA output created by 223 +=== mkfs with su 2 blocks x 4 === +=== Testing size 1*8k on 8k stripe === +SCRATCH_MNT/file-1-8192-falloc: well-aligned +SCRATCH_MNT/file-1-8192-write: well-aligned +SCRATCH_MNT/file-2-8192-falloc: well-aligned +SCRATCH_MNT/file-2-8192-write: well-aligned +SCRATCH_MNT/file-3-8192-falloc: well-aligned +SCRATCH_MNT/file-3-8192-write: well-aligned +SCRATCH_MNT/file-4-8192-falloc: well-aligned +SCRATCH_MNT/file-4-8192-write: well-aligned +=== Testing size 2*8k on 8k stripe === +SCRATCH_MNT/file-1-16384-falloc: well-aligned +SCRATCH_MNT/file-1-16384-write: well-aligned +SCRATCH_MNT/file-2-16384-falloc: well-aligned +SCRATCH_MNT/file-2-16384-write: well-aligned +SCRATCH_MNT/file-3-16384-falloc: well-aligned +SCRATCH_MNT/file-3-16384-write: well-aligned +SCRATCH_MNT/file-4-16384-falloc: well-aligned +SCRATCH_MNT/file-4-16384-write: well-aligned +=== Testing size 8*8k on 8k stripe === +SCRATCH_MNT/file-1-65536-falloc: well-aligned +SCRATCH_MNT/file-1-65536-write: well-aligned +SCRATCH_MNT/file-2-65536-falloc: well-aligned +SCRATCH_MNT/file-2-65536-write: well-aligned +SCRATCH_MNT/file-3-65536-falloc: well-aligned +SCRATCH_MNT/file-3-65536-write: well-aligned +SCRATCH_MNT/file-4-65536-falloc: well-aligned +SCRATCH_MNT/file-4-65536-write: well-aligned +=== Testing size 64*8k on 8k stripe === +SCRATCH_MNT/file-1-524288-falloc: well-aligned +SCRATCH_MNT/file-1-524288-write: well-aligned +SCRATCH_MNT/file-2-524288-falloc: well-aligned +SCRATCH_MNT/file-2-524288-write: well-aligned +SCRATCH_MNT/file-3-524288-falloc: well-aligned +SCRATCH_MNT/file-3-524288-write: well-aligned +SCRATCH_MNT/file-4-524288-falloc: well-aligned +SCRATCH_MNT/file-4-524288-write: well-aligned +=== Testing size 256*8k on 8k stripe === +SCRATCH_MNT/file-1-2097152-falloc: well-aligned +SCRATCH_MNT/file-1-2097152-write: well-aligned +SCRATCH_MNT/file-2-2097152-falloc: well-aligned +SCRATCH_MNT/file-2-2097152-write: well-aligned +SCRATCH_MNT/file-3-2097152-falloc: well-aligned +SCRATCH_MNT/file-3-2097152-write: well-aligned +SCRATCH_MNT/file-4-2097152-falloc: well-aligned +SCRATCH_MNT/file-4-2097152-write: well-aligned +=== Testing size 1g falloc on 8k stripe === +/mnt/scratch/file-1g-falloc: well-aligned +=== Testing size 1073745920 falloc on 8k stripe === +SCRATCH_MNT/file-1073745920-falloc: well-aligned +=== mkfs with su 4 blocks x 4 === +=== Testing size 1*16k on 16k stripe === +SCRATCH_MNT/file-1-16384-falloc: well-aligned +SCRATCH_MNT/file-1-16384-write: well-aligned +SCRATCH_MNT/file-2-16384-falloc: well-aligned +SCRATCH_MNT/file-2-16384-write: well-aligned +SCRATCH_MNT/file-3-16384-falloc: well-aligned +SCRATCH_MNT/file-3-16384-write: well-aligned +SCRATCH_MNT/file-4-16384-falloc: well-aligned +SCRATCH_MNT/file-4-16384-write: well-aligned +=== Testing size 2*16k on 16k stripe === +SCRATCH_MNT/file-1-32768-falloc: well-aligned +SCRATCH_MNT/file-1-32768-write: well-aligned +SCRATCH_MNT/file-2-32768-falloc: well-aligned +SCRATCH_MNT/file-2-32768-write: well-aligned +SCRATCH_MNT/file-3-32768-falloc: well-aligned +SCRATCH_MNT/file-3-32768-write: well-aligned +SCRATCH_MNT/file-4-32768-falloc: well-aligned +SCRATCH_MNT/file-4-32768-write: well-aligned +=== Testing size 8*16k on 16k stripe === +SCRATCH_MNT/file-1-131072-falloc: well-aligned +SCRATCH_MNT/file-1-131072-write: well-aligned +SCRATCH_MNT/file-2-131072-falloc: well-aligned +SCRATCH_MNT/file-2-131072-write: well-aligned +SCRATCH_MNT/file-3-131072-falloc: well-aligned +SCRATCH_MNT/file-3-131072-write: well-aligned +SCRATCH_MNT/file-4-131072-falloc: well-aligned +SCRATCH_MNT/file-4-131072-write: well-aligned +=== Testing size 64*16k on 16k stripe === +SCRATCH_MNT/file-1-1048576-falloc: well-aligned +SCRATCH_MNT/file-1-1048576-write: well-aligned +SCRATCH_MNT/file-2-1048576-falloc: well-aligned +SCRATCH_MNT/file-2-1048576-write: well-aligned +SCRATCH_MNT/file-3-1048576-falloc: well-aligned +SCRATCH_MNT/file-3-1048576-write: well-aligned +SCRATCH_MNT/file-4-1048576-falloc: well-aligned +SCRATCH_MNT/file-4-1048576-write: well-aligned +=== Testing size 256*16k on 16k stripe === +SCRATCH_MNT/file-1-4194304-falloc: well-aligned +SCRATCH_MNT/file-1-4194304-write: well-aligned +SCRATCH_MNT/file-2-4194304-falloc: well-aligned +SCRATCH_MNT/file-2-4194304-write: well-aligned +SCRATCH_MNT/file-3-4194304-falloc: well-aligned +SCRATCH_MNT/file-3-4194304-write: well-aligned +SCRATCH_MNT/file-4-4194304-falloc: well-aligned +SCRATCH_MNT/file-4-4194304-write: well-aligned +=== Testing size 1g falloc on 16k stripe === +/mnt/scratch/file-1g-falloc: well-aligned +=== Testing size 1073745920 falloc on 16k stripe === +SCRATCH_MNT/file-1073745920-falloc: well-aligned +=== mkfs with su 8 blocks x 4 === +=== Testing size 1*32k on 32k stripe === +SCRATCH_MNT/file-1-32768-falloc: well-aligned +SCRATCH_MNT/file-1-32768-write: well-aligned +SCRATCH_MNT/file-2-32768-falloc: well-aligned +SCRATCH_MNT/file-2-32768-write: well-aligned +SCRATCH_MNT/file-3-32768-falloc: well-aligned +SCRATCH_MNT/file-3-32768-write: well-aligned +SCRATCH_MNT/file-4-32768-falloc: well-aligned +SCRATCH_MNT/file-4-32768-write: well-aligned +=== Testing size 2*32k on 32k stripe === +SCRATCH_MNT/file-1-65536-falloc: well-aligned +SCRATCH_MNT/file-1-65536-write: well-aligned +SCRATCH_MNT/file-2-65536-falloc: well-aligned +SCRATCH_MNT/file-2-65536-write: well-aligned +SCRATCH_MNT/file-3-65536-falloc: well-aligned +SCRATCH_MNT/file-3-65536-write: well-aligned +SCRATCH_MNT/file-4-65536-falloc: well-aligned +SCRATCH_MNT/file-4-65536-write: well-aligned +=== Testing size 8*32k on 32k stripe === +SCRATCH_MNT/file-1-262144-falloc: well-aligned +SCRATCH_MNT/file-1-262144-write: well-aligned +SCRATCH_MNT/file-2-262144-falloc: well-aligned +SCRATCH_MNT/file-2-262144-write: well-aligned +SCRATCH_MNT/file-3-262144-falloc: well-aligned +SCRATCH_MNT/file-3-262144-write: well-aligned +SCRATCH_MNT/file-4-262144-falloc: well-aligned +SCRATCH_MNT/file-4-262144-write: well-aligned +=== Testing size 64*32k on 32k stripe === +SCRATCH_MNT/file-1-2097152-falloc: well-aligned +SCRATCH_MNT/file-1-2097152-write: well-aligned +SCRATCH_MNT/file-2-2097152-falloc: well-aligned +SCRATCH_MNT/file-2-2097152-write: well-aligned +SCRATCH_MNT/file-3-2097152-falloc: well-aligned +SCRATCH_MNT/file-3-2097152-write: well-aligned +SCRATCH_MNT/file-4-2097152-falloc: well-aligned +SCRATCH_MNT/file-4-2097152-write: well-aligned +=== Testing size 256*32k on 32k stripe === +SCRATCH_MNT/file-1-8388608-falloc: well-aligned +SCRATCH_MNT/file-1-8388608-write: well-aligned +SCRATCH_MNT/file-2-8388608-falloc: well-aligned +SCRATCH_MNT/file-2-8388608-write: well-aligned +SCRATCH_MNT/file-3-8388608-falloc: well-aligned +SCRATCH_MNT/file-3-8388608-write: well-aligned +SCRATCH_MNT/file-4-8388608-falloc: well-aligned +SCRATCH_MNT/file-4-8388608-write: well-aligned +=== Testing size 1g falloc on 32k stripe === +/mnt/scratch/file-1g-falloc: well-aligned +=== Testing size 1073745920 falloc on 32k stripe === +SCRATCH_MNT/file-1073745920-falloc: well-aligned +=== mkfs with su 16 blocks x 4 === +=== Testing size 1*64k on 64k stripe === +SCRATCH_MNT/file-1-65536-falloc: well-aligned +SCRATCH_MNT/file-1-65536-write: well-aligned +SCRATCH_MNT/file-2-65536-falloc: well-aligned +SCRATCH_MNT/file-2-65536-write: well-aligned +SCRATCH_MNT/file-3-65536-falloc: well-aligned +SCRATCH_MNT/file-3-65536-write: well-aligned +SCRATCH_MNT/file-4-65536-falloc: well-aligned +SCRATCH_MNT/file-4-65536-write: well-aligned +=== Testing size 2*64k on 64k stripe === +SCRATCH_MNT/file-1-131072-falloc: well-aligned +SCRATCH_MNT/file-1-131072-write: well-aligned +SCRATCH_MNT/file-2-131072-falloc: well-aligned +SCRATCH_MNT/file-2-131072-write: well-aligned +SCRATCH_MNT/file-3-131072-falloc: well-aligned +SCRATCH_MNT/file-3-131072-write: well-aligned +SCRATCH_MNT/file-4-131072-falloc: well-aligned +SCRATCH_MNT/file-4-131072-write: well-aligned +=== Testing size 8*64k on 64k stripe === +SCRATCH_MNT/file-1-524288-falloc: well-aligned +SCRATCH_MNT/file-1-524288-write: well-aligned +SCRATCH_MNT/file-2-524288-falloc: well-aligned +SCRATCH_MNT/file-2-524288-write: well-aligned +SCRATCH_MNT/file-3-524288-falloc: well-aligned +SCRATCH_MNT/file-3-524288-write: well-aligned +SCRATCH_MNT/file-4-524288-falloc: well-aligned +SCRATCH_MNT/file-4-524288-write: well-aligned +=== Testing size 64*64k on 64k stripe === +SCRATCH_MNT/file-1-4194304-falloc: well-aligned +SCRATCH_MNT/file-1-4194304-write: well-aligned +SCRATCH_MNT/file-2-4194304-falloc: well-aligned +SCRATCH_MNT/file-2-4194304-write: well-aligned +SCRATCH_MNT/file-3-4194304-falloc: well-aligned +SCRATCH_MNT/file-3-4194304-write: well-aligned +SCRATCH_MNT/file-4-4194304-falloc: well-aligned +SCRATCH_MNT/file-4-4194304-write: well-aligned +=== Testing size 256*64k on 64k stripe === +SCRATCH_MNT/file-1-16777216-falloc: well-aligned +SCRATCH_MNT/file-1-16777216-write: well-aligned +SCRATCH_MNT/file-2-16777216-falloc: well-aligned +SCRATCH_MNT/file-2-16777216-write: well-aligned +SCRATCH_MNT/file-3-16777216-falloc: well-aligned +SCRATCH_MNT/file-3-16777216-write: well-aligned +SCRATCH_MNT/file-4-16777216-falloc: well-aligned +SCRATCH_MNT/file-4-16777216-write: well-aligned +=== Testing size 1g falloc on 64k stripe === +/mnt/scratch/file-1g-falloc: well-aligned +=== Testing size 1073745920 falloc on 64k stripe === +SCRATCH_MNT/file-1073745920-falloc: well-aligned +=== mkfs with su 32 blocks x 4 === +=== Testing size 1*128k on 128k stripe === +SCRATCH_MNT/file-1-131072-falloc: well-aligned +SCRATCH_MNT/file-1-131072-write: well-aligned +SCRATCH_MNT/file-2-131072-falloc: well-aligned +SCRATCH_MNT/file-2-131072-write: well-aligned +SCRATCH_MNT/file-3-131072-falloc: well-aligned +SCRATCH_MNT/file-3-131072-write: well-aligned +SCRATCH_MNT/file-4-131072-falloc: well-aligned +SCRATCH_MNT/file-4-131072-write: well-aligned +=== Testing size 2*128k on 128k stripe === +SCRATCH_MNT/file-1-262144-falloc: well-aligned +SCRATCH_MNT/file-1-262144-write: well-aligned +SCRATCH_MNT/file-2-262144-falloc: well-aligned +SCRATCH_MNT/file-2-262144-write: well-aligned +SCRATCH_MNT/file-3-262144-falloc: well-aligned +SCRATCH_MNT/file-3-262144-write: well-aligned +SCRATCH_MNT/file-4-262144-falloc: well-aligned +SCRATCH_MNT/file-4-262144-write: well-aligned +=== Testing size 8*128k on 128k stripe === +SCRATCH_MNT/file-1-1048576-falloc: well-aligned +SCRATCH_MNT/file-1-1048576-write: well-aligned +SCRATCH_MNT/file-2-1048576-falloc: well-aligned +SCRATCH_MNT/file-2-1048576-write: well-aligned +SCRATCH_MNT/file-3-1048576-falloc: well-aligned +SCRATCH_MNT/file-3-1048576-write: well-aligned +SCRATCH_MNT/file-4-1048576-falloc: well-aligned +SCRATCH_MNT/file-4-1048576-write: well-aligned +=== Testing size 64*128k on 128k stripe === +SCRATCH_MNT/file-1-8388608-falloc: well-aligned +SCRATCH_MNT/file-1-8388608-write: well-aligned +SCRATCH_MNT/file-2-8388608-falloc: well-aligned +SCRATCH_MNT/file-2-8388608-write: well-aligned +SCRATCH_MNT/file-3-8388608-falloc: well-aligned +SCRATCH_MNT/file-3-8388608-write: well-aligned +SCRATCH_MNT/file-4-8388608-falloc: well-aligned +SCRATCH_MNT/file-4-8388608-write: well-aligned +=== Testing size 256*128k on 128k stripe === +SCRATCH_MNT/file-1-33554432-falloc: well-aligned +SCRATCH_MNT/file-1-33554432-write: well-aligned +SCRATCH_MNT/file-2-33554432-falloc: well-aligned +SCRATCH_MNT/file-2-33554432-write: well-aligned +SCRATCH_MNT/file-3-33554432-falloc: well-aligned +SCRATCH_MNT/file-3-33554432-write: well-aligned +SCRATCH_MNT/file-4-33554432-falloc: well-aligned +SCRATCH_MNT/file-4-33554432-write: well-aligned +=== Testing size 1g falloc on 128k stripe === +/mnt/scratch/file-1g-falloc: well-aligned +=== Testing size 1073745920 falloc on 128k stripe === +SCRATCH_MNT/file-1073745920-falloc: well-aligned diff --git a/common.rc b/common.rc index 6424871..97513cc 100644 --- a/common.rc +++ b/common.rc @@ -292,7 +292,7 @@ _scratch_mkfs() $MKFS_UDF_PROG $MKFS_OPTIONS $* $SCRATCH_DEV > /dev/null ;; *) - /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS $* $SCRATCH_DEV > /dev/null + /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS $* $SCRATCH_DEV ;; esac } diff --git a/group b/group index 342ac89..6b8528f 100644 --- a/group +++ b/group @@ -336,3 +336,4 @@ deprecated 220 auto quota quick 221 auto metadata quick 222 auto fsr ioctl quick +223 auto quick diff --git a/src/Makefile b/src/Makefile index baa2e94..619a752 100644 --- a/src/Makefile +++ b/src/Makefile @@ -14,7 +14,7 @@ TARGETS = dirstress fill fill2 getpagesize holes lstat64 \ LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize preallo_rw_pattern_reader \ preallo_rw_pattern_writer ftrunc trunc fs_perms testx looptest \ - locktest unwritten_mmap bulkstat_unlink_test \ + locktest unwritten_mmap bulkstat_unlink_test fibmap \ bulkstat_unlink_test_modified t_dir_offset t_futimens t_immutable SUBDIRS = diff --git a/src/fibmap.c b/src/fibmap.c new file mode 100644 index 0000000..fa005b2 --- /dev/null +++ b/src/fibmap.c @@ -0,0 +1,76 @@ +/* + * fibmap.c + * + * Print first physical block of a file, or if stripe unit is + * given, print whether the file start is stripe-aligned. + * + * Copyright (c) 2010 Eric Sandeen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + */ +#include +#include +#include +#include +#include +#include +#include + +#define FIBMAP _IO(0x00, 1) /* bmap access */ + +/* + * If only filename given, print first block. + * + * If filename & sunit (in blocks) given, print whether we are well-aligned + */ + +int main(int argc, char ** argv) +{ + int fd; + int ret; + int sunit = 0; /* in blocks */ + char *filename; + unsigned int block = 0; + + if (argc < 2) { + printf("Usage: %s [sunit in blocks]\n", argv[0]); + return 1; + } + + filename = argv[1]; + if (argc > 2) + sunit = atoi(argv[2]); + + fd = open(filename, O_RDONLY); + if (fd < 0) { + perror("can't open file\n"); + return 1; + } + + ret = ioctl(fd, FIBMAP, &block); + if (ret < 0) { + close(fd); + perror("fibmap"); + return 1; + } + + close(fd); + if (sunit) { + if (block % sunit) { + printf("%s: Block %u not multiple of sunit %u\n", + filename, block, sunit); + return 1; + } else + printf("%s: well-aligned\n", filename); + } else + printf("%s: First block %u\n", filename, block); + + return 0; +} + + + + From sandeen@sandeen.net Thu Jan 28 17:27:03 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0SNR3jS060041 for ; Thu, 28 Jan 2010 17:27:03 -0600 X-ASG-Debug-ID: 1264721288-1ab3022a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 766EC1C87C97 for ; Thu, 28 Jan 2010 15:28:09 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id UvQLhQ9Z5bGxhVxf for ; Thu, 28 Jan 2010 15:28:09 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id B8AC59E7255 for ; Thu, 28 Jan 2010 17:28:08 -0600 (CST) Message-ID: <4B621D89.8070800@sandeen.net> Date: Thu, 28 Jan 2010 17:28:09 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests: routine to create scratch of certain size Subject: [PATCH] xfstests: routine to create scratch of certain size Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264721289 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21042 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is needed for later enospc tests to be generic Signed-off-by: Eric Sandeen --- diff --git a/common.rc b/common.rc index 97513cc..cf2662a 100644 --- a/common.rc +++ b/common.rc @@ -237,6 +237,27 @@ _scratch_mkfs_options() echo $SCRATCH_OPTIONS $MKFS_OPTIONS $* $SCRATCH_DEV } +# arg 1 is size in bytes, arg 2 is (optional) blocksize +_scratch_mkfs_sized() +{ + fssz=$1 + bsz=$2 + [ -z "$bsz" ] && bsz=4096 + let blocks=$fssz/$bsz + + case $FSTYP in + xfs) + _scratch_mkfs_xfs -d size=$fssz -b size=$bsz 2>&1 >>$here/$seq.full + ;; + ext2|ext3|ext4) + /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS -b $bsz $SCRATCH_DEV $blocks 2>&1>>$here/$seq.full + ;; + *) + _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized" + ;; + esac +} + _scratch_mkfs_xfs() { # extra mkfs options can be added by tests From sandeen@sandeen.net Thu Jan 28 17:29:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0SNTJhJ060204 for ; Thu, 28 Jan 2010 17:29:19 -0600 X-ASG-Debug-ID: 1264721425-1ab5023f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6060B1C87CAA for ; Thu, 28 Jan 2010 15:30:25 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id MBJKg1VHurFaA7WZ for ; Thu, 28 Jan 2010 15:30:25 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id EF8C69E7269 for ; Thu, 28 Jan 2010 17:30:24 -0600 (CST) Message-ID: <4B621E11.4050609@sandeen.net> Date: Thu, 28 Jan 2010 17:30:25 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests: make 053 and 077 generic Subject: [PATCH] xfstests: make 053 and 077 generic Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264721425 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.32 X-Barracuda-Spam-Status: No, SCORE=-1.32 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21042 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean 053 and 077 can be generic w/ a little tweaking. Also change 077's filler to something more likely to be on a random system under test, and add it to the enospc group. Signed-off-by: Eric Sandeen --- diff --git a/053 b/053 index 98644a7..5542885 100755 --- a/053 +++ b/053 @@ -38,18 +38,19 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 . ./common.attr # real QA test starts here -_supported_fs xfs +_supported_fs generic _supported_os Linux [ ! -x /bin/chacl -a ! -x /usr/bin/chacl ] && _notrun "chacl command not found" _require_scratch +_acl_requirements _acl_setup_ids _do_die_on_error=y test=$SCRATCH_MNT/test # make filesystem on scratch using the defaults -_do 'make filesystem on $SCRATCH_DEV' '_scratch_mkfs_xfs' +_do 'make filesystem on $SCRATCH_DEV' '_scratch_mkfs' _do 'mount filesytem' '_scratch_mount' # create test files and set acls @@ -84,7 +85,7 @@ list_acls() echo "acls before repair:" list_acls _do 'unmount $SCRATCH_DEV' 'umount $SCRATCH_DEV' -_do 'repair filesystem' '_scratch_xfs_repair' +_do 'repair filesystem' '_check_scratch_fs' _do 'mount filesytem' '_scratch_mount' echo "acls after repair: " list_acls diff --git a/077 b/077 index cdee8da..d23305f 100755 --- a/077 +++ b/077 @@ -31,7 +31,8 @@ here=`pwd` tmp=/tmp/$$ status=1 #filler=$here/../../linux -filler=/home/fsgqa/isms/2.4.x-xfs +#filler=/home/fsgqa/isms/2.4.x-xfs +filler=/lib/modules/`uname -r`/ _cleanup() { @@ -44,14 +45,16 @@ trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15 # get standard environment, filters and checks . ./common.rc . ./common.filter +. ./common.attr # real QA test starts here -_supported_fs xfs +_supported_fs generic _supported_os Linux [ ! -d $filler ] && _notrun "No linux directory to source files from" _require_scratch +_acl_requirements echo "*** create filesystem" @@ -59,7 +62,8 @@ rm -f $seq.full umount $SCRATCH_DEV >/dev/null 2>&1 echo "*** MKFS ***" >>$seq.full echo "" >>$seq.full -_scratch_mkfs_xfs -dsize=50m >>$seq.full 2>&1 \ +let SIZE=50*1024*1024 +_scratch_mkfs_sized $SIZE >>$seq.full 2>&1 \ || _fail "mkfs failed" _scratch_mount >>$seq.full 2>&1 \ || _fail "mount failed" diff --git a/group b/group index 6b8528f..c66d965 100644 --- a/group +++ b/group @@ -187,7 +187,7 @@ deprecated 074 rw udf auto 075 rw udf auto quick 076 metadata rw udf auto quick -077 acl attr auto +077 acl attr auto enospc 078 growfs auto quick 079 acl attr ioctl metadata auto quick 080 rw ioctl From sandeen@sandeen.net Thu Jan 28 17:33:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0SNXUP0061085 for ; Thu, 28 Jan 2010 17:33:31 -0600 X-ASG-Debug-ID: 1264721675-5fef02160000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C22F119916A for ; Thu, 28 Jan 2010 15:34:35 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id jZaTb4r7kiPjBuDn for ; Thu, 28 Jan 2010 15:34:35 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 90B589E7269 for ; Thu, 28 Jan 2010 17:34:35 -0600 (CST) Message-ID: <4B621F0C.2070407@sandeen.net> Date: Thu, 28 Jan 2010 17:34:36 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests: filter selinux output in _acl_ls Subject: Re: [PATCH] xfstests: filter selinux output in _acl_ls References: <4B61C1BC.4050800@sandeen.net> In-Reply-To: <4B61C1BC.4050800@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264721676 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21042 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Eric Sandeen wrote: > When selinux is on, ls -l gives us a "." to indicate selinux > attrs, which breaks some tests: > > === Test minimal ACE === > Setup file > --rwxrw-r-- id1 id2 file1 > +-rwxrw-r--. id1 id2 file1 > > so filter that out. Hmm NAK this one for now; there are more places that need this fixup, maybe an _ls_l() would be a good idea and put the filter in one spot. -Eric > Signed-off-by: Eric Sandeen > --- > > Index: xfstests/common.attr > =================================================================== > --- xfstests.orig/common.attr > +++ xfstests/common.attr > @@ -58,7 +58,10 @@ _acl_filter_id() > # > _acl_ls() > { > - ls -ln $* | awk '{ print $1, $3, $4, $NF }' | _acl_filter_id > + ls -ln $* | \ > + sed "s/\(.*\)\. /\1 /" | \ > + awk '{ print $1, $3, $4, $NF }' | \ > + _acl_filter_id > } > > # > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Thu Jan 28 22:38:46 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0T4cjSW091326 for ; Thu, 28 Jan 2010 22:38:45 -0600 X-ASG-Debug-ID: 1264739990-648c003c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 94DD41999DE for ; Thu, 28 Jan 2010 20:39:50 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id gJlpxOLdNK0e0qNh for ; Thu, 28 Jan 2010 20:39:50 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 5C3909E7268 for ; Thu, 28 Jan 2010 22:39:50 -0600 (CST) Message-ID: <4B626697.3080006@sandeen.net> Date: Thu, 28 Jan 2010 22:39:51 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH V2] xfstests: filter selinux output in _acl_ls etc Subject: [PATCH V2] xfstests: filter selinux output in _acl_ls etc References: <4B61C1BC.4050800@sandeen.net> In-Reply-To: <4B61C1BC.4050800@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264739991 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21061 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean When selinux is on, ls -l gives us a "." to indicate selinux attrs, which breaks some tests: === Test minimal ACE === Setup file --rwxrw-r-- id1 id2 file1 +-rwxrw-r--. id1 id2 file1 so make an _ls_l helper to filter that out. Signed-off-by: Eric Sandeen --- diff --git a/105 b/105 index e3163fd..9544c66 100755 --- a/105 +++ b/105 @@ -76,7 +76,7 @@ chown $acl1 subdir # put a file in the directory echo data > subdir/file -ls -l subdir/file | awk '{ print $1, $3 }' +_ls_l subdir/file | awk '{ print $1, $3 }' # add an ACL with a user ACE which has no exec permission if [ "$HOSTOS" == "Linux" ]; then @@ -91,7 +91,7 @@ fi # With the bug this gives: `ls: subdir/file: Permission denied' # because one needs at least an exec perm somewhere in acl # However, this should not hold true for directories. -ls -l subdir/file | awk '{ print $1, $3 }' +_ls_l subdir/file | awk '{ print $1, $3 }' # With the bug this gives: `subdir/file2: Permission denied'. echo data2 > subdir/file2 diff --git a/common.attr b/common.attr index a6b9b3b..d12cc02 100644 --- a/common.attr +++ b/common.attr @@ -58,7 +58,7 @@ _acl_filter_id() # _acl_ls() { - ls -ln $* | awk '{ print $1, $3, $4, $NF }' | _acl_filter_id + _ls_l -n $* | awk '{ print $1, $3, $4, $NF }' | _acl_filter_id } # diff --git a/common.rc b/common.rc index cf2662a..237f3aa 100644 --- a/common.rc +++ b/common.rc @@ -37,6 +37,14 @@ dd() fi } +# ls -l w/ selinux sometimes puts a dot at the end: +# -rwxrw-r--. id1 id2 file1 + +_ls_l() +{ + ls -l $* | sed "s/\(.*\)\. /\1 /" +} + _mount_opts() { case $FSTYP in From sandeen@sandeen.net Thu Jan 28 22:41:42 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0T4ffA2091509 for ; Thu, 28 Jan 2010 22:41:42 -0600 X-ASG-Debug-ID: 1264740167-333503750000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C3809195AF4 for ; Thu, 28 Jan 2010 20:42:47 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id pgrQkYdFf0Ybqs4g for ; Thu, 28 Jan 2010 20:42:47 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 34ABF9E7255 for ; Thu, 28 Jan 2010 22:42:47 -0600 (CST) Message-ID: <4B626748.3070601@sandeen.net> Date: Thu, 28 Jan 2010 22:42:48 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests: helper to detect fs free space Subject: [PATCH] xfstests: helper to detect fs free space Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264740167 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.32 X-Barracuda-Spam-Status: No, SCORE=-1.32 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21061 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Make a common helper to skip a test if there's not enough free space on the target fs. Signed-off-by: Eric Sandeen --- diff --git a/180 b/180 index 6ba32fe..c303169 100755 --- a/180 +++ b/180 @@ -51,10 +51,8 @@ _require_scratch _scratch_mkfs_xfs >/dev/null 2>&1 _scratch_mount -# Do we have enough space on disk? -FREE_BLOCKS=`df -klP $SCRATCH_MNT | grep -v Filesystem | awk '{print $4}'` -[ $FREE_BLOCKS -lt 10485760 ] && _notrun "This test requires at least 10GB of \ - $SCRATCH_DEV to run" +# Do we have enough space on disk? 10G +_require_fs_space $SCRATCH_MNT 10485760 _check_files() { diff --git a/217 b/217 index 6032578..19540ad 100755 --- a/217 +++ b/217 @@ -50,6 +50,8 @@ _setup_testdir _require_scratch _scratch_mkfs_xfs >/dev/null 2>&1 _scratch_mount +# 16T mkfs requires a bit over 2G free +_require_fs_space $SCRATCH_MNT 2202000 _require_loop LOOP_DEV=$SCRATCH_MNT/test_fs diff --git a/common.rc b/common.rc index 237f3aa..537f575 100644 --- a/common.rc +++ b/common.rc @@ -755,7 +755,8 @@ _require_user() # check that xfs_io, glibc, kernel, and filesystem all (!) support # fallocate # -_require_xfs_io_falloc() { +_require_xfs_io_falloc() +{ testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $TEST_DIR/$tmp.io 2>&1` rm -f $TEST_DIR/$tmp.io 2>&1 > /dev/null echo $testio | grep -q "not found" && \ @@ -764,6 +765,19 @@ _require_xfs_io_falloc() { _notrun "xfs_io fallocate command failed (old kernel/wrong fs?)" } +# Check that a fs has enough free space (in 1024b blocks) +# +_require_fs_space() +{ + MNT=$1 + BLOCKS=$2 # in units of 1024 + let GB=$BLOCKS/1024/1024 + + FREE_BLOCKS=`df -klP $MNT | grep -v Filesystem | awk '{print $4}'` + [ $FREE_BLOCKS -lt $BLOCKS ] && \ + _notrun "This test requires at least ${GB}GB free on $MNT to run" +} + # check that a FS on a device is mounted # if so, return mount point # From sandeen@sandeen.net Thu Jan 28 23:08:15 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0T58Fc8093027 for ; Thu, 28 Jan 2010 23:08:15 -0600 X-ASG-Debug-ID: 1264741759-507e03700000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E0D4712F8F2A for ; Thu, 28 Jan 2010 21:09:19 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id AQeKAaHXegawFa32 for ; Thu, 28 Jan 2010 21:09:19 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 7D2B99E7267; Thu, 28 Jan 2010 23:09:19 -0600 (CST) Message-ID: <4B626D80.3010601@sandeen.net> Date: Thu, 28 Jan 2010 23:09:20 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Alex Elder CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: 219: ignore duplicates reported by repquota Subject: Re: [PATCH 2/2] xfstests: 219: ignore duplicates reported by repquota References: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6942@cf--amer001e--3.americas.sgi.com> In-Reply-To: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6942@cf--amer001e--3.americas.sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264741760 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21064 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Alex Elder wrote: > (Re-sending; I misaddressed it the first time.) > > Arrange to ignore duplicate entries reported by the repquota command. > This can happen if an id is used more than once (such as when two user > names are assigned the same uid). > > Do this here by simply dropping any reported entries whose id number > has already been seen in the output. > > Signed-off-by: Alex Elder again with the late review ;) This is causing failures for me: --- 219.out 2009-11-12 17:27:40.209152659 -0600 +++ 219.out.bad 2010-01-28 23:03:05.933323333 -0600 @@ -27,7 +27,6 @@ Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- -#1 -- 144 0 0 3 0 0 raw output looks like: Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- #0 -- 0 0 0 3 0 0 #1 -- 144 0 0 3 0 0 there's probably better awk to be written than this, but I think this fixes it: Alex, you look like an awk-master, can you fix it? -Eric > --- > 219 | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > Index: b/219 > =================================================================== > --- a/219 > +++ b/219 > @@ -85,7 +85,8 @@ test_accounting() > $here/src/lstat64 $file | head -3 | filter_scratch > done > > - repquota -$type -s -n $SCRATCH_MNT | grep -v "^#0" | filter_scratch > + repquota -$type -s -n $SCRATCH_MNT | grep -v "^#0" | filter_scratch | > + awk '/^#/ { if (! seen[$1]) { seen[$1]++; next; } } { print }' > } > > # real QA test starts here > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sgi-linux-xfs@lo.gmane.org Fri Jan 29 09:09:02 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_210 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0TF91xF125373 for ; Fri, 29 Jan 2010 09:09:02 -0600 X-ASG-Debug-ID: 1264777806-050b02000000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 391A319AFE6 for ; Fri, 29 Jan 2010 07:10:06 -0800 (PST) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id OLuF2W9PZom04ng4 for ; Fri, 29 Jan 2010 07:10:06 -0800 (PST) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1NasU0-00070T-63 for linux-xfs@oss.sgi.com; Fri, 29 Jan 2010 16:10:04 +0100 Received: from c-24-60-200-235.hsd1.ma.comcast.net ([24.60.200.235]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 29 Jan 2010 16:10:04 +0100 Received: from Nico by c-24-60-200-235.hsd1.ma.comcast.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 29 Jan 2010 16:10:04 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: Nicolas STRANSKY X-ASG-Orig-Subj: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Subject: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Date: Fri, 29 Jan 2010 09:42:49 -0500 Lines: 21 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: c-24-60-200-235.hsd1.ma.comcast.net User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100111 Thunderbird/3.0.1 Sender: news X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1264777807 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21098 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi, I'm using Debian Lenny with xfsprogs 2.9.8-1lenny1 and a kernel 2.6.26-2-amd64. Recently I had some disk failures on a 1.5TB RAID 5 array, which is now running in a degraded mode but the xfs filesystem on this array is inconsistent. I can mount it with -o ro,norecovery and read some files, but I can't read most of them. Using xfs_repair, I tried to repair the filesystem. It went for 12 hours, displaying these messages: "found candidate secondary superblock... unable to verify superblock, continuing..." and finally: "Sorry, could not find valid secondary superblock Exiting now." Is there anything else I could do to repair the filesystem? Upgrade to a newer version of xfsprogs? Is it possible that there is no valid secondary superblock on the whole disk or are they just not found? Thanks a lot for any help, NS. From sandeen@sandeen.net Fri Jan 29 09:37:47 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_210 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0TFblD1126804 for ; Fri, 29 Jan 2010 09:37:47 -0600 X-ASG-Debug-ID: 1264779533-54df03120000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D5A411C8B320 for ; Fri, 29 Jan 2010 07:38:53 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id hvcxEwyMmDtHKlVM for ; Fri, 29 Jan 2010 07:38:53 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 2D2449E7273; Fri, 29 Jan 2010 09:38:53 -0600 (CST) Message-ID: <4B63010D.1080608@sandeen.net> Date: Fri, 29 Jan 2010 09:38:53 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Nicolas STRANSKY CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Subject: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264779533 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21100 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Nicolas STRANSKY wrote: > Hi, > > I'm using Debian Lenny with xfsprogs 2.9.8-1lenny1 and a kernel > 2.6.26-2-amd64. Recently I had some disk failures on a 1.5TB RAID 5 > array, which is now running in a degraded mode but the xfs filesystem on > this array is inconsistent. I can mount it with -o ro,norecovery and > read some files, but I can't read most of them. > Using xfs_repair, I tried to repair the filesystem. It went for 12 > hours, displaying these messages: > "found candidate secondary superblock... > unable to verify superblock, continuing..." > and finally: > "Sorry, could not find valid secondary superblock > Exiting now." > > Is there anything else I could do to repair the filesystem? Upgrade to a > newer version of xfsprogs? Is it possible that there is no valid > secondary superblock on the whole disk or are they just not found? > > Thanks a lot for any help, > NS. xfs_repair needs to be smarter about this; I at least wish it'd say -why- the candidate was not valid. Can you include the whole repair output? Then maybe we can direct you to some xfs_db jujitsu to examine the fs. Trying newer xfsprogs would not be a -bad- idea... -Eric From sgi-linux-xfs@lo.gmane.org Fri Jan 29 10:06:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0TG68YC128321 for ; Fri, 29 Jan 2010 10:06:08 -0600 X-ASG-Debug-ID: 1264781232-75b6017b0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4F61B1363101 for ; Fri, 29 Jan 2010 08:07:13 -0800 (PST) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id FYbZDtlcUcFLzpkZ for ; Fri, 29 Jan 2010 08:07:13 -0800 (PST) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1NatNH-0004Ew-PK for linux-xfs@oss.sgi.com; Fri, 29 Jan 2010 17:07:11 +0100 Received: from vm15c-113.broadinstitute.org ([69.173.114.122]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 29 Jan 2010 17:07:11 +0100 Received: from nico by vm15c-113.broadinstitute.org with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 29 Jan 2010 17:07:11 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: Nicolas Stransky X-ASG-Orig-Subj: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Subject: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Date: Fri, 29 Jan 2010 11:06:48 -0500 Lines: 36 Message-ID: References: <4B63010D.1080608@sandeen.net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: vm15c-113.broadinstitute.org User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.7) Gecko/20100128 Shredder/3.0.2pre In-Reply-To: <4B63010D.1080608@sandeen.net> Sender: news X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1264781234 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21103 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On 1/29/10 10:38 AM, Eric Sandeen wrote: > xfs_repair needs to be smarter about this; I at least wish it'd say > -why- the candidate was not valid. > > Can you include the whole repair output? Then maybe we can direct > you to some xfs_db jujitsu to examine the fs. > > Trying newer xfsprogs would not be a -bad- idea... > > -Eric The output is as follows: # xfs_repair /dev/sda Phase 1 - find and verify superblock... bad primary superblock - bad magic number !!! attempting to find secondary superblock... ...................... found candidate secondary superblock... unable to verify superblock, continuing... ...................... found candidate secondary superblock... unable to verify superblock, continuing... ...................... [The previous one repeats hundreds of times over many hours] ...................... Sorry, could not find valid secondary superblock Exiting now. I am trying right now xfsprogs 3.1.0 from Debian testing, will see what it gives... Thanks! NS From sandeen@sandeen.net Fri Jan 29 11:11:30 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0THBUMH131992 for ; Fri, 29 Jan 2010 11:11:30 -0600 X-ASG-Debug-ID: 1264785155-36a0037a0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5A7D61C8E4C7 for ; Fri, 29 Jan 2010 09:12:35 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id TAOaBtuv3hwdRzaU for ; Fri, 29 Jan 2010 09:12:35 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 71E9C9E726E; Fri, 29 Jan 2010 11:12:35 -0600 (CST) Message-ID: <4B631704.8080902@sandeen.net> Date: Fri, 29 Jan 2010 11:12:36 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Nicolas Stransky CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Subject: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" References: <4B63010D.1080608@sandeen.net> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264785156 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21105 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Nicolas Stransky wrote: > On 1/29/10 10:38 AM, Eric Sandeen wrote: >> xfs_repair needs to be smarter about this; I at least wish it'd say >> -why- the candidate was not valid. >> >> Can you include the whole repair output? Then maybe we can direct >> you to some xfs_db jujitsu to examine the fs. >> >> Trying newer xfsprogs would not be a -bad- idea... >> >> -Eric > > The output is as follows: > > # xfs_repair /dev/sda > Phase 1 - find and verify superblock... > bad primary superblock - bad magic number !!! xfs_db /dev/sda xfs_db> sb 0 xfs_db> p might be interesting to see what's there. -Eric > attempting to find secondary superblock... > ...................... > found candidate secondary superblock... > unable to verify superblock, continuing... > ...................... > found candidate secondary superblock... > unable to verify superblock, continuing... > ...................... > [The previous one repeats hundreds of times over many hours] > ...................... > Sorry, could not find valid secondary superblock > Exiting now. > > > I am trying right now xfsprogs 3.1.0 from Debian testing, will see what > it gives... > > Thanks! > NS > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sgi-linux-xfs@lo.gmane.org Fri Jan 29 11:41:14 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0THfD5o133619 for ; Fri, 29 Jan 2010 11:41:13 -0600 X-ASG-Debug-ID: 1264786937-3cb602fa0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 360541363570 for ; Fri, 29 Jan 2010 09:42:18 -0800 (PST) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id 9ruP1aw1evNyX07n for ; Fri, 29 Jan 2010 09:42:18 -0800 (PST) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1NaurI-0000lh-SH for linux-xfs@oss.sgi.com; Fri, 29 Jan 2010 18:42:16 +0100 Received: from vm15c-113.broadinstitute.org ([69.173.114.122]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 29 Jan 2010 18:42:16 +0100 Received: from nico by vm15c-113.broadinstitute.org with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 29 Jan 2010 18:42:16 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: Nicolas Stransky X-ASG-Orig-Subj: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Subject: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Date: Fri, 29 Jan 2010 12:41:53 -0500 Lines: 134 Message-ID: References: <4B63010D.1080608@sandeen.net> <4B631704.8080902@sandeen.net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: vm15c-113.broadinstitute.org User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.7) Gecko/20100128 Shredder/3.0.2pre In-Reply-To: <4B631704.8080902@sandeen.net> Sender: news X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1264786939 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21108 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean OK here is a bunch of new stuff: # xfs_repair /dev/sda1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... ERROR: The filesystem has valuable metadata changes in a log which needs to be replayed. Mount the filesystem to replay the log, and unmount it before re-running xfs_repair. If you are unable to mount the filesystem, then use the -L option to destroy the log and attempt a repair. Note that destroying the log may cause corruption -- please attempt a mount of the filesystem before doing this. # mount/ dev/sda1 mount: Structure needs cleaning Is the use of -L the only way to go? I wonder, since it will cause data loss... Also here is the output of xfs_db: # xfs_db /dev/sda1 xfs_db> sb 0 xfs_db> p magicnum = 0x58465342 blocksize = 4096 dblocks = 366197650 rblocks = 0 rextents = 0 uuid = dab73302-1744-4fc0-89db-5c6670a02aa0 logstart = 134217732 rootino = 128 rbmino = 129 rsumino = 130 rextsize = 16 agblocks = 6866155 agcount = 54 rbmblocks = 0 logblocks = 32768 versionnum = 0x3484 sectsize = 512 inodesize = 256 inopblock = 16 fname = "\000\000\000\000\000\000\000\000\000\000\000\000" blocklog = 12 sectlog = 9 inodelog = 8 inopblog = 4 agblklog = 23 rextslog = 0 inprogress = 0 imax_pct = 25 icount = 4115008 ifree = 954636 fdblocks = 85242778 frextents = 0 uquotino = 0 gquotino = 0 qflags = 0 flags = 0 shared_vn = 0 inoalignmt = 2 unit = 0 width = 0 dirblklog = 0 logsectlog = 0 logsectsize = 0 logsunit = 1 features2 = 0 bad_features2 = 0 Thanks! On 1/29/10 12:12 PM, Eric Sandeen wrote: > Nicolas Stransky wrote: >> On 1/29/10 10:38 AM, Eric Sandeen wrote: >>> xfs_repair needs to be smarter about this; I at least wish it'd say >>> -why- the candidate was not valid. >>> >>> Can you include the whole repair output? Then maybe we can direct >>> you to some xfs_db jujitsu to examine the fs. >>> >>> Trying newer xfsprogs would not be a -bad- idea... >>> >>> -Eric >> >> The output is as follows: >> >> # xfs_repair /dev/sda >> Phase 1 - find and verify superblock... >> bad primary superblock - bad magic number !!! > > xfs_db /dev/sda > xfs_db> sb 0 > xfs_db> p > > might be interesting to see what's there. > > -Eric > >> attempting to find secondary superblock... >> ...................... >> found candidate secondary superblock... >> unable to verify superblock, continuing... >> ...................... >> found candidate secondary superblock... >> unable to verify superblock, continuing... >> ...................... >> [The previous one repeats hundreds of times over many hours] >> ...................... >> Sorry, could not find valid secondary superblock >> Exiting now. >> >> >> I am trying right now xfsprogs 3.1.0 from Debian testing, will see what >> it gives... >> >> Thanks! >> NS >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs >> > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Fri Jan 29 12:14:56 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0TIEuha135503 for ; Fri, 29 Jan 2010 12:14:56 -0600 X-ASG-Debug-ID: 1264788961-5f8200700000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 62E8D19C009 for ; Fri, 29 Jan 2010 10:16:01 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id w5FBOV4PEkoCBxDY for ; Fri, 29 Jan 2010 10:16:01 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 683149E7271; Fri, 29 Jan 2010 12:16:01 -0600 (CST) Message-ID: <4B6325E2.2040703@sandeen.net> Date: Fri, 29 Jan 2010 12:16:02 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Nicolas Stransky CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Subject: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" References: <4B63010D.1080608@sandeen.net> <4B631704.8080902@sandeen.net> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264788962 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21109 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Nicolas Stransky wrote: > OK here is a bunch of new stuff: > > # xfs_repair /dev/sda1 > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - zero log... > ERROR: The filesystem has valuable metadata changes in a log which needs > to be replayed. Mount the filesystem to replay the log, and unmount it > before re-running xfs_repair. If you are unable to mount the > filesystem, then use the -L option to destroy the log and attempt a repair. > Note that destroying the log may cause corruption -- please attempt a > mount of the filesystem before doing this. > > # mount/ dev/sda1 > mount: Structure needs cleaning dmesg at this point would be good > > Is the use of -L the only way to go? I wonder, since it will cause data > loss... if you can't mount it, yeah > > Also here is the output of xfs_db: > > # xfs_db /dev/sda1 > xfs_db> sb 0 > xfs_db> p > magicnum = 0x58465342 ok, odd; you got: >> # xfs_repair /dev/sda >> Phase 1 - find and verify superblock... >> bad primary superblock - bad magic number !!! but this magic number is fine ... -Eric From sgi-linux-xfs@lo.gmane.org Fri Jan 29 13:57:25 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0TJvLvJ150425 for ; Fri, 29 Jan 2010 13:57:24 -0600 X-ASG-Debug-ID: 1264795105-2cae02b20000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lo.gmane.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2E66B136404B for ; Fri, 29 Jan 2010 11:58:25 -0800 (PST) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by cuda.sgi.com with ESMTP id IGKeswRBYjWYLIOr for ; Fri, 29 Jan 2010 11:58:25 -0800 (PST) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Nawz1-0005eu-Il for linux-xfs@oss.sgi.com; Fri, 29 Jan 2010 20:58:23 +0100 Received: from vm15c-113.broadinstitute.org ([69.173.114.122]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 29 Jan 2010 20:58:23 +0100 Received: from nico by vm15c-113.broadinstitute.org with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 29 Jan 2010 20:58:23 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: Nicolas Stransky X-ASG-Orig-Subj: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Subject: Re: Filesystem corrupted: "Sorry, could not find valid secondary superblock" Date: Fri, 29 Jan 2010 14:58:02 -0500 Lines: 81 Message-ID: References: <4B63010D.1080608@sandeen.net> <4B631704.8080902@sandeen.net> <4B6325E2.2040703@sandeen.net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: vm15c-113.broadinstitute.org User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.7) Gecko/20100128 Shredder/3.0.2pre In-Reply-To: <4B6325E2.2040703@sandeen.net> Sender: news X-Barracuda-Connect: lo.gmane.org[80.91.229.12] X-Barracuda-Start-Time: 1264795107 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21116 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Hi Eric, Thanks so much for your help, On 1/29/10 1:16 PM, Eric Sandeen wrote: >> # mount/ dev/sda1 mount: Structure needs cleaning > > dmesg at this point would be good This particular command does not produce any output in dmesg, but previous commands did, especially when I mounted the filesystem with no-recovery. [205411.967412] XFS: log mount/recovery failed: error 117 [205411.972696] XFS: log mount failed [205469.205586] Mounting filesystem "sda1" in no-recovery mode. Filesystem will be inconsistent. [205483.946417] XFS mounting filesystem sda1 [205484.136159] Starting XFS recovery on filesystem: sda1 (logdev: internal) [205484.488176] Filesystem "sda1": xfs_inode_recover: Bad inode magic number, dino ptr = 0xffff81004d109f00, dino bp = 0xffff81002e85be80, ino = 2954558655 [205484.493476] Filesystem "sda1": XFS internal error xlog_recover_do_inode_trans(1) at line 2326 of file fs/xfs/xfs_log_recover.c. Caller 0xffffffffa018553a [205484.498909] Pid: 27800, comm: mount Not tainted 2.6.26-2-amd64 #1 [205484.506907] [205484.506908] Call Trace: [205484.516417] [] :xfs:xlog_recover_do_trans+0x64/0xfd [205484.523162] [] :xfs:xlog_recover_do_inode_trans+0x23c/0x766 [205484.528729] [] :xfs:xfs_buf_iostart+0x29/0x86 [205484.534304] [] :xfs:xlog_recover_do_trans+0x64/0xfd [205484.539907] [] :xfs:xlog_recover_commit_trans+0x32/0x4b [205484.545489] [] :xfs:xlog_recover_process_data+0x14d/0x1c9 [205484.551117] [] :xfs:xlog_do_recovery_pass+0x248/0x661 [205484.556736] [] :xfs:xlog_do_log_recovery+0x52/0x75 [205484.564000] [] :xfs:xlog_do_recover+0xc/0xf3 [205484.568026] [] :xfs:xlog_recover+0x7a/0x84 [205484.573631] [] :xfs:xfs_log_mount+0xb1/0x105 [205484.579270] [] :xfs:xfs_mountfs+0x25a/0x5ac [205484.584866] [] :xfs:kmem_alloc+0x60/0xc4 [205484.590483] [] :xfs:kmem_zalloc+0x9/0x21 [205484.596066] [] :xfs:xfs_mount+0x29b/0x347 [205484.601625] [] :xfs:xfs_fs_fill_super+0x0/0x1ee [205484.607231] [] :xfs:xfs_fs_fill_super+0xb5/0x1ee [205484.612727] [] get_sb_bdev+0xf8/0x145 [205484.618174] [] vfs_kern_mount+0x93/0x11b [205484.623745] [] do_kern_mount+0x43/0xe3 [205484.629183] [] do_new_mount+0x5b/0x95 [205484.634627] [] do_mount+0x1bd/0x1e7 [205484.639990] [] __alloc_pages_internal+0xd6/0x3bf [205484.645219] [] sys_mount+0x8a/0xce [205484.650275] [] system_call_after_swapgs+0x8a/0x8f >> Is the use of -L the only way to go? I wonder, since it will cause >> data loss... > > if you can't mount it, yeah I'm going ahead and doing that. There is an awful lot of output but at least it's doing something. >> Also here is the output of xfs_db: >> >> # xfs_db /dev/sda1 xfs_db> sb 0 xfs_db> p magicnum = 0x58465342 > > ok, odd; you got: > >>> # xfs_repair /dev/sda Phase 1 - find and verify superblock... bad >>> primary superblock - bad magic number !!! > > but this magic number is fine ... Yes, I figured that I had used /dev/sda instead of /dev/sda1, my bad :( So now the magic number is ok... -- Nico From sandeen@sandeen.net Fri Jan 29 14:04:40 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=1.0 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_43,J_CHICKENPOX_46,J_CHICKENPOX_48,J_CHICKENPOX_63, J_CHICKENPOX_64,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0TK4eAO150789 for ; Fri, 29 Jan 2010 14:04:40 -0600 X-ASG-Debug-ID: 1264795545-2407027d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 690FA19C4EB for ; Fri, 29 Jan 2010 12:05:45 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id eQdQtV3Zy3cthJQz for ; Fri, 29 Jan 2010 12:05:45 -0800 (PST) Received: from Liberator.local (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 6D71A9E7268; Fri, 29 Jan 2010 14:05:45 -0600 (CST) Message-ID: <4B633F9A.8000404@sandeen.net> Date: Fri, 29 Jan 2010 14:05:46 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: ext4 development , xfs-oss CC: Giel de Nijs X-ASG-Orig-Subj: [PATCH] xfstests 224: test aio hole-fill at 4g Subject: [PATCH] xfstests 224: test aio hole-fill at 4g Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264795546 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21117 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Testcase from Giel de Nijs on linux-ext4 list, ""Possible ext4 data corruption with large files and async I/O," on 29 Jan 2010 ext4 put byte offsets in a block offset u32 container in the endio struct, so 4g wrapped to 0 leading to data corruption when the unwritten extent did not get converted. Signed-off-by: Eric Sandeen --- diff --git a/224 b/224 new file mode 100755 index 0000000..47e614c --- /dev/null +++ b/224 @@ -0,0 +1,68 @@ +#! /bin/bash +# FS QA Test No. 224 +# +# Test aio hole-filling past 2^32 bytes +# +# Testcase from Giel de Nijs +# on linux-ext4 list, ""Possible ext4 data corruption +# with large files and async I/O," on 29 Jan 2010 +# +#----------------------------------------------------------------------- +# Copyright (c) 2010 Eric Sandeen. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# +# creator +owner=sandeen@sandeen.net + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs generic +_supported_os Linux + +[ ! -x $here/src/aio-write ] && _notrun "aio-write not built" + +TESTFILE=$TEST_DIR/$seq-aio-write-testfile + +rm -f $TESTFILE +$here/src/aio-write -v -s 0xab -o 6g -l 512k $TESTFILE +$here/src/aio-write -v -s 0xcd -o 4g -l 512k $TESTFILE + +# Bug in ext4 caused the 4g offset to wrap and io +# completion happened at 0, leaving extent unwritten, +# and 0s returned + +$XFS_IO_PROG -F -c "pread -v 4g 512k" -c "pread -v 6g 512k" $TESTFILE | \ + _filter_xfs_io_unique + +status=0 ; exit diff --git a/224.out b/224.out new file mode 100644 index 0000000..4bb51d5 --- /dev/null +++ b/224.out @@ -0,0 +1,19 @@ +QA output created by 224 +opening file /mnt/test/224-aio-write-testfile +submitting write of 524288 bytes at offset 6442450944 +waiting for write to be finished +got 1 events +written 524288 bytes +opening file /mnt/test/224-aio-write-testfile +submitting write of 524288 bytes at offset 4294967296 +waiting for write to be finished +got 1 events +written 524288 bytes +100000000: cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd cd ................ +* +read 524288/524288 bytes at offset 4294967296 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +180000000: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ................ +* +read 524288/524288 bytes at offset 6442450944 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) diff --git a/group b/group index c66d965..46acc2b 100644 --- a/group +++ b/group @@ -336,4 +336,5 @@ deprecated 220 auto quota quick 221 auto metadata quick 222 auto fsr ioctl quick +224 auto aio quick 223 auto quick diff --git a/src/Makefile b/src/Makefile index 619a752..2ac7041 100644 --- a/src/Makefile +++ b/src/Makefile @@ -42,6 +42,8 @@ LLDLIBS += $(LIBGDBM) endif ifeq ($(HAVE_AIO), true) +LINUX_TARGETS += aio-write +LLDLIBS += -laio SUBDIRS += aio-dio-regress endif diff --git a/src/aio-write.c b/src/aio-write.c new file mode 100644 index 0000000..59fbb24 --- /dev/null +++ b/src/aio-write.c @@ -0,0 +1,174 @@ +/* + * Author: Giel de Nijs, VectorWise B.V. + * + * perform an AIO write to a file at a given length & offset + * Compile with -laio + * + * Copyright (c) 2010 Giel de Nijs, VectorWise B.V. + * Modifications Copyright (c) Eric Sandeen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + + */ + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif +#define _LARGEFILE64_SOURCE +#define _FILE_OFFSET_BITS 64 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void usage(void) +{ + fprintf(stderr, "usage: aio_write [-v] [-s seed]" + " -o offset -l length filename\n"); + exit(1); +} + +/* + * Scale value by kilo, mega, or giga. + */ +loff_t scale_by_kmg(long long value, char scale) +{ +switch (scale) { + case 'g': + case 'G': + value *= 1024; + /* fallthrough */ + case 'm': + case 'M': + value *= 1024; + /* fallthrough */ + case 'k': + case 'K': + value *= 1024; + break; + case '\0': + break; + default: + usage(); + break; + } + return value; +} + +int main(int argc, char ** argv) +{ + char filename[PATH_MAX]; + loff_t offset = 0; + size_t length = 0; + int seed = 0xFF; + int queue_depth = 8; + int err; + char *buf; + io_context_t io_ctx; + struct iocb iocb; + struct iocb *iocblist[1]; + struct io_event events[1]; + int fd; + int c; + int verbose = 0; + extern char *optarg; + extern int optind, optopt, opterr; + + if (argc < 4) + usage(); + + while ((c = getopt(argc, argv, "s:o:l:v")) != -1) { + char *endp; + switch (c) { + case 's': + seed = (int)strtol(optarg, &endp, 0); + break; + case 'o': + offset = strtol(optarg, &endp, 0); + offset = scale_by_kmg((long long)offset, *endp); + break; + case 'l': + length = strtol(optarg, &endp, 0); + length = scale_by_kmg((long long)length, *endp); + break; + case 'v': + verbose++; + break; + case '?': + usage(); + break; + } + } + + strncpy(filename, argv[argc-1], PATH_MAX); + + /* allocate aligned memory (for direct i/o) */ + err = posix_memalign((void **)&buf, getpagesize(), length); + if (err) { + printf("error allocating memory: %s\n", strerror(err)); + return(err); + } + memset(buf, seed, length); + + /* initialize async i/o */ + err = io_queue_init(queue_depth, &io_ctx); + if (err < 0) { + printf("error initializing I/O queue: %s\n", strerror(-err)); + return(-err); + } + + /* create file */ + if (verbose) + printf("opening file %s\n", filename); + fd = open(filename, O_DIRECT|O_RDWR|O_LARGEFILE|O_CREAT, 0666); + if (fd < 0) { + perror("error opening file"); + return(errno); + } + + /* write buf at offset */ + io_prep_pwrite(&iocb, fd, buf, length, offset); + iocblist[0] = &iocb; + if (verbose) + printf("submitting write of %zd bytes at offset %zd\n", length, offset); + err = io_submit(io_ctx, 1, iocblist); + if (err < 0) { + printf("error submitting I/O requests: %s\n", strerror(-err)); + return(-err); + } + + if (verbose) + printf("waiting for write to be finished\n"); + err = io_getevents(io_ctx, 1, 1, events, NULL); + if (err < 0) { + printf("error getting I/O events: %s\n", strerror(-err)); + return(-err); + } + if (verbose) + printf("got %d events\n", err); + err = events[0].res; + if (err < 0) { + printf("error writing buffer: %s\n", strerror(-err)); + return(-err); + } + if (verbose) + printf("written %ld bytes\n", events[0].res); + + close(fd); + io_destroy(io_ctx); + + free(buf); + return 0; +} + From aelder@sgi.com Fri Jan 29 16:32:21 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0TMWLUa159603 for ; Fri, 29 Jan 2010 16:32:21 -0600 Received: from cf--amer001e--3.americas.sgi.com (cf--amer001e--3.americas.sgi.com [137.38.100.5]) by relay3.corp.sgi.com (Postfix) with ESMTP id E9219AC02F for ; Fri, 29 Jan 2010 14:33:24 -0800 (PST) Received: from [128.162.232.155] ([128.162.232.155]) by cf--amer001e--3.americas.sgi.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 29 Jan 2010 16:33:24 -0600 Subject: [ANNOUNCE] xfsprogs v3.1.1 From: Alex Elder Reply-To: aelder@sgi.com To: xfs@oss.sgi.com Content-Type: text/plain; charset="UTF-8" Date: Fri, 29 Jan 2010 16:33:23 -0600 Message-ID: <1264804403.2872.26.camel@doink1> Mime-Version: 1.0 X-Mailer: Evolution 2.28.1 Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 29 Jan 2010 22:33:24.0470 (UTC) FILETIME=[11A1C960:01CAA133] X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Version 3.1.1 of xfsprogs has been released. A gzipped-tar archive of the source code is available here: ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs-3.1.1.tar.gz The source code can be accessed via git using this URL: git://oss.sgi.com/xfs/cmds/xfsprogs.git Below is a summary (from the doc/CHANGES file) of changes since release 3.0.3 (the last release for which an announcement was posted, regrettably): xfsprogs-3.1.1 (29 January 2010) - Fix various blkid topology support problems in mkfs.xfs. - Fix various build warnings. - Add automatic build dependency calculations. - Cleaner build system output. - Add missing aclocal m4 file to the package generation. - Arrange for release tags to be digitally signed. xfsprogs-3.1.0 (13 January 2010) - Reduce memory usage in xfs_repair by using better data structures. - Add additional checks in xfs_repair to detect freespace btree corruption instead of only rebuilding the btrees. Useful for the no-modify mode. - Fix libhandle to use the right path to issue by-handle ioctls for symbolic links and special files. - Use lazy superblock counters by default. At least kernel 2.6.22 is needed for this feature. - Use physical device sector size if available in mkfs.xfs, so 4K sector devices are handed more gracefully. - Add a German translation, thanks to Chris Leick. - Enable the madvise and mincor commands in xfs_io. - Fix unsafe temporary file creation in xfs_fsr. - Add support for discarding unused space on SSDs or thin provisioned arrays in mkfs.xfs. - Allow linking against libblkid for topology information. - Add symbol versioning for libhandle. - Remove the included RPM and binary tarball built infrastructure. - Various build system improvements. - Small fixes to xfs_db and xfs_io. xfsprogs-3.0.4 (17 September 2009) - Fix a memory leak in xfsprogs. - Increase hash chain length in xfsprogs when running out of memory. - Fix dmsetup invocation in libdisk to avoid warnings during mkfs on multipath devices. - Fix the -V option to various installed tools. - Small internal fixes to please the clang semantical analysis tool. - Debian packaging updates. - Rework Makepkgs and Makefiles to improve deb generation. From pccase1@21cn.com Sat Jan 30 00:42:04 2010 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0U6g3pb188609 for ; Sat, 30 Jan 2010 00:42:04 -0600 X-ASG-Debug-ID: 1264833737-38d301480001-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from as-490252cbfe8b (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ECFBF1C91832 for ; Fri, 29 Jan 2010 22:42:18 -0800 (PST) Received: from as-490252cbfe8b ([61.145.73.203]) by cuda.sgi.com with ESMTP id QQWK9uSV82RsI4Fj for ; Fri, 29 Jan 2010 22:42:18 -0800 (PST) From: pccase1@21cn.com X-ASG-Orig-Subj: Do you need to purchase pc cases? Subject: Do you need to purchase pc cases? To: xfs@oss.sgi.com Content-Type: multipart/mixed; boundary="=_NextPart_000_0018_01C1A1B3.E2C7FE20" MIME-Version: 1.0 Date: Sat, 30 Jan 2010 14:42:24 +0800 X-Priority: 3 X-Mailer: CSM2.8 X-Barracuda-Connect: UNKNOWN[61.145.73.203] X-Barracuda-Start-Time: 1264833786 Message-Id: <20100130064218.ECFBF1C91832@cuda.sgi.com> X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multi-part message in MIME format --=_NextPart_000_0018_01C1A1B3.E2C7FE20 Content-Type: text/plain Content-Transfer-Encoding: 7bit Do you need to purchase pc cases? hello, How are you? We are pc case factory in China since year 1992. There are about 400 different models in our factory now. Specially for handle case and gaming case and rack mounted chassis with very good price; Do you have customers who need? If you are interested in pc cases, could you please tell me your e-mail address by message, Then I can send you the pricelist for your reference . Best wishes, Mr. Steven Huang Company: FOSHAN ZHONGCHANG COMPUTER&ELECTRONIC CO.,LTD Website: http://www.zhongchang.biz Email: stephen-sales@zhongchang.biz Computercase1@gmail.com Msn: steven8097@hotmail.com yahoo messager: bluecomputercase@yahoo.com skype: zhongchangcase Tel: 0086-757-87218130 Mobil:0086-13420899963/13553305849 ADD: Zhongchang Tech Garden, Jingkou Economic Area,Foshan city, Guangdong province,China --=_NextPart_000_0018_01C1A1B3.E2C7FE20 Content-Type: application/octet-stream; name="zc03.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="zc03.jpg" /9j/4AAQSkZJRgABAQEAYABgAAD/7S5EUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAccAgAAAgAC ADhCSU0EJQAAAAAAEEYM8okmuFbasJwBobCnkHc4QklNA+0AAAAAABAAyAAAAAEAAgDIAAAAAQAC OEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAAB4OEJJTQQZAAAAAAAEAAAA HjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAA AAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEA WgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////// //////////8D6AAAAAD/////////////////////////////A+gAAAAA//////////////////// /////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQIAAAAAAAQAAAAAQAA AkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAAz8AAAAGAAAAAAAAAAAAAAjEAAAM 7AAAAAUAMAA1AC0AMAA2AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAzsAAAIxAAA AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAG Ym91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcA AAAAAAAAAEJ0b21sb25nAAAIxAAAAABSZ2h0bG9uZwAADOwAAAAGc2xpY2VzVmxMcwAAAAFPYmpj AAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAA AAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVu dW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQA AAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAACMQAAAAAUmdodGxv bmcAAAzsAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAAB AAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0 VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0 AAAACXZlcnRBbGlnbmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xv clR5cGVlbnVtAAAAEUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAA AAAAAAAKbGVmdE91dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0 T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAAAAAMAAAAAT/wAAAAAAAAOEJJTQQUAAAAAAAEAAACaDhC SU0EDAAAAAAncwAAAAEAAACgAAAAbQAAAeAAAMxgAAAnVwAYAAH/2P/gABBKRklGAAECAQBIAEgA AP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8V GBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4O DhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgA bQCgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUB AQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJx gTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePz RieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYF 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 rKryKy99LbWZNDdx82fz3p1/8KkdCl6zE6ji/stuZgjKfRksrspqrZVVZD3bdzfXdRV7tv0X/wCD /m96hj9Q6N0fptnU6w/HxnMZ+jbjta5z3udXV+jx2s3Pc9j9m93ps9T1PU9JV/q9gdS/YGJjWYtt N+PRjtc3I2tE1l3qV0gfpP5f6VAtwurX/Vm+rHxcgZFbKgK3FjS4Mdc25mM38/2P3bLvp7/TrQ0V Z2vQtnov1o6f1DHz72UPxRX6XrmyumXnILq6Nardr/o7fTu/f/nbFs9GbjVB+PjtDGVNY1oFbK4a 3c1tY9I/zdf0a2bP0S4T6i9E+srul9Yqz8Z+K+0YRxBcwM3jHLy5n9b0q6avUsXb9DblG7Ltur9O pzmjHd3c2CXl3ud7vUc5VcmXOOaxQH83OMuPS4+jb1rxEcBPUF//0t/6+9W6rh9S6biYV/oV5Ugn Y13va9jx7rGu3M2t22Uqv1frvUcbB+r9lLqmN6mB9pIqG11rzT6FrPd+j9/vfW136Ra311+rmT1s 4bsTIFN2K8uDX1GxpkObu9SuNm33b2f4T9H/AGw9U+rN+X0PpWHVf+n6eKQZpdte6mPeJHq436Wv 97Z6P02fzFlbrGnkf8bohF1vNzKaMSmvJFbbrsmvLsqqY1z3UvaxtjdwsYzZsey3/SpuvdY6l0n6 v05VNeLkZLsq6rJNtRayxlP2kb21VP8A0Vr68dn5ysXfV2y3pfT67bTbk4llxe1tT212tuc421Ob 7LafzP03/pT2E6j9XKOofVmvp7rLaH0PssrdVUT73er7LMZ302fpvoMtr/SfzduxOJj7cRpxAm9P 2oAPET0pqt+seVb9Wc3rDcLGpsY6vZW7e9jh6n2S71m7Md27+e9Lb/waou+tfUq/q/ZmMoxbsll9 NNjxU7Y+t1Tri92Pvb6dzPdu2v8ASV7p31Ufj/VrqHSrry23J2luyp2xjqms2Oa1/vyPWtp9e73/ AOE9JDxfqbWehZXTsu91Vz7WZDX1Me6HsZ6e4i3+frt/SO9P9F/o/wBGopXsGbDwXc63G9/kGVP1 luzemNysajG+1n0G2VFpfue/7RuoYJ+ntxq7av5CmPrDlfZX25GHRU13Un47Tt3b8cUWZGP1CsfQ fZa6nY138yp9N+rX2Xpz2X3uZfWarq301ua4W1i5u57Xfz/q1W+i9u7+b/wlaEz6pel0a3FZmWWW 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 L9aOn9Qx8+9lD8UV+l65srpl5yC6ujWq3a/6O307v3/52xbPRm41Qfj47QxlTWNaBWyuGt3NbWPS P83X9Gtmz9EuE+ovRPrK7pfWKs/GfivtGEcQXMDN4xy8uZ/W9Kumr1LF2/Q25Ruy7bq/Tqc5ox3d 3Ngl5d7ne71HOVXJlzjmsUB/NzjLj0uPo29a8RHAT1Bf/9Lf+vvVuq4fUum4mFf6FeVIJ2Nd72vY 8e6xrtzNrdtlKr9X671HGwfq/ZS6pjepgfaSKhtda80+haz3fo/f731td+kWt9dfq5k9bOG7EyBT divLg19RsaZDm7vUrjZt929n+E/R/wBsPVPqzfl9D6Vh1X/p+nikGaXbXupj3iR6uN+lr/e2ej9N n8xZW6xp5H/G6IRdbzcymjEpryRW267Jry7KqmNc91L2sbY3cLGM2bHst/0qbr3WOpdJ+r9OVTXi 5GS7KuqyTbUWssZT9pG9tVT/ANFa+vHZ+crF31dst6X0+u2025OJZcXtbU9tdrbnONtTm+y2n8z9 N/6U9hOo/VyjqH1Zr6e6y2h9D7LK3VVE+93q+yzGd9Nn6b6DLa/0n83bsTiY+3EacQJvT9qADxE9 KarfrHlW/VnN6w3CxqbGOr2Vu3vY4ep9ku9ZuzHdu/nvS2/8GqLvrX1Kv6v2ZjKMW7JZfTTY8VO2 PrdU64vdj72+ncz3btr/AEle6d9VH4/1a6h0q68ttydpbsqdsY6prNjmtf78j1rafXu9/wDhPSQ8 X6m1noWV07LvdVc+1mQ19THuh7GenuIt/n67f0jvT/Rf6P8ARqKV7Bmw8F3Otxvf5BlT9Zbs3pjc rGoxvtZ9BtlRaX7nv+0bqGCfp7cau2r+Qpj6w5X2V9uRh0VNd1J+O07d2/HFFmRj9QrH0H2Wup2N d/MqfTfq19l6c9l97mX1mq6t9NbmuFtYubue138/6tVvovbu/m/8JWhM+qXpdGtxWZlllrLQcNtt TgGVsrfjY+Dexjn+vsry7P1it1f6T0/9Cjj+UcXzdVuWvclwCofopPrR9YHdM+rlHUcGvHczKvDQ XVlwDLK7bvWZVua37Ruqb7LP0a1vqr1IdU6c7Nis+o+BbWw1+o0NY5ltlTnP9Oz3+5nqPWP1L6pP yvqqOjty3etjXerjOsre5ntaWNxr63B9jqPTtf7qvz/f/Is0vqX0S3oXSn9Osyftey4vY4VmrY1z ax6Wxzn/AEXMe7e1E0s1S/WnrNfSMJlpx35VtjtldTX+mz+U698/zX9i1ZXRPrQ7O6T1DJzqP6EG Pc2l9g3b9zXM973ua1ltT/z/AOa/wSs/XP6t39cGJZVluxvsnqfoxU+0P9T0/pek9m3Z6f8A01jd B+onU8PB6njZXUiRmuoALKbJaKXWWbNt23c231v0npqKfHrw9Bp/WbEPZEQJamR9W94wJf8AdRbu N1+zKxclzsatpZRZk1Uu3/o4b6mO3R+7ZZ6du/0/R97FDp/XM59OQ91TA4euSKWmqsGqqy2qre1/ q+5zN25tn/TsQOn/AFMzf+cL+oZOY5+BZTZW/GFdzHmt9Rxto3e2r3u9Wv3eotLpf1cZTfay+2y3 Gc+52x9D2l9dlbqHMe9vtZ/Ofm/zqOETGL9YbmSJajbi+aH+CjMcfF+rAoxH+DJrY31ouORdRcKw K+nuzXUMNrHkN9Otj67W3PZRTvsfR6Pp+r+j+071O/6xZOHi5GU9otrqxbLjjtc+r3VupqYxlu57 qv5929Rx/qlTZ1vKyr32Hp+T05/TPs5qsa8sLw99jrW+xn/B/vpujfVF1OJk9P6nm3Z+HdRbjUuf S+q5tNhqbtdd72/o/S/Q7/f/ACPSr9NNnGfu4pRPojL9ZD9+LWIleh07OcfrpmY/SH9RuqqyQMF9 78MBzGNeL8bDqDHl1r9jWZljrfz7v+DVH6rfXrq3UbclmRjYdldmKb2UsrNLWOF1OND7Gm97qG15 Vtv83bd/o1udA+p1uCy2nNzn5A9F1WLa2h1VrWepTaxz9/q1WenZj1/orWW+uz9HkV+hvrQ8H6hY f2zqF15+y15tDamV4VVlIYRbXkW3U12ttrobbdj49n2T9Ps/Sf4NWcpgZegUKTDi/S7/AINb6t/X W7PZnDKpxXemxhayuos+la3EDXy9/qVMdd7GfT/lrq+gdRxM52UKG1CzFeKbDUAJhoc7c0fQ9O71 qdjv9CuW+r/1Cu6cM0ZGb6hvqrrpLcawHZVa3K9S2tzvp2+nt9Fi3vql0vqnT7Ms9QuqtdeK3j0q TU4uAcx92U91dfq32NbWq0oTOWEgSIREuKN+mXF8np/S/wAZksUdH//T6b/Gc64dApbVY+sPymNs ZXZ6fqMdXc30bHy1np7iyx3rfof0f6RYvVuqZmV9Q8a52U8utzRRbbW8sFle21r27Zbspft/oz/o LsfrRh9NzunjF6kwPqc9r63e8PZY0+2yk0Mssa/a5/8A57+hYqdvRuiY31dPTbq6zgvsL2Psuted 5/Ttv9fb69du4Of9P/riXVWrm/UnIzLPquRl5duU6vMfX6tjnF2wNbFXvO7Y39x6v5OTlHp+O7If tudnen+jc4tALH+kxthFTvd7N+5v84mtv+rv1V6Fsca8LCtu21vLsi39LY11m93svya/bU/8/Z/w iJ03P6J1XBysXp767xTYx1+/1htc/Vj/ANPW2yt/6J3p+m79Ejp2RRaPSc3Js+rGVfl5f2tzc1jT Y15eWtD8Znp7vZt93v8A7azvq7kdQbg9cf1DOdltZlUNraLnXem31nNd6UuGyt38j/RLqK8Tp3Su k24jaMejHte4FrA/Y57xJdaxrXWMf7dv0/8A0mqOHX9XeldJ6hZU3FpxbNhyrZt2k2H0qvWD2ue3 9I7ax1X/AIGnRmBEiruvwX5JGczOhGzdRHDH/Fcj6lXdZaetfbuonJJy6q8YG51zawX3N/R7j7Kn +1n6P6foq90z9rV/VzKpyryMmy19dTjYLDJxG+z1a2UN/potf9D9Grf1fp6BRRljpAxX73sfe6t9 h/SS/wBH1RY2x1e17Hens2f8WxaFrMfBwXtsrr2ucXAk2PBsj3H02sdY137tTH/pPoKMj1iXbr+l /graef6LVkY31VcyXljMt/pt9Q27WbPax922n2ev/wAGxdZ08v2PY4yGO2tGpgD/AIxz3/8ASWRl 5nSOi9FuZkuZj4pt9Fz7fWeHPez1Tuir1fofueyr/S+r7Fe+r/VcDquLZkYF1eRULNrrKy/V+1ro fXe1r63bHVomzIy3vurpTm/XTLtqGJjsscyu4Wuta1xYHBnoj3vaWexvq+/8xUcHqeY7oPS94fU9 tVnq473NY57qvR9Jtrw79Hv9Tb+lf+k9T1nrR+uVn1aFFNXXX1VusbYMdz32MfB9Nl/o/Zmuss+l XvYsvGq+pj/qy1lF1R6fc+0VW25F3qEzW2/0/VYzKd9CvfRs2KLJh90SiN5x4NL+30qB4TfZJf1L qFnQunZFhtx73OsZaHgi0ODZa1wrd+js/rLR6n1C+jBwmvu9Fl73NuuLoDWtY57fWuP83v8Aa/8A 8DTYOD0evoTsHEDXYdjt+599pfL/AHNs9ZzWZTbtrXO2M+gpdaHQ2dGZ+1XU0YwcTjufe+sl2w1t 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 WVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAA ts9kZXNjAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDov L3d3dy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdC AAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdC AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRp dGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRp b24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4A FF8uABDPFAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAA AAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQA GQAeACMAKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCk AKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4B RQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAId AiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgD QwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSo BLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkG agZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghu CIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK 3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2O DakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQ uRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQn FEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cY GxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxS HHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAh HCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYn Jlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r 0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6 MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4 UDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8h P2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdG q0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5u TrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW 91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+z YAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxp Q2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMB c11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9 oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhp iM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aU IJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6 oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys 0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnC uju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HH v8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR 1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk /OWE5g3mlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q0 9ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///9sAQwAIBgYHBgUIBwcH CQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sA QwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIy/8AAEQgFQwfBAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYH CAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHw JDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6 g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk 5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIB AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEX GBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKT lJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX2 9/j5+v/aAAwDAQACEQMRAD8A9/ooooAKiZ8MRUtUJZMTOPeqirsicrIs+YfWjzPeqfm0ebV8hHtC 55nvR5nvVPzaPN96OQPaFzeag0o5tD/11k/9DaovNqTSTmyz6ySf+hmlKNo/15iUr1F6P9C9RRRW ZuFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBV1P /kFXf/XF/wCRpySYRfoKbqf/ACC7v/ri/wDI1VWX5R9K1irxMJS5any/zL3me9Hme9U/N96Tzfej kD2hd8z3o8z3qn5tHm0cg/aFzzOetTVmrJ8w+taIqJKxcJXFoooqSwooooAKKKKACsS7lxdyjPet uuV1GXbqM4z0b+lb4ePNJnLi58sUyz53vSed71nef70ef712eyOD2yNLzvek873rO8/3o8/3o9mH tjS873rR0Y505T6vJ/6Ga5zz/eui0M50qM+rP/6EawxEOWHzOjC1Oar8n+ho0VXu7+1sIhLeXEUE ZO3fK4UZ9MmqX/CTaF/0GLD/AMCE/wAa5VCUtUjvc4x0bNWis6317Sbu4SC21K0mmfO2OOZWY4GT gA+gNH9vaT9q+y/2lafaN/l+V5y7t2cbcZznPajkltYXPHe5o0VXu761sYfOu544Ishd8jhRk9sm m2eo2eoIz2V1DcIp2s0ThgD6HFKztfoVzK9r6lqiqV7q2n6aoN9eQWwbp5sgXP0zTLLXNL1Jillq FtcOBkrHKCfyzmnyyte2gueN+W+poUVBd3trYQma7uIoIgQC8jBVyenJplnqVlqCs1ndQ3CqcM0T hgD6HFKztfoPmV7X1LVFZ9xrulWlw1vc6jawzLgGOSZVYZGRwT71eLhRk9KGmtwUk9mOorHk8VaB DIY5NYslcHBHnKcfrWha31rewia1niniPR4nDD8xTcJJXaEpxk7Jliiop7mG2iaWeRIo15Z3YKB9 SazYvFOgzSiKPV7JpCcBROvP60KMpapBKcYuzdjXoqKa5ht4HnmkWOJBuZ2IAUepNV7PV9O1CRo7 O+t7h1XcyxShiB68Gkotq9huSTtcu0VRu9Z02wlEV5f21vIRuCSyqpI9eT7VbilSeJJYmDxuAysp yCD0IocWldoFJN2TH0VnXGvaTaTvBcajawyp95JJlVh36E1eilSaFJY2DxuoZWU5BB6EUNNatApJ 6Jj6Kzpde0mC4a3l1K0jnVgpjaZQwJ6DGferdxdQWlu09zKkMKfeeRgqr25Jo5XppuLmi767E1FV LPVLDUN/2K8gudmN/kyBtuemcUXmp2OnIHvbuC3U8AyyBc/TPWjld7W1Dmja99C3RWVb+JtEu5RF barZyyNwqLMuSfbmtQHNEouOjVgjKMvhdxaKKKRQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFNkkSKNpHYKiglmJwAPWsweJtCI/5DFh/4EJ/j VKMpbImU4x3Zq0VlHxNoQGTrFhj/AK+E/wAanu9a02wkWO8v7a3dl3BZZVUkeoyelHJK9rC9pC17 l6iokuYZLUXKSo0BXeJAw2lcZzn0qpa65pd9MIbTULW4lILBIplY49cA0rPsPmiupoUVBcXdvaQm a5mjhiHV5HCqPxNUIPFGhXMoih1ayeQ8BRMuT9OaajJq6QOcU7NmtRTWkVFLMcKBkk9qo2uuaVez CG01G1nlIJCRTKzYHsDSSb1Q3JLRs0KKqXmp2OnhDe3cNsHyFMsgXdjrjNS213BeQLPbSpNC/wB1 42BU9uDRZ2uHMr2vqTUVm3viDSdOl8q81G1gk/uSSgN+XWpLHWtN1MsLG+t7kr1EUgYj8BT5JWvb Qn2kL8t9S9RSFgBmsmXxToMEpik1eyVx1BmXj9aSi5bIcpxj8Tsa9FRQ3MVzCJYJEljb7rowIP0I qouu6U90LVdRtWuC/liITLu3ZxjGetCi3sgcordmhRVa8v7TT4hLeXMVvGzbQ0rhQT6ZPfg/lRaa haahGZLO4iuI1baXicMAeuMj6j86LO1x8yva+pZoqpe6pYacUF7eQW/mZ2ebIF3YxnGfqPzp1nf2 moRmWzuIp4wcF4nDDPpkfWjldr20DmV7X1LNFU73VtP05kW9vILcvkr5sgXdjrjNT29zDdwpNbyp LE4yrowIYexFFna4cyvYlorPg13Srq5Ftb6jayzkkCNJlLHHXgGrc9zDbRNLPIkUa/ed2CgfiaHF p2aEpJq6ZLRWMPFvh8vsGs2Oen+uX+da0ciSorowZWGQQcgj605RlHdWCM4y+F3INT/5Bd3/ANcX /kaxxN8o57Vsal/yC7v/AK4v/I1yon4HNdOHjzRZw4qfLNehp+d70ed71m+f70ef710eyOb2xo+d 70vne9Zvne9Hn+9Hsh+3NSOb96nP8Q/nW8OlchDN+/j5/jX+ddeK5MRHlaOzCT5kxaKKK5zsCiii gAooooAK4bWJtusXQ9H/AKCu5rzLxBdBPEF8uekg/kK78vhzVGvI8jOKypUot9/0ZN9o96Xz6xft i/3qPtqj+KvW9gz5369HubP2j3o+0e9Y321f71H21f71L2LD69HubP2j3rs/D5zo0B9d3/oRrzP7 avrXpXho7tBtT6qT+prhzCny016nrZPiFVrNJ9P1QzxH4ftvEmnLZXUssUayiTdFjOQCO4PrXlnj Dw1oHhqIQQXt5cai4BWJmXCL/ebC/kO9ei+NPFA8M6arRpvu7jckCkfKCMZZvYZHHevKNCOlajrU l94n1I+Xu3urI7NO3oSo4X/9Q4owEaqh7Rt8q6LqdGYyoyqezSXO+r6I6P4beF7qS/h1+fdFbw7v IUjmUlSpP+6ATz3Nc5e3Mdn8Rp7qYkQwauZXIGcKsuTx+FetWHjLw5e3UNjY3oaWQ7I41hdRwOgy MDgV5Ne20d58Rri1mBMU+rNG4BwSrS4P6Gt8PUnUqzlVTWn4GGJpU6VGnGi09d/M6fxz4y0XXfD3 2OwnkebzkfDRMvAznkipPh9fjS/BOuX5Xd9nlLhT3IjGB+dR+OPBmj6D4f8AtlhFKs3nImXlLDBz ng/SjwLYPqngHXrGPHmTSFUz/e2KR+uKzfsfqnuX5brf5XNF7dYz37c3K9jnfDujXXjjxBcNe3bj C+bPNjcx54UZ4HX6ACpfF/hV/CF5aXFndytFKSY5D8rxuuO4+uc8UvgXxDb+GNcuBqCyJDMnlSEI SYmU9x19QatfEPxVYa/JaQaezSQW+53lZSoZjjGAeeAD+ddLdb60oJe5b5bf5nIlQ+qOcn+8v89z a8Q6tJrfwogv5see0qLJgdWViCfbOM/jXHeEPEb+G9ZSdixtJsJcoO6/3seo6/mO9dXq+mzaX8IL e2uFKTGZJHQjBUsxOD74IrJ0Dwz/AMJD4FvHgUfb7W6Z4T/fGxcp+OOPf8azpOlGhNS+FyaNqyrS rwcfjUUyn43kSbx7cyxOrxv5DKynIYGNMEV0/wAVNcuIJLfRoJGjjlj86cqcbxkhVPtwSfXivNY2 d7qLezEqyr83UAEDH4dK9A+LOmyjUbPVFUmF4vs7kD7rAlhn6hj+VaSpxjVowlrZP8LGUKk50a84 6Xa/G4ml/D7S38N2+oatqjWc1zGrxkuqRpuGVB3feOOeoq54I0JtD1kS/wDCSaXKsymN7SCYOZfT uORj0PGR3quNe8N6/wCC7LS9Xvp7KW0WMMscZJYopUEHBGCDXNeFFtx8QLAWZke3Fy3lGRRvKhWw SB3rFqtOnUVRtb9NPkzdSoU6lN04p7a31+aL3jzU7rWfFraXG5MNvItvFFuO0yHGWI9cnHsBWzqH woaLSw1jeST36gbo5MLG/rj09ec9KwPGVrNonjuS82ZSSZbyE9m5BP8A48CK7PWfibpo0UtpMkjX 8gARHhI8v1LZ4OBnpmiTrRhSWH2/rcIKhKdV4ne/9WHJpmr6R8NtWstWlilKW0nklHLlU2/dJIHQ 9PauM+H+v6d4e1W7uNQkaOOSARqVQtk7ge1ddb6/qPiP4d63d31tFCiwOkbx5xJhfmOD0x06+tch 4A8P6f4i1S7t9QR3jigDrscrzuA7UqSSpVfbd9bfIqs261H2HbS4zx5rdhr+txXenyM8S24jJZCp 3BmPQ/WvW9GuY7Lwdp1zM22KGwjkc+gEYJryPx5oVjoGtw2lgjpE1uJCHcsclmHU/QV1Xi3VvsXw 20exRsS3ttCpH/TNUUt+u0fiaVenGrSpQp7Njw9WVKrWnU3S+VzgJo7zXX1bWWH+qInm9t7hQB9M /kter/DXVjqHhdbV2zNYt5RGf4OqH8sj/gNedaLJ4httEu7aw0Z7m0v1IeX7M77hgjhhxxz+NXfh zqbaT4s+xz5jS7Bt3VuMSD7uffOR+NbYun7SjKKt7uq/r7znwVX2VaEnf3tH6t/8MZfjjH/Ca6qO 3mj/ANBFdMnig638NNUsbuTOoWkceSx5kj8xQG+o6H8D3rH17/kqbggEHUIeDz/cpnjfw4/hrWWa 23LYXeTFtJwvrGfpwR7Y9Ku0JxpQlvZNfKxN6lOVWpHa7T+d9Tf+Ftylpp2v3UmTHCkcjY9AshP8 q5zSrS78eeK2F5cshdWlkbr5cYP3VB47gfrXQ/DK1+3aR4jtC237RGkWfTcsgz+tc/4T1VfCfitz qUbooR7acBclDkHOO/Kj8Kh6Vazh8dlb7i1Z0qEZ/Brf7zZ1rwFpUN0kWneILKIqSs8d9coGQ+2M H8CK9H8NB49Et4ZNTh1J4h5ZuYWyGx0BOTyBivJfGJ8NXNxPf6ZqNzc31zL5jJ5eI0B69QD/ADru /haMeERxgG5kI469K5MVGbw8Zzk3r1VjswcoRxMoQilp0d0dvRRRXlHshRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBDdwLdWc1u5IWVGQkdQCMV5 lrfgLw14f017y81K+Cj5UQMm6Ruyj5f/ANVejatqUGkaZcX1zu8qBNzbBkntge+a8M1PWpfFevpN ql2tnak4XKs6wJ1wABksfXufavRwEKsm3F2j1PLzKdGKSlFOT2uM8N+GbnxNqRggDRWqHM0x58tT 292//XXQ/FYbfEViB2swP/H2rqtJ8WeC9E06Oys7/ZFGOT5EmXPdidvJNcn8U5Un13T5ozuSSyVl PqCzEV206tSpik5RaSva6OCrRpUsHJRkm3a9mbll470CDwfDpr3EouEsRAVELEbtm3rj1rm/hfn/ AITFQev2WT/2WujsvAWhT+EIdSkhn+0tYickTNjdsz0+tc58Lj/xWKn/AKdZP5rUR9l7Gr7O/ncu Xtvb0fa28rEHiK+vPFnjU2CSkRfaPs1ujH5UAOC2PU4JP5VqeJvhzFougPqFteyzNAAZklQAMCQM jHTrnBzxWLfpL4V+IDTzRFlhu/tCgfxxsSePwJH1BrrfF/jzSNR8Mz2OnyyS3F0FU5jKiMZBOc+w xxnrWknVjKlGh8Gn9MzjGjKNV1/j1/pD/h1rdzf6DqWnXMjSfZI8xMxydjBht/Ajj615hY3k+n3k F5ayGOeFg6N6H/D2r0b4ZadLFpOr6lIpEc8flRE/xbQxYj2yQPwNc14B0221fW7iwu13QzWcgPqp yuCPcHmnTlCnOtK2itf7tSKkalWnQV9Xe336Gr481y38Q+H9Dv4PlJeVZY858twEyv8AL6gitaDW ZdD+EFncWx23EpaGJ/7paR8ke4AP44rzvWNNu9E1CfTLsndE2Rj7rZ6MPYj/ADxXeTaZLqXwasjA paS2Zp9oHJUO4bH4En8KmrTpwpU43vHm/O5dGrVnVqztaXL+KsY/g3wfD4lhvNR1K7mjtonKkqQG dsBixY54AI/OrUHhKCw1xbvTfFmlxQwuHhlkuFMnuCAQPUdeaTwL4m0zT9I1DR9Uma3iuSzJMFLD 5lCkcA4PGRxiuV12DRre8Eei3Nxc24T55Z1Ay3PTgHGMdRWiVadaUG2l000sRehChCaSb662dz0P 4pa5NBZ2Wm202EukaSZkP3kGABn0JJ/IVmeHfhtFq/h+K/uL2WGa4XfEsaAqgzxuzyc9e3Wn/EbT JjpOiaksZMUdssEvH3DgFc/+PD8vWtHwz4/0ew8LW1teySJc2sflmJYyfMA6bT06Y64rlj7SGFj9 X3vrY6peyni5fWdraXLHgPwz4g8PXspvHt1sZQd8IlLHcOjAAYHoeen0rgY7uGw+ID3dwxWGDU3d yBnAEhJ4713fgrxprPiHWHtLi2ga3VWkeZQVMY/hHoecDt3rhEtIdQ+ID2lwCYZ9TeNwDgkGQ557 VrQU/aVPbb26fMyruDpUvYbc2lzpfH3i/R/EGgwWunzyPMlyshDRMvyhWHU+5Fbnwn/5Fe7/AOv5 /wD0XHWF498H6R4e0KC70+OVZXuVjJeUsNpVj0P0FXPAmpro3w71bUGx+5unKj1YxxhR+JIrKpGE sHy0b2v1Nacqkcc5VrXS6GL4xnm8UePV0y1bIjYWsfoGzl2/A5/75q78K9Va11a70iX5ROnmID2k Xhhj3H/oNcx4dn1mDVW1PS7F765izubyWkCl88nHc8/rTWvb/R/FCapdWb2t0JvtDQmMpkEnIAPY 8iuudG9N4dWslp6nHCvaqsS73b17WOv+LvN3pPr5cv8ANaq/DXxQbC+GjXb/AOjXL/uCT9yQ9vo3 8/qan+K80c8mizRMGikhkZGHcHaQao634ZLeDNH8QWa4kjtYxchRzgD5XHuOh/A9qxpKEsLCnU+1 dfO7Oiq6kcZOrT+zZ+qsip4I/wCSi23/AF1n/wDQXqbx3qt3rvi1tKjdvIgmW3iiz8pkJwWI9cnH 0FVPh+xbx3p7McsTIST67GqTxfbT6B49luymVadbyEnow3ZI/MEVvJL63ruo6feznjJ/U9NnLX7k buq/DnSrDT1jGuRw6iRkfa5Ujjk9cDqB+ddJ4B086RbT2P8AbllqCcSJDbOG8n179Dx2HP1rmvFu reEfEttFfy6jdrdRQssdtHFg5PIDZXHX3qH4Rj/id6gQOBbAE46fNXHUVWeFbqSenRr8jtpSowxc Y0oqz6p/mj1PUv8AkF3f/XFv5GuC8/Heu91L/kGXX/XJv5V5Ubxc/erPL4c0ZEZzXVKcbvdGz59J 9o96xher/eo+2r/er0fYM8X69HubP2j3o+0e9Y321f71H21fWj2DD69Hubtvcf6VCM9ZF/mK9CFe TWd4rX1suesyD/x4V6yK8vMIcsonvZNWVWM2ntYWiiivOPbCiiigCl/alt6T/wDgNJ/8TR/alt6T /wDgNJ/8TVzAowKr3e34/wDAM7VO6+7/AIJT/tS29J//AAGk/wDia8717S9Qvdcu7m3srh4pHyre WRkYHY16hgUYFdGGxP1eTlFfecWOy9Y2ChUlZJ30X/Dnj39g6v8A9A+f/vmj+wdW/wCfC4/75r2H AowK7P7Wqfyo8z/VnD/zv8Dx7+wdX/6B8/8A3zR/YOr/APQPuP8AvmvYdo9KMCj+1qn8qD/VnD/z v8Dx7+wdW/6B8/8A3zXoWgXkdrottBMswkRSGAgdsHJ7gYrfIGKpaWP9EP8A11k/9DasMRjJYiFp LZ9DrwWVQwVW9OV7rr8vQyta0/Q/EAhGpW9zKIdxTEUy4zjPQD0FZX/CGeDv+gfd/lcV1N3fGG7h s4U825lBcKW2hVHViefUD3qn/bwtjfpqFu0LWYDFkJZZAem0kDntiueNecVaLaXqd8sNGb5pKLfp /wAEyrHwz4W02+hvbSyuknhbcjFZzg4x0I96U+HPDDar/aZs7r7WZ/tG/ZPjfu3ZxjHXtWrd6tda bDHc3tmq2zMFkaOXc0OemRjBGfQ/nSHW521ebT4bEu6RCWNvNGHBPBJxwPzPtR7ebd7v7wWGila0 fu/4I3VotJ1uy+yX8VxJDvD7RDKvI6cge9M0a00bQIJYNOguYo5X3sDDK2TgDuPQCltdavbprm1X TsX1u4V4zPiMAjIO7Hf0xUbeJXXQ59QNi3mW8phmi80YVsgdccjkdqjn93k1t2v/AMAv2T5ufS/e 3/BK+raF4a1qcz3ljMZz1ljhlRj9cDn8ai0zwz4W0q4W4t7Gd5k5V5oZX2n1AIxn3xV678Q3Ni8c 1xprpYOwXz/MG4Z7lMcD6n/Crtnqcl3qd9ZGBUa1CEOJSwfcMjsMfrVe3ko8t3b1IeGi5c9o39P+ CQasmla3ZGzv4riSAsGKiGVeR05AqPR7XRtBtpINOhuYo5H3sDFM2TgDuPYVT1PXbyXQ9UeGCOB7 WY28jeaW4JAyvA55/Ctb+0JYWgtWihFy6bwPPO1UGPmYlQep6Y/Gp5/d5dbdr/8AAL9k+bn0v3t/ wTEu/DHhW9vpL2axuPPkfzGZY5lBb1wBit66utPvbZ7e5hklhcYdHtZCGH021nTeJ2thfRyWivc2 iiQrHNlHQ4+YHHuOMVesdRvbu6QNp7R2jxB1nMgOTxxt6j2+lOVRytdvTzCNHlvy2V99P+Cc3J4K 8ISSF/sd4mf4UWcD+VbOlWWhaGjLp1k8BYYZxbSlm+rEZrRuL8rex2VugkuGQyMGbaqIOMk4PU8A VQfxC8EN4LiykFxbSpFsQkrIW+6QxHT144qpV5TVpNtepEMNGD5oqKfp/wAEfqkWj6zbfZ9RtZJ4 gcgNbSgqfUEDIP0rAj8E+EElDmzvHx/AyzFf5V0i6pNDq8en3kKIZYmljkikLA46gggUyDVrm5tb e8htY3tZ5FUETHeqlsbiMY+ozxShWlBWi2vmOeHU3eaTfp/wQlGlTaXJphglWzePyjEltIoC46DC 8VS0bSfD+gXEk+nWtzFJImxiY5myM57itCTVZH+0GzjgkEDFD5s2zew6heD06ZPerGk6lDq+nx3k AYK+QVY8qR1BqVUaTim7Pz/4BTpNtSdrry/4Ji6vovh3XbtbrULW6lmVAgYRzLgAk9APc1HfeH/D WpLbLd2t3IttCsEI2Tjag6DgfrXWYFGBVKtJWs3p5kvDpttpa76f8EyrKbT9PsorO2jnSCFQiL9n lOAP+A1izeG/C82pNqLWd0LppvPMipOPnznOAMdea6/AowKUaji24tq/mVKjzJKVnby/4Jydx4f8 NXWrNqktpdG8aUSlwk4G4YwcYx2FaWqx6TrVibO/gnlgLBseRKCCOhBAyK2sCjAodVtptvTbXYSo 2TStrvpv+JzujafoegCYabb3MQmKmTMUzZxnHUHHU1HrGj+Hddk82/spnmAx5qQSo+PQkDn8a6bA owKPavm57u/e4ew93k0t2t/wTibXwd4RtZRILC5lIOQJo5mX8sYP411EeoWcUaxxpMiKMKq2sgAH oBtq9gUYFE6rqfG2/mFOj7P4LL5f8Ep/2pbek/8A4DSf/E0f2pbek/8A4DSf/E1cwKMCo93t+P8A wDS1Tuvu/wCCU/7UtvSf/wABpP8A4mj+1Lb0n/8AAaT/AOJq5ijAo93t+P8AwAtU7r7v+CQW93Hc kiMPx13xsv8AMCrFJgZpal+RavbUKKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV DPcJbpuffjOPlRm/QA1NSYFAne2hT/tS29J//AaT/wCJo/tS29J//AaT/wCJq5gUYFV7vb8f+ARa p3X3f8Ep/wBqW3pP/wCA0n/xNH9qW3pP/wCA0n/xNXMCjAo93t+P/AC1Tuvu/wCCZOoSadqljLZX cdw9vKu11EEoyM56ge1c9/whng//AJ8Lv8riu3wKMCtIVpQVotr5mc6CqO80n6r/AIJw/wDwhfg4 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 uYRebDD5LP8A8tNqhTj1Oe1dHbLmJXaHy5CoDA4zx6kdalKKSDgZHQ+lAHBzSCbQvEyKrBzd+ZsK 8gb1zn6Yq3ealaxata6qUFzpr24t5JAm4IwOc8/X+ddjtAGABj0o2Lt27RjGMY4oA5LV9R0678P6 g1jHEIfJKecE2BnyMKuQCff8K6PTJo59NtnikV1MS8qc9hVoKFGAAAOmO1KBg5oA5jUbv+xPFC6h dK32G5gELSBchGByM/57+1LqniInThc2JZbQzJE935Z+UHOWUEc4xjOMZNdMyhgQQCD2NIUBGCBj GMY7UAcfJc2EPibTbi2kaSFoZR5pLP5jY7MfvfhUYW3tlt9S0C8KPPIgksA+4OSRldvYjP4D0rtN gwOBxSeWofftXdjGcc/nQBx9lfWGi3d5YavEiN57yxTPFuDqxz1xnv8A0rqNOZZLYSJbiCNySibd p29iR2J/wqyUU4yoOORkdKdQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAjDKketchomtQaJbNpOpl4bi3dgnyFvMBORjA5612FNKAkHAyOhx0oA5dJnsfFC6her5FvfW /lqznAjcHIVj2OB+ZNPvhHdeITfpKn2a0s3V5tw2l2zhc9zg5/EV0rIGGCAQeoNARQAAAAOgHagD krO5gHw4cGaMEW0ifeHDfNgfX2pusXMB+HsIE0ZJhhUAMOSNuRXYY5z3owAc96AOZkvLaPxrBM06 CKTTwqybvlPznHPTtUd/B/amq39xaDzI4dOkt96nIeRs/KD3x3+tXmtrp/FQvTasbX7L5BbevJ3E 5xnpW2qgAAAADgAdqAOIvNTtLnwEbaGUPMkCJIg6xkMB83pV2S+toPFVrcSyhIZtNCI5B+Zt54Hv 7V1Plrz8q8nJ470u0EgkDI6e1AHGaPqWnaVAdN1e3SK6gYhWaDcZVJ4xgZJ5qx9rgXxdppby7f8A 0aQeWSF25YlQR2JHb1rqyikg7QSOhI6UuO1AEF7C1zp9xApw0kTID7kEVzei+I7a006HTrxZY763 Ah8gRks5HA24/D/9VdZ2puwbt2Bu6Z70Acy2qB9elstUlNuiRIY4EJHnMwyeRy2CcAdDz1rL0yXS 5dJk0/UVCxvfSLknZ5Jxlee3TFd1sGQcDI4BxRsHPA560AcLdwX6R3Ftb3B1K0sXiuULfMRgnKE/ xcc49PyrasdY0jUXiSwtke5YglPIwYhnkscYGPrycV0CIqLtVQoHQAYFCoFJwAM9cDrQBW1L/kFX f/XF/wCRqzH/AKtfoKr6n/yCrv8A64v/ACNTx/6tfoKp/Cv67Ga/iP0X6j6KKKk0CiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKhtrdbdCiliCWbn1Jyf51NRQKyvcKKKKBhRRRQAUYoooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK 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 AxRiiigAooooAKKKKACiiigAooooAKKKKACjFFFABRRRQAUUUUAFGKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACjFFFABiiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//2Q== --=_NextPart_000_0018_01C1A1B3.E2C7FE20-- From BATV+902929eb2c97b5519b50+2351+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 30 04:18:56 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UAIs35199328 for ; Sat, 30 Jan 2010 04:18:56 -0600 X-ASG-Debug-ID: 1264846791-74db013b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7535019D91E for ; Sat, 30 Jan 2010 02:19:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id tq1JrBJL7VUGZEV0 for ; Sat, 30 Jan 2010 02:19:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NbAQh-0001UV-AG; Sat, 30 Jan 2010 10:19:51 +0000 Date: Sat, 30 Jan 2010 05:19:51 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests: routine to create scratch of certain size Subject: Re: [PATCH] xfstests: routine to create scratch of certain size Message-ID: <20100130101951.GA32695@infradead.org> References: <4B621D89.8070800@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B621D89.8070800@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264846792 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 28, 2010 at 05:28:09PM -0600, Eric Sandeen wrote: > This is needed for later enospc tests to be generic > > Signed-off-by: Eric Sandeen > --- > > diff --git a/common.rc b/common.rc > index 97513cc..cf2662a 100644 > --- a/common.rc > +++ b/common.rc > @@ -237,6 +237,27 @@ _scratch_mkfs_options() > echo $SCRATCH_OPTIONS $MKFS_OPTIONS $* $SCRATCH_DEV > } > > +# arg 1 is size in bytes, arg 2 is (optional) blocksize > +_scratch_mkfs_sized() > +{ > + fssz=$1 > + bsz=$2 > + [ -z "$bsz" ] && bsz=4096 > + let blocks=$fssz/$bsz > + > + case $FSTYP in > + xfs) > + _scratch_mkfs_xfs -d size=$fssz -b size=$bsz 2>&1 >>$here/$seq.full > + ;; > + ext2|ext3|ext4) > + /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS -b $bsz $SCRATCH_DEV $blocks 2>&1>>$here/$seq.full > + ;; > + *) > + _notrun "Filesystem $FSTYP not supported in _scratch_mkfs_sized" > + ;; > + esac > +} Looks good, the only questions is why you're using $MKFS_OPTIONS for extN, but not for xfs? From BATV+902929eb2c97b5519b50+2351+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 30 04:19:36 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UAJaJr199392 for ; Sat, 30 Jan 2010 04:19:36 -0600 X-ASG-Debug-ID: 1264846843-74e1013c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3D2DD19D998 for ; Sat, 30 Jan 2010 02:20:43 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id I4Sb2oF4o2MECDe6 for ; Sat, 30 Jan 2010 02:20:43 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NbARW-00020Z-UW; Sat, 30 Jan 2010 10:20:42 +0000 Date: Sat, 30 Jan 2010 05:20:42 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests: helper to detect fs free space Subject: Re: [PATCH] xfstests: helper to detect fs free space Message-ID: <20100130102042.GB32695@infradead.org> References: <4B626748.3070601@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B626748.3070601@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264846843 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 28, 2010 at 10:42:48PM -0600, Eric Sandeen wrote: > Make a common helper to skip a test if there's not enough > free space on the target fs. > > Signed-off-by: Eric Sandeen Looks good, Reviewed-by: Christoph Hellwig From BATV+902929eb2c97b5519b50+2351+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 30 04:25:33 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UAPXVs200059 for ; Sat, 30 Jan 2010 04:25:33 -0600 X-ASG-Debug-ID: 1264847199-4b76017b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1C28F1C91AF6 for ; Sat, 30 Jan 2010 02:26:39 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 9jBplHsQR6ELt4WC for ; Sat, 30 Jan 2010 02:26:39 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NbAXH-0002gE-5r; Sat, 30 Jan 2010 10:26:39 +0000 Date: Sat, 30 Jan 2010 05:26:39 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests: make 053 and 077 generic Subject: Re: [PATCH] xfstests: make 053 and 077 generic Message-ID: <20100130102639.GC32695@infradead.org> References: <4B621E11.4050609@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B621E11.4050609@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264847200 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 28, 2010 at 05:30:25PM -0600, Eric Sandeen wrote: > 053 and 077 can be generic w/ a little tweaking. > > Also change 077's filler to something more likely > to be on a random system under test, and add it > to the enospc group. > > Signed-off-by: Eric Sandeen > --- > > diff --git a/053 b/053 > index 98644a7..5542885 100755 > --- a/053 > +++ b/053 > @@ -38,18 +38,19 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 > . ./common.attr > > # real QA test starts here > -_supported_fs xfs > +_supported_fs generic > _supported_os Linux > > [ ! -x /bin/chacl -a ! -x /usr/bin/chacl ] && _notrun "chacl command not found" > > _require_scratch > +_acl_requirements _acl_requirements includes the chacl check, so it can be removed. Btw, any reason _acl_requirements isn't called _require_acl? > diff --git a/077 b/077 > index cdee8da..d23305f 100755 > --- a/077 > +++ b/077 > @@ -31,7 +31,8 @@ here=`pwd` > tmp=/tmp/$$ > status=1 > #filler=$here/../../linux > -filler=/home/fsgqa/isms/2.4.x-xfs > +#filler=/home/fsgqa/isms/2.4.x-xfs > +filler=/lib/modules/`uname -r`/ Oooops. Maybe just use /lib/modules/ to get as much as possible. And no need to let the other bits comment out there. Maybe we need to generate the data instead to really be safe - at least for my tests under qemu I don't have any modules installed. But that should be left for another patch. Anyway, patch looks good enough to go in for now, so Reviewed-by: Christoph Hellwig From BATV+902929eb2c97b5519b50+2351+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 30 04:29:38 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UATbHb200551 for ; Sat, 30 Jan 2010 04:29:37 -0600 X-ASG-Debug-ID: 1264847444-1be103ba0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 66668136517D; Sat, 30 Jan 2010 02:30:44 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id mnYbonFA3uewL9HB; Sat, 30 Jan 2010 02:30:44 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NbAbD-0003Mk-3U; Sat, 30 Jan 2010 10:30:43 +0000 Date: Sat, 30 Jan 2010 05:30:42 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Alex Elder , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: 219: ignore duplicates reported by repquota Subject: Re: [PATCH 2/2] xfstests: 219: ignore duplicates reported by repquota Message-ID: <20100130103042.GA10337@infradead.org> References: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6942@cf--amer001e--3.americas.sgi.com> <4B626D80.3010601@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B626D80.3010601@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264847444 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Thu, Jan 28, 2010 at 11:09:20PM -0600, Eric Sandeen wrote: > there's probably better awk to be written than this, but I think this > fixes it: > > Alex, you look like an awk-master, can you fix it? No fix included.. From BATV+902929eb2c97b5519b50+2351+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 30 04:51:31 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UApVqn201870 for ; Sat, 30 Jan 2010 04:51:31 -0600 X-ASG-Debug-ID: 1264848757-5ff400150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 03936136599A for ; Sat, 30 Jan 2010 02:52:37 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FN0OzQnhu2CHNGFN for ; Sat, 30 Jan 2010 02:52:37 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NbAwO-0005vg-E2; Sat, 30 Jan 2010 10:52:36 +0000 Date: Sat, 30 Jan 2010 05:52:36 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss , ext4 development X-ASG-Orig-Subj: Re: [PATCH] xfstests: 223 - test file alignment on stripe geometry Subject: Re: [PATCH] xfstests: 223 - test file alignment on stripe geometry Message-ID: <20100130105236.GA18286@infradead.org> References: <4B621529.20708@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B621529.20708@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264848758 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > +# real QA test starts here > +_supported_fs xfs ext4 I'd make this generic and just do the notrun in scratch_mkfs_geom for non-supported filesystems. > +scratch_mkfs_geom() > +{ And I'd throw this one into common.rc. > +=== Testing size 1073745920 falloc on 128k stripe === > +SCRATCH_MNT/file-1073745920-falloc: well-aligned > diff --git a/common.rc b/common.rc > index 6424871..97513cc 100644 > --- a/common.rc > +++ b/common.rc > @@ -292,7 +292,7 @@ _scratch_mkfs() > $MKFS_UDF_PROG $MKFS_OPTIONS $* $SCRATCH_DEV > /dev/null > ;; > *) > - /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS $* $SCRATCH_DEV > /dev/null > + /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS $* $SCRATCH_DEV Hmm, doesn't this change break other testcase? Anyway needs some rationale in the changelog. > index 0000000..fa005b2 > --- /dev/null > +++ b/src/fibmap.c This is a bit misnamed as it's not a generic fibmap tool but rather a specific tool comparing the bmap to the sunit alignment. From BATV+902929eb2c97b5519b50+2351+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 30 04:58:56 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_43,J_CHICKENPOX_46,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UAwujk203397 for ; Sat, 30 Jan 2010 04:58:56 -0600 X-ASG-Debug-ID: 1264848903-74d902730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 50C4F19D461 for ; Sat, 30 Jan 2010 02:55:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id YxlcpEA0fPFoPUsC for ; Sat, 30 Jan 2010 02:55:03 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NbAyj-00060e-NY; Sat, 30 Jan 2010 10:55:01 +0000 Date: Sat, 30 Jan 2010 05:55:01 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: ext4 development , xfs-oss , Giel de Nijs X-ASG-Orig-Subj: Re: [PATCH] xfstests 224: test aio hole-fill at 4g Subject: Re: [PATCH] xfstests 224: test aio hole-fill at 4g Message-ID: <20100130105501.GA22909@infradead.org> References: <4B633F9A.8000404@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B633F9A.8000404@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264848903 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Fri, Jan 29, 2010 at 02:05:46PM -0600, Eric Sandeen wrote: > Testcase from Giel de Nijs > on linux-ext4 list, ""Possible ext4 data corruption > with large files and async I/O," on 29 Jan 2010 > > ext4 put byte offsets in a block offset u32 container > in the endio struct, so 4g wrapped to 0 leading to > data corruption when the unwritten extent did not > get converted. There's various type messups in the test program that make it fail for me on a 32-bit machine. The patch below fixes it up, but it seems like we should rather add a variant of that code as aio_read/write commands to xfs_io instead of adding a new test program. Index: xfstests-dev/src/aio-write.c =================================================================== --- xfstests-dev.orig/src/aio-write.c 2010-01-30 10:42:24.000000000 +0000 +++ xfstests-dev/src/aio-write.c 2010-01-30 10:45:30.000000000 +0000 @@ -42,7 +42,7 @@ void usage(void) /* * Scale value by kilo, mega, or giga. */ -loff_t scale_by_kmg(long long value, char scale) +long long scale_by_kmg(long long value, char scale) { switch (scale) { case 'g': @@ -69,7 +69,7 @@ switch (scale) { int main(int argc, char ** argv) { char filename[PATH_MAX]; - loff_t offset = 0; + long long offset = 0; size_t length = 0; int seed = 0xFF; int queue_depth = 8; @@ -95,12 +95,12 @@ int main(int argc, char ** argv) seed = (int)strtol(optarg, &endp, 0); break; case 'o': - offset = strtol(optarg, &endp, 0); - offset = scale_by_kmg((long long)offset, *endp); + offset = strtoll(optarg, &endp, 0); + offset = scale_by_kmg(offset, *endp); break; case 'l': length = strtol(optarg, &endp, 0); - length = scale_by_kmg((long long)length, *endp); + length = scale_by_kmg(length, *endp); break; case 'v': verbose++; @@ -141,7 +141,8 @@ int main(int argc, char ** argv) io_prep_pwrite(&iocb, fd, buf, length, offset); iocblist[0] = &iocb; if (verbose) - printf("submitting write of %zd bytes at offset %zd\n", length, offset); + printf("submitting write of %zd bytes at offset %lld\n", + length, offset); err = io_submit(io_ctx, 1, iocblist); if (err < 0) { printf("error submitting I/O requests: %s\n", strerror(-err)); From sandeen@sandeen.net Sat Jan 30 10:02:48 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UG2mR4220261 for ; Sat, 30 Jan 2010 10:02:48 -0600 X-ASG-Debug-ID: 1264867435-099200310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5976E1C92086 for ; Sat, 30 Jan 2010 08:03:55 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id KGJ2cDkqQqbIbA1a for ; Sat, 30 Jan 2010 08:03:55 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id A3D36917EB7; Sat, 30 Jan 2010 10:03:54 -0600 (CST) Message-ID: <4B64586A.2080603@sandeen.net> Date: Sat, 30 Jan 2010 10:03:54 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests: routine to create scratch of certain size Subject: Re: [PATCH] xfstests: routine to create scratch of certain size References: <4B621D89.8070800@sandeen.net> <20100130101951.GA32695@infradead.org> In-Reply-To: <20100130101951.GA32695@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264867435 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Thu, Jan 28, 2010 at 05:28:09PM -0600, Eric Sandeen wrote: >> This is needed for later enospc tests to be generic >> >> Signed-off-by: Eric Sandeen >> --- >> ... > Looks good, the only questions is why you're using $MKFS_OPTIONS for > extN, but not for xfs? > Hm, oversight I guess. Will test w/ that. Thanks, -Eric From sandeen@sandeen.net Sat Jan 30 10:07:59 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UG7x9R220564 for ; Sat, 30 Jan 2010 10:07:59 -0600 X-ASG-Debug-ID: 1264867745-7827014a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 23C1C19DEBE for ; Sat, 30 Jan 2010 08:09:05 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id pa85dGa3YcTmNWJB for ; Sat, 30 Jan 2010 08:09:05 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 7B4ED917EAA; Sat, 30 Jan 2010 10:09:05 -0600 (CST) Message-ID: <4B6459A1.4060900@sandeen.net> Date: Sat, 30 Jan 2010 10:09:05 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests: make 053 and 077 generic Subject: Re: [PATCH] xfstests: make 053 and 077 generic References: <4B621E11.4050609@sandeen.net> <20100130102639.GC32695@infradead.org> In-Reply-To: <20100130102639.GC32695@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264867746 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.32 X-Barracuda-Spam-Status: No, SCORE=-1.32 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MARKETING_SUBJECT, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Thu, Jan 28, 2010 at 05:30:25PM -0600, Eric Sandeen wrote: >> 053 and 077 can be generic w/ a little tweaking. >> >> Also change 077's filler to something more likely >> to be on a random system under test, and add it >> to the enospc group. >> >> Signed-off-by: Eric Sandeen >> --- >> >> diff --git a/053 b/053 >> index 98644a7..5542885 100755 >> --- a/053 >> +++ b/053 >> @@ -38,18 +38,19 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 >> . ./common.attr >> >> # real QA test starts here >> -_supported_fs xfs >> +_supported_fs generic >> _supported_os Linux >> >> [ ! -x /bin/chacl -a ! -x /usr/bin/chacl ] && _notrun "chacl command not found" >> >> _require_scratch >> +_acl_requirements > > _acl_requirements includes the chacl check, so it can be removed. oh good point :) > Btw, any reason _acl_requirements isn't called _require_acl? It already existed, I just used it ... renaming is probably a good idea. >> diff --git a/077 b/077 >> index cdee8da..d23305f 100755 >> --- a/077 >> +++ b/077 >> @@ -31,7 +31,8 @@ here=`pwd` >> tmp=/tmp/$$ >> status=1 >> #filler=$here/../../linux >> -filler=/home/fsgqa/isms/2.4.x-xfs >> +#filler=/home/fsgqa/isms/2.4.x-xfs >> +filler=/lib/modules/`uname -r`/ > > Oooops. Maybe just use /lib/modules/ to get as much as possible. > And no need to let the other bits comment out there. Maybe we need > to generate the data instead to really be safe - at least for my > tests under qemu I don't have any modules installed. But that should > be left for another patch. hm, on the other hand some of my machines have so many kernels installed, picking up all of /lib/modules might slow it down a lot. So generating might be better, yeah. > Anyway, patch looks good enough to go in for now, so thanks, I'll pull the chacl test & the commented lines before that. -Eric > > Reviewed-by: Christoph Hellwig > From sandeen@sandeen.net Sat Jan 30 10:08:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UG88lc220589 for ; Sat, 30 Jan 2010 10:08:08 -0600 X-ASG-Debug-ID: 1264867755-084f00300000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B2D4619DEC2 for ; Sat, 30 Jan 2010 08:09:15 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id 9ImaegxrhSHFjhQv for ; Sat, 30 Jan 2010 08:09:15 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 31460917EC9; Sat, 30 Jan 2010 10:09:15 -0600 (CST) Message-ID: <4B6459AB.7050201@sandeen.net> Date: Sat, 30 Jan 2010 10:09:15 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: Alex Elder , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/2] xfstests: 219: ignore duplicates reported by repquota Subject: Re: [PATCH 2/2] xfstests: 219: ignore duplicates reported by repquota References: <1AB9A794DBDDF54A8A81BE2296F7BDFE012A6942@cf--amer001e--3.americas.sgi.com> <4B626D80.3010601@sandeen.net> <20100130103042.GA10337@infradead.org> In-Reply-To: <20100130103042.GA10337@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264867755 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Thu, Jan 28, 2010 at 11:09:20PM -0600, Eric Sandeen wrote: >> there's probably better awk to be written than this, but I think this >> fixes it: >> >> Alex, you look like an awk-master, can you fix it? > > No fix included.. > right, was asking Alex for one ;) -Eric From sandeen@sandeen.net Sat Jan 30 10:12:39 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_62 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UGCdbK220850 for ; Sat, 30 Jan 2010 10:12:39 -0600 X-ASG-Debug-ID: 1264868025-0d7200630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 665971C9210C for ; Sat, 30 Jan 2010 08:13:46 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id WsZE3P54Rn6AEBBN for ; Sat, 30 Jan 2010 08:13:46 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id B8465917EB6; Sat, 30 Jan 2010 10:13:45 -0600 (CST) Message-ID: <4B645AB9.8050508@sandeen.net> Date: Sat, 30 Jan 2010 10:13:45 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss , ext4 development X-ASG-Orig-Subj: Re: [PATCH] xfstests: 223 - test file alignment on stripe geometry Subject: Re: [PATCH] xfstests: 223 - test file alignment on stripe geometry References: <4B621529.20708@sandeen.net> <20100130105236.GA18286@infradead.org> In-Reply-To: <20100130105236.GA18286@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264868026 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: >> +# real QA test starts here >> +_supported_fs xfs ext4 > > I'd make this generic and just do the notrun in scratch_mkfs_geom for > non-supported filesystems. fair enough >> +scratch_mkfs_geom() >> +{ > > And I'd throw this one into common.rc. ok >> +=== Testing size 1073745920 falloc on 128k stripe === >> +SCRATCH_MNT/file-1073745920-falloc: well-aligned >> diff --git a/common.rc b/common.rc >> index 6424871..97513cc 100644 >> --- a/common.rc >> +++ b/common.rc >> @@ -292,7 +292,7 @@ _scratch_mkfs() >> $MKFS_UDF_PROG $MKFS_OPTIONS $* $SCRATCH_DEV > /dev/null >> ;; >> *) >> - /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS $* $SCRATCH_DEV > /dev/null >> + /sbin/mkfs -t $FSTYP -- $MKFS_OPTIONS $* $SCRATCH_DEV > > Hmm, doesn't this change break other testcase? Anyway needs some > rationale in the changelog. didn't break anything for me; I wanted to be able to see the mkfs results w/ geometry, is all. Will re-double-check but it was fine AFAIK. >> index 0000000..fa005b2 >> --- /dev/null >> +++ b/src/fibmap.c > > This is a bit misnamed as it's not a generic fibmap tool but rather > a specific tool comparing the bmap to the sunit alignment. > good point .. how about making it more generic, something like: fibmap -o -l -s hmm though I hate to reqwrite filefrag ... :) I suppose something like this could go into xfs_io as well, but that makes this test unavailable to the masses until another release, at least. -Eric From sandeen@sandeen.net Sat Jan 30 10:14:02 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_43,J_CHICKENPOX_46,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UGE22O220935 for ; Sat, 30 Jan 2010 10:14:02 -0600 X-ASG-Debug-ID: 1264868109-0e2c001f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E8AD19DF73 for ; Sat, 30 Jan 2010 08:15:09 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id ayW3Hnrc2FTUBAVU for ; Sat, 30 Jan 2010 08:15:09 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 196C9917EA9; Sat, 30 Jan 2010 10:15:09 -0600 (CST) Message-ID: <4B645B0D.205@sandeen.net> Date: Sat, 30 Jan 2010 10:15:09 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: ext4 development , xfs-oss , Giel de Nijs X-ASG-Orig-Subj: Re: [PATCH] xfstests 224: test aio hole-fill at 4g Subject: Re: [PATCH] xfstests 224: test aio hole-fill at 4g References: <4B633F9A.8000404@sandeen.net> <20100130105501.GA22909@infradead.org> In-Reply-To: <20100130105501.GA22909@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264868109 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Fri, Jan 29, 2010 at 02:05:46PM -0600, Eric Sandeen wrote: >> Testcase from Giel de Nijs >> on linux-ext4 list, ""Possible ext4 data corruption >> with large files and async I/O," on 29 Jan 2010 >> >> ext4 put byte offsets in a block offset u32 container >> in the endio struct, so 4g wrapped to 0 leading to >> data corruption when the unwritten extent did not >> get converted. > > There's various type messups in the test program that make it fail for oops, thanks for checking. > me on a 32-bit machine. The patch below fixes it up, but it seems like > we should rather add a variant of that code as aio_read/write commands > to xfs_io instead of adding a new test program. ok, that's probably better - again, though, it takes at least a release cycle before most folks can test it. But I guess that's not the end of the world. -Eric > Index: xfstests-dev/src/aio-write.c > =================================================================== > --- xfstests-dev.orig/src/aio-write.c 2010-01-30 10:42:24.000000000 +0000 > +++ xfstests-dev/src/aio-write.c 2010-01-30 10:45:30.000000000 +0000 > @@ -42,7 +42,7 @@ void usage(void) > /* > * Scale value by kilo, mega, or giga. > */ > -loff_t scale_by_kmg(long long value, char scale) > +long long scale_by_kmg(long long value, char scale) > { > switch (scale) { > case 'g': > @@ -69,7 +69,7 @@ switch (scale) { > int main(int argc, char ** argv) > { > char filename[PATH_MAX]; > - loff_t offset = 0; > + long long offset = 0; > size_t length = 0; > int seed = 0xFF; > int queue_depth = 8; > @@ -95,12 +95,12 @@ int main(int argc, char ** argv) > seed = (int)strtol(optarg, &endp, 0); > break; > case 'o': > - offset = strtol(optarg, &endp, 0); > - offset = scale_by_kmg((long long)offset, *endp); > + offset = strtoll(optarg, &endp, 0); > + offset = scale_by_kmg(offset, *endp); > break; > case 'l': > length = strtol(optarg, &endp, 0); > - length = scale_by_kmg((long long)length, *endp); > + length = scale_by_kmg(length, *endp); > break; > case 'v': > verbose++; > @@ -141,7 +141,8 @@ int main(int argc, char ** argv) > io_prep_pwrite(&iocb, fd, buf, length, offset); > iocblist[0] = &iocb; > if (verbose) > - printf("submitting write of %zd bytes at offset %zd\n", length, offset); > + printf("submitting write of %zd bytes at offset %lld\n", > + length, offset); > err = io_submit(io_ctx, 1, iocblist); > if (err < 0) { > printf("error submitting I/O requests: %s\n", strerror(-err)); > From tytso@thunk.org Sat Jan 30 11:24:06 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UHO5YM224520 for ; Sat, 30 Jan 2010 11:24:06 -0600 X-ASG-Debug-ID: 1264872310-618b01480000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from thunker.thunk.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9B01513661FB for ; Sat, 30 Jan 2010 09:25:10 -0800 (PST) Received: from thunker.thunk.org (THUNK.ORG [69.25.196.29]) by cuda.sgi.com with ESMTP id SVVnlsaI4AVSKgMJ for ; Sat, 30 Jan 2010 09:25:10 -0800 (PST) Received: from root (helo=closure.thunk.org) by thunker.thunk.org with local-esmtp (Exim 4.50 #1 (Debian)) id 1NbH4D-0002Z6-95; Sat, 30 Jan 2010 12:25:05 -0500 Received: from tytso by closure.thunk.org with local (Exim 4.69) (envelope-from ) id 1NbH4A-0000D9-Hj; Sat, 30 Jan 2010 12:25:02 -0500 Date: Sat, 30 Jan 2010 12:25:02 -0500 From: tytso@mit.edu To: Eric Sandeen Cc: Christoph Hellwig , ext4 development , xfs-oss , Giel de Nijs X-ASG-Orig-Subj: Re: [PATCH] xfstests 224: test aio hole-fill at 4g Subject: Re: [PATCH] xfstests 224: test aio hole-fill at 4g Message-ID: <20100130172502.GA788@thunk.org> References: <4B633F9A.8000404@sandeen.net> <20100130105501.GA22909@infradead.org> <4B645B0D.205@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B645B0D.205@sandeen.net> User-Agent: Mutt/1.5.20 (2009-06-14) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on thunker.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: THUNK.ORG[69.25.196.29] X-Barracuda-Start-Time: 1264872312 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21196 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 30, 2010 at 10:15:09AM -0600, Eric Sandeen wrote: > > me on a 32-bit machine. The patch below fixes it up, but it seems like > > we should rather add a variant of that code as aio_read/write commands > > to xfs_io instead of adding a new test program. > > ok, that's probably better - again, though, it takes at least a release > cycle before most folks can test it. But I guess that's not the end of > the world. Stupid question --- who uses xfs_io besides xfstests? Any chance we could consider dropping in some version of xfs_io into xfstests, or actually moving it into xfstests from xfsprogs if xfstests is the exclusive user of that program? I've been trying to get more people to use xfstests, since it would be good if more companies and more projects were using it --- and one of the things that makes it hard is all of the dependencies that it has. If there was some way we could gradually make xfstests more self-contained, it would certainly be nice. - Ted From sandeen@sandeen.net Sat Jan 30 12:30:21 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UIUL5B228331 for ; Sat, 30 Jan 2010 12:30:21 -0600 X-ASG-Debug-ID: 1264876287-7b6400540000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 482901C922FA for ; Sat, 30 Jan 2010 10:31:27 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id W4rJ2KoseDwBsHv9 for ; Sat, 30 Jan 2010 10:31:27 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 958A6917EB6; Sat, 30 Jan 2010 12:31:26 -0600 (CST) Message-ID: <4B647AFE.5000507@sandeen.net> Date: Sat, 30 Jan 2010 12:31:26 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: tytso@mit.edu CC: Christoph Hellwig , ext4 development , xfs-oss , Giel de Nijs X-ASG-Orig-Subj: Re: [PATCH] xfstests 224: test aio hole-fill at 4g Subject: Re: [PATCH] xfstests 224: test aio hole-fill at 4g References: <4B633F9A.8000404@sandeen.net> <20100130105501.GA22909@infradead.org> <4B645B0D.205@sandeen.net> <20100130172502.GA788@thunk.org> In-Reply-To: <20100130172502.GA788@thunk.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264876288 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_MJ1963, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21201 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean tytso@mit.edu wrote: > On Sat, Jan 30, 2010 at 10:15:09AM -0600, Eric Sandeen wrote: >>> me on a 32-bit machine. The patch below fixes it up, but it seems like >>> we should rather add a variant of that code as aio_read/write commands >>> to xfs_io instead of adding a new test program. >> ok, that's probably better - again, though, it takes at least a release >> cycle before most folks can test it. But I guess that's not the end of >> the world. > > Stupid question --- who uses xfs_io besides xfstests? Any chance we > could consider dropping in some version of xfs_io into xfstests, or > actually moving it into xfstests from xfsprogs if xfstests is the > exclusive user of that program? I've been trying to get more people > to use xfstests, since it would be good if more companies and more > projects were using it --- and one of the things that makes it hard is > all of the dependencies that it has. If there was some way we could > gradually make xfstests more self-contained, it would certainly be > nice. > > - Ted These are the deps that I know xfstests has, to build and to run: BuildRequires: autoconf, libtool, xfsprogs-devel, e2fsprogs-devel BuildRequires: libacl-devel, libattr-devel, libaio-devel Requires: bash, xfsprogs, xfsdump, perl, acl, attr, bind-utils Requires: bc, indent, quota which isn't so bad... (and tests are just skipped if xfsdump isn't there) I'm not sure an xfsprogs dependency is so onerous; plenty has depended on e2fsprogs through the years and we've lived with that ;) But the lag time for xfsprogs to use released xfs_io functionality is a bit of a bummer. But I guess I don't have a great answer for who else uses xfs_io: xfs_io(8) xfs_io(8) NAME xfs_io - debug the I/O path of an XFS filesystem SYNOPSIS xfs_io [ -adFfmrRstx ] [ -c cmd ] ... [ -p prog ] file DESCRIPTION xfs_io is a debugging tool like xfs_db(8), but is aimed at examining the regular file I/O paths rather than the raw XFS volume itself. I guess it's not really advertised as a generic tool, and it's in the sbin path... I guess I could live with it either way - I suppose my main concern is that xfstests is a mess to package for a distro, and I really like easy access to xfs_io for my own use outside of xfstests. -Eric From BATV+902929eb2c97b5519b50+2351+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 30 13:07:23 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UJ7Lek230949 for ; Sat, 30 Jan 2010 13:07:22 -0600 X-ASG-Debug-ID: 1264878508-7ed201ae0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C44921C9231B for ; Sat, 30 Jan 2010 11:08:28 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id At2OsDMJSe2IKRI9 for ; Sat, 30 Jan 2010 11:08:28 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NbIgG-0002oN-6Q; Sat, 30 Jan 2010 19:08:28 +0000 Date: Sat, 30 Jan 2010 14:08:28 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests: make 053 and 077 generic Subject: Re: [PATCH] xfstests: make 053 and 077 generic Message-ID: <20100130190828.GA10181@infradead.org> References: <4B621E11.4050609@sandeen.net> <20100130102639.GC32695@infradead.org> <4B6459A1.4060900@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B6459A1.4060900@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264878508 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 30, 2010 at 10:09:05AM -0600, Eric Sandeen wrote: > > Btw, any reason _acl_requirements isn't called _require_acl? > > It already existed, I just used it ... renaming is probably a good idea. Yeah, just asking questions to myself while reading the patch.. From BATV+902929eb2c97b5519b50+2351+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 30 13:08:29 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UJ8S66231021 for ; Sat, 30 Jan 2010 13:08:29 -0600 X-ASG-Debug-ID: 1264878575-7aaf01210000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 326F419E18A for ; Sat, 30 Jan 2010 11:09:35 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id lXk6RdUhuAzD2Cnj for ; Sat, 30 Jan 2010 11:09:35 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NbIhL-0002wq-A0; Sat, 30 Jan 2010 19:09:35 +0000 Date: Sat, 30 Jan 2010 14:09:35 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs-oss , ext4 development X-ASG-Orig-Subj: Re: [PATCH] xfstests: 223 - test file alignment on stripe geometry Subject: Re: [PATCH] xfstests: 223 - test file alignment on stripe geometry Message-ID: <20100130190935.GB10181@infradead.org> References: <4B621529.20708@sandeen.net> <20100130105236.GA18286@infradead.org> <4B645AB9.8050508@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B645AB9.8050508@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264878576 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean > didn't break anything for me; I wanted to be able to see the mkfs > results w/ geometry, is all. Will re-double-check but it was fine AFAIK. Yeah, doesn't seem to cause any problems with a full xfsqa run for me. > > This is a bit misnamed as it's not a generic fibmap tool but rather > > a specific tool comparing the bmap to the sunit alignment. > > > > good point .. how about making it more generic, something like: > > fibmap -o -l -s > > hmm though I hate to reqwrite filefrag ... :) > > I suppose something like this could go into xfs_io as well, but that > makes this test unavailable to the masses until another release, at least. I'd just leave it as is but call it t_stripealign or similar. From BATV+902929eb2c97b5519b50+2351+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 30 13:10:08 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UJA8Md231103 for ; Sat, 30 Jan 2010 13:10:08 -0600 X-ASG-Debug-ID: 1264878675-7b5502090000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8859C1C92398 for ; Sat, 30 Jan 2010 11:11:15 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id uT0aLcH3FAOakiF7 for ; Sat, 30 Jan 2010 11:11:15 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NbIiv-0003dR-Qk; Sat, 30 Jan 2010 19:11:13 +0000 Date: Sat, 30 Jan 2010 14:11:13 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: tytso@mit.edu, Christoph Hellwig , ext4 development , xfs-oss , Giel de Nijs X-ASG-Orig-Subj: Re: [PATCH] xfstests 224: test aio hole-fill at 4g Subject: Re: [PATCH] xfstests 224: test aio hole-fill at 4g Message-ID: <20100130191113.GC10181@infradead.org> References: <4B633F9A.8000404@sandeen.net> <20100130105501.GA22909@infradead.org> <4B645B0D.205@sandeen.net> <20100130172502.GA788@thunk.org> <4B647AFE.5000507@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4B647AFE.5000507@sandeen.net> User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264878675 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean On Sat, Jan 30, 2010 at 12:31:26PM -0600, Eric Sandeen wrote: > These are the deps that I know xfstests has, to build and to run: > > BuildRequires: autoconf, libtool, xfsprogs-devel, e2fsprogs-devel > BuildRequires: libacl-devel, libattr-devel, libaio-devel > > Requires: bash, xfsprogs, xfsdump, perl, acl, attr, bind-utils > Requires: bc, indent, quota > > which isn't so bad... Doesn't seem to bad. Indent is afaik only needed for the weird 122 test which doesn't apply to non-xfs filesystems. > I'm not sure an xfsprogs dependency is so onerous; plenty has depended > on e2fsprogs through the years and we've lived with that ;) But > the lag time for xfsprogs to use released xfs_io functionality is a > bit of a bummer. > > But I guess I don't have a great answer for who else uses xfs_io: I use xfs_io in lots various local scripts. It's a really handly tool for exercising some of the more weird I/O related syscalls. From sandeen@sandeen.net Sat Jan 30 13:45:04 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UJj3sm233197 for ; Sat, 30 Jan 2010 13:45:04 -0600 X-ASG-Debug-ID: 1264880770-753d03400000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A2C1B188678 for ; Sat, 30 Jan 2010 11:46:10 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id Xu85GkOONBbmxKqZ for ; Sat, 30 Jan 2010 11:46:10 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id E2CB7917EA6; Sat, 30 Jan 2010 13:46:09 -0600 (CST) Message-ID: <4B648C82.3040801@sandeen.net> Date: Sat, 30 Jan 2010 13:46:10 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: tytso@mit.edu, ext4 development , xfs-oss , Giel de Nijs X-ASG-Orig-Subj: Re: [PATCH] xfstests 224: test aio hole-fill at 4g Subject: Re: [PATCH] xfstests 224: test aio hole-fill at 4g References: <4B633F9A.8000404@sandeen.net> <20100130105501.GA22909@infradead.org> <4B645B0D.205@sandeen.net> <20100130172502.GA788@thunk.org> <4B647AFE.5000507@sandeen.net> <20100130191113.GC10181@infradead.org> In-Reply-To: <20100130191113.GC10181@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264880770 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21205 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Sat, Jan 30, 2010 at 12:31:26PM -0600, Eric Sandeen wrote: >> These are the deps that I know xfstests has, to build and to run: >> >> BuildRequires: autoconf, libtool, xfsprogs-devel, e2fsprogs-devel >> BuildRequires: libacl-devel, libattr-devel, libaio-devel >> >> Requires: bash, xfsprogs, xfsdump, perl, acl, attr, bind-utils >> Requires: bc, indent, quota >> >> which isn't so bad... > > Doesn't seem to bad. Indent is afaik only needed for the weird 122 test > which doesn't apply to non-xfs filesystems. and FWIW, we do: _require_command /usr/bin/indent so it'll just not run if it's not there (the above was for an rpm attempt I made, wishing to automatically pull in everything that might possibly be needed.) -Eric >> I'm not sure an xfsprogs dependency is so onerous; plenty has depended >> on e2fsprogs through the years and we've lived with that ;) But >> the lag time for xfsprogs to use released xfs_io functionality is a >> bit of a bummer. >> >> But I guess I don't have a great answer for who else uses xfs_io: > > I use xfs_io in lots various local scripts. It's a really handly > tool for exercising some of the more weird I/O related syscalls. > From BATV+902929eb2c97b5519b50+2351+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 30 13:51:20 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00, FH_DATE_PAST_20XX,J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UJpJGw233520 for ; Sat, 30 Jan 2010 13:51:20 -0600 X-ASG-Debug-ID: 1264881146-042b02cf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D90441C92333 for ; Sat, 30 Jan 2010 11:52:26 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 1sRslPD3nHzLtn4W for ; Sat, 30 Jan 2010 11:52:26 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.69 #1 (Red Hat Linux)) id 1NbJMo-00041o-JJ for xfs@oss.sgi.com; Sat, 30 Jan 2010 19:52:26 +0000 Date: Sat, 30 Jan 2010 14:52:26 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] mkfs.xfs: fix fd validity check in get_topology Subject: [PATCH] mkfs.xfs: fix fd validity check in get_topology Message-ID: <20100130195226.GA15379@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1264881146 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Only negatie return values from open mean we failed to open the device. Without this check we do not print the usage message when no device is specified. This leads to a weird failure in xfstests 122. Signed-off-by: Christoph Hellwig Index: xfsprogs-dev/mkfs/xfs_mkfs.c =================================================================== --- xfsprogs-dev.orig/mkfs/xfs_mkfs.c 2010-01-30 20:44:03.505255109 +0100 +++ xfsprogs-dev/mkfs/xfs_mkfs.c 2010-01-30 20:44:20.579255807 +0100 @@ -455,7 +455,7 @@ static void get_topology(libxfs_init_t * &ft->dsunit, &ft->dswidth, &ft->sectoralign); fd = open(dfile, O_RDONLY); /* If this fails we just fall back to BBSIZE */ - if (fd) { + if (fd >= 0) { platform_findsizes(dfile, fd, &dummy, &bsz); close(fd); } From sandeen@sandeen.net Sat Jan 30 14:45:51 2010 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=AWL,BAYES_00,FH_DATE_PAST_20XX, J_CHICKENPOX_45 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0UKjp9M236494 for ; Sat, 30 Jan 2010 14:45:51 -0600 X-ASG-Debug-ID: 1264884416-3ee103850000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 22B4F136662D for ; Sat, 30 Jan 2010 12:46:56 -0800 (PST) Received: from mail.sandeen.net (64-131-60-146.usfamily.net [64.131.60.146]) by cuda.sgi.com with ESMTP id JOWHC8FK5PwdP4CT for ; Sat, 30 Jan 2010 12:46:56 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 1D007917EA9; Sat, 30 Jan 2010 14:46:56 -0600 (CST) Message-ID: <4B649AC0.2040105@sandeen.net> Date: Sat, 30 Jan 2010 14:46:56 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] mkfs.xfs: fix fd validity check in get_topology Subject: Re: [PATCH] mkfs.xfs: fix fd validity check in get_topology References: <20100130195226.GA15379@infradead.org> In-Reply-To: <20100130195226.GA15379@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: 64-131-60-146.usfamily.net[64.131.60.146] X-Barracuda-Start-Time: 1264884418 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.21210 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Only negatie return values from open mean we failed to open the device. > Without this check we do not print the usage message when no device is > specified. This leads to a weird failure in xfstests 122. and unhelpful help for any user... argh :( > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen > > Index: xfsprogs-dev/mkfs/xfs_mkfs.c > =================================================================== > --- xfsprogs-dev.orig/mkfs/xfs_mkfs.c 2010-01-30 20:44:03.505255109 +0100 > +++ xfsprogs-dev/mkfs/xfs_mkfs.c 2010-01-30 20:44:20.579255807 +0100 > @@ -455,7 +455,7 @@ static void get_topology(libxfs_init_t * > &ft->dsunit, &ft->dswidth, &ft->sectoralign); > fd = open(dfile, O_RDONLY); > /* If this fails we just fall back to BBSIZE */ > - if (fd) { > + if (fd >= 0) { > platform_findsizes(dfile, fd, &dummy, &bsz); > close(fd); > } > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sales@palacegift.com Sun Jan 31 07:00:25 2010 Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id o0VD0M5b029314 for ; Sun, 31 Jan 2010 07:00:24 -0600 X-ASG-Debug-ID: 1264942867-59b200e20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from oweb.cn (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 5EFFB1C93478 for ; Sun, 31 Jan 2010 05:01:14 -0800 (PST) Received: from oweb.cn (smtp.oweb.cn [222.73.173.111]) by cuda.sgi.com with SMTP id bSmin1cLLw9IHDHV for ; Sun, 31 Jan 2010 05:01:14 -0800 (PST) Message-ID: Received: (eyou send program); Sun, 31 Jan 2010 20:58:23 +0800 X-EYOUMAIL-SMTPAUTH: sales@palacegift.com Received: from 218.17.246.208 (HELO laptopjason) (218.17.246.208) by 222.73.173.111 with SMTP; Sun, 31 Jan 2010 20:58:23 +0800 Reply-To: sales@palacegift.com From: Palace Gift Ltd To: <> X-ASG-Orig-Subj: Starbucks mugs 12 oz double wall ceramic thermal mug Subject: Starbucks mugs 12 oz double wall ceramic thermal mug Sender: Palace Gift Ltd Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="= Multipart Boundary 0131102059" Date: Sun, 31 Jan 2010 20:59:35 +0800 X-Barracuda-Connect: smtp.oweb.cn[222.73.173.111] X-Barracuda-Start-Time: 1264942888 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on oss.sgi.com X-Virus-Status: Clean This is a multipart MIME message. --= Multipart Boundary 0131102059 Content-Type: text/plain; charset="GB2312_CHARSET" Content-Transfer-Encoding: 7bit Dear Customer, I would like to introduce this cool product to you. Please see attached file for all the details and prices. If you are a coffee fan, I am sure you saw this in Starbucks. However, this mug that I attached for you here is ceramic, not paper. It is the 12 oz double wall Starbucks ceramic Coffee Mug: This mug is selling very well, because: 1. It is vacuum and double wall, which keeps your hot drink hot for a longer time and cold drink cold for a longer time too. And it is the classic Starbucks all the world. 2. Microwavable 3. Dishwashable 4. Food Grade sip top lid 5. FDA and EEC compliant 6. Custom color for the lid possible: 1000 pcs/custom color 7. Low minimum: only 1000 pcs 8. Fine Porcelain A Grade quality 9. Decoration with imprint or decals with yoru design is possible. 10. Customed made lid color to match your design is possible 11. Value aded Gift Box is possible. 12. Eco-Friendly. Unit Price: US$ 2.18/pc FOB Shenzhen. Value added Full Color corrugated Gift box US$ 0.29/pc. MOQ 1000 pcs/design. Price can be lower if the total order quantity is higher. Please contact us for a better discount, if your order quantity is more. I can send you some samples. Let me know if you are interested. Best regards, Michael Palace Gift Limited www.palacegift.com sales@palacegift.com --= Multipart Boundary 0131102059 Content-Type: application/octet-stream; name="12 oz double wall Starbucks ceramic Coffee Mug.doc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="12 oz double wall Starbucks ceramic Coffee Mug.doc" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAB AAAAZwAAAAAAAAAAEAAAaQAAAAEAAAD+////AAAAAGYAAAD///////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///////////////////////spcEACUAJBAAA+FK/AAAAAAAAEAAAAAAABgAA pQ0AAA4AYmpiaormiuYAAAAAAAAAAAAAAAAAAAAAAAAECBYAMhgAAOiMAQDo jAEApQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAAAAAA AAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAIgAAAAAAFYBAAAA AAAAVgEAAFYBAAAAAAAAVgEAAAAAAABWAQAAAAAAAFYBAAAAAAAAVgEAABQA AAAAAAAAAAAAAGoBAAAAAAAAsgsAAAAAAACyCwAAAAAAALILAAAAAAAAsgsA ABQAAADGCwAAFAAAAGoBAAAAAAAASRAAAPIAAADmCwAAKAAAAA4MAAAAAAAA DgwAAAAAAAAODAAAAAAAAA4MAAAAAAAADgwAAAAAAAAODAAAAAAAAA4MAAAA AAAAyA8AAAIAAADKDwAAAAAAAMoPAAAAAAAAyg8AAAAAAADKDwAAAAAAAMoP AAAAAAAAyg8AACQAAAA7EQAAUgIAAI0TAAA+AAAA7g8AABUAAAAAAAAAAAAA AAAAAAAAAAAAVgEAAAAAAACUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODAAA AAAAAA4MAAAAAAAAlAwAAAAAAACUDAAAAAAAAO4PAAAAAAAAAAAAAAAAAABW AQAAAAAAAFYBAAAAAAAADgwAAAAAAAAAAAAAAAAAAA4MAAAAAAAAAxAAABYA AAAoDQAAAAAAACgNAAAAAAAAKA0AAAAAAACUDAAAXgAAAFYBAAAAAAAADgwA AAAAAABWAQAAAAAAAA4MAAAAAAAAyA8AAAAAAAAAAAAAAAAAACgNAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAlAwAAAAAAADIDwAAAAAAAAAAAAAAAAAAKA0AAAAAAAAAAAAAAAAAACgN AAAAAAAAVgEAAAAAAABWAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKA0AAAAAAAAODAAA AAAAANoLAAAMAAAAsFMN/EeiygEAAAAAAAAAALILAAAAAAAA8gwAACIAAAAo DQAAAAAAAAAAAAAAAAAAyA8AAAAAAAAZEAAAMAAAAEkQAAAAAAAAKA0AAAAA AADLEwAAAAAAABQNAAAKAAAAyxMAAAAAAAAoDQAAAAAAAAAAAAAAAAAAagEA AAAAAABqAQAAAAAAAFYBAAAAAAAAVgEAAAAAAABWAQAAAAAAAFYBAAAAAAAA AAAAAAAAAAAoDQAAfAIAAMsTAAAAAAAAAAAAAAAAAABWAQAAAAAAAKQPAAAk AAAADgwAABQAAAAiDAAADgAAACgNAAAAAAAAMAwAAAwAAAA8DAAAWAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgwAAAAAAAAODAAAAAAA AA4MAAAAAAAA7g8AAAAAAADuDwAAAAAAAGoBAAAAAAAAagEAAEQFAACuBgAA BAUAAAAAAAAAAAAAHg0AAAoAAABqAQAAAAAAAGoBAAAAAAAArgYAAAAAAAAC AAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAugDURl YXIgQ3VzdG9tZXIsIA2gDUkgd291bGQgbGlrZSB0byBpbnRyb2R1Y2UgdGhp cyBjb29sIHByb2R1Y3QgdG8geW91LiBQbGVhc2Ugc2VlIGF0dGFjaGVkIGZp bGUgZm9yIGFsbCB0aGUgZGV0YWlscyBhbmQgcHJpY2VzLiANoA1JZiB5b3Ug YXJlIGEgY29mZmVlIGZhbiwgSSBhbSBzdXJlIHlvdSBzYXcgdGhpcyBpbiBT dGFyYnVja3MuIEhvd2V2ZXIsIHRoaXMgbXVnIHRoYXQgSSBhdHRhY2hlZCBm b3IgeW91IGhlcmUgaXMgY2VyYW1pYywgbm90IHBhcGVyLiBJdCBpcyB0aGUg MTIgb3ogZG91YmxlIHdhbGwgU3RhcmJ1Y2tzIGNlcmFtaWMgQ29mZmVlIE11 ZzoNAQENDVRoaXMgbXVnIGlzIHNlbGxpbmcgdmVyeSB3ZWxsLCBiZWNhdXNl OiANoA0xLiBJdCBpcyB2YWN1dW0gYW5kIGRvdWJsZSB3YWxsLCB3aGljaCBr ZWVwcyB5b3VyIGhvdCBkcmluayBob3QgZm9yIGEgbG9uZ2VyIHRpbWUgYW5k IGNvbGQgZHJpbmsgY29sZCBmb3IgYSBsb25nZXIgdGltZSB0b28uIEFuZCBp dCBpcyB0aGWgY2xhc3NpY6BTdGFyYnVja3OgYWxsIHRoZSB3b3JsZC4gDTIu IE1pY3Jvd2F2YWJsZQ0zLiBEaXNod2FzaGFibGUNNC4gRm9vZCBHcmFkZSBz aXAgdG9wIGxpZA01LiBGREEgYW5kIEVFQyBjb21wbGlhbnQNNi4gQ3VzdG9t IGNvbG9yIGZvciB0aGUgbGlkIHBvc3NpYmxlOiAxMDAwIHBjcy9jdXN0b20g Y29sb3INNy4gTG93IG1pbmltdW06IG9ubHkgMTAwMCBwY3MNOC4gRmluZSBQ b3JjZWxhaW4gQSBHcmFkZSBxdWFsaXR5DTkuIERlY29yYXRpb24gd2l0aCBp bXByaW50IG9yIGRlY2FscyB3aXRoIHlvcnUgZGVzaWduIGlzIHBvc3NpYmxl Lg0xMC4gQ3VzdG9tZWQgbWFkZSBsaWQgY29sb3IgdG8gbWF0Y2ggeW91ciBk ZXNpZ24gaXMgcG9zc2libGUgDTExLiBWYWx1ZSBhZGVkIEdpZnQgQm94IGlz IHBvc3NpYmxlLiANMTIuIEVjby1GcmllbmRseS4NoA1Vbml0IFByaWNlOiBV UyQgMi4xOC9wYyBGT0IgU2hlbnpoZW4uIFZhbHVlIGFkZGVkIEZ1bGwgQ29s b3IgY29ycnVnYXRlZCBHaWZ0IGJveCBVUyQgMC4yOS9wYy6gIE1PUaAxMDAw IHBjcy9kZXNpZ24uIFByaWNlIGNhbiBiZSBsb3dlciBpZiB0aGUgdG90YWwg b3JkZXIgcXVhbnRpdHkgaXMgaGlnaGVyLiBQbGVhc2UgY29udGFjdCB1cyBm b3IgYSBiZXR0ZXIgZGlzY291bnQsIGlmIHlvdXIgb3JkZXIgcXVhbnRpdHkg aXMgbW9yZS4gDaANSSBjYW4gc2VuZCB5b3Ugc29tZSBzYW1wbGVzLiBMZXQg bWUga25vdyBpZiB5b3UgYXJlIGludGVyZXN0ZWQuIA2gDUJlc3QgcmVnYXJk cywNoA1NaWNoYWVsDaANUGFsYWNlIEdpZnQgTGltaXRlZAsTIEhZUEVSTElO SyAiaHR0cDovL3d3dy5wYWxhY2VnaWZ0LmNvbSIgFHd3dy5wYWxhY2VnaWZ0 LmNvbRULEyBIWVBFUkxJTksgIm1haWx0bzpzYWxlc0BwYWxhY2VnaWZ0LmNv bSIgFHNhbGVzQHBhbGFjZWdpZnQuY29tFQ2gDaANoA2gDaANoA2gDaANoA0N AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAGAAADCAAAEggAABUIAACCCAAAhQgAAEIJAABDCQAARAkAAEUJAABHCQAA bgkAAG8JAAByCQAAHgoAAB8KAAAuCgAALwoAAD4KAAA/CgAAWAoAAFkKAABx CgAAcgoAAK0KAACuCgAAywoAAMwKAADtCgAA7goAADALAAAxCwAAbgsAAG8L AACUCwAAlQsAAKYLAACpCwAAoAwAAKMMAADjDAAA5gwAAPMMAAD2DAAA/QwA AAANAAAUDQAA79zv3O/c78Gmkn3c79zv3O/c79zv3O/c79zv3O/c79zv3O/c 79zv3O/c79zv3AAAAAAAAAAAAAAAAAAAAAApFWiddOkAFmiddOkANQiBPioB Q0obAEtIAABPSgIAUUoCAFwIgV5KAgAmFmjeLrIANQiBPioBQ0obAEtIAABP SgIAUUoCAFwIgV5KAgBvKAEANQNqySMAABVo3i6yABZo3i6yADUIgT4qAUNK GwBLSAAAT0oCAFFKAgBVCAFcCIFeSgIAbygBNQNqAAAAABVo3i6yABZo3i6y ADUIgT4qAUNKGwBLSAAAT0oCAFFKAgBVCAFcCIFeSgIAbygBJBVonXTpABZo nXTpAENKFABLSAAAT0oCAFFKAgBeSgIAYUoUAAAgFWiddOkAFmiddOkAQ0oY AEtIAABPSgIAUUoCAF5KAgAuAAYAAAMIAAATCAAAFQgAAIMIAACFCAAAQwkA AEYJAABHCQAAcAkAAHIJAAAfCgAALwoAAD8KAABZCgAAcgoAAK4KAADMCgAA 7goAADELAABvCwAAlQsAAKcLAACpCwAAoQwAAKMMAADkDAAA5gwAAPQMAAD2 AAAAAAAAAAAAAAAA9gAAAAAAAAAAAAAAAPYAAAAAAAAAAAAAAAD2AAAAAAAA AAAAAAAA9gAAAAAAAAAAAAAAAPYAAAAAAAAAAAAAAAD2AAAAAAAAAAAAAAAA 9gAAAAAAAAAAAAAAAPYAAAAAAAAAAAAAAAD2AAAAAAAAAAAAAAAA9gAAAAAA AAAAAAAAAPYAAAAAAAAAAAAAAAD2AAAAAAAAAAAAAAAA9gAAAAAAAAAAAAAA APYAAAAAAAAAAAAAAAD2AAAAAAAAAAAAAAAA9gAAAAAAAAAAAAAAAPYAAAAA AAAAAAAAAAD2AAAAAAAAAAAAAAAA9gAAAAAAAAAAAAAAAPYAAAAAAAAAAAAA AAD2AAAAAAAAAAAAAAAA9gAAAAAAAAAAAAAAAPYAAAAAAAAAAAAAAAD2AAAA AAAAAAAAAAAA9gAAAAAAAAAAAAAAAPYAAAAAAAAAAAAAAAD2AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAACQAAAyQAMSQBYSQAZ2SddOkAABwABgAApQ0AAP4A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAgEBAfQMAAD2DAAA/gwAAAANAACSDQAAlA0AAJYNAACYDQAAmg0AAJwN AACeDQAAoA0AAKINAACkDQAApQ0AAPYAAAAAAAAAAAAAAAD2AAAAAAAAAAAA AAAA9gAAAAAAAAAAAAAAAPYAAAAAAAAAAAAAAAD2AAAAAAAAAAAAAAAA9gAA AAAAAAAAAAAAAPYAAAAAAAAAAAAAAAD2AAAAAAAAAAAAAAAA9gAAAAAAAAAA AAAAAPYAAAAAAAAAAAAAAAD2AAAAAAAAAAAAAAAA9gAAAAAAAAAAAAAAAPYA AAAAAAAAAAAAAAD0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAEAAAkAAAMkADEkAWEkAGdknXTpAAAOFA0AABUNAAA8DQAAPQ0AAE8NAABQ DQAAUQ0AAFINAAB7DQAAfA0AAJANAACRDQAApA0AAKUNAADq2erC6tnq2erC 6tm1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYFWiddOkAFmiddOkAT0oCAFFK AgBeSgIAACwVaJ106QAWaJ106QA+KgFCKgJDShQAS0gAAE9KAgBRSgIAXkoC AHBoAAD/AAAgFWiddOkAFmiddOkAQ0oYAEtIAABPSgIAUUoCAF5KAgAAKQNq AAAAABVonXTpABZonXTpAENKGABLSAAAT0oCAFFKAgBVCAFeSgIAAA0wADGQ OAEyUAIAH7CCLiCwxkEhsAgHIrAIByOQoAUkkKAFJbAAABewUwMYsOADDJCp AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAMkjAABEAGQAAAAAAAAACAAAAAAAAAAAAAAAAACCFJQR +wL7AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAE8EIAAACy BArwCAAAAAEEAAAACgAAQwAL8B4AAAAEQQEAAAAFwQYAAAAGAQIAAAD/AQAA CAAyADMAAAAAABDwBAAAAAAAAIBSAAfwMyMAAAUFP3kbWmLCrh2iy9MhmIMX 2/8ADyMAAAEAAABEAAAAAACDD6BGHfAHIwAAP3kbWmLCrh2iy9MhmIMX2/// 2P/gABBKRklGAAECAABkAGQAAP/sABFEdWNreQABAAQAAAA4AAD/7gAOQWRv YmUAZMAAAAAB/9sAhAAHBQUFBQUHBQUHCgcGBwoMCQcHCQwOCwsMCwsOEQwM DAwMDBEOEBERERAOFRUXFxUVHh4eHh4iIiIiIiIiIiIiAQcICA4NDhoSEhod FxQXHSIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiL/wAARCAEsAV4DAREAAhEBAxEB/8QAnQABAAIDAQEAAAAAAAAA AAAAAAMEAQIFBgcBAQEBAQEBAAAAAAAAAAAAAAABAgMEBRAAAQMCAwUEBgUJ BQgDAAAAAQACAxEEITETQVFhEgVxkVIGgbHBIjIHoUJykhTRYoKissIjUxXh kyRUJdIzQ2OjNEUW8HOzEQEBAAEDBAICAgMAAAAAAAAAAQIREgMxURMEQRQh MmGRQlJi/9oADAMBAAIRAxEAPwDy73Sc7ved8R2neuD1tayeJ3eUUrJ4nd5Q KyeJ3eUCsnid3lArJ4nd5QKyeJ3eUCsnid3lArJ4nd5QKyeJ3eUCsnid3lAr J4nd5QKyeJ3eUCsnid3lArJ4nd5QKyeJ3eUCsnid3lArJ4nd5QKyeJ3eUCsn id3lArJ4nd5QKyeJ3eUCsnid3lArJ4nd5QKyeJ3eUCsnid3lArJ4nd5QKyeJ 3eUCsnid3lArJ4nd5QKyeJ3eUCsnid3lArJ4nd5QKyeJ3eUCsnid3lArJ4nd 5QKyeJ3eUCsnid3lArJ4nd5QKyeJ3eUCsnid3lArJ4nd5QKyeJ3eUGzXSUd7 zvh3neERI9nvu+0fWgxyIHIgyIy4hrRUnAAZkoO3Y+SPNHUBWDpsrG4HmnpA CDtGsWc3oV0rNyj0Nn8pOsylpvbu3gYc+QPleP0SGN/WWtrN5I7Nt8nunt/7 vqM0o/5bGRftGVXYz5F+H5S+WYzV8l1KNz5G/uMYrtieSr7Plp5OaKO6eXne 6aev6sgTbE31Kz5deTozVvTW/pSSu/aeU2w31L/6F5SH/jIf1vyq7Ym+s/8A onlMf+Mh7j+VNIb6jf5B8oOz6ZF6HPHqcE2xd9RH5deTTn01v99OPVIm2G+q s/yz8oy1EdtJD9iWQ/8A6F6m2Hkrny/Kby6WnSurtjthc+NwHo0wfpTYvkrl 3HyhoC616qCfqskhoPS5rz+ypsa8ji3nyx8y22MAt7vhFLykdusI/oWdtanJ Hn77ofVumCt/ZTW7K0Ej43BhP5r6cp9BU0allUeRRTkQORA5EDkQORA5EDkQ ORA5EDkQORA5EDkQORA5EDkQORA5EDkQORA5EDkQORBlrPi+z7Qgsvj9932j 61USWtjc3txHaWkTpp5TyxxMFXOPABDV9G6H8qGRtbceZJjz4H8DbuGGWEs2 PYQz7y3MXK8nZ7jp3R+ldJZp9MtIrUU5S6NvvkbnyGr3fpFakc7bV9rQqjei DKAgAiqDIrTBp7igwa7QQqMIMFBqcUGY2RvdyyP0wcjSo/sQW/6VG74pHegA JqObfWjrN4Bxjd8D/YeKCi95GRQR672Yh1D3IOZL5W8rddk0L60bb3EmEd1b UhdzE/WDRyuJ3uaVm4xqZ2PHeYPlb1jpjZLrpTv6laxk6jGClxH9qLHm7Wnj QLFxdZnK8RprLZpoGmgaaBpoGmgaaBpoGmgaaBpoGmgaaBpoGmgaaBpoGmga aBpoGmgaaDZsfxfZ9oQWXx++7tPrQfR/lBbWbb67uJafi3MMcFdjRQv5eJ9i 3i5clfSblsYcWteCRsW3JX5cc0GzRRBkkAVJp2oKk/VOm23/AHF1FHwc8A+t YvJjOtjUxt6RzZ/OflqCoffx13Cp9i432+Kf5Ok9fkvw0PzS8oW4oJnvdtLG f2hc773H/P8ATpPU5OyGT5weV24NZO79ED2rP3se2TX08/4ULj5t9AkeHCGY ACgGCfen+tX6WXeIR81eiONG28x7k+9/zV+ll3iZvzO6I7OCcfdPtV+7/wA1 n6mXeN2/Mvy6fiE7f0Gn95Pu49sj6ef8JmfMHyxJgZ5WA+KP8hVnvcfzr/TN 9TkXIvPXRHtbHB1UNaMACyn0lbnucV+WL6/JPhI/rtregNbfsmbWoHOBj2YL tjzYXpXO8eU6xG+UEVBqN4XSVhXdLVURB552uaDgQajhig9f0KaWe3fLM9rp pZXSva36gNAGnPcoPm/zb6BY2d5a9XtGNilvS9t0xuAc9tCJKbzU835arGUd sK+c6aw6GmgaaBpoGmgaaBpoGmgaaBpoGmgaaBpoGmgaaBpoGmgaaBpoGmga aDLY8HdntCC26P3ndp9aI63QOoy9NuGmN+mQ7mY4YGpp+QLeNc84+oWPme0v 2NF8fw9xShkArG7tAxaexbclvqPUGdO6fJ1Bo/EQxipdCecAbyW5DtWcstJq uM1uj5Z1j5rdTc5zenBrG7CKE95XgvPyZfr+Hux9fGftXj7/AM4eZeok692/ lP1eY0XO8WeX7WvRjOPHpHKfcXkxrLM5x21JVx9XHs1ebTow2tauNV2nBjPh zvNW/MNi3OOM+Wtg/cVdkZ31u1sz8Wsc7sFVrbE3t6TspzMczcSKVU2w3t/8 SWlzYnFgzfjQdpyTbDexqSsHvNoE2w31Gbl20qXjjU5KjdNxIXPLgxvw3OWs tupY3VZK9tNxIXK+ri3OZ0rPzP1OzI07h2GwkrHhyx6VLsy6x63onnozvZFf Na4Egc2AK7Yc+eP7PNyevOsfR7Owu76JkkUZjieAQ+T3G0Pbj3BfQl1jw2O7 061j6ZE5sbjJLJjJIahvY1qD5j8yuqx9R6rDYQuEjbFrhI8fzZCOZv6IaPTV c8q7YT8PF6fBZbNPggafBA0+CBp8EDT4IGnwQNPggafBA0+CBp8EDT4IGnwQ NPggafBA0+CBp8EDT4IGnwQNPggafBBlsfxdntCC26L3ndp9aoxpIOrY3c7G NFS5uRrvG70UXSOGU0rv2PVzE4ODixw+sCQe8KspL3pnl3r3NJ1WwhnmeQ59 w0aU7iMuaeIskP3lnbG5nZ8uLc/K/oF018nT727tXu+BhcyWJv6L26h/vFNj XlrkXPyl6mwD8D1i2nf4Z4X24+818/qU2teVSm+VnnSMF0LbG6A/k3JB7pmR Jtq+SKj/AJc+fYxzf0cuH5lzan6NUFTbV3xVf5K88Mwd0K7P2TG/9h5TStb5 3Qu8oecx/wCC6m0742SD9gqaG+NB5R83ty6D1Q/ahld600XfO7V/krzXPhJ5 f6g4HAtdE8A9oJATQ3zus23kHzlTlt/L1wwbjpRj9Z7U21LyTuvx/LTz/IAf 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 WQBQWugOMnUWy/VhBc48SKAIPWG+G9UPx43oM/jmnMoJahwDmmoOIIQSscCK FBM0g+6ckEb4yM+9BA5uOCDUtQS/w5mGKYBzXChBFQg20zGA0fCMBuogwUGQ EFuzixMpGGTUFtAQEBAQEBAQEBAQEBAQEBAQVuodPtup2zrW6bzMOIORadjm neg8R1Dy71Lpbi5jTc2wykjFXAfnMGPcqK9pMCcDXZQIOlG7GpUFlrggkBCB UINHFBA/EIKE9ASg5lzOyJpL3Bo3k0QVI4bm9dVgMUW2V4ph+a3MqDsWxiso hDDgM3OObjvJVGxvjvQa/j+KDYX/ABQX+ndXYx+lMf4Tz8R+qd/Yg7laGoxQ TRyAoLHM1zaOy2IIZIi07xsKCBzcUGKINhK5mAxG0FBk3EX1mkHggt21vqND 3jlacmnP0oLoAAoMAMggICAgICAgICAgICAgICAgICAgIKN30bpt67nnt26m Wq33H/ebQoOfL5YZUutrp7Dsa8Ne0fsn6UEDuh9UiHuPhm4kuj+ij0ERsOrM B5oGu+xID+0GoIjB1NpxtXffZ+VBo+LqJytqfae0ermQQPg6k4EFsUZ38zn/ AEcrfWgqyWE76Ga5PERNDQfvcxQQCxtYHc7Y+Z4/4jyXu73VQayuIQVJHuUR WfK4IIHXDggwLpyCZlyUHouiddDOW0vHfw8opT9X813D1dmVV6QGmIQSsl2F BYa/ChxCDJhDsWIInQOGwoIxbySH3QabzgEEzYI4aNb70pzfuHBBejIADRkM EG6AgICAgICAgICAgICAgICAgICAgICAg0eyqCvJGgrSRIKksJ3IKUsBQU5b c7kFOW3O5BUktjuQVX2p3KIgdaHcgj/Bncg2bakIJ2QEIO70rqcls1tvc1dC MGuzLfyhVXeDg8CSJwc05EYgoJY5yDQoLbJRsQTNlG9BpLNXBqDWIY1OZQWW IJhkgICAgICAgICAgICAgICAgICAgICAgICDBaCgifDVBXfb8EFd9tXYgrSW ldiCtJZcEFZ9jwQQPsOCCJ3T+CDQ9P4IMfgOCDYWJGxBK2yO5Bato5YDWM0B zacj6EF3VNKuY4He3EflQYZcmtGFx4crq91EFuIzyCrhyDjn9CCwyJBYZGgm a2iDdAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQCAUGhjaUGjrcFBE614IIn WnBBG6zG5BGbIbkGpsRuQY/AjcgfghuQbCzG5Bu20G5BI214IJW2/BBK2BBI 2IBBuGgIMoCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGCDHuoNTpo Mfw0GP4aB/DQBpoNv4aDI5EG2CAgICAgICAgICAgICAgICAgIP/ZnlgAAEQA ZAAAAAAAAAAIAAAAAAAAAAAAAAAAABwgJxWCAoMCAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAPAATwggAAALIECvAIAAAAAgQAAAAKAABDAAvw XgAAAARBAgAAAAXBRgAAAAYBAgAAAP8BAAAIAEMAbwBsAG8AcgBmAHUAbAAl ADIAMABsAGkAZABzACUAMgAwAGEAbgBkACUAMgAwAG0AdQBnACUAMgAwAHcA cgBhAHAAAAAAABDwBAAAAAEAAIBSAAfwyFcAAAUF4Z+rjNERrOZEgKqef3t5 zv8ApFcAAAEAAAANJAAAAACDD6BGHfCcVwAA4Z+rjNERrOZEgKqef3t5zv// 2P/gABBKRklGAAEBAQBgAGAAAP/bAEMAAwICAwICAwMDAwQDAwQFCAUFBAQF CgcHBggMCgwMCwoLCw0OEhANDhEOCwsQFhARExQVFRUMDxcYFhQYEhQVFP/b AEMBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIAWkCJAMBIgACEQEDEQH/xAAf AAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUE BAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoW FxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbH yMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEB AQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQID EQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYn KCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV 1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1TooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAorB8Y+OvD/w/0l9T8Rata6RZJ1luZAufYDqT9K+bvHP/AAUU8AaEzxeH rS/8Syr/AMtViNvF+bgE/gKAPq+ivzT8Y/8ABTXxldzSR6Jpek6OvIUSxvdS D34IFeUeIP20vjJ4lJI8QXkAPRbWNLdf8aAP2DqCa+trf/W3EUX++4FfiXq3 xp+KGsysJ/F2tkEZwt9MAT6fKQKwLjW/GWqMTc65qM4J/wCWtzI3b3f1oA/c SbxbodscS6xYRn0a5Qf1qm3xF8KoxVvEelgjqDdp/jX4dy2Oty433lw/qWl/ +vTf7F1FyN126sDktuBz7fWgD9yovHnhqb7mv6Y30u4/8auQ+JNIuBmLVLKU eqXCH+tfhS2mapDu8uWaTjOd4HNPjm1q0YqJrmM9SQ5wPyNAH7xRTRzrujkW RfVTkU+vwz034keLdGx9j8SatahP+eV/PFj8N2K73wl+1R8TdGniFl421RmB +VLmUTox9MsD/OgD9jqWvzy+Hf8AwUI8aaLcxQeMdIs9cswQGuLNfInA7nGS pP5V9v8Awx+KXh74u+GItc8OXn2q0Y7JEZSskLjqjqeQRQB11FFFABRRRQAU VVvNTtrEfvZAD/dHJrGn8VMzbbeDJ9XNAr2OjorkJdevpGP71Y/ZVzVSXU7x zhrmT88VLdhcx3VJketcEbq5K8zyf99mo2uLg9ZmP4n/ABpcwuY9BzRXnvm3 H/PVv++j/jSefdZ4ndf+BH/GmncOY9EorgI768TObh8AdQ5p8OtXrH5bh2+j A/pVD5jvKK4yLxPfRHDOj4/vr/hWhB4tIA8634PdDQNO50dFUbLWbW+O2OTD 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 aHZ2LJMimdIgZW9y5+Y19a188/D+A3HjPTB1AlLH8FNfQ9aCQUUUUFBRRRQB yPxG8HP4r0tDbFVvLdt6bv4x3XPbNeMJZzWdy8E8bRTI210fqpr6Vrwb4jo1 p4xvSAQXIfPpkCokTIpRqMA1MAGHP0qha3p2/MuT61bM6nGM/gKkgmopqypg fMPxp4kVujA0AKnJx2q3EOKrx43dR+dWkdRj5hxQVEtRdquRfeFUlnjCj5xV qO4j2/eJ+lIss9RUBDuwjjUu7HAVRyaa95g/JHj3NdJ8Po/tFzeTtg7Aqrx0 qluaPRHR+GdNfStHhhlAWY5ZwDxknNatFFaGYUUUUAFJjNLRQB8gftP/ALLm heJNZXU9A8jQdRnjMksaRAQTNk8lR90+4r4/8UfBjxd4WldbnSJ5oVGfPtR5 kePqOf0r9NfjCqqunucch1/UGvNocMMH7prxcTl9KtJyjoz9JyTjfMcppxpT tUpro97eT3PzckgaNijAq4OCrcEfhQAQMV+hmtfDPwr4pRhqehWNyxOTI0QD fmK4LXv2SvB2pszWUt5pbHkCKTcn5GvEnlVePwNS/A/V8H4mZVU0xNOVN/8A gS/DX8D4wxTlr6Z1H9i6Qsf7P8Sx47C5tif1U1izfsbeKIy3lazpsw7ZV1/m a4pYHErTkZ9hh+NuH62qxSXqmv0PAcZpQMmvbZv2RfHCEhG0+Yf7M2P50yP9 krx4xGILP8JwP6Vz/VcRs6b+49lcWZE1f65D7zyC2LAAmr0Ry3PWvadO/Y38 azsPNn0+AHu0hNdhov7EWuTPm81+xhQ9RFAzH9TWkcFiZbU2eZieM8hp6vFR fpd/ofPlnGzkZ/Svp39kn4Z3niLxpba9PbONI07MnnsuEeUcKoPfGST6Yr0P wP8AseeFtBYS6tcTa1IB9yX5Y/yHWvpbSNIs9C06Cx0+2js7SFQscMKhVUfS vawWV1IzU6+lum5+QcUceYbF4eeEy1N8105PSye9upczRmvK/jt+0T4b+BWk JJqTm81e4Um00yE/vJSO5/ur7mvgn4oftk/ET4iXUiW2pSeG9NJO200xyhxx 95+rV7eIx1HDvlk7vsj89yPhHMs9j7WjHlp/zS0Xy6v8vM/UK51K0s22z3UM B9JJAv8AOqM/i7QrX/Xazp8X+/dIP61+NF74o1i/laW41S9mkY5Z5J2Yk+/N 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 9TT5bibscZZxXGpSiGzhe5lP8EYzj6noPxrsdJ+G81wFfU5xEhAzBByx+rdv wH413Vlp9tpsCw2sEcEQ6LGoAqxVqK6ktlPTtIs9Ji8u0t0hGMEqOT9T1NW6 WirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4T43eBP8A hZHww17QkwLmaAvbk9pV+Zf1GPxr8prqzkNzLDNH9nv4WKSwtx8wOCPzFfsn ivz5/bZ+BVz4O8VSeNNJgP8AYeqyDzxEMC2uMHJPor469M/Wvmc4wjqJV47r R+h+yeHmeRwdaeXVZWU9Y/4tmvmvyPmZoJI+GXB9KapYHBzQNXbIEy/N60yT Uc5Khc18jKnLSx/Q6xsFpLcnVSxzk7aSaaKEfMRntWdLfSt8ucD2qnK5bq1E aV9yvrd/gLdzqhkyqnavrWc8hPJyaRplQHPXHSoTBcX2AgKL6muyEFE5amI7 blee6eV/KhyZDxx2q5ZWQtky53SHqTViGzS0UYwz/wB41LaWd3q2oQWNlBLc 3tw4ihgiQs8jE4AAHetOa+iONJN+0qvYl0zT7rWtStbGxhe7vLmRYoYIl3M7 McAV9FeDvhvdfDQSWeqQm31vIFyrdY/RQfSvon9kn9k6H4VWUHinxTClx4wn T91C3zJp6H+EeshHU9ug9a7f9oL4VHxLZf8ACQabGDqNoh8+JRzNGP6ivco5 dKFP2kvi7eR+KcQcYUsbiHgcP/CWjl3fl/d/PfY+e9NKygxlsNjK57n0q8qg Oflx7HtWLZNgjOeOhxW1C5mIJ61Z8ZVjrcmQVMkhU9TSCNvyo2N6Va03OReZ J59QXEwx1okVsYAqnchyQApPbip3eg+VGbfzliQPmycYr2T4beHToPh+MSDF 3d4kl46eg/I1yfgXwO9xqEeoX4/cxDckbDv2Jr1XzVt0Eh4wNqgCuzDU3ueR jKq+BEt5KEUIGyqjHHSse5uEQZY7a39O8J6vrjAxw/ZbY/8ALaf5cj2HU12O ifDnTNLKS3CnULlf45h8gPsvT8816ai2eXdHnGmeHNV8QOPsVqyxd55vlT/6 9d1oXwts7LbLqUpv5uuwcRj8Op/Gu3ChQABgDoBS1aikRdkVvbRWkaxwxJFG vRUGAKlooqhBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAVm+IfDuneK9Fu9J1azivtOu4zHNbzLuVlNaVFJpNWZUZODUouzR +bP7Qv7Huv8AwvmudW8PxXHiHwtkvvRd9zaD0kUcsv8AtAfUd6+cGtkkG9H4 6cetftmyhlIIBB4INeHfGH9kHwN8V1kuktf+Ed1tiW/tDTUVd7f7afdb+dfO YjKE250HbyP2DJuPp0oqhmceZbc63+a6+q+4/Lk2MhPD4FB0tmA3Ocd8Gvpb xp+wR8TNAuT/AGHNpviS1zxIsv2eT8Vbj8jXG3X7IPxkimCDwmzjHLR3SFf5 14zwmKi7ODP0yjxJlFeKlHERXq0vzPHo9PtoTuYbiPWi4vVgX5OENfQnhr9g v4qa9dRrqKadoNs33pp7kSsv/AFGT+dfQvwz/wCCe3gzwu8V34pvrnxZdrg+ Q48m2Vv91eWH+8a1pZbiKju1b1OLG8Y5PgY6VOeXaOv47fifEfwp+DHi/wCN GrpZ+G9Llntg4E+oyjZbQDuWc9f91cn2r9Ff2fv2T/DXwSii1GbGueKmTEmp zr8sOeqwr/APflj69q9k0XQdO8N6dDYaVY2+nWUIwlvbRhEUewFaFfSYbAU6 FpS1l3/yPxvPuMMbnN6MP3dLsnq/8T/Tb1ExQRkYPSlor1D4I+fPi78DJIbm 517w3B5iOTJc6fGOVPdkH81/L0ryCzcK208MDgj0NfcNcH44+D2i+Mma5RTp updftNuB8x/216H+dcFXDcz5oHsYfHuCUKuqPnO2UOOasi1UjitbXvh34g8J XciXNpJcWqnCXUA3I/5cg+xqlBFOMK0TBj0BUg1xOnJOzR3urGWsWMj0oStx 0rW0rw3bRsHmwBnPPJqzpPh/UtQkCW1pPKT/AHEJAr0Xw18LLqQrLqbiBeDs Xlj7e1b06LfQ4q2IsrJlDw3okutXCQW0ZSAfekP8I9T/AIV6dpnhbTtLdZI4 BJOP+W0vzMPp6fhV3T9Nt9LtxDbRCJB2Hf3NWq9GEFBHjyk5O7EpaKK0JCii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooASjFLRQAlLRRQAUUUUAFFFFABRRRQAhGRzUD6fayOHa2i Zh/EUBNWKKAGRxJEu1EVF9FGBTqWigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAABQAEQASAAEAnAAPAAMAAAADAAAAAABOAABA8f8CAE4ADAAAAAAAAAAA AAIAY2uHZQAACwAAAAMkAzEkAGEkAwAkAENKFQBLSAIAUEoDAF9IAQRhShgA bUgJBG5IBAhzSAkEdEgECAAAAAAAAAAAAAAAAAAAAAAAACQAQUDy/6EAJAAM AQAAAAAAAAAABgDYnqSLtWs9hFdbU08AAAAAQgBpQPP/swBCAAwBAAAAAAAA AAAEAG5mGpBoiDxoAAAcABf2AwAANNYGAAEKA2wANNYGAAEFAwAAYfYDAAAC AAsAAAAgAGtA9P/BACAAAAEAAAAAAAAAAAMA4GUXUmiIAAACAAAAAAAAACIA V2CiAPEAIgAMAAAAnXTpAAAAAgCBiblwAAAGADUIgVwIgSgAVWCiAAEBKAAM AAAAnXTpAAAAAwCFjf6UpWMAAAkAPioBcGgAAP8AAAAAAAClBQAAAwAAGAAA BQD/////AAAAAAMAAAATAAAAFQAAAIMAAACFAAAAQwEAAEYBAABHAQAAcAEA AHIBAAAfAgAALwIAAD8CAABZAgAAcgIAAK4CAADMAgAA7gIAADEDAABvAwAA lQMAAKcDAACpAwAAoQQAAKMEAADkBAAA5gQAAPQEAAD2BAAA/gQAAAAFAACS BQAAlAUAAJYFAACYBQAAmgUAAJwFAACeBQAAoAUAAKIFAACkBQAApwUAAJgA AAAAMAAAAAAAAACAAAAAgAAAAOAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAA AAB4AAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAeAAAAAAAAJgAAAAAMAAA AAAAAACAAAAAgAAAAHgAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAB4AAAA AAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAeAAAAAAAAJgAAAAAMAAAAAAAAACA AAAAgAAAAAAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAA AAAwAAAAAAAAAIAAAACAAAAAAAAAAACAAJgAAAAAMAAAAAAAAACAAAAAgAAA AHgAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAB4AAAAAAAAmAAAAAAwAAAA AAAAAIAAAACAAAAAeAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAHgAAAAA AACYAAAAADAAAAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAA AACAAAAAAAAAAACAAJgAAAAAMAAAAAAAAACAAAAAgAAAAHgAAAAAAACYAAAA ADAAAAAAAAAAgAAAAIAAAAB4AAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAA eAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAHgAAAAAAACYAAAAADAAAAAA AAAAgAAAAIAAAAB4AAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAeAAAAAAA AJgAAAAAMAAAAAAAAACAAAAAgAAAAHgAAAAAAACYAAAAADAAAAAAAAAAgAAA AIAAAAB4AAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAeAAAAAAAAJgAAAAA MAAAAAAAAACAAAAAgAAAAHgAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAAB4 AAAAAAAAmAAAAAAwAAAAAAAAAIAAAACAAAAAEAAAAAAAAJgAAAAAMAAAAAAA AACAAAAAgAAAACAAAAAAgACYAAAAADAAAAAAAAAAgAAAAIAAAAAQAAAAAAAA mAAAAAAwAAAAAAAAAIAAAACAAAAAIAAAAACAAJgAAAAAMAAAAAAAAACAAAAA gAAAABAAAAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAACIAAAAAAAAmAAAAAAw AAAAAAAAAIAAAACAAAAAMAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAACAA AAAAAACYAAAAADAAAAAAAAAAgAAAAIAAAACIAAAAAAAAmAAAAAAwAAAAAAAA AIAAAACAAAAAoAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAKgAAAAAAACY AAAAADAAAAAAAAAAgAAAAIAAAACoAAAAAAAAmAAAAAAwAAAAAAAAAIAAAACA AAAAqAAAAAAAAJgAAAAAMAAAAAAAAACAAAAAgAAAAAAAAAAAgACYAAAAADAA AAAAAAAAgAAAAIAAAAAAAAAAAIAAmAAAAAAwAAAAAAAAAIAAAACAAAAAAAAA AACAAAAAAAADAAAAEwAAABUAAACDAAAAhQAAAEMBAABwAQAAcgEAAB8CAAAv AgAAPwIAAFkCAAByAgAArgIAAMwCAADuAgAAMQMAAG8DAACVAwAApwMAAKkD AAChBAAAowQAAOQEAADmBAAA9AQAAPYEAAD+BAAAAAUAAJIFAACUBQAAlgUA AJgFAACaBQAAnAUAAJ4FAACgBQAAogUAAKQFAACnBQAAGkABMAAQAAAAAAAA AQAAAAEAAAAAAAAAAACyBxpAATAAEAAAAAAAAAEAAAABAAAAAAAAAAAAsgca QAEwABAAAAAAAAABAAAAAQAAAAAAAAAAALIHGkABMAAQAAAAAAAAAQAAAAEA AAAAAAAAAACyBxpAATAAEAAAAAAAAAEAAAABAAAAAAAAAAAAsgcaQAEwABAA AAAAAAABAAAAAQAAAAAAAAAAALIHGkABMAAQAAAAAAAAAQAAAAEAAAAAAAAA AACyBxpAATAAEAAAAAAAAAEAAAABAAAAAAAAAAAAsgcaQAEwABAAAAAAAAAB AAAAAQAAAAAAAAAAALIHGkABMAAQAAAAAAAAAQAAAAEAAAAAAAAAAACyBxpA ATAAEAAAAAAAAAEAAAABAAAAAAAAAAAAsgcaQAEwABAAAAAAAAABAAAAAQAA AAAAAAAAALIHGkABMAAQAAAAAAAAAQAAAAEAAAAAAAAAAACyBxpAATAAEAAA AAAAAAEAAAABAAAAAAAAAAAAsgcaQAEwABAAAAAAAAABAAAAAQAAAAAAAAAA ALIHGkABMAAQAAAAAAAAAQAAAAEAAAAAAAAAAACyBxpAATAAEAAAAAAAAAEA AAABAAAAAAAAAAAAsgcaQAEwABAAAAAAAAABAAAAAQAAAAAAAAAAALIHGkAB MAAQAAAAAAAAAQAAAAEAAAAAAAAAAACyBxpAATAAEAAAAAAAAAEAAAABAAAA AAAAAAAAsgcaQAEwABAAAAAAAAABAAAAAQAAAAAAAAAAALIHGkABMAAQAAAA AAAAAQAAAAEAAAAAAAAAAACyBxpAATAAEAAAAAAAAAEAAAABAAAAAAAAAAAA sgcaQAEwABAAAAAAAAABAAAAAQAAAAAAAAAAALIHGkABMAAQAAAAAAAAAQAA AAEAAAAAAAAAAACyBxpAATAAEAAAAAAAAAEAAAABAAAAAAAAAAAAsgcaQAEw ABAAAAAAAAABAAAAAQAAAAAAAAAAALIHGkABMAAQAAAAAAAAAQAAAAEAAAAA AAAAAACyBxpAATAAEAAAAAAAAAEAAAABAAAAAAAAAAAAsgcaQAEwABAAAAAA AAABAAAAAQAAAAAAAAAAALIHGkABMAAQAAAAAAAAAQAAAAEAAAAAAAAAAACy BxpAATAAEAAAAAAAAAEAAAABAAAAAAAAAAAAsgcaQAEwABAAAAAAAAABAAAA AQAAAAAAAAAAALIHGkABMAAQAAAAAAAAAQAAAAEAAAAAAAAAAACyBxhAATAA EAAAAAAAAAEAAAABAAAAAAAAAAAAgAEYQAEwABAAAAAAAAABAAAAAQAAAAAA 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7/AAAF AQIAAAAAAAAAAAAAAAAAAAAAAAIAAAAC1c3VnC4bEJOXCAArLPmuRAAAAAXV zdWcLhsQk5cIACss+a70AAAAsAAAAAoAAAABAAAAWAAAAA8AAABgAAAABQAA AHAAAAAGAAAAeAAAABEAAACAAAAAFwAAAIgAAAALAAAAkAAAABAAAACYAAAA EwAAAKAAAAAWAAAAqAAAAAIAAACoAwAAHgAAAAgAAABKYXNvbgAAAAMAAAAK AAAAAwAAAAIAAAADAAAAowUAAAMAAAC3GgoACwAAAAAAAAALAAAAAAAAAAsA AAAAAAAACwAAAAAAAAAkAQAAAwAAAAAAAAAgAAAAAQAAADgAAAACAAAAQAAA AAEAAAACAAAADAAAAF9QSURfSExJTktTAAIAAACoAwAAQQAAANwAAAAMAAAA AwAAABUAMQADAAAAAwAAAAMAAAAAAAAAAwAAAAUAAAAfAAAAHAAAAG0AYQBp AGwAdABvADoAcwBhAGwAZQBzAEAAcABhAGwAYQBjAGUAZwBpAGYAdAAuAGMA bwBtAAAAHwAAAAEAAAAAAAAAAwAAACYAOwADAAAAAAAAAAMAAAAAAAAAAwAA AAUAAAAfAAAAGwAAAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBwAGEAbABhAGMA ZQBnAGkAZgB0AC4AYwBvAG0ALwAAAAAAHwAAAAEAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA AgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAD+ ////DgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgA AAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAA ACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAA LwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6 AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUA AABGAAAARwAAAEgAAABJAAAASgAAAEsAAAD+////TQAAAE4AAABPAAAAUAAA AFEAAABSAAAAUwAAAFQAAABVAAAA/v///1cAAABYAAAAWQAAAFoAAABbAAAA XAAAAF0AAAD+////XwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAP7////9 ////aAAAAP7////+/////v////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUB//////////8D AAAABgkCAAAAAADAAAAAAAAARgAAAAAAAAAAAAAAAKB/FPxHosoBagAAAIAA AAAAAAAARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAgH///////////////8AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAZ3wAAAAAAAAx AFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAADgACAQEAAAAGAAAA/////wAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAADLEwAAAAAAAFcAbwByAGQA RABvAGMAdQBtAGUAbgB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAaAAIBAgAAAAUAAAD/////AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAADIYAAAAAAAABQBTAHUAbQBtAGEAcgB5 AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAACgAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABWAAAAABAAAAAAAAAFAEQAbwBjAHUAbQBlAG4AdABTAHUA bQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAOAAC AQQAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAF4AAAAAEAAAAAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIA//////// ////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABAAAA/v////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////////wEA/v8DCgAA/////wYJAgAAAAAAwAAAAAAA AEYUAAAATWljcm9zb2Z0IFdvcmQgzsS1tQAKAAAATVNXb3JkRG9jABAAAABX b3JkLkRvY3VtZW50LjgA9DmycQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --= Multipart Boundary 0131102059 Content-Type: application/octet-stream; name="12 oz double wall Starbucks ceramic Coffee Mug.xls" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="12 oz double wall Starbucks ceramic Coffee Mug.xls" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAI AAAAyAMAAAAAAAAAEAAA/v///wAAAAD+////AAAAAMADAADBAwAAwgMAAMMD AADEAwAAxQMAAMYDAADHAwAA//////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////8JCBAAAAYFANIozQfJgAAABgIAAOEAAgCwBMEA AgAAAOIAAABcAHAAAgAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIAAgCwBGEBAgAA AMABAAA9AQIAAQC6AQ8ADAAAVGhpc1dvcmtib29rnAACAA4AGQACAAAAEgAC AAAAEwACAAAArwECAAAAvAECAAAAPQASAOABeAA5IbIROAAAAAAAAQBYAkAA AgAAAI0AAgAAACIAAgAAAA4AAgABALcBAgAAANoAAgAAADEAFADwAAAA/3+Q AQAAAACGAAIBi1tTTzEAFADwAAAA/3+QAQAAAACGAAIBi1tTTzEAFADwAAAA /3+QAQAAAACGAAIBi1tTTzEAFADwAAAA/3+QAQAAAACGAAIBi1tTTzEAFAC0 AAAA/3+QAQAAAACGAAIBi1tTTzEAFADwAAQADACQAQAAAQCGAAIBi1tTTzEA FADwAAQAJACQAQAAAQCGAAIBi1tTTzEAMgDwAAAA/3+QAQAAAAEAABEBQgBv AG8AawBtAGEAbgAgAE8AbABkACAAUwB0AHkAbABlADEAMgAYAQAA/3+QAQAA AAEAABEBQgBvAG8AawBtAGEAbgAgAE8AbABkACAAUwB0AHkAbABlADEAMgAY AQAADACQAQAAAAEAABEBQgBvAG8AawBtAGEAbgAgAE8AbABkACAAUwB0AHkA bABlADEAMgDwAAEA/3+8AgAAAAEAABEBQgBvAG8AawBtAGEAbgAgAE8AbABk ACAAUwB0AHkAbABlADEAMgDwAAQA/3+QAQAAAQEAABEBQgBvAG8AawBtAGEA bgAgAE8AbABkACAAUwB0AHkAbABlADEAMgDQAgEA/3+8AgAAAAEAABEBQgBv AG8AawBtAGEAbgAgAE8AbABkACAAUwB0AHkAbABlADEAMgDcAAEACQC8AgAA AAEAABEBQgBvAG8AawBtAGEAbgAgAE8AbABkACAAUwB0AHkAbABlADEAMgDw AAQADACQAQAAAQEAABEBQgBvAG8AawBtAGEAbgAgAE8AbABkACAAUwB0AHkA bABlADEAMgDgAQEA/3+8AgAAAAEAABEBQgBvAG8AawBtAGEAbgAgAE8AbABk ACAAUwB0AHkAbABlADEAKADIAAAA/3+QAQAAAAEAAAwBQgBvAG8AawAgAEEA bgB0AGkAcQB1AGEAMQAoAPAAAAD/f5ABAAAAAQAADAFCAG8AbwBrACAAQQBu AHQAaQBxAHUAYQAxADIAuAEBAP9/vAIAAAABAAARAUIAbwBvAGsAbQBhAG4A IABPAGwAZAAgAFMAdAB5AGwAZQAxADIA3AABAAgAvAIAAAABAAARAUIAbwBv AGsAbQBhAG4AIABPAGwAZAAgAFMAdAB5AGwAZQAeBCsABQATAAEiAOX/IgAj ACwAIwAjADAAOwAiAOX/IgBcAC0AIwAsACMAIwAwAB4ENQAGABgAASIA5f8i ACMALAAjACMAMAA7AFsAUgBlAGQAXQAiAOX/IgBcAC0AIwAsACMAIwAwAB4E NwAHABkAASIA5f8iACMALAAjACMAMAAuADAAMAA7ACIA5f8iAFwALQAjACwA IwAjADAALgAwADAAHgRBAAgAHgABIgDl/yIAIwAsACMAIwAwAC4AMAAwADsA WwBSAGUAZABdACIA5f8iAFwALQAjACwAIwAjADAALgAwADAAHgRpACoAMgAB XwAgACIA5f8iACoAIAAjACwAIwAjADAAXwAgADsAXwAgACIA5f8iACoAIABc AC0AIwAsACMAIwAwAF8AIAA7AF8AIAAiAOX/IgAqACAAIgAtACIAXwAgADsA XwAgAEAAXwAgAB4ELgApACkAAF8gKiAjLCMjMF8gO18gKiBcLSMsIyMwXyA7 XyAqICItIl8gO18gQF8gHgR5ACwAOgABXwAgACIA5f8iACoAIAAjACwAIwAj ADAALgAwADAAXwAgADsAXwAgACIA5f8iACoAIABcAC0AIwAsACMAIwAwAC4A MAAwAF8AIAA7AF8AIAAiAOX/IgAqACAAIgAtACIAPwA/AF8AIAA7AF8AIABA AF8AIAAeBDYAKwAxAABfICogIywjIzAuMDBfIDtfICogXC0jLCMjMC4wMF8g O18gKiAiLSI/P18gO18gQF8gHgQaABcAFQAAXCQjLCMjMF8pO1woXCQjLCMj MFwpHgQfABgAGgAAXCQjLCMjMF8pO1tSZWRdXChcJCMsIyMwXCkeBCAAGQAb AABcJCMsIyMwLjAwXyk7XChcJCMsIyMwLjAwXCkeBCUAGgAgAABcJCMsIyMw LjAwXyk7W1JlZF1cKFwkIywjIzAuMDBcKR4EIgCwAB0AACJVUyQiIywjIzAu MDA7XC0iVVMkIiMsIyMwLjAw4AAUAAAAAAD1/yAAAAAAAAAAAAAAAMAg4AAU AAEAAAD1/yAAAPQAAAAAAAAAAMAg4AAUAAEAAAD1/yAAAPQAAAAAAAAAAMAg 4AAUAAIAAAD1/yAAAPQAAAAAAAAAAMAg4AAUAAIAAAD1/yAAAPQAAAAAAAAA AMAg4AAUAAAAAAD1/yAAAPQAAAAAAAAAAMAg4AAUAAAAAAD1/yAAAPQAAAAA AAAAAMAg4AAUAAAAAAD1/yAAAPQAAAAAAAAAAMAg4AAUAAAAAAD1/yAAAPQA AAAAAAAAAMAg4AAUAAAAAAD1/yAAAPQAAAAAAAAAAMAg4AAUAAAAAAD1/yAA APQAAAAAAAAAAMAg4AAUAAAAAAD1/yAAAPQAAAAAAAAAAMAg4AAUAAAAAAD1 /yAAAPQAAAAAAAAAAMAg4AAUAAAAAAD1/yAAAPQAAAAAAAAAAMAg4AAUAAAA AAD1/yAAAPQAAAAAAAAAAMAg4AAUAAAAAAABACAAAAAAAAAAAAAAAMAg4AAU AAEACQD1/yAAAPgAAAAAAAAAAMAg4AAUAAYAAAD0/wAAAPQAAAAAAAAAAMAg 4AAUAAcAAAD0/wAAAPQAAAAAAAAAAMAg4AAUAAEALAD1/yAAAPgAAAAAAAAA AMAg4AAUAAEAKgD1/yAAAPgAAAAAAAAAAMAg4AAUAAEAKwD1/yAAAPgAAAAA AAAAAMAg4AAUAAEAKQD1/yAAAPgAAAAAAAAAAMAg4AAUAAgAAAABACAAAEgA AAAAAAAABAkg4AAUAAgAAAABACAAAGgCAEAAAAAABAkg4AAUAAgAAAABACAA AGgAAAAAAAAABAkg4AAUAAgAsAABACAAAGwAAAAAAAAABAkg4AAUAAgAAAAB ACAAAGggAAAgAAAABAkg4AAUAAsAAAABACAAAGgCAEAAAAAABAkg4AAUAAgA DgABACEAAHwAEAAAACAABAkg4AAUAAsAsAABACAAAGwAAAAAAAAABAkg4AAU AA4AAAABACIAAHgCAEAAAAAABAgg4AAUAA4AAAABACIAAHgAAAAAAAAABAgg 4AAUAA4AAAABACIAAHggAAAgAAAABAgg4AAUAAgAAAABACAAAGgCEEAAACAA BAkg4AAUAAgAAAABACAAAGgAEAAAACAABAkg4AAUAAgAsAABACAAAGwAEAAA ACAABAkg4AAUAAgAAAABACAAAGggEAAgACAABAkg4AAUAAgAAAABACIAAHgC AEAAAAAABAkg4AAUAA8AAAARASAAAGgCAEAAAAAABAkg4AAUAAgAAAABACAA AGgCIEAAACAABAkg4AAUAAgAAAABACAAAGgAIAAAACAABAkg4AAUAAgAsAAB ACAAAGwAIAAAACAABAkg4AAUAAgAAAABACAAAGggIAAgACAABAkg4AAUAAgA sAABACAAAEwAAAAAAAAABAkg4AAUAAgAAAABACIAAHgAAAAAAAAABAkg4AAU AAgAAAABACIAAHgAEAAAACAABAkg4AAUAA4AAAABACIAAHgCAEAAAAAABAkg 4AAUAA4AAAABACIAAHgAAAAAAAAABAkg4AAUAA4AsAABACIAAHwAAAAAAAAA BAkg4AAUAA4AAAABACIAAHggAAAgAAAABAkg4AAUAA4AAAABACIAAHgCEEAA ACAABAkg4AAUAA4AAAABACIAAHgAEAAAACAABAkg4AAUAA4AsAABACIAAHwA EAAAACAABAkg4AAUAA4AAAABACIAAHggEAAgACAABAkg4AAUAA4AsAABACoA AHwAAAAAAAAABAgg4AAUABIAAAABACIAAHgAAAAAAAAABAkg4AAUABIAAAAB ACAAAGgAAAAAAAAABAkg4AAUABIAsAABACAAAGwAAAAAAAAABAkg4AAUABIA AAABACAAAGggAAAgAAAABAkg4AAUABIAAAABACAAAEgAAAAAAAAABAkg4AAU ABIAAAABACIAAHgAEAAAACAABAkg4AAUABIAAAABACAAAGgAEAAAACAABAkg 4AAUABIAsAABACAAAGwAEAAAACAABAkg4AAUABIAAAABACAAAGggEAAgACAA BAkg4AAUAAgAAAABACAAAGgBAUAAQAAABAkg4AAUABEAAAABACAAAGgBAEAA AAAABAkg4AAUABEAAAABACAAAGgBEEAAACAABAkg4AAUABQAsAABACIAAHwA AAAAAAAABDMg4AAUABQAAAABACIAAHgAAAAAAAAABDMg4AAUABQAAAABACIA AHggAAAgAAAABDMg4AAUABQAsAABACIAAHwAEAAAACAABDMg4AAUABQAAAAB ACIAAHgAEAAAACAABDMg4AAUABQAAAABACIAAHggEAAgACAABDMg4AAUABMA AAABACIAAHgCAEAAAAAABAkg4AAUABMAAAABACIAAHgAAAAAAAAABAkg4AAU ABMAAAABACIAAHggAAAgAAAABAkg4AAUABAAAAABACIAAHgCAkAAQAAABAkg 4AAUABAAAAABACIAAHgAAgAAQAAABAkg4AAUABAAAAABACIAAHggAgAgQAAA BAkg4AAUAA0AAAABACIAAHgCAEAAAAAABAkg4AAUAA0AAAABACIAAHgAAAAA AAAABAkg4AAUAA0AAAABACIAAHggAAAgAAAABAkg4AAUAAkAAAABACIAAHgC AEAAAAAABAkg4AAUAAkAAAABACIAAHgAAAAAAAAABAkg4AAUAAkAAAABACIA AHggAAAgAAAABAkg4AAUAAoAAAARASIAAHgCAEAAAAAABAkg4AAUAAoAAAAR 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 AAAAAAAAAAAAEAIAAJsBAAAAAAAAAAAAAAAAAABZAgAAQAIAAHUAAAAAAAAA AAAAAAAAAAAAAAAAYAEAAOABAAD3////AAAAAAAAAAABAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAABgAAAAoAAADvAAAA7wAAAO8AAABgAQAAQAIAAFYA AAAAAAAAAAAAAO8AAADvAAAAAAAAAAEAAAABAAAAAAwAAAAMAAAADAAAAAwA AAAMAAAA9P//APT//wD0//8A9P//APT//9b///8A9P//AQAAABYAAAAGAAAA DQIAAGMAAADKAAAAB////yYAAAA7AAAAoP///wAAAABmAAAAAAQAAAAEAABg ////HwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQCAAAAAAAAYP///x8B AAAr////JAEAAAQAAACYAAAAAAAAAAAAAABpAwAAHQQAAAAEAAAABQAAAAAA ACz///8jAQAAKQAAAKMDAAD6BgAAvwUAAKMDAAABAAAAQQIAAGABAADvAAAA WwIAAFYAAAAHAAAAAAAAAHwBAACDAAAAAAAAAAAAAAAAAAAARQMAAAUAAAAA AAAAAAAAAAAAAAAAAAAAAQAAAAAAAACKAwAAdQQAAAAAAAAAAAAAfAEAAIMA AADY+f//BQAAAAkAAABEAwAAPgMAAEEDAABHAwAAPwMAAD4DAABGAwAAQQMA AEADAABvAgAAAAYAAOYAAABiAQAANQAAABQBAAApAAAAAAAAAAAAAAADAAAA AwAAAB8AAAAKAAAARx/q/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAYAAEAAkACQAADAAJAAbmABQBFAEUARQBFAEUARQBFAEUASkA KQApACkAKQApACkAKQApAOz+AAAUAez+AAAUAez+AAAUAdf/1//X/wAAAAAA ACkAKQApAAgAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAIAABAAwAAgACAAIAAgAAAB4AHgAyAKAAAAAAAAAAAACKAAEA AAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACg AQIAAQAQAAgAGAAQAIAC4AHA/hj/QAHoAAIACACAAQAAAAAAAAAAAAwMDQ0A AAAAAAAAAAAAAAAAAAAAAAAAAA4PDw8PDgAAAAAAAAAAAAAAAAAAAAAPEBIT ExMTEhAPAAAAAAAAAAAAAAAAAAAAExYAAAAAFgAAAAAACgAAAAAAAAAAAAAA AAAAAAAAHAAAAAAAAAAAAAAICgsOEBMYHiQnKSknJB4YExAOCwoIAAcICgwO ERUbIygsLS0sKCMbFREODAoIBwAAAAAAEhYeACoAAAAAKiUeFhIAAAAAAAAA AAAAEhYeAAAAAAAAACUeFhIPAAAAAAAACgwOERUbAAAsAC0sKAAbFREODAoA AAAACgsOEBMYAAAAKSkAAAAYExAOCwoIAAAHCQsMDxEUGBwgIgAAAAAAEQ8M CwkHBgAACAoLDQAAABYYGhoYAAAAAAAACggHAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAgAAAAAAAAAnAAjAAAAAAwACQEAAQAQAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADiMAAAAA AAAAAAAAAAAiG/R0gNtOPmjh0JLDkBxtSUkqAKYCAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAEAAgAEAAAAUjk4AAIABwAE AAAAMDEwMAAAAAAA4C4A4QAAAAAoIwCpAAAAAAwAAAAMAAADAAMBAwABAAAA BgAAAAECBAABAAAAfw0AAAICBAABAAAAHBgAAAAAAAD/2P/hAOZFeGlmAABJ SSoACAAAAAUAEgEDAAEAAAABAAAAMQECABwAAABKAAAAMgECABQAAABmAAAA EwIDAAEAAAABAAAAaYcEAAEAAAB6AAAAAAAAAEFDRCBTeXN0ZW1zIERpZ2l0 YWwgSW1hZ2luZwAyMDEwOjAxOjMxIDE1OjE2OjIzAAUAAJAHAAQAAAAwMjIw kJICAAQAAAAyNTAAAqAEAAEAAACgAAAAA6AEAAEAAABNAAAABaAEAAEAAAC8 AAAAAAAAAAIAAQACAAQAAABSOTgAAgAHAAQAAAAwMTAwAAAAAAAAAAD/wAAR CABNAKADASEAAhEBAxEB/9sAhAADAgICAgEDAgICAwMDAwQHBAQEBAQJBgYF BwoJCwsKCQoKDA0RDgwMEAwKCg8UDxAREhMTEwsOFRYVEhYREhMSAQQFBQYF Bg0HBw0bEg8SGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb GxsbGxsbGxsbGxsbGxv/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJ CgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNC scEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldY WVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqy s7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5 +gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAAB AncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXx FxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4 eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfI ycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOPt YzjArUt4gSMjFUSaMFqVXBI+tc58UfiHp/wm+E6+J9R09r6S4uksbO1Ewi82 VlZjufB2qFRiSAew70wPn3UP2sPijeTt/ZNl4b0yLPyCO0e4fHuzuVP4KKzj +058ckG8eK7RQP4V0S0/rHn9atRtoxXL+l/te/GWwvEa+Tw7qUW751u9O8k4 9f3TpX1L8EvjDoXxd+Elxrqi10rUNKLjVrJ7oFbZVGRPubBERXncRgEMCTjJ qdPkVwjK586/GL9r/wAV3Hxd1PQfhd4isdO8P2Un2e31KGwWea+wo3ybpVYK pbdt2qpwAcnNeR3Xxe+K2pXPmyfFPxbKzdrbU5IB/wB8oVH6Vy6vUsW2+Mfx Z0y5DxfFDxhGyHgT6rJMP++XZh+leu/B79sfxvpvxU0vSPid4ittY8OXUwt7 u7m09IZ7FCMCUPEqlgrYLBlYlc4wcUK61Fc+3LnUrKHw0mqWtzBdW1xEk9rJ DKHS4VwCjIwyGVgykEcYINaGjeHdS1TTLmbVLm4sZlZTbLbac9zFMpGSSy52 4PHOKmpOSdomsYpq7OW169uNB1U2l7FFKuMiSJmAP/fS8H8KxX8Q2M52osqn 13rNn8AEx+tcqxFSL1NHSi1oV4NVtL7VJbDeI7yGMSmEnkoTjcM4OM+3GR60 2WI7icGvQi+aNzmas7GfPA5asy6TAK4/+vVCIobRgRlce/rWnb2uSOPrxSsB pW9uVUAjj0r5C/a48P8AiuL9pwatqFldT6JdWEI0mZMyRoqRqJl4zsIkLsQe u4GtIJOSuJ7HhsD2gPF1Fn0LCr3m2ypzcwj3Egr2Yc1jlY21gOp6ktnpsc19 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 bEQ8QhnSfvBJ51W4htvUfEonyTQKinxzN4DajN5NhWtZk23JC1tIj+tJpgal nL7LTZUhtaj1PgTXNuJsweOGX96Eo6JEJP6n4VrGNMmWDz32j4rvMQMOLBa5 Ar0J7PmSpy7s2ZeUkaikEmo5Xc0hxpI68hWom5vb0rFqSkeEwed6e2aA+9vq 57b0BZ8Oubk7Cj8iehqFQ1IVJN70NyQ4IRM0m6CgZkqJAFuVMWQEwEj408gC CtNpk+u1DlJkzJPWp+Q8DCJMCIJ2oTgg3VsOm1PALVjUKkaYsKa6tWowPCab yIjqMpVMXF7UFQHdmIFTYJ2MjUgb+ETNBJAEFQjemL5GqIVubgRNDUfuNKuV AwBA1G8Ulv3j8qVoCAlSgjcafOnJAWqf1tRaAMlRiE30n6URKiUER8KV1oFb MQHO6TJgz15URsK02AjnT/IL5CglAOwmnNqOmdMUZGHaUFKJj408K0nfe1D2 LAQqISkGSFbE0RKpcmR5XosaMSUiAoTfaafrAXYifKhBYqVCZ1Df/QpVkBUC R+dPwIUSpAIVJH1o6QQICt+XSkUKhKgpKwD0o4V4DrEc4FOskowCIVMDzNVX FOWpzzs6zTJyAft2Cfw0cgVoUkfUipnXaxqj5k41pTTxQoAKTZUdRvURKk6v ert439tmUt5CpcVrBSq4862rhztQ7QOFgP2FxfmuDSnZCMSSj/CZFdtqS7ZE PdnTeH/bJ7aslSlD+bYLM2wLjFYMaj/eRBroeS/ygnFeFCEZvwRlmJjcsYpb RPzBqf4Xhnp0S+SS2btl38ohkmhIzHgDHIV/3OObUPqBWx4L+UI7PFpBf4Yz xo+RaVf/ABCsn0EvDQ1y+5YI9v8A7MT4hkmfEnl3TW/+OmP+3/2cjV3HD+eL UORDSZ+a6j+B5Ertf3KXKmzX8z/lEchan9mcB455Q2L2NbQPoDWiZ7/KF8aY lZbybg7KsLOyn33HiPlpFXHokv3SE+V+xzfiP2y+3PPlLS1xE1lzauWCwqEE D+0QTXK+I+0Pjfil8uZ9xXmmPJOqMRi1qT/h2+ldnHw8XC8IzcpS2a8pwFRB knn0oSVFXuwB1Bptt/uBJDdQIlKt+YNMWVJVBI6G965plosOHkLXxRhhEwuZ mvaXspYHU+vFqt4iZ61wyaTN46PUrSgTqkkkddqcZF4AJG81zmj0ECpbGsgC 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 WhJdefcU++rUtZKje5JrPbsTDpcCd9j8q5fx9xc5muZKyrAOkYRpUOqBjvVD l/ZH51x9TKoqPue56N038T1Sb1HJqiEjTqiDWJlSx/GvOaP1FR8hUCJIM3p6 R4BG8bVJ0JUsBAnxDSfnRUJJIgGpesGyVllluWu4x/uwm1iTyrr3BfZ20ww3 i82b0pVdtlW581fwp8UPqT+DD1Dro+ldG+X+Z4X/AJOkNYZtlgJaQlIFhAtF FS0VwkTPSvaikfinLyT5pucvJJRhfEAIAFHRhwFCfDe1MythQwgLgqE9Zo4Z 1OBhtCnHVnSlKbyaeQTOh8M9m2FweDRm/FigBGpvB/8Aq/hV7mPEwS0MJgmw 2wkaUoRYAVq0v2gk5ZKJ3Guuq1lRjempeE3VHQ1SSQ5SSYdBUQIJvc0ROtN+ XKTRRHd4JLK1A222qdhcQuBqH1pUmPusuMI6hREKq3ZMohVxtRRV0S0No0wo b1MZb/DNjSSHbZr3aF2Z8Jdp/ZtieF+L8paxuDxKdlCFIVFlJVulQ5EV8sfa U9mjiXsF4+OpLuYcO45wjLsyjb/u3YsFj5KFxzA7Ol5vpT7XpmHLx3GzhqxI 0mI8utNUolyJm3OvckrwcSYNMrWVAiCbzWEpKiAREX8qzlbdIpNMYU31JNuQ pg6E3rl5Gao6Z2OYIvZlinSJGptMj1NfRPs6wowvZdhQlRnSCflXmT/czpgv tRs5Ci1rIE8gOdYnUIvas9F0x9ykjxATekTAcAMnoetLQqCFSQ6I2CgZ518n O1jKP2B7RnFGTFOn7JnGKaSIiEh1UfQiljuFJYNNUYVe8XpEkE6jt0JqzMJa AY+tLqBT4TFAh1tQVvT9l3HnzoGFSoaJKY+JqQ2UqajytJWaAoC6Ek7T/ioB TcxPyoEMJlwQAettqxRSLyLbGgZgEj9DTkqO0zymaBGReE05F3IO1AHpr2ZM j797L1LQSXsSpwHrEAV7+wrPcZe22BICAN9qzW2bVUUGCVwNiPWnlKtuWxvV piMSD3cRI86eQAASm43E0vyFGCNOhJgetRcclLuQ4tpcgKZWkx5pNPCA88cK KKMM1vsB5V0vJlJShOmCE2uSNPx3FXojCN0y5QIBJ0qPnpJ/Q1e4UlNrBQt+ 4r+BpgWuHhJHewCNioFP1FWTWsjdSreSxRYWTGVICdJUgehKKltrWTs4Y8wq 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 AAbmABQBFAEUARQBFAEUARQBFAEUASkAKQApACkAKQApACkAKQApAOz+AAAU Aez+AAAUAez+AAAUAdf/1//X/wAAAAAAACkAKQApACAAAAAAAAUAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAABAAAAAgACAAIA AgAAAAAAAAAAAAAAAAAAAAAAAACKAAEAAAAEAAgAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAQAAAAAQAAgAGAAQAIAC4AHA/hj/ QAHoAAAACACAAQAAAAAAAAAAAAAAAAAAAAsKCQgHBgUAAAAAAAAAAAAAAAAA AAAAAA0MCwoJBwYFAAAAAAAAAAAAAAAAAAAAABAPDQsKCQcGAAAAAAAAAAAA AAAAAAAAAAARDw0LCggHBQAAAAAAAAAAAAAAAAAAAAAUEQ8MCwkHBgAAAAAA AAAAAAAAAAAAAAAAExAOCwoIBgAAAAAAAAAAAAAAAAAAAAAAAAAODAoABwAA AAAAAAAeJSoALy8uKiUeFhIPDDwAICAKAAAAAAAAABIWHiUALi8vLiolHhYS DwwACQAACAoMDhEVGyMoLC0tLCgjGxURDgAAAAAACAoLDhATGB4kJykpJyQA GBMQDgAAAAAABwkADA8RFBgAICIiIBwYFBEPDAAABwAABwgACw0PERMAGBoa GAATEQ8NCwAABwAAAAcJCgsNABAAExMTEwAQDw0LAAAHAAAAAAYHCQoLAAAO Dw8PAAANDAsKAAAAAAAAAAAGBwgAAAAMDA0NAAALCgkIAAAAAAAIAAAAAQAA AJwAIwAAAAAMAAkBAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4jAAAAAAAAAAAAAAAADRvSeoHbTj5o 4dCSw5AcbUlJKgCmAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAgABAAIABAAAAFI5OAACAAcABAAAADAxMDAAAAAAAOAuAOEA AAAAKCMAqQAAAAAMAAAADAAAAwADAQMAAQAAAAYAAAABAgQAAQAAAH8NAAAC AgQAAQAAAIYdAAAAAAAA/9j/4QDmRXhpZgAASUkqAAgAAAAFABIBAwABAAAA AQAAADEBAgAcAAAASgAAADIBAgAUAAAAZgAAABMCAwABAAAAAQAAAGmHBAAB AAAAegAAAAAAAABBQ0QgU3lzdGVtcyBEaWdpdGFsIEltYWdpbmcAMjAxMDow MTozMSAxNToxNjo0MgAFAACQBwAEAAAAMDIyMJCSAgAEAAAAMzc1AAKgBAAB AAAAoAAAAAOgBAABAAAAUwAAAAWgBAABAAAAvAAAAAAAAAACAAEAAgAEAAAA Ujk4AAIABwAEAAAAMDEwMAAAAAAgIAAA/8AAEQgAUwCgAwEhAAIRAQMRAf/b AIQAAwICAgIBAwICAgMDAwMEBwQEBAQECQYGBQcKCQsLCgkKCgwNEQ4MDBAM CgoPFA8QERITExMLDhUWFRIWERITEgEEBQUGBQYNBwcNGxIPEhsbGxsbGxsb GxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb/8QB ogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAA AX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZ GiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5 eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK 0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAA AAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdh cRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNE RUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaX mJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn 6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2KRcXrYQ/dH0GDyf6fjVqeKRG QMFO04BB6jkdfyr8Nluz9HXQs3CeWcPGf3qrjnp1B7VkXH/HjIPL3HsAOgyO v8qrYjoc/qN/BptrLe3s0VvbW+JHlkcKir3J/wAfavD/ABH+1v8ADzRvFDaZ 4ft7zXJIi2+ePEFqp/66NliM4GQpFevgMDVx0rQ0S3Zz160KEeaR5h4z/a1+ IXinw/f6FZeFtP03TL1WiMqWE93IVzjIlDbfyQV5m2u+Mbxw4ZpA3TFiVH9K +9wuU4fDR5U3J97/AOX/AAT52WZ4h6Rsl6fqyefVtU03T0uNaltoJHbCKsoy 445Iz8vXoasWuqXk9qLhotkO7aJHbCk+g4yTXQsBKdTkp9Top5klDmqdOxYO pTxKCrrIxbA2A9fTnFV77xZDpsIk1V/ssbHYrzcKT6Zrqlk1WKbUk7ev+QLO ad7crX3f5l9NaEQ2yjaWXcvv7ip4dftIomzKudxxk+1eVUoOm2pHqUsTGok4 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 uSzHjknvX1Gc1Jyw8k32PBw1KEJ+6jynUTvDM3UdxxUng6KO98f2lpdDzIZJ BuQk4PI/xr4Kl8Z6s/hP/9n/wAARCAHRA4QDASEAAhEBAxEB/9sAhAADAgIC AgEDAgICAwMDAwQHBAQEBAQJBgYFBwoJCwsKCQoKDA0RDgwMEAwKCg8UDxAR EhMTEwsOFRYVEhYREhMSAQQFBQYFBg0HBw0bEg8SGxsbGxsbGxsbGxsbGxsb GxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxv/xADDAAACAgMB AQEBAAAAAAAAAAAEBQMGAQIHCAAJChAAAQMCBAMFBAcEBwUFBQcFAQIDEQAE BRIhMQZBUQcTImFxMoGRoQgUI0KxwdEVM1JiNHKCkqLh8AkWJENTNXODk/EX JWOywhg2RFRVZHTSN0VWowEAAgMBAQEBAAAAAAAAAAAAAgMBBAUABgcIEQAC AgEDAwMDAQcDBAIDAQAAAQIDEQQhMQUSQSIyURNhcQYUIzOBkaGxQsHRJDRS 8BXhB2Jy8f/aAAwDAQACEQMRAD8A7I7P7PRdKdTJ8JBNaX7zSMTbuEBIC0JJ 3EmB+lfEGtj6KllmqO+W69dJSkBwGUnqOVBPJSywSDOsgDSlvIyPIzbddVZo K1JQ2lMgJEkzoa3SkPXAazDMsHMRpsJqd28AbIIt1lKktkhKUKyqVB2NQXDK EvPvzkSFBTQQNNwDRe5bgrZgYaIvWldxlQ2sBRKvD60Q+xb/ALcfEpWlcOJV sedLwsDMvJLYWwF44hYzpbzIChpyNTstNlhxtpLmUAKJJ2qYrYBvc+Slue7P tKEQrbblWlnboStbZVJWlKkzsSOlGkmRnYkVcXOdKG0jxsFAB1jUjWpFPC5w 1SgoJcbIhAO4kTRptvDBcUhO/meuHEmRunWTNTWLD5Uyw2EhxLsyTrqNPwpa Tb2GPCRG4+l9ptFynVpWRR18Qnet7hVsq9JTIKTlUqI0gc65NPcFprgEvFwH Rk8Zga+kH8qEc8LQfWPCVBcDeAaIlIy0Sou3CEKR4ymIJJkSKFZQFSppaSWz rOgqfJwa8821fpkpJVroNKDuHHDhuVQIBOwOopy+BWCS3YZbdQh1YGUyfIkV s242W1FGqEqHtUeEiORa8tRSpAI8Z99ZYW64gNIbBgRqZnWg/A3CJXS8qcze x0INfBBICJKQF5UxXIHjgNZCQkyoAdB6VMwvMFJSnUCCTpJmif3Fs2UFJdUC oFIMjWtGgDfrcC8wzSI6TUoFBqi4i3AbUJSnMD1oFaH37tXeOQlSCkjmZBiu 3bJWDxvdqRb4062SoFt5adPJRFQOPBS86usV6mK2RqJ7EJcSF6mNagffAbSr Kd6fGIqTyCv3JS8CDUCrrxJV01NNSEOZv9YAUnYTzrKnkAQVBXWBU4AciJV2 kqUiJ5TUSLlvvUnMQYjei7QHIwX0wClWx0NEqeBQkKPwqcHd3wRrfKblRSsa jbetkPLUwtJOaTXY2CyyJDyRiCwADqa+W4hbRKgQCdYosHdxolftEK+78Kka JzIlUHcEmuwFkjUFArknfrvUpJhKc4IMEnpUnZMpcIlRUARt5+VSuOr79Kxr p1qPIWSQv5liN4rYuAqAGhImowGpBC3AGtCDpEih1rBGUKTBOmtCluS5EBMz mEnyPzFZWpQyISTJHLU00HJq48O7QCdB0qNxSSUFJB6danAGcme8UbcpCjJP PSp21r+qkJEmJrsHdzJkKURr0518XkpjNIjzoWshd2OTCnUnxaCN4NQOFBfQ sq0KdhU4wwc7HzDqQ8oBUJPImjlOIyJVIiOfOhksslPY2SpH1QpKpnz2rZKk hvJOtA4sI2DgkpSobxW7zmRqAc3i0rsHZMFRKE5eStutar0MZgdDUYJMsKIQ rKk5jvJrUyp4KkaUaisgeDZtxHfZlpjQUUkjuiUZeu+9C1sRk3a0dkSRPM1h SzlKk/Oo7QcmUKKkys6DnUjKwXDGqSmKhpE8EyILk5oBiINEOgd6APM/Klhc GiCpFsoIVAnepnRBSUkA7EzXMFvcj7wlamzskbk/Oilqi9Cs5MpjQ70LBZuQ 2UhvMVEQRPWiCULtkpQqI0kmPWhfOSPwbOqJvEtpI2/Ct1FpiwBJPhJmN5oc /Bz22B3XAppslU6lRnfyoXvlEOOLWJIOnlQtrB3g0zlWvP4CsBQ7nKJIgyqd qV5CIFlCbApI15a71CnL3R30GlcMRu8o5kiYAAgCpm05WQY1jcGofALBRK2I gdKIQhGigSnXUHpXPY7O2xtlQpuQAIma+ZQCpU8udAzvBIpCEkAiSROhrEN/ wn40KaI7mez79tDeDMgLlDjgUYIJAiD6UDdsuqSpKfF3Yy9SNJB+FeZtWdl4 OgwezvVM2JZzLzKWBPlGv5UxdwtDmFqdQmSAhY5aQZHpMUuPrj+BkvS8kbPc m1yOuqSkoKgB1B2+VZKUtrS43m70+I9SNqXnDO3GvftvpaSwACj2vDvoKEQ+ l24KFJgpQsiTpOhA+VM7k2LSZriTblrcuWYQFpeGaUztr+tD2dum6vDcOz4A EKJVAilyz3NDItduQy37+2xNxISFNIcTmjUHpRqQlm9KUwtG4IVqBG1THhZA kCONupUq8UqA2oDfrtX1sgIv2ShWY5FKA5Az/lRQ2wzuUS+FONC7IlrvTM6d FVGpGU5yIKUlPvnSixhEATTa3MXDhmEgnfnFRLfd75F4hwpWmECDvl5/CgXC YZNlLlk+FiFFCYV51paN26Flx9PeqUZgr0Gm9HlcsDxsfYgkPW3eNMomDnUD pNL0sF1s2xcGZ2PEdhppNFjLOTwiEOqs71ZUswTCRm000n5GsKaKLNTipBWM 8AaQTsK5LfJLwDPurcxJLhlIEQkjYCtnUZLFbqoykHwjnRrLe4LI2c7jQdTK lKUPD6CiFFt3DPs0xmIKgTzB1/Gm52BfIDcI7i5S8yQqTBSD7M1LZq7m7WrN BIOh2H+ooG8MLlH17flaQG0oKdNRUTiwbZOoIUSdjUcs5IMZbizFx3hlQyxP MVLaOqCyM+bQgn0o5ZQtnyvFiqkqUSFCDWbNbKb9xK5Rl8MddqmOCPAwWmWk OEBKQOu56UqffSvFUpQmABqQd6lomKyePcezM8cYi0pMBF46P8Zpe5cISme8 QPU16yuDaRfc0luCfWmwohTyNDB8VC3OIsSB3yP74q2q5/BUnfWv9QG9dNlQ UHEnTrUanwGvAsanWmfTkuUKdkXwzdTjgSErUD7+VZddABAMkiJFclgByI+9 3CVSQORqJTpARmG3zosbg5MfWElJiZn86mTcw4AVbfOuawT3ZMquM1wsD3zW zd1mbPiiTO+9RjYJSMKdSi8UnrXxVNscuvvqScmwgIOv3eVfNKKIzchsa5oN M+ceHdQTArIfCoEAgHapx8nN/JuHErMDaRNbuuk6gkUODlyZUoKWkhQEDeak cUISrOdhUhZXkkL+Qaa/Ko8/eW5BIGsa8qhLBOTXPLMJIITzrZbwL6DGpHKi I7sGlxlDaDmEnWAdqwhYDBOaSDp+tSiM7mZStEFY+FTS23aEpVoBtXHN+SQO oSoASZE71lRzu6EnQmgx5JbIlPpywcuhj3V8pTX1lWQSMsDrR4ByYtlJQuY3 HWjfsnbZOeYoWmHHgwltH1UeIRqBUyUCAqRFQyTKSgQZiNRWVkEkyPKdqg5m FqJHh1PTlWyirLIIg6GuwskpmWVAtGI8XnWiSkPegPOpSIyYSYcWkKAnbWik lJhKVctxXNAp5NkFPeZUr2Mb1l05baAsSZMVGCOTKXVm1Mq230mpGVp+rKyq 5Rt8aW1knYlR7eh2MmiFR3wVJOhO+9LwTkw4sfV4QiCD8a3uHVKtfEQE84rs HGrRb7pSyvUxoTUq1qCwoaanY8qhrcHyTtuHMpXU6eVZddV3yoTMcwZ+VLa+ SeDIeQMQzEkkq0k6xWVrDiRlV4cxmTQPkl85MLe8eXTw7ydTQrjoWc0CFedA +TkjRLuhClbc5qUrQi1OUg6bmlyW52AdcrYzaSo9eVfAANDJuTr513CwTlm6 gFXhAkwedTtp/eEkjKmgZDeQfICsxIqX2WguARFQ2TnY3KFpw/TKc2pmt2W5 ZlQhRoGwc5R8pKifFv5JrGTyP92uCyj2cyw1cYMvPkmdAd/Whbt9KrBKwseJ AQqDuRp+FeZniK2JW7Afqk2TLrQErcKACd9NKdBwowdsuQJQGFCfMmaWlzkO TyKWiq5fYhRCSMhAO+vKm7TiLbiBAfHgyQFg6CR+tBFrk6fwaMuo+tqAWj2Z AE6RUbLoGM6AFLiSDm0g1C5OwS3ouLhaHG8pUlICgnfSgbFtb9zctFxwoKVK Cf4qmUcsmOFEPw1xab11SXtVNFIzfnRTTDKWmkl0N3LwUMkySABJ8txTIR7l /UXN4Zi4Ybbwd1oOBUwVJmNta0tELaxiWPunLlPnXRTUlg7OVuThClWyUJTP tJ85CSKjCFO2yZXkhQCSDyPWjkm9geAR5TycYUICUuABRiYBoVT6GroraZ7x OXJJ5GN6XunuGlkwy8UXD8DvMqQdT03/ABrCWh3tqsqEqnwjSdqlfc5rBK21 nvXcn7tIJA9ZFLFITdNPoS5C1LiPMdKPbtwCmRHu/wBl2jJBKkoWlRnfWhl3 JSwtAUpQQ2CDvp0mp87BYMqdShaMyR4kg68q2uk5EpbWYCic3UzyovDBYAX1 MWiGjELkGDqNomjkXTSLIOLbyhiUrH8UkbCiTfDBaBXXA3dKbSUqSrxAx7Os ionkJ7wqC1BBXliedR4JRAe7SQhKkhMjWdq2F+lCE5iFTrFFjyS0bG9bSloq WYCJPi20rLeM2DOGB43bTaUpVmKlADQ8zTHHP5Aa2Kfj3bb2fcO303GPJu3U AEt2qe8JMbTt865zjn0sra3uVnh/hd91WYwu5eCR8B+tbmk6LfqMSn6V/czr tbVVst2UvFfpW9p+JILNjb2FggSQW2cxHvUapmMduHabiLRXdcavt+TKwiP7 teno6Jpat5LL+5k2dSte0diiXeO4rdXKnX8RuXVOKK1krMqJ3NArv7xSoCXF QdMxNbMa4QWEjOlbZN7vJEbrEYOQJSTuZOtaJuL9tQCgmfM0WwGWTpvr5Bgo ak6HU1s5i90HAlVu4J0BQuuwmT3NcGw4gcYSM1w+2omPGNKYWvErpbGZ8P0q VUJcosQ1NkHsxph+LNPuErPdx1VpW7l13rUIcC0omSgzzqlZp+3dGnVq1Yu1 8mBdQkJmIiamVcJkjMJGtVnEvKZlL3jUSrfXWstrIbUZ2NQ4hpm5eT9dWM4V +NSOOZbYpSvfUwaBoNSyj5t7PohUSIqdL4T4swIPnvUNDUwdT2aY2rZDykwS v1kVODskgc/4oIzCSOtfO3RRAO0yKg7Jr9cBcyFGnWpDcIIBSY1iAd6nBHcj JupROYV8q5UVGDueRrsEOWTdLxTagnZe3rWW3VJdSqM1dgLPwaquA0ooyA7g E+dbIdCgZ20G9SkRnwburbCCAqtgspaUDG2gJrkju7DJmnOmumwNSIdUHSIj wzpQh5I31oU9BgHSPWsLIOYASQmalIjO59YuJDpQqYIpglTf1MJCpO9c0MTz yfKOS3CQZEfOsJcLeHJOhPPWhxkLJAXZWhRjQjYxU7lynvO7UsE1OAMmouAW yJkz12rYvNqkeIJOh5VGCXg2DyQlQSnQ6iKyFfajSRFEgWz4rCZypOp1PIUU l8EJIgiIjrXNHJmyX0FQSBvqajW7EyqU7xNDgjJKy8n6mdQBPLrWzTgBUCZM TvQNBr5JmXCVFKts2xooOJLmaZPSaCSO5PgtSyQV6TtWHHHe7AUoR+Iocbnc mG1pznRJ8NThwAJ02PPWge52TZt1IdGUpIUda+dUoOkgDVU70DW5Ke5sHe8u 0HbTU18pxXerRKfCSaW0cvuYWsDxJiRpIG9QLV9glJVy50AzwRkEMDUGBrW6 3ALfxIB99Q1kHky87lYQkE19mOUZhuJoMbE8HyVpzk5iTm2owOAW6lAaqEaa UEgWDoWUZieepPWp8qTcJjz50L2O42JnVAMjnOwnapGFBaFKQCRlpT4A8EDq cz5PeKHkK17v/wCMuiy0H348HtKzaWyytRdSQTlTGmn+hQhtmhhThypzoeI6 wCNjXmZxwsBp7kVk8hhKnXG1OJZBKBOgUdKyl1DlqhlTpczZSAT1OtJb2+4z G5CEN22IKzKILSsqYJjTpTdwMvAoZ2W6FhRM+EjUR61EUuDpZ5IkBtp1t5DS m3isgzqIO1RvZ/2g08tsJ8OXTrO5rtk8IjyHKS4ziLi4hXdJc06a0qZJbxVJ QQlaiUklXIjpQyWGTDcnsEMIu7hCnFSUlKVDTX/QpjZ3rKrRt/ICpQ1MbK0j 50UMJbETTZI6yp/Bw488kAvFK/hpUDRGYEBRPdg+I86ZjDA2aMh9wXbDTZgZ yZJ66VEjvnsQQgqELVBHUjy9anLbJwkR3CVjG0lJ8KmgYO4I/wA6FuG33Lu4 by5UuqSUkKgJJ5/jUNkrBoywEXOdwkh1tUDyAoh95lxdoQopCQoKKeZkflUR wlhkPdmiApx1xtpZlwlsKFI7UXDBUpRPjQSD0Ov6VO50cYZKwGzboZWSXRLg nQa70DfuJAWq1QSgAgmdNDtU7eAlyQOLL6GStzIQQBB/10qZd0t3EDmUJQeX 3qLILRCtLD2NuNwG0LUpW+wA0FEIcUtgtPR9shWUg7nemoW+AN9/K+tO4SgA CZBGlL7zG7Vq0SX30ogEqzK23EUUU2SkU3He07AsNw0IU+2okyTm3Fc9x36Q OF212UWtykoB8MGtbTdPst3OnONS9TK1f9tmNO2IVakJUpBALhMAHyqi41xP j2Otqcv8XeW2NSkOEIHuFev0XTatP6pLLPP6zWuzMIbL/JUHsZbFwWGVlSwf vKrVPf3JzqvEjT2UqmtxbGH7j5WGqdB+1KidIzTXysILKQUQelQThIjNssmJ mte4h2FEfA1JOMGhyiNInpWhQ2sglXPlXA4WTXuNMxM8vWtg34oKdtprjjVS WYJcQlWnOhHrBhaS5aktucoMCuOaCeHi5iOJuWT8hTScxVyirJbWotHm0svR nVBEakVBMfkm4gs0Wa2X2To8nxJGyVfpS5N0IGbmKz7IYlg2qbO6KMpuCl2A rT1rZu4WZOfTpNLwPUjBu/8AjVKHPWp+/Hc6ncbTUdqGKZlq4UGgrN89qmbW tSIRmVz2mo7cvCDU8Lck+r3igAGVjWfFpRf1K9WfFlT5TpVqGhunxEQ9ZTDm Rt9Uf+spUXEpCd96ict1uNd33w0MiEmrMelWvlleXU6VwYDI7qe/G2UymtSl SAEh0zM+zNG+lWY5F/8AydfwfQdB3oHqDWFkpZDYdTvMzS3022P3Cj1Cp8mE OuFSc6kGBEBXKpQ64kABsnSfI1Us0lsOUWq9VXZwyN27KnTPQnatmbsrQBAJ kgVXcNiwpvJv30va6xrU31gKRBVqs69KHtySpZJWXiTlKhAG81IXChBVn1Ke tD2jUyLvZfkq94qbvZfWoHQJqcHJ7mlvcFDwWCBJjnRqHym0A00POuaDizVx 8QQJ05TXy30m2SkzO0UsnJChxIXJMCdda2JbJ7wq8U7g7VK3BbRhDhS3mSoQ eprd12bbOtwzsBzqUtzs4RKhwKshCZI91YFwS5CTEDadqNLBDe5uXFlsAKMH UVOl1YAHeAKIrmlgjO5uFgJSJGbUTO9bOuoI9oRBmhwFwzVCybQJDgEa1My7 AUAZIFC0iU8chNu8sunMoaxRTpIRoJgHSaU0g8kbbi59kpChrWVrMidpiKFo Iy2crntCdzUoUUqGooGjnuzZpWVYABBUT6Vu4M1wQQZjlQNbneSVBCbhJUUn TTStVEB5SoGv40qWckrZmqleA67VGtaQCJ1AoPIzJGHWyoGYjQRWHVKLSYI1 V8ahrchPYy6r7UJKoO0GpZEaqGm00tkcGW5+8ADy11qZZKWiJkxSng5mU93K Cmd9ZqcIEhebMAnSTQMEwtCu7BEEnUxRlqlCUKynURzpUntsA2QqVlVuROpH Ssd5/N8hRBcnsbEGXW79z7QlKEpEjrXzDLibm5aXqHghaOpPMfM15mS9TLC9 oOtYThbwSEICpSqR6EVpbsoGEhzKfAo6jrpE1WysZGLZBTyEuWilEAKLwOYH QkjpTizt1LKL5hSIAynSdQNafDdvAmbwtwe3tEXNx3rhAU2rUc+unvr4NtL7 tBKEgqIJUYg70GFtknIMXT9aW04sqytAJH8szv61DkQ4w53qShJUFSRoI039 9C93uMWwZbW4GOArWClTOeOo6UXYhm2tFqMuIKwnRPOf8qdFb7gS3JrtlKmy BlyHUjLp60rOcd2tA9kFCq6f2IjwfPpyNqQmAvuwoEcjMmh1EofQ6klCkr0n 3H9aB7PISM4kXP8AeAKQSjM4cpB3BA0rLHcvWPdqgLbPjBO+8fMii2yzvGwO hdwcUbU4mEAZJI8M86xdsIQkFDgVm1QArQAigxlbkZwwdDy2UIlBDeYiRyOl QXSO7SpCQFJXlcEHnqIo1wR5NXbNarVLzy0ju2kxl0mdqHCQbN4qayJWnLr1 iu3TZ2cgS7Qs3DCVL8KtZ5Vu4ylOKFtKgIUEx1kami7Vsc3kHvFNN4m0twgz IJ6+dKcUx+3sW2kFxKe7QTvzNPSbeECl3HNeMe2TDcGw/K3dJDhSZIPv/GuA 8X9tuMYtfuIsnlJbk6z+Vep6d07v9cxGo1EaI7cnOMR4jxXEVBdzfOrHTMQB UGGkXGOMoWSUg5la8hrXrY1xgtjzc7ZWSy2W60xRm6lsiVDZKuZ8q1xG5t28 IeRcrRb5xkSpao1p8SpMoWJW1y3iC3C0ooJ8KxqD76CzkLzSR6GrPJT4PhdX CHCG33Ekcwo0UzjeK28d1fuFPKTNC8BJhdrxNfNrKncjvuimbWOounBmBSd/ I0AaZMCsoKu6KgZjoa+C5V+7zKO0VJJuIDRUpMHYkA1oG2yrMkGfOuJDmLXv UpUU5RsARRlzhDNw0lhpXdrVoVZNT7hXEpZ5GuEcKW1nYLFqw+Mw+0fWJKz0 8hU+KWNng+AC+U6FKWvIhO3rRxj8gSko7IrVxe/W0vKuHTG6QRQpMMBxKgpC uYqtfDfJb0tix2swVHKDO9fIX9sBPltVTBfzgmt7Z+8vsrKCoddgKdWuBNJP /FvKMiYSY+dXtNo5XvL2Qi7UqrbljBpjD7VrKzZo01zL3+NaqxW2QvL3oEfd bTJr1dGgqpipS2X9zCt1dljwZ/arTkKRbvOR95SsoqJeJ3EZW2mkE/zE/GrL sphtCP8AUR2zlyyJbt24FTcIBOkBO1DBl4L8V4sz00FKd8mT9NAzts9nyC8U TO81r9TUlPivHgY/iOlJc2wlFI0VaPJGVOIPyTp4pqBbOItozIxFRPIKTNIl kMhXc44yD9k06BroCDWF8SO2WVWI2z9uFaBXKlS7orLWxKxwMLTGWb4g2t20 91Ssa0yZ+qm4SMuRXNSTzqrZTVct0XKtTZU+cmHrR1pguNKDqQOR1+FRIdGZ I0MQTWLdQ6ZYZsVXqxZRO29ClmcszEGZrJuJcOZcCBr0qp2l3v8AJ82/ndOZ Q8OoAqX6wAlSonXrXdoSkah9CnPBpprRKLpKLeJn30EohxkvJqbpKbcqKiTN YVdE2/tFMxtQdofcaO3JnkRIMmo13SkuzmkfKjjEBy3NlPw2BnPX0rdVwsJz QIECpxvkHJsm8Jt5JjWBWUXgU+Uzy1FSksHdxP8AWh3SVKXEaDXWpkXIDxWV lQjpXY2O7sMlDza7gHYdOdZfdSVkBcenWuxknJIhRNpmQfDlgg+tT2zwG51V QOISkFodJuhCt6JdXLQGaTvod6Q4jkz5JUkIOonn5VI4pPdZisHX0oGgo8mq cucFETMb7it1BYSrKoEjU1GCeSZoqW2CqNztWTAfGUyZihcUd5N3HgHAjyr5 KsxCfeYpDWAkyMlTi8ubZVQvrAdVBiRvQYWSWRoKSoJyj9a2WkuXCUpUIPxq HyQjVaoxAJzgqHnRKnMzkAeZpbW4R80rK/mOlTOQLfMFaGkyW5GcGoUsJAVM jnRZUpTWUJJ20pUgWzZt1IIREgCKkad7tUkE5gSRSmtgWtiFSyVkwoz0NYzH +BfxosBntV82bd462t6EKXCgRqfOh7l5H/CKSlS32zrpoRyrzM2v5lmKbwR3 CFMLe75tRChmSk6gUTZNIdwvuXxoUAkDQg6ikqK8hPjJGbdh7D3GUpWHGXUp gHVRg7/Cj7RCrK0LZcWQUrUUnQGRyFSo43REnlYZLYpWbRxxJPeOggjYe6tb 2xUzYpezHMlyddtqlxfbkDOGDXyGHVIv2SUhSkoUkbbH9KjvHFKwwtoORaVn MCeUR+U10nhsYt8ZJrdlb9znOSW2Qo67gxr601tG3ra3cGZMuKKkhR2TRwyl kCbzsTpUVMl5ZSc6QFCOVLH0gWD1w2IbSv00qXhgx2B1vMhTYRlJdaUDrz1j Wol27a2g6p4yAnSP9dKB4aD3R9dKa+uZ0uEBMKBI5aTQeJBC7l2/EBBWJQOY 5mobTWGcjdbn2LSQuWHSHUidYJ2PnXzyyuySwkN5QqEr90be6pzvgHBu5bMt 4akJ8RCSDJ0kilyWWTffaK07srGkgHX51OFkGLZA7blvFFo74qCBKZ57frWo RLDqyonKoASdBprUYw8MLOUQXjykJyjKlKQRPlpoKEu3UnEw8lUZgNSYg5fw piWWR4KPxfxezggW8p8KLMJgag158457Wbly7U2y9K0qiBtFeh6bpfrS7mdZ NVQ7vJxvGcWu8SuVXNw+pZzajlSN1w5yZivdVQUY4R5e+bnLLIUJW673aNVG mOGsdww8ACAguXOcKVGTQ04qZMOvqRqFERrXyMfuGUlKwh1H8Lqc4+dHFCpM LscewRm4Dj2DNoP3+6WQk/2dqPdvOC8Q8V3hfcq/kTB+VHuLzFoFOC8C3CCp F7csE7QdviK1/wB0+EliW+KVp8lNzUtsjtj8mqeDsDzeDiZJTv8Au6Ja4YwR k/8Ab8noGjXYOxFeRlb22CotEMKxZWVO6ggyflRabXhxKPFf3CzzCW4rlFnO UTdNjgakgtG6I3hRFTt2GCqMpQ5PMmKYoN8gOxLgPbdw22aSpu0bUBtm1ipb PGWmUreTbMoUDIOUb0xRURTsbIrniu/Nkpvvh6Daqlj+MF+1bYdXIblZkzqa lsHBWLrHm2wQFagZd96X2fEDzF4pKFnu1HVJ1kUmW42L7d0WNm8RcWCFt7E+ 8VOyoKuglOk85qh274NiM8rJfrbDbduzabt0hKcoMzqdN61dY+q2z1yuVBlG YI3mvYaVRjhfBhXNybZXXXri9fLjjuijokHSpGWkoR4QMvwptlrsllioxUQl SFqYVlAAjToK1bQSE5YWSNfWk8BkwWtt8LUAmNjvQFyXV3Kipex320rjjZpD Srgd8sBM6mKOUmySpJQ/3gOvShynsicYNHbO3U0FKUUqOoIqDuLa3aIjN/WP 5VsafQpR77SpZdviItxTHmLG1MLSP6ulc5xzGLjFb8rddKkp9kTtWT1K+P8A ChwNpi/cwG0vXGXgULII1kb11Thq5J4MTieKOBlpqStx3YJ5e89KyqE5PCLL aSLJYv299hLWIWpdKHZhK0ZVR1joaXY1apwzG0Aew6gOQeXlT9XT36T6nwyx pbMW9vyAC6mATGs71ubhOQkq6DSvOdpsd5IlZSrMCNQB561hThzaq0UdqHtG 9zNG3t/FoKI+sf8ABAIgknegaHRkjU3CnBkzbnnUilOd0kNoUSE8q5RbeET3 4yz5TN24tHdsOEAdKkVYXy0mLZesRWhX07V2rMK2/wCRUs1lFfumv6kn7OxF xsJFsTA5HWvjh2IJHiZWJ3BOtXf/AILqOM/SZUfVdHnH1ESKsbkWeQWxnQmT UKbe7beKu4UemmpqvLpWtgt62Njr9LJ+maNy2+HSC0sQYmKkCikKzSkHWaoT pnDaUcFuNsZ7pk6HQY2GvI1uXp1B2pXaN7vBuh37FJlQmedTsPfYwFHwr0+F Q4kxkGIePeJCYiedFpelsax1jlSu0d3bkqHFZEgGd9TW4cST4gTI0mo7ENUs Hysv1tEaQelTKVOkz4Z0oGsI7OGTW5R9UA+9586w2slXnMxS2vkNPHBkqSp5 QIOgmvkOAJTAM86rzQSZ84tISVAAGZoRagSep0pWA0zAXleECNYNfFZN3y8t ajB2TVTk3hUUyNBpUi3khUeLfWgcdyMI3aeSXM2pAERNTF0qUSDApMluRkmb cQtZ1IJ2nrRmqUSHRM71WlyQzULkjLlnr0rPehLZzgnzmgxkh7oHUslU5Soc tKxnP/SPwNHhB4j8ntj6opGIt/WHFAOKKdYJ20/Khrx5KQlXduKVunSI1ryc ljkuxeXsEX1/9ZwYjuQV+EqUDsR/61FYIWLpaFKAGUlQJ1GopTl3Sycl2rAY y+42w7dJbzKUApSlafe3jnvUt1fpyNOpHtNkQNZ5Cmdz7cAOOWSM3To4ezNM nwkQsjaYqVqLhFqh05y45KgToJOpNFziLIwluCMZftLNRCQk+Aa7pJH5188b Z+2REZ1FQVlOwgx86j4CWU8mLZtTmHi4SAhHdgk669dKYm+zNdyXvGlGvODP +vjXZ7UyJLLJlO3C7RpsNgJKY1MyelLrmV4aXA4Uh3ZOsAgVzbeQYpIDcWU3 TWZWQtSrNGgnlUTykqbadbVmOQZtY57UGVhjUjR54qY+r5CJkx/obVkOpLDL 6zlQkqSU9a5AtGzndtXJceWhHdOIQEo9PzAoi6eYYxFC2khYUuVJ5ehpySxk U8sCeukLu8jacjeb1j31otIVatuAzlzQY3AigSzk7dC19w2t4HHHUhDpUkyY J9aidxjB2WCHMQt2yo5TLgPI/wCVMjXKXCHRqss9ibFGLcQ4NnU0zftOJGxT McvKkGL49auILVjcFwSIzTvFXa9Jb5LsOnamS9uDkXHXDnFvETTreHO2raFi PG6R+Vcwf7C+Obq+zG4sVqV0eJP4V67R2VaeCi+Qb+jam7hpAd12A9oTSFSz YnTUfWgCdfSkV72J9ozDRKcDDv8A3b6T+da0NZT5Zj29A1uMxSf8wQ9mnGmG 4Rld4bvQpwytYbzADppVefs8Qwq4Xb31m8ySfvtqTPxFW4Wws9rMDU6HVaV/ vYNAL6gRrufOgXCkvaEVaiZUjAClOaqB51uiSVJn0miAMhxWeJAEVKhRkRp1 1okCEW61h1JMkdAaKbcVMnQnXfSjBC21HJlGpHMHcUawsFMaSedSCMGXlZ9T rHLaikOgKKgrfmKagGarchESYnYbUG9fBguSo6/CueCBHiWPIb2WekdKqGIY y6+8oIJPvpTYxCwqcW5mWd6lQEpkkwZ60ASLJgb4NkpJUYCqYJvkC4UltclO /Oq/a3MvKeKx7hnFFzbsBl0942nwjXUelWW0x2wvEQi4QFHWFmPdW9p7lsmU JwzuZcwlDo7y3SEqPIapqH9l3Nu4XAhK/IGrjw90KRl1i4yZVMrTPkajNq7k 8G9RwcfG2fCZzESNiOlC3BcWuHTm5A60DRwM4VqcMkkARAomxbSPGoeIDwzs KdQ4q1dwM89uxl+7bZnvCOtVvF+Ig20UNqBJEeGtXW6tVQwirXXllYfssfxl 6WcPuVp/qECjLLs2x67WPrJbtknfMcx+AryPZO6WS+sJFpwfs2wzD3e8eDl2 6nYrT4PcBVrGDrvLVq2etkFplWdCViUhXWK3tF0yyW8tkV7b4RWOWMu4SyiS okxM0l4kZF1hyLnvAlTfh1Omta3UNMpaOVcEI01375SZWVhxgZXJBIqPvSnY wDXzVxcW0z1CllZTJm7khxOuaNdRXynsyxz5786DG43u+RphnDuJ3rXed13K Fa5lyPlVht+E7dLae+dW4saGDlFe06X+mZ6lK3U+mPx5/wDo85ruuQ07ddG8 vnwNLfh1pDYLVmDHOKKawO4UgFNtCR10FfRdH0fSadfuoJf5PFarq99n8Sb/ AATO4JkAU86y0OmaTQjtvYsJgXIJ8ga146TbYyVrnJ7ECMSt7VsgOnURoOVA XuMWU5y1qDMii/Z8Ldhxsc55wKV4vhyX+9U26SDMFZipVcT4eIJSfWaz7aYr yaVbkzZHFeEyAHsvkRvRbWOYW+9CrtsjYzWPbVXPaSTNCFlkN08DFoYdcoll LLkDao3sOtkwVMutADedKwb+iaLUbJdr+xrVdV1VPufcvuD/ALLK0j6tcIX5 L8J+Nart7m1tx3rSknPM7jbrXkOo9F1Gi9S9Uflf7npNH1OnVbLZ/BKy6k3C SlXmfhRrZzOaHT415vBudxO2uUISZ33NSBQS2kbe+aDHkfGSJCtBfkq2+NfK cEHJoCetA+NxmdzZp0BkagQSSd6z3qy6AqNDSGg08nxUQ6pQ1061gOzGcmBB pUkFnwbFaS2oqgidPKhzAlQUACrakBPY+C1aTE+WtQqei7k1GCGz5LilXJga TtNZU+RJj/RqMbhZySNOS6SN071um5Rn9rlSXHIO2Qhh9ObKOeogzRIfCRlK p01NV5R3Oe5slX2kggz8q3Kyls/ek7Ulo5kPeODQR8a+713/AEaLBJ7kumXn r827qZUCFEA7mN/woe8CE2LWVOqFFBzHfSvJSTLi8Ikvi1+zA5bpkLaSHABz 2/EUHbIfYQ1c92QHfCVKMGBS3nu24DjxuEPltt51TjhhcpMDkaks7Vt1JCyE pM+NSuVTHnGTm8RDk3bSWDaJUru3IkgdBX1q62nD4WQEHMAT6ae+iUot7i8b EOI2CFY2ti3dyqggQYKvCFRSuyumUX7rVwjKQnKgkTCutBPEJDItyiTuquRa NWvfEISVe0SJEiKYMQvMlsoAUqVzuJioTzyc8YD1PNLbzhYyDQZTsJ3il94l pp0DvPCgJVqY1O9MyhaArhSrrERGVIcynVXXeaEC23bV1DagAhRTB9eXWgSy 2NWxBd3gQlHdHKpKIJUYoa4vrYOIFw8iD4goKmBGulGlk7AE5e2bNqpd1iKE jIHUeLczoD7qX3nG2GM5u5S68pRCtPCmQetW6tJK3guafR26l7LC+Rc5xpjD 7gGG2LaNZEArNQvP8Y37ea6vVsNGT4nA2kVs16Guv7m9T0yireW7FNza2qF/ 8ZxA0sj7qFKWaXuOYMhzwruXepAirXak/SbMK0lssA67u0Ays2S/eqozdKKs yLVIjzohvpRGp64zkEISFa+lah2/Solt4IMQPDRJfch/T8oGcTioVIebXrsU 0Ot7F2lmLZh30JFcks8nfupfYHVjtxbGbrDXUQd0aitk3+D4w0GnkMuzoUPI BPzo13J5TAlTFrbcS432S8B46gm5wFllaho5bnu1eumlcu4t+jVfMsru+EMS +tBOv1W5hC/QK2PvrU02vnB4s4PG9U/T2n1cXOhds/7M49iOA4vguJPWmJWD 9u8ycqm1CFA+dLcroX421QBqIr0kWmso+VWVyqk4TWGjKVqSe8SN+VTtOSZM gUYoLZcIclOp2AFEsqClgFX50QIWyvKqU9aLbVok5gZ0iiQIQh1pKvE7H9re tziliwChVwjrAMmiygcAlzxBaBwd1nUY1MUnvLzEbyzW8xaqDQMFatvShbJU SsXbji3PtXpI0igsyQdEj9KAIwt3kNK1C4VM/OuOHlqh61weTop0ZiPKi8Pg NmREnrQpbjshmaP1r5T6k65jvyNNICrbHcQtVAM3K0jfenFtxzijMBTwXERm FWq7mthcopjdjj99acrjCFazpRzHFts6PG0mVaVowlCa3EPYnTjFq540teLb esuXtlcStSZWeRIq0qFPhi/qY5RhItXE6sARznSpkWNqsAd1zmM1WI6LufuA d32Jhgto83nXYsEkx4qmYwJhKwU2ts3AjwtCrken1zeZvIl6hrhB7eEI7sSv Sdk6TRbeD2raSS3rM661o06amlemJVsunLlm5ZbaSQEgA70FcENgwINXdvBX i2+RRe3aErKTG2utVPiTHWlYcu27wAERvWVrr411NPyXaIZkILXHWlWX1e6c Ckj2TzTRGZK/EkhQOo6GvneralJSR6TTN9vabtnWJPu51fOH+HWLGyau7lAX cLGYSJCPIedbf6b0EdZq++a2hv8Az8Gd1nWPTaftjzLb/ksTCVkZQkb6xRD7 tlYwLglS9w2nf39K+vwrxufN7LG32x5CbbiNtFp3KEBtJ1neK2cvEXDeY3Gb ymtCi2rgyb9NdF9z3AH8iUET50puXGxJ0NXWxdSeRTd3AyE7AnSKTXdykEie etUrZdqNuiLyI7y+SiQDSe5v5VvA6A15TW6lR2PQUVZAzeKJJCq2RdrAmTp5 15/9ol3F/sWBlYX2K/WAmyU+pXLJJq52WM8X22GBV6wHmQP3bmqqvQk5ruES STwG2vEuE3jndPoctHBplO006tbstJ+zezoUNARINXa7O6PbIrzr7XlbMPt7 bD8QJhaLd0AwNkk/lQ7ttcWdypp7MlQ6bGvBdd6QtK/r0r0P+zPXdI6i9R+6 tfqX9zZDhAQoHnp61qHFfdOp3NeNxg9OmbhUuZuepNbFxRdGWdaS0Oi8slBA YSqTrJ3r5K0quCsKMUmS+BkWzZKiq4MKI01k1kHMrxER61XluGmYJQJJj0mo 1rzApB03pawwl8EQcyLISelRlxJcWogTNRjJGXkGadWbhRUcs71s88SzAVMk DzrmtyG2TJeISUyZFfFyGsxP3oMmlNEZNmbhCW8xV5DWiEXQzqOquVLlHJOQ hu7SOR03qdy8bSkawd6ruO4eTUrmFB4iROvOsZv/AI5qGgsZ3Pfg8SW7lshU BKhO5EEa6UHiDCg0pKEkNqeKif4RHWvJz4bRYXJKq3S/gSQwtKlFmTl20JP5 UsxMOMpbCyYCUqRJ0IP+hVazbdcDYPfANcPj61BICwAZ60RYvLPdPLtipCVe FRV5iaCOz3GNbDBBaSksPgrW439nCfZOuvxFC3i3H7txNs1DRSXEiNDCZNG/ bstwI85ZJbXP1jE1XaknMju1IM6iBz8t6X4hmb4geBACAozGka8qCbTwwo7S wSuqAt7ZbT+Za0akjYUQ21avIu3wtWYGAgGNIE/OuaSeMnPOCVx20bt0i0eO XTwk6zUV673lm6l0+wgLEnzpiw8pA78sq+LcWYbZtLK7lKQhooXr/CaoOKdt OBYTduBF23CPGnXc1do09l0ti1CptFVa7WMY4wxtyz4bYU7Bl546Ntz1P+jT 63Xfpam7vlPODoISPQVsw0NdCxLk2dJo4z9UuA23w+4vU5iuEgarUdBW6rnA rEBMKvXU66KhIqymuEb8Y7YWxLb4rf3rbhtrm3sW0A6IGUn30iuXX3XT9aeW 8rqtU0xrCW50ZLuaSMZmgyAlAnrWe6CknRPWuOeVyYS02NIE7CeVbtoaE5tu g5VK53AbZlVrbluQ6ddpTWqbVPdklyffR9uBf1GROICBqAY21ofQuRlETQZH Lc1W2hasuWdNelIMbwS3Vbl9sd24NcydKlNrgZGXazXhPFHrl5yzvFFZa2Vv VjcVmVpA+VMfwLmvXlFG+kHwIbv6Plvx3a2wF5hzqW7hQGrluowCf6pj3GvL pukqTkUgRPxr0vTZ91Pb8Hyf9TadVa76i4ks/wA+CNQS65KUgyelbJsQr7g1 Fah5Fo3RZFLo8J6yDW31R1bpWZGbzogAlnC3lgJg0SnBFqOZxQJjrrU4IM/s RsIA0UepNZTg9s2nMr5mKnHkjJC+xZJBSVpHWBvSDF8YIY+rMqKW0+ymdKhk orDzyluEmoVHXyqDjSTrprRNhaLub5AyeAKGY8oqMkoty7dL9uCnQjlQZYub ZZUlslO+ldgayRN1ma894rPeT086MEjznWDuedbtk5o/HlRx5IfAS2SBAIjm aNYWUwNRWhUhDDmnV5BJ9KZWyiU6nlNbFKwVZMPZUoHoOlMmFZkzmAJ862K1 5K0mMWFkwM+vSmNusFMlXzq5ErsaW4BTpEDrR3cp7uAfgdqPOBLF94tphCs6 oNVDHOILe2SU94JGp1pVtyqg2x0IdzOd45xat10obUSdvDrVXuLh+6e7x9w7 zANeE1uqd8/sbNVagiNTyQnQn41Y8IuO9wBGY8iKx7VsXqX6hph6kjF21qMh BzHzrquCXjOIYSloK+0SNid697+lIqFM5Py/8HnOv+uUUvA2tGyzdAqA33pQ 7bujFV/WBK1Kkmfar6G5ZhseNgsWGq2xB7tXlWoSpLmhmqci8mbquH27fI0h AnTMdTQS2c855J60ULbIcMh1Vye6BlYUy8kjMR6mh3OEUXQjvjr0IpVmosks SHwrjF7Cm64EtFXCkrvHQqYgAGomezjCFOlNzf3PllgAVkXaRW7tl+F/btgk /wDZ7gNpd5XQ+8nr3uh+Ao+34Z4ZtHAW8LQfNwlX40Feiqhut/yRLUTewxQm 3YR3bDSW0cghIEVkltaJkkVdwkhOWyv47hzD6O9Q2UqH3oqDhHELhWNfsx0l aCkkc4isuUvp3LHkvJd1ZcEFCXwADNWZFsnEuC3FhCs9qMyVbyOYrUuo/a9J OqXlFCF/7Lqq7F8/2EJI7lJHL5VhBSFAZQZ1NfDZLDwfV1vubhxMEEQTNfZx 33taJ1NIkWIme8JQhJO2u+9fIJ+skjmDSJcBxRKkK70jfSCKkSjK2BtJ23NV mMeCNZg6H1qBS8mpJiOu1Q0TkhzgSpJg0MHCHDsffU7As0DwDStBJ5moy/mK SRMSa5ohvcmae66ax51gOQ0CJMzOtKaI7tzLbgCY5/nU6FhDoKSNxQNHZN2X Fd5qrcmp+9hwBU6DXWlNbhqWDbvVqSDAGlfZ1+VKcFkLf5P0CvbosMkAjIUp VodRI8qCcfNwyHSXC2pPjA6dYrxVj5NGK2yam+UxfqWHl5DITl9kAjaPWoMZ uO8U2tQJSWwkJncRvVZyyhqjumDrSH7dbiSEoCPZiprW+uEYUlsNgthRmdv9 RUZwG8NYDHVO22KwyqS9KfFMbBX51NYYi5ePspeZDYSCiEjLuIpqbjsxLims mmZtrE7dbaQQu2TmA2nUCoMfsym+beCQUONJWZM6866S2yiY7SWRULtDilqS iCgCNwNNqb2t7bM4Gu7cW2FBISQTMzqPmKiCWWw7E8FQxXj/AA3B7Vdwi6ZK gScpHKuN8afSMcaL1vZuShxJT4T8PStfQ6Kd8t+B0al7pHEuIO1LHsVzoS+W 0KXJg9aq+GKv+IeM7WwS+tx26cDYKjtPM17ajTwohsS7PqTUI/J6t4bwDDuG OEGMKw0ANpQCpY3cURqo+dPMPthcYihK1ac9ayJvuk5HsIYhBIHxPEHb24LD YyWzZKUoBIzRzoT6toMo1I60uK2LLl2rB8psoEbVlLYWmJB5mdqnCfAty2yZ ctmUMyHQSDrHKo1JAVCATRNYBUm+TKQAlS1IKjERNbpfXklFsRpGxok8HODl 5MDxgSlXnvWjqUA80k9VVDkglXLwCOZO8OZ4VEXrdCpNwka6zQ/gd9OfwRLx LDWh9rftJG5kxQF09cYywbfB2VOIOhfIKW0/rTYrOyFSUo7vYYYJw5+zbb6v bNKeuHT9ovLqo+XlV84c7PXnrlN9jYyNDUMz4lUx/L4EOT58jzjLh+w4l7Nb /hh5hKLW9tl2ygkeyCIB9xg14N447COLuEXXbq0Z/allbqIU7bg52wP4kb/C tDp+qjCxxl5PL9f6XZrdOrK95Qzt8p//AOFAazhWsiTJBo63ORwgqnSvT8ny lrBIXCVkzIOprb614AChO0UQDJUXSgqSuRHWpvrTqk5c1ECYN0vN7W2xoS4u V5NzNcQKLu5UmSVEzVdvPG7KVSTrQkm1rw/jN8oCzwy5dnmGzHxpsjs9x0Iz XiUWyeijKvgKFySGRrlIy5wxaWCCXSp5SRudB8KhtUgLKUpAA5AUCfcxrgoc DJpZQmOVEofyjQjzmnr5AxlG/wD7tuJFxbpSf4kCpBw7Y3IBtsRy+SuVWowh ZtwxLzE0c4QxFJlh5pY/rRQ7uBYwyTms1KCeaTOlN/ZZx3W4v6iZqLW8bMOW jo8imp221pUC42odQadCLjs0C2mHNFKZTMCmdstsJ0VpE+da9TwVpBjLoVrI +NHMONhWqx5zWtVJJFaSyHM3DSdS8kAGT4qNaxGyQkk3bQAE+1Vn6sE+RLi2 EN8U4Qwdblazt4Ek1Fc8f2qGlIs7B5yfvK8IpVmoS9pyqb5KpjHF+LXqFhtp DAOxmSao2KXbzxJurhSyeU6V5rXXzn7uDSqrjHgSOOJSTyoVx85o5159lsHL hKt9/OrFhby2cAT4dSZEmh7PqPAyMuzcc4RnDCn3TKnDz6CrFhuJ3Fq+FNOE EaiOVe46VP6EEjE1kfqt5LlhHHTUJZxK3Cx/GjQ1ZG73CsWtQba6bWD91RhQ r2NNud1weYuocXsaqw4AeA5gDsdKGctVJE90QOYqw1ngTGXyRKZa7mARJO3O tV2uhgEQOtLawNTRGi0zIJkCN9d61XbE6AifWKW8jU8kSmFkwpusfVlEqlCR 0FC0Gmjc26IECfImtCw0dSgAz1gUvDDyfEN+LYToKic7vuQhV0kZRoCdqRP0 rLGxy3hCq8ssXxX/AIW0Y+y/6zpKU+7rTfh/gkYUhS0RcXDggufw+QFUq9PK 21TfBYtujVXjJbsL4QdduErfaEb6VY14axZYaWQiJTlMDQ16yilxWDxes1n1 LPT4KBc4aBcON2y85aWQpOyvWgci230+1B8q+Fdc6dZ0zVyhPh7pn27petr1 +mjZHnyfKTDsBW/WsLypRCVSYM15pyNs0YKlKSJkBPM1Pa5jdKM89qTJ5GLg MbIRIO+9ZMd6CY5mlYJBXgA3AMacjQzy0hJkzB91TyR+CAOJIVm23ia1tbe5 v7oWtlbOvvueyhpJWo9NAKhtRWW9gXJLdlzwLsK7TccQlbfDjto2oe3eLDXy Ovyq9YR9Ebiq/cQcS4jw+2j7raFLPxMV5vWfqHSabKh6n9uDPs1kIvbct9n9 DSzaSFX/ABi+eobZSkfnW919FngmxWhD2N4pcKOgCCB+Ca87P9U2t+mKRVet nLhEifovcFpQCH8TI31e/wAqjV9Gjg5Ps3GJiP8A4w/SmLr+oe+wP7ZagV36 NXDKdWsUxJsjzSZ+VLrn6NtiZ+rcRXKZH32QqrEeuy8xDjrpeULHPo5X4chr iJspAgSwZ/GtP/s5Yn//ALEz/wCQf1p667V5iWVr1jg9TvWrD4S/Ay90lIy6 TFJXHrhCXEMIGQn2QJgVlWrD2PUw32Zr3Tv7OWopA8aTry3kVtevfWDbRqEN ZV5Rqkikb4wO2yaWPdhopWhThUkpCZ1I61LZtheG3DGT2UkpUeSgdvhNCsHM 3bukNoay5lCAIGplSYJ+QpjZWyEvtvFwnxqSoKnlqKbDD/kKl6Qd1sqxIMMI IQU50qJ55dB8aW3V+79QVcPKUhC2wlOu5G9C00tkFHDKpxDxCzhmGBa3oIWp KwepSCK5dxv2wCxwpzD7K4ASCZg7xtWpo9I7pFqME1l8HA+KOP8AEsVuVJTc qSjWACdaptxfKVCu8JUNDJr3unojVHCE3W5YAu7JJ6jSrr2T2jzvaIMTWyot WjayFx4cxEAT11NPuxGpsDQN26uCXyd+wbiti3T9XvSotbJUN0/rVqscRsn1 B+yu0q8kq1+Fee7We9sg08rgleaYceK0FSFK1I3BNa9zkTo2pUdDIqEhXdlb mW2XrheRFu4o8oFHW3DuIOCXG0NDmVHWuWMhqASnhhhCx394TH3UjeiE4TwA ICBYaxolkq/rK3rk14HKOSNTds2CEMISd9BQr76EpIMeekRQPcfGIrurtlBM qE+WtKLu+WT9nbPLzGEwg60Si2Oyluxc5a49cqhnDi0D95xYFYa4Lx2/eCbi 8yhXJlBJ+Jpyio8ipaiK9u5ZcF7JznS4rDC8sf8AMuF5o91XjD+zpKW0qv7m EpGiECAPKmvdfYz7LO95e5ZMPwbDsKZy2ds2kj70Sqp1lRB3pE5gJb5AnWxk M1zfii3Fh2hywBFwgLUnl0NKi90W6sN4Zx/tc+j0vHLpvinge2YYddP/ABtr ORBP8aenmK5qz9H3tNLmVnCGHJPJ8V7PQ2/VpWfB8g/UHT/2fWyda2lv/wAh 7X0Z+1p6VN8OIII0h9NENfRX7YLh3wcPsj+tcAVpKDZ5l1MbWf0N+2a6KQMP w9AO+a5P5Jqx2n0He1d7KX7zCbdIG2daz+FM7PkU4peRnafQS4mDRVi3GFq1 p7LNsT+JoF76ImD4bi7TOKcUXbqFOBKsiEo0JiaCfpGV1xmVu57COCrLEnGR aO3aUKKQp10nMAd9KnY7PeG8LTNngdo2RzDQJ/CqLm2asaK4LgjvcIaaaOVC QBsAKp2PWiA0rYEbUOdyZI5vj6A3bOGYgHnVWtrkNP5jqCINOiZ1vIwzBUKQ sFJ6V9JTBkaD41ZW4kyXSYM1hFwtsgpVBFEnjcFh7GMvp/5sDfSmrHETiUaq 33FXqrnERKAa3jLTqMpQJIqcXNm6QC0PfWvVbGXJWlHASk2TiAlbKJGm1SIs rBwxlSJMaCNKvxjBiHkIGFWQVmQjTaZ3rdGE262zCRMzvVuFcGhbbROjCLdC QCUiRqImt04XbJbIHPrT1XBeBbk2ZVaWbTOyRpzpLiV5ZsIUkFINV77YQjsH XFtlPxfGUEKDZM1WX31uOkqJmvGai1zmacI4QG6uU70KtesCffVJsaEYbarv cVbbCTlmVHoKtLjBbbhKBEVZ08U8i5vAZaOAWyQTEaRFHtrhEztvXp6GlFGd Pk3DykicxBohrEXWoIdIPkda2ab5QwU7K1JDWy4xxW0ASi7WU9FGaeW3H7yi O/bbWNzyNbtV0LOTIs0zXAzZ4vwu5b+3tyCdoM0QnE8EdByFaFHnNXIwlLgp tOPIShdg6rM3eAAgaHepDatLez/WEknnNQ6prwCrY/JkWAyaPpJ9alVhqSjV SFGIpbqszwEr615NP2OpwQnUcoohrAEKTDiVKnzip/ZrWC9bRHyHW3Cdo4cp s1KnnJNNrXghjIC3apTJk+ACo/YnnM2VrOrQS9I4tuCGQ9mdCR5GmreA4ZaM wpnMrzq9XVGG0TDv1tl3uexo8htvRuAANgIilV9K0H4VfjFGYpZlyc1x8uYX x0m7aUoB5MkDYEaGjL20Td4KjFLZIABAcR0868h+qtBHW6CUkvVHdf7n0r9N 616fUwi3tPb/AIEry/8AiUxqNYk0K+4AdIEjaa+AeT7EkbsEBEyJy1Pba3Bn TeY2pTCDmkplSo9kbVBmUVpCjEJqMZObXAM+pWRQSQVbRQazBgnly60WwLeU dj7F/o9X/Hli3j3ETrtnhCoLSEaO3A6z91Pnua9UcK9mXCnCOGotOH8DtrUA aqQiVq9VHU/GvnHW+qytslVB+hf3Zh6m9zl2rgtdpwu5crAQzoaatcHstDM+ sDqBvXhnJyWXwUG0iRWC4ay3+6KvU0BcW9o0mG7Rse6ku9R9qB7mK7lxtCCQ 238KUXl8lCTCE/CgjfZnYlMRXuMZZEJ+FJLriUMkwlGnOrdc7ZeScoVL4yt0 uEFKfdWv++dv/CPjV5QswT3xOm2GVGC2jjBDiQoJdCiep/KgXgTibq3ELCAC gAb79fSvUWJYSPocfczVy3uHnwxJSlKvED/ENvkagu4Zxp0FKvCJIBgQQDHx qtJbDFjODSwetS+nM0fCTKgdjy9aYoU0n6y42iUrSFqJOmaSDFCvsdLOSHDV FZNq41PhJTyJIMiBUi7xt3CHrsIU2s3CSCTJEg8vdTE0o4Ba9Qucxhpu1UG2 wVoGYa7x/wCprnXEnFHd4OtabhSkNq0QoxBOp/Cm0wcmkOrjucM7Ru0d99Tj LdwQ1IWEg84iuNYrjlxiFx3jrhIKjua97oNOq4JhW2KK7EKnXxAKYkjXWgnH vsjrqa2Yoy7bCz8EcFOcQuqxK+KkYc0qDGheV/CD06mus4c1b2eH9zatIaaT 4UISIAArM1dnfLsXCPY9E0iro+tLmX+DFw8qdDH51E1idzbuhTTqkmeRg1Tx k9PFjuy42xu3AAuyqP4hP406s+0K/iHWWle6KFxxwc9NXNfA4s+PXp0ayE7k LIpo1xu+6B41j+1NC18i/wBkceJBTXE1wvUvGfODU6cYuHkjM7vzoML4IdNi 8kgcde/5xJolu3cXbhsqbInMCUyr41CfwC65+WG2uE6DKpKCeaUiaYt8P2r7 6Vv+NSdiTtTU2xTik8jnDuE7BRS53CAJjMROtWRjAcOt0ApZCj5iBNWq69ss p2WtPCCXLbIzDbQSkDlQbiTOp0qLExcHkHUmolgRvVCexZQoxrFbLCrAvXLs fwpHtKPQCqPaYfecRcVLxW8bUhKjCEfwpG1DBZfcXq/TFzZf8Mw23YtUMqSC lRCSD06Va8J4Uw9D8dykQdYFeu6Q+6EkfNP1XlSrn85LjYYHhzLACWER6U0Y w2yb9hhse6vQHz1hYat2xIQke6gr55KGzECoYCRSMexXumXAFcvjXGeJL43n EKEEpCSsTJ31qjczU00Ci3jKF3SylISCowJ2FKbptvIT61Qzlmk0itYqkFs8 qonEKIZUAaahE+DlPFBSLd0TyI1qlgmNzrViPBmW+4nZuHGjKVSN4J0q08K8 MYrxmq4bwptov24BLal5c09KYpqO7BhW7ZKMeTGL8J8RYG6U4nhNzbx95TZK T7xpSUg5iAPfTU01lAzhKDxJGBmCoSdKlaWoIgjemw2ESC2nles+dH210UKB nSr9chTQzYu1kjxb0dbPQJKpHrWrXYVpIKTe5dJOmwmpUYgsIHikVpQs2ENZ JFYioic2gqFzFiAYc23opX4QPZkU32MOZD49DVWxHElOKPjJnWvP6u/Ody5X DG4kdcUtSjr5VAW3XHAEJUo9BrWIyyTIwDFbhMptVoG0r0/Gt08PpZWDdOZv JO3xpUpYGxg3uxpZNtNABCAkA7CmhbS5bydZ86vaNenIm/CeEDFlbD2dJlM6 iiGLhJHjmBvyrdpljZlCaJg9mSdda1K5kA6jzrRiV2YCvtAfdvUza9QnMJ5m tKqTK00sBbLhA0JFMGbhadj7q9Fp5vBl2xQyt7haSPESCOsU5tbpyAjvD6E6 1sReTIughvavSpKVCaa2rgIjT4VYRj2xwN7VSUoAEbchTezWmRCfhUSRmzHF stAA8O/SmLSvBIMabTVdrcXnwElai1Mk/lUclSSDJAE1yAYA9OaSPntSbFbl i1t1urXkSBJKjT0RXFyZzbEe8xziTvm0lLbZhM8/OnFsr6rhjlusylaYI61T 1SVlbgz1mnk6pwx4KrcmLlYCjI+FDPnIpWh201r8v2x7LHFeGff4yzFM2aju Qcx5A0YwT9aPLTmartZGJ7DFvIXXB0iYoRpxLlytQHl5VCIbwDLUkZlkjzph wfgaeIu0K0sXR/w2YKuP6gOo9+3vpGps+jROz4TFTfbFs9/dni7BXATFvbpQ kMpy5U6QOVXWwbb+tJCgCDXxqac600ebltLctrRtmrUIbUkGNROtCXK0iQNq x7Xv2/BXYou3kCdaQ312hKTKqr9uURnBXMSxVhpBlxPxqn4txLbMzLwEedOq rcpYR2Si43xsyiQhwT61TMR4vcfJyufOvS6XSYWWdnImcx58uyXT8a0/br3/ AFFfGtb6KC3PUdjdPWwWltQKUkK112qV69ZdU0VuSHE/aaxsaKUsxSZ9K7d8 oWnGbk4vmBAVPLlpuanuCu6xFhKoh8DMQdjqP0qs22hmFFkdswphjvUrCVZi laVa6RR7jCEqy26ghgsysqOniPL5USjvsC2C3F9h+F5M+IMyuBmDoiIAJPOl +McVYDa3KTbX1qtDygooS5m7uPT1NXatJdYvTBsONNtjzGLKPd8RWysWKkXa TmQoZs2gPKuXcWu47eWjiMPtS4kqzABYEyIPOt3RdNvg05RwaMNJfnPacaxr gbjm9xJSkYDcKSTplWkyJ9aR3XAXGluxL3DWIaGYS0Vae6vYVx7YpGffo9Vl vtEOI4Vi1o6PrWHXbITp9oypI+YpYhC3r1DCR4lrCQPMmrMcYMS2E4y7ZJo9 EWOFNYTwda4XbJARbtBGnNXM+szUIdU0O7UI1rzj9Umz6xTBV1xivCIXHJmC DNDlXi1okvBaSJmSOZ5UaxlKjPLzrvyPihragymY186bWwOSZPwpUnkcNGcw QI9KbWipiI2pbAYztVGZHzprbBRIO1Q9yvIc2meYGlNreYkzp0o4vBTmPcMy i6QTqD51b0W7SbcOZBqPWtOlJw3MbUtpojecQrD1BLYqvvfvDJ57Uu86hYyK 8QxjDMPSTdXbaD0zSr4VXbvii9vZawWyUEnTvnRoPQVmS3Zq1153lwQWPCL1 9em9xR5Vw51WdB6CrRa4YzaMZUIEAdKdjCOtt7tlwYdc7t4bQDV+wp5KmW3Q IC0g7+Vb3RpbzR4X9VV509cvuWG2dBRy260UHoXoa9KmfNXsfOvgN60gxa8I t1Qqok8ExWTnOPXpU64CobGubOsm74xt7dU/avpRvO5rMs3ka9KxEql4ctwt MnRRBpNdrASqNjVdYRcfBWMTUNZGnrVI4hKe6WDtTYiJ5wci4sWO4WATvVPP tHy0qxHgybfcbpOsV1T6Pt0G+1p9gmA7b/MH/Oos9jG6R4vieqLDD7e7Z7u4 ZQ4hSdQoSDVQxvst4Qxa5JucBtcy9M6E5D8qzq7JQ3TPVSqrt9M1kqOJfRz4 cfQpWH3t3aKPIkOJ+etVfEfo+YnbuTZ4wy5/3jZT860atWs4kZV/SYveuX8m KXexXi+2/dotnf6rsfjUCey/jBhXjwVxSf5VA1p16ip8vBjWaC+PjJlPAXFr ck4Dd6aGETFTN8GcVDbAr3z+yNaVd9X/AJIoT01y5iyZPA/FqgMvD99H/cmi UdnXGriB3fDt4T5oq3+10xXuFfs1r/0hJ7MOPAwC5gTrc/xKAqIdlnF7rkOW jTIP8To0+FUreoU4xnI6Gitfgyew/HbhOa4xW2bB3hKlEVI12AWiVzf4xcOd UtoCax7NUpvYvV6N/wCphjfY9wnYGVWjtwRzecJHwFR3XD2GYcypNnYssgfw oAqs7GywqIw4Kli7KEZo9NqpmJAJvYB91CLksGlqCsKy8qOQsoaABrW0m0TN v3ZKVJW2AakSzarGVxEH+Ic63KMPkzp58BAwlDo/4e6AJ+6qvl4HiSE5kNhw R9w1uQ0razBlJ3JP1Ai7S5ZJ7xhxEdU1ltP3Z25zVquEovDQuUk1sHMkpVpp I1o1nQSnUVt6dbIz7GM2YURqRpTW0SnJObURoBW3XwZFyHNoRPtcqaW6ilQU Ek668qsrgybksji0UkaHSfnTWzXCoJ57CpZlziOGFJgZSTTK3MjVUmNaQxLQ al0C0hQgDqdKXXuOYZYtL768QFHTKlWY/AUtZeyDUHLGCsX/ABU6/LeF2Djp 2zr0A/OkL9hiuLXHf4k+opnRseFI91WNorL5LVUVVv5Mm2tbBBmE5arWP462 yhQaWI8jrWZq7eyDbN3Q1O2aYr70POhwqCkrSCZ9KjuCkAnXXpyr806l5vl+ Wfeaf4af2N7YgskqA2jWjbTx3YTplSNYOtVXyN/AzBADhSTJJOlA25XC5EdJ FCiG9iS3wp25b+18CTv1NdF4GwhjCbIXDbcLdMzzjlXm+r6rurdUeCjdZn0o 7RwZxjc4TeIUhcp5p6iuz4FxdYYo0lTbwQ5/ATXzafol2PhmfbDO6LGu4F43 Id7t4CJmAoUC/eYhbkJU64PfIqvKvte5UwgR+5uH93Ve6ldzaKeSQXTr1ND9 GDAcUJrzAlPgp7/L6pmq/f8AZ2b4KzYnlno3VimuMXknsRX7nsRs3nZexZ1a Z2SkCt7bsO4XaX/xIuX/ACU7A+Va0NS0sIjtihyx2a8L21uGWsHtco/iRmPx NSf+z3hv/wDR7L/yhQOyb8hbDC+xfD7DC3Hri8YQq5nMguQUg7ae6q8vizBr YtqQp1agJJCcqQfU16jT9L1GsacI4XyfVNNpLr/athDcdpLLmMK/ZNgj7IgK C1kjbyAFB/7+8Srf+yUlkagFDeu/UzXodP0CmCzY2zdq6TFL948s1use4jeR mXiLxzan7XKT/oUrfxC+daPf37mnIuE1uVaCqr2RSL9OggltEBefZkhbxJ67 0E7iVq0NVmRVpwSNGOl2A3+IbFs5S5BOkE71G5fgie5dI9KB/Yl0qPLMfttl lMqt30+eXapxxXhamA2p4JX94qSQajuS2ZWnR3bphLeIWdwkhD7boVyzTp6U tv8AhjhfEXUuXeBWLjqVBYUWUggzpBAmhbTKtlMZ7TWSS4wTDnFqSypxk8id R8KWX2COWzBcuGQ6wT+8RqB69KzLdO4ruiy5XPwxYvAbd4Tav5fImaGd4WxR GqEJdT5K1qqpItr0g5wvEraEvWTqdN8pNSNpWgBKgQeelHsx8cMaWboGWnjD iSkQInqaTIdgZW5SVCSNqbWuTKCB6UvyKkhlalOg501tz4pJ31mlsRIbWrqA Jzb9TTRm6tUDx3DYjqqnR+5TmFscTYHaufbYg3puE+I/Kmyu1HAkWKW7Szvb lQG6UZQfeau13RjEo26Wy1rwhdcdoOO3jCmcOwpq3Sr7zqis0mcTxFiZ/wCK xBxKTulvwg1Wtsc2Pqoro+7J7XhVoOBa0FSuajqad2uCMWyQQkDrQRRNludg 0JbQMqRUa3QRE6CpbEJZ3B27dV3ehCABJ1J2SOtXLDVNttobbV4UAJHnFeg6 PBpSn/I8T+qb04wpXPI+Yc0BmikuiYFeiyfPZIjfWSgifnVdxpwhojX3GgkT A57i4Wp5wgaBNU+0QW+0TDlK2N20CenjFUJe7Jq1+0o+MLS1jlyidEurA13h Rqv3jwgkK0qsi3/pK7frmQRIqkcQLAZXttO9NRVseDj/ABY7CVTGp0qrJnPP v9asR4Mm33GwIgGfOr92LXX1Xt4tNY75taY68/yqJr0sPT7XR/J7IwR0Qkk/ dOtblAIQrqKydj2S5Cm2ELTHu3od6wbWvVGsb0SZMnsS2nD7b6h4RFWGw4Jt 3oK25HpV2tORl3WdhZcP7PcNyHMyCDtpTu34BwRCf6O3I3kVdjWvJkW3yYSr hDA2UyLZv4UE7heD27h7u2b200BpjUUtirmUnuVLiVDAZIQ0hOvIVQru1Su4 JyiKoWS3waFawgZyzSAZSPdQNzbI7s6bigTGiDEGkhCoG4mqhjDRhWk0xPci S2KFjkJzbCda5/iKh+01eVM5KMzS0uUtXGvsEQqKPLf2eZCgpCtQoVf0ssNx KF6ysmoUUq32MVsh4A6bba1tVywyhJZJ27rKiUn4UxtcZcaWAF+RBNb+j1Xa 8Mz7aVJDe2xwTCsqh0I3oxNxhV1Aes2d9SExXr6La7VuYdtc636WTJwzAXP3 bRQf5VVIMBw9QGR9waVoQpjyijK+xckiMCCV/Z3E+ooxnCHkHM2oHzmrai4l Wd8XyH29lepHgKDy3pkyzeBMBkbbTTM4KU3FhjSrsJH2G2ntb0YxdX+iE2yZ OmqjJqfBTcYMfYdhXGGIEDDMEuH5H3Ldah7tKsln2Z9r9+kdzg10yFc1IS3+ NYWs6z0vQf8Ac3RT+M7/ANEaGn6TqtTvVW39+F/cYo+j72n36P8AjVABXJd3 p8BT3CPo2Y5b3SXLtVonKdQFlRPyrymq/X3RKo4rk3+EbdP6Y6hJ+vCX5Gbn 0fsWF4ty2es0A+ykqPz0pXe/R64yUhSbS8w33qUPyrLX/wCRelL3KX9C0/0l qW89y/uU7HPox9q10lSbR7CFyNjclM/4aoOJfRM7b86irCLJ/mkNXyT+MVn6 /wDXXTdXX2Qyvyjb0fRLtLu8Mif+j92u4ZZpQ9wViDiWwBLWVzb0NVjFeBuN MIcUcS4Vxa3gwe8tFgfGIr5nLV03TbT5PoNbioKKfAqbZUygocQQoD2SYNGW Z/47xA8uW5o3uPysDNopKo5Zo9KmsbX6zdFUeFPnzpF0vp1uQuTwhwywPrba CIBPxq72CUBgBJASBHurw2sbbMqbxIeWbikRlqxYbiz7BSUOEEcxXmb4KRxe ME49vrdtLbzneoHJW8etXHD+N8Pum8ry8k/dVqKouzHps4+RM687oaourC5T maeSJ6Ga1caBkpKVctDT1FPdMqtNAy243SaHW3roR8ajtZBGsAHQ7jSolZht rFGotHbEZSomc3zr7Ir+P501P7kYRxFtm/uGvEU2yTzG5qY2NqGQh5xbwGsE 71+hI17YP0fGvGyPllhoAM2raPQUG8+pehVEcqLCLEK0twF57KDKqW3N42gZ lLAHmaW2h6K1i3FNhZghTonpNUvEeNb2/vBa4Y0pS1mE5RJJ8qoTsy8RE22q C+5ZuFOE7pl0Ytjzne3R9hmZDXmfOrappAJCUiRzrksFFybe5oW8wzGARuI3 qB6ytH2ylduhX9YTXbMjOBNe8OtgF2xUple4KFaUNh+NXlhiwscROcHQL50h rseQu7u2ZZ23FKSknY676xR2HuFNzkICm1+FaDqCOYNG0mIbRVOM8Me4V4mT 3ZULS7BcYJPs9U+6gLPiBxEePbnO9ZFtXbJr4NOp98UxzbcQA7waPbxG0fT9 o0k6ayBVZxwM+n8BDdvhj3/4dv4UUzhthp4BPkajMjvUg1jDWJlJIFGNYeJB Dp23B3rvADkwhnDninwvLn1opvDblXtXDg6waBvcFyQY3gri4CnnVeqjR1tw 03EmSTRcoXKzCGNtw1bBYKWwYFOLXh9rOAciT56Uca+4qztGrWFYfbjx3KFH eE1Oj9nsIlDeYjqasdkIlRynP7GqrlE+FIHzqNT5UoyaQ2/HASj8mhVrANL8 Uxiywx/6vcuQ8oAhv7xB2Jo6aZWtRSE6i+Gmg5zYThV+u5QI8KTrA51bMMWM gE+W9e3orjVWoRPkGv1E9VfK2fke2yxoAaLScuu9WTMlwYcJMikuLs52jI2o JExKbiFmVIcMcqp71obXia3fOoadSuPQzVKccMvVy2OV465/74fIM5nVH51X bxwhJg1UjsaHCEF8uEkeu1U3iJYFqtRPKnRKkzinGF62q7DCVArK5gdKSJ19 aelsZM3mTNwSk84qycAXRsu1zDHwZh4Jn1qXwHU8TX5PZGEYkHcMSGwQVJg0 8ZUk27ZO8VjS2Z7VcDBgAgEafnUik5nf8talLDAm9hzhTYzAQAKuWGpgJ9Ol aNZjXj+zWI9oAxoJo2XSPAy4qOiSauIypJeQK5YxJaT3djcq8wyr9KSXeH42 pwn9lXp6H6ur9KieWuDo9vkq2OYPjS5Jwm9AnnbL/SqxcYXetAl20uEEfxNq H5VRcZN5aL0ZRxsxa81HtJiI3NLrtvQ8vdtQLKGeCtYmAAodKpuL6JUIiaYg ZHP8eIzLiucX6icYcPnT1uULQcTBPXzqa2vn7UwlUoPtIOoNMTaeUIe6wx/h GHv8RB04ZbLU6ymVtzOnl1oe4sbq1uCy+yttQOoUINa1N0bFtyUbKpQ38MFX nTMiKwHVJVuRp13q9GeCs0iVm7WiPHt0o5jEVJjxGQa3dJrOxoo20pjS2xUh QkmPM02tMXSpQSteUdeley02qU0Yl2nGdviiYkqBIOmm1NrTEGltpSnQ7nWt qM00YttOB1h6V3163b2jbjzzhhCG0lSlHoAN67Nwd9HDj/iNtFziLLeD2ywD N0T3pH9Qa/GKwet/qDR9Co+pqHu+Irl/+/IWh6VqOo2dsFheX4R2Dhv6LHB+ HpQ5jVxd4m6NSCrum/gnX510jBeyjhDB0gYVwzYtK/i7kFXxMmvz71j9bdT6 rJwhL6cPhf7vln0nQ9B0WhSfb3S+X/7sWm34TXkAbtwkDkEwBRg4Y7sS4tCR 5mvESjZY+6T/AKm53JbI0XhFg3Oa6RI6VAqzwtC4LpPmBpSH9KPLyFuwd1nD 0p8APvoZaLRIhKDVSU4eEEQOpYAlCFGhlKaSTLS+tVp29vKYWCFy6tUphSim eorAurJxEd4hXUGkrV1t4yF2MWYnwpwfjbRTivDmF3oVoe9tUGR6xNU7Ffo4 djuMqK0cOrw1w657G4U2P7pkfKr1Ousq9sskpyjwUbGvoc2CgtzhXjJSFK1S ziDE6/10/pVDxH6OnabwoytT+Am/YSSov2C++THoPEPhWpLqUdRV2vkKU8rc qVzhNzbPLZuGHGnEHxIcSUqHuOtNcJuwYadELT86wdR61lFS5b5LLa5VARHW mVuPFOaJ20rAsF+BgytQ2Ooo5m7WnYkVRnFM7IxtsYumFAtvKAHQ06s+Mr5s gLdzD+akLureYM5pSW47tuMm3UgPJ+Bo9nHLC4gEgeulW6tXXn99ERKv4J81 u4nM24NfOtVsrCZT4o6Vp1/s8/bIQ4tAyu8SqO5X8K1zOf8ARX8Kf9Cr/wAi e1nGySUyTuPhUluu3SvO+VKAGgHM194P0rJPt2BLl5KnVLOgOsA7Umv8UtrZ BUt5IjzpM2ooZFY2Khi/GTDKVd0qSOlUu+x3HcYuixhlo+6VaeATWdZY5bIC 23sWxvh/ZvjmKXIcxy9TaNnUoSc7n6CrzgvDGCcPMxh9qO82U8vxLV76GMUk Zu7eWMweQOp+VYE/e5z6UWDjOUQQREHSK0X3aTITqetRt4ITyaurbFmqTGmt U+/aViXFDdtZpLi51jlVezd4IzgubLJZZSggEgAetP8AAcGNPAAgIMX6XlIh sa686sVwcpJIBbsY9oXB7fE/Zz9SZWlq5YV3zLigdCNx6EVwTFMCxvh50DEL VQbV7LyTmbPoaXrau2fcuGXap9uxrbXpjQmm9riER4iay5IvRnka2+Ixsuda aWmKKSmMxNIcUN2Y3tsXUob79TTFjEkggZjS2mxTiNba+WspQ3mUTsE6mrFh +DY/eoBZwm4II0UpOUfOnV6e25pQjsVLrK6VmbwWOz4Mx9ZBeLDQOkFUkfCm 7HBz6ILt6SeYSj9a2KukTfvZh29SrW0FkYI4ZYZTq68rnE1IMHYQfC2o6c1T WpDplKW5nS110+MIyMNaGzAImdq1Xh7WWO4A8wKb+wUL/SJequz7jBs2kiQ2 NudRllo6d0j3Vz0Gnf8ApOWqv/8AIOwPEU4JjSb5vC7C5Wj2UXTPepB6xMTS LjLh+0427S7riu/dct727CO8SwAG/AkJEA7aAU6OlrhFRgsYMzU0PU2/VnJ5 xj7GcP4bNm2EtXoV0zJirBY2z7a9QDH8Jpqi4nnNV022O8Nx5aKhQzSOk6Ux RlO9EefmsbM2UiUyNaX3bGZRnpQsFPAhxGySW1EDfyqhcRM9z4gNQd6rWJpF mt7nEMdcAxd3XZR/GqxfXLIkqUnTbWqC3Nd8FR4i4mwbCLcu31800OhVqa41 xh2oNXyV2uDoMbd8rn6CrMI5MvUWpbI5yXHLm/7x5ZUpSpJPOjkjyFOZnIkS Dmny60ywRz6vxTZv5tUPoPzFCMjyj2Dw64XcIaWNQoDar3geEYtjDiLXCsNu b12YCGGlOH5CslwcpbHtO+MYZbOpcO/R+7RsVSldzhrGGtK1m7eCVD+yJNdA wj6LbCSleN8UOLI1KLVgAfFU/hV6vSPmTMa/qUVtWsl2wjsC4Cw1IzWt3dqT uXrg6+5MCrTZdnfCVm2E23DlmI/ibzH51oRhGPCMWzUWWPLY2Z4csmQPq2FM I/qMAflRKcFfgZLFQ9ERRlfJk4Ne/wD5VQqNeFXSE6sH41GDsogcsrhKtWia GdsW1Jh63QZ3lINdgnIrvOGOHr1ChdYHYPE757ZB/Kq3ifY52Z4mg/WuD8PB PNlBbP8AhIoWkxkZyXDKJj30UuzLFkK+pXGK4YsjQtXAcA9ywa5Pxf8AQdxp xpxzhTjeyuNJSzfW6mlH+2mR8qU6ovbgsrUSxhnnTtJ+i/23cIWz1ze8C3t5 ao1NzhxF2iPPJ4h7xXmbEbR9jHn2X2VtuIWQpC0lKknnIOoqOxxAnJS4BSn9 K1jlvzqBaOg9irwb7T3Gzstrr0NehrzhnAscw4pxPDGX50BUnxD31RsslVZ3 RN3SQhbQ4yWSg432IYLdFa8MunbYmYSTmTVIxbsX4msczlt3V2lOvgVB+BrV o6jF+mZl6npco+qp5XwVS94Sx7D1kXWFXKAN/ASB8KANu+2TmQpJ6EVvUWqW 8WYFtcoPElgIaKwnnr0o23UoKE7DavSaS5rYzbYJja2dXnmPhXVuxXsg4o7W uNDZYWkW1jbkG8vnEyhkHkP4lHkPedK2tX1WvpminqrOIrj5fhfzZnw0j1Ny qj5PefZr2J8F9m2EIbwTDUO3mUB2+fAW+s89fujyECukWuHZ3AEI+Vfl/qnU 9T1XVS1F7zJ/2Xwj6Dp9PVpalXWsJDpnBra3YDt4tKE9OdaPYtY2qSizt0kj 7yqpNxoWXvIZvP8AAtucdunNA5A6JNLXbx1apU4T76pWWSsfqGKKXBCXSU6m o1K6nWl7IkjObmfdUZAKpPKl4+STQxyMVg5YqJJM4iUhCzrHvoN7DrZwmW9f LSqtlMLFuGm0BuYOtKZt7hwHlrpQ5XjVlqU98gdKy56eyn1VP+Q9SjLZm9tx Kjvgi5bKFdCNad2eNIUB3L8acqinVKbw9pEyrwYxjA+FOLLMscS4DaXk6Bwo AcHooa1yvi36L1jdocveAsXhY8Qsrs6+iV/rWlG3v9MuStOOxx/FMC4k4Nxs 4bxBhj9s6jYOJiR1B2I8xRVlftL0zDbrWffXhlJ5ixuy4kwQfnU4VCuorMa3 BzuToXJgR561IVDKCI+NKaJyTNuqSfao63uFgghVInFHNje1vXQmAo04tL92 ACsx61Ub7XsC3kYov1BEGa2/aCuh+Fc7pfIGEcFexFi3Mqck9E60rusfujKb SyV5FelfqKy2MeD9IucFyxPdu49dSFPIbB5Zv0pcvh125hV1fqM7hCfzNUpN z5Yl3xXtJLfhXCmncztv3/P7VRV8tqaptmWGQhhCGkADwoED5VCRVlPuZ8AD CVHfeKz3agPCYjymh/Aty8HxTzKvhX0AIBTJ99dzsDk+Cdc0HzqK5umLZgrc WkeXOhbwssDItfRf4p9mwjuWTu6vQn0FMsJwNu0bS3ZtKW6v21n2lf5UEYuT ydvLZFywng9xYDt4AJ1ygVZm7Ni0tUobAAHzrZoq7F9yzXHBq4tJYymFAaxV ExhtFlxAu0dZbctbqSULEpIO4INL1CWE2NUSg8a8DN4ZYHHMBBVZbvMzJZ8x /L+FVK2e2k78iawbq+yTRMbEnh8ja1dJTofdTvCrW+xG9TbWNq9cOqMBDSCp R9wquq3N9sVll1WRSyzqPDXYpxZiSUu4kWsNaOpDpzOf3R+ZrpmBdjXDdgEm 9L984N+8VlR8B+teg0vSV7rd/sef1nVH7af6/wDBfMN4Rw2wbSjD8OYZSI9h sA/GnbODJEFSPStyNUYLCPLW2ym8yeWSLsLVpPjjTfSgrlVkw2SqCB1NMUdh cU2V97ibCv2kbe3yrUTuTp6VleJqVqhtKfdU7cFx0uCXcQi9uFD2gK0U+8dS 5E9Kl4JwkBOuP97IcKhtWpbcKJDygfOowsDNscHwbu1CWnUmOtaG6vmVfbWx KeqaW0iMQk8cGzOM263QlR7s9FU1t7xJIUhwK8wZoH6Rc63HkaWt+ZGo05U1 t7hDoCZCVHz0osKRga7QR1EcraRFf49hOFK7vE8RtrVREjvnQiR1E1XcS7Uu zqwSTecaYM0RvmvUfrSnseKnCVcnGS3KRxB9I7sVw1hffcf4Usp3Sy4XD/hB rifHX0uuywNrRhb99fLEwW2MqT71RSLMNYJrmoPc888VfSXbvsTecwrAVALJ yl12Pwrm+N9sHF2LZwi5RaNq5Mpg/Heq8aUuR1urlLaOxTLu/u718vXdy48s nVS1kn50KYjTSn8FDkktwDdJjrTJCSRMz1oGEghllSlaf5Cu+9g/0Ou2Ttsc YxbBsFGE4CVg/tjFApphQn/lpjM5/ZEedFGORi2P0g7NvojcAcH4Nbp4guLj iO9aSMynfsbeQOTaTJH9Ymu34Tw7YYVYJs8Iw22s2UCEt27QQn5CjjCMeBl2 psu9z2H9lwze3IBS0UpPNWgp3a8HMpANw/J5hNE2VeRg3gGFsD9xmj+I1Bf3 WE4TZKffDLSUidqhNsFlCxHtMdOKRh7CUsAwJHiV50SzxTeXtr3rdyYO4GkV Od8Bdm2TVzFr5Qk3Cj/aqFV9dKE98o++iOwaG8dMSTULjneCVD31B2EBv2yX JyOuIJ6GltxZYmglVrfA9AoULQyLxyK38UxvD1H61Yd4gbqRX1txdhby+7fJ ZWOSqU59r9Q5V928RwzcsvJ7xh8KBG6VVRe0bsP7Ju1XDlscdcEYbfukQm8S 33N0jzDqYV8abnyhWDx12xf7N3FLO3fxjsW4gVijaZV+x8SWG7iOjboASv0U AfOvF/EvCnEPCHF1xgPE2C3mGYhaKyvWt02W3EHzBG3nsaXKOFlBLce9krvd dsNuDoFIUK9R2ZiwnNECsnVbTR6Hp/8ACf5JUICka6+lfO26VWpBE6VWTxyX 5IW3GHoUIUkEH4Uvd4awq7cAucPt3J0IUgH8qs13Sg/SypbVCaxJZFeK9nPC 7mJuBODMI5AIlMfClauyvh5f7pt9udsq5/Gtijq2oofOTFu6bRZ4wG4b2L2l /ehm2urnvFQEJygydgK959jfZ/g/Z52J2HD2FtpHdIzvuwMzzp9pZ8yfgABW T+pOu2a6mvStYWW3/LZf5K2m6dDS2OxPPg6NbNpW5GUU+ZDNjhP1hSQVfdFe Era7nJ+C7P4Ed9fO3FwVKWZpeskp1VVRyc5NsNLCB3G5M71EW4VINQ0skmCg bE1qtJgEHb31DIIzoPEdOlRuK186W2sEkSiqZBGvnWNSdVUts4lbtVuGAk/C mdlw1d3agQiEncnahUXZLtiS328jtnhC1YaCrpckcuVJeI7vCMGw9RaabzAa TrV+yFWjqc5ciotzlhHG8VxY32OqfnQmABRto+5lCkrNfMNTdKVrsNtRxFIf 4fi6kLSl0zVqsbtJbStDnnW3otSr478oqzjhhuKYNgHGXD5wjiOwbumlDwrO i2z1SeVeee0bsXd4Lx5Lja1PYdcE/V7hOn9lXQ1pWPuqc1yufwULYFSRgF8y PsHwsdFVILbEmUw7aL9U61kucJlGWxui4ymFyk9CIqVD6CYnelOJylkKZUDv RzBk+lV5nZGduYRrAppbHyqjNEZyNWz9kIJrafOl7EHnEqWNUp51GpROms9T X6ZPv2xqpQCNdSaykzIqMk52N0BRPsHTbzrZSV6KUIkyQNDUMU5I12QIBT50 ZgmLXmAYyu/s3UFxSFtw+0l1MKEHQjeDXJtPKAsirIuL8gZcaTuJOxFal1Zn u2VHzOgodzkj76nf3B1lCVfwCT8aNsuE7h1wLTaErP31mTRQqlNkxi5PCLJY cEqIC7pQ84NWKwwaysWfsWBKeca1p1Uqvd8lqMVFbBa1BJ0VHShLh5CE5laV YHJCHEMct7VBJWAI2rnfFHFdvd4s2hGpamSD8qoaiz0ju3G5Bb8Z27LJYuCl aFgoWk7KB0Iqrs8MuYlxD9Twm2W/3q4ZQgZlEHYQKrL97JJLc871ZemM485O 6dnn0Xbi7S1f8Z3S7dB8QsmFfaEfzK2T6DWu7YFwRw9w3ZpwvhzCmWiIzBhM n+2s6/E1uafSwq4W5irUWOPa5bFgZ4cULkPKWRlGXRRyn3c6ZW+F2jaJKc/4 VoRXwV5W54CinK3CUgDoKHfWlCIKvOp7cFdbsr2M49bWduVuORA0rl/E/Gj1 28pm3XlTtoaBrJtaLT9z7mIMMv1fXwpSoM6muhW7veWCHf4kzQy+UW9ZFJpk wVGutY7xObUaVGDONVEKPhkjrWUkR4wR6Gh8EPg3ISlXhO3Q18XPHET5Ut7i m8g15h9vdNfaNgKHMCDSN/65hL5eZWtxkb66ihT+S1TZ3eiXA9wbF0XbaSF+ KrNZOgp3nWiWzK91fY8CztJ7LeFO2Hsue4Y4ntgFlJNpetiHrRzktJ/EbGvy w7UOBOIOzHtrxTgriSU3eGPFGdPsvIOqHE+SgQaTdHDz8nj+sUelWLwVBz90 TqZ11JoRzKJlMn3Uk8sJblUXKh0NQK+W9cQaH2dCT76+AhExXHBFombkCneG 4ddYni7NjY27j9xcOBppptJUpaiYCQBqSTAAoWssOKP01+iV/s+MC4dw6x42 7Z8MaxbHXcr1rgjnjtbInUd6NnXPI+EeZ1r27e4pgXDlyxw9YW7V9izo7tq2 bju2AOsaBIHuFO4WDpbvCGeAcPXtyFLuHQ4pRlS4hCfJPlVyssGs7RAhAWr+ JVQ2ByHwANq0ddS23JOlAcVXiPjK0wq0VDgzchNcqxLHL/iTFCt5ahbpM5Z0 NMxjYhfIqvICvDy6UdgV6tGKBoK8LmhE0tvDLEVmJaZnUVgzyPzpooiWrSNz 0mtFOpA3qDsGCqedanUROtcyTRQQpOUiaSYvwxh+JNEraSlfJSdxQySksMOM nF5RR8QteIOEr36xbOLfthrA9oD86sHDvGdnjLAadUlLu2+5qnGbpn2PhluU VZDuRYZgBQOnKqH2w9g/Zx2+8BKwXjbDktYg2gpscYYSBdWiuUK+8id0HQ+W 9XSn+D8zeLOxPjDsA+mSjg/i22BIl2zvGp7m9tz7LrZ6aQRuCCDXXbG4SrDE pSdxWTrIds0eg6a8wYc3JTp+NERDEE8qzUzTYOtKZg1Ghod6k6dRRpimiS6t w5iSxGpMzRdnhrbhEiaY5Rgsy2SK8lthF34Ew9o8XIW2yClgZyT15V6M4ZxB pWHJZJEgaa18/wBV1JarXJr2pYQu2rsjjyWy2eSFCDNNHnDc4NlQZKNSPKrn yl5KDXkRue3rp5VA4qdNP1qrnCCNCYmB61GpYjbeubSRxEo+e1RnT7xj1oM7 kEaiDMGoiARoqTQyWSTATJo6zsVPuBI3qvIIuWC8PNNshx5M8wKeLDNvb+EB IHStrT1qqGXyVJy7mVLiXiJqzs1nvIjzrh/FfErl9frHeHLJ0mvLda1TlipF /SV5eSp/WT38zpVgwd/vGgDv614y+PpNWXA8aQCJAqx8NIuLla7dCZM6eVH0 yT/aFFeSvZjtyWZDZtMQDDy0hwwICtqe3vD9txRwBdYHfNhYdQe7JHsL+6fj Xs9PGMrpVc+GZ9ntyeaLnBnLXEnWFIyraWUKHQgxWEW7jftAGvHTbjJxfgqY TJBbWjph+2Qoeaa0TwvgLzxcCFNqJ+6qBRw1DisMS4/BuOC7ZSibfEFDoFpm thwhiDSpafZcSfOKZ3xmthDyiZvAcVaPitp8wQaJas7tn95bOD+zVecJInIx QFNthKwoHmIOlZz+R+BpOMEnnMoJTl7xPlXwZBMKcBPma/S3J95czICCoBRS Y6VsSAoZIrgXk+ha9jArdLGdEidK5Jndr8EiLBamxpPWKKTgzqgMqABsMxmm RqlINVzlyFscOy34ilM7kCmVlw7aIMufE61ZhQlyPVMVzuO7XC7FsSWhA2o9 ttpCRlAAq4ko7ILjY3Lg5GD8qGedytyV6HeDUhoV4jjVvatElYMCd6ofEfHr TIUlDw266Cql1qii1CPlnLsb46ub19Tdq4TymdBVfdvnjJU4SSdTNZE5uTEW Wdz24C+G8JxfifjO2wbCWVv3N0sIQkfn5Cvb3ZV2W4T2fcMNJKEXWJrQO/ul D/Cjon8a2NBXhd55zqM8pROmMW6rtoM96ppB3yDU09srW1tLMMsNhCd/NXme prbjF8HnrG8dpMqFcwB0qJxxDY0I/KnJYFi28v0ttmVQBVM4g4uZtWlAugH1 1qWXdPT9SRy/H+KXry4UO8JB2FVh24K3s5UTrNJZ62itVxG3D1u7eYshpsSS ddPnXTkNd3bobB1SmPWlmXrZLvSNiyoJ9mPStxbKCQokb1zaMuU0bAZUnLMc 4rHdKUYSkx50p7Cu7BqSG15EJzHzrKAAr7RZzAzAFQC2bLUkbpOvPrSvFCly xUnLIigY2r3IruCXC2eKQyk6KMQK6XhrLpbT8aNNFzV4TTLLYNEqSEj2dK88 /S/+jFcdr7ljxlw1f21pjdjbGzdbfSQ3dInMgFQ9lQJIBIO9HZDvWDzuqqWo g6/k/PHjLgbingDipzBuKsFfw66Rsl1IyuDqlWyh5iqu6tRB3E9DpVE8HdVO mbhNboTP/v8AzqBQ5zpXCTA9qa+ia44LsEZrnblXvT/Zt9hmH8QdoT/a3xFa Jebwt1VvhDbglPfADvHo6pzBI6Eq6VHksVLl/B+nDKEoIKTEbQaJwvCrI453 jNowh57RbiWwFKHQnenlc6HasIt7RLSAAEipaScQXV21bMlS1gR1NUriPiS7 LSm7JsncSTApkV5BfJyrGW8Uvb0uXd0kAnYGprNTKMP7tBGYaEVPkNrKBLsS o6nyovh20U7ixeI8DXPzpLWZD1tEtJzACDFYUsRAFOEkRUAfWoykTPShJRjX eviAkwQa4k1JEbGK0UQTvp51JABiVq3dWSkOJBBGtcU4oYc4X45TdWhhC1Sp M1S1cc15+C9pX6u1+TqfDuKDE+E2LoqJzJ3mmSVw8DNPg+6CYice2TRRvpL9 j9p2v/Q5fxe1skucQ8EqVi2HOAfaLaA+3ZnmFIlQH8SBXiPDkFLCRMnfyPnV XWxzXFmt0uS9URu3+7/zogEfV96xHzg2mQExOtfIjvxy1jyok9xcglLLt3jf cNJ8Sj7qsKLFNnaJbQQVRqrrXnOu6v6daqi+eTqoruyX3g7DvqeEJcUPG8cx 1+FXvDrxTCwUqrwEZS7u5CrfU2XHDMfStAbeWNOdWG1xHIQttyR616rTalXQ 53Rlzh27BLn1a8SVJUG1/I0A/bONKhaffuKfOKe6F/YHIgkdKiM5d599Ikmi SM6o10NRrQlWs/OlvY4hLLYMiZ5a19lIG80DWOCSRpIgT+NWLAw0blJNK4kk S+C7tqSm1BERFV3iPGkWlorxgQK3b7Pp1ZKUFmRwzjTitV1eONtu6TrXPbu+ CllSj86+a3Td9rkegqh2xAf2g2lzQ+6m+F4yGnRB286rW1ZiWXEvOC3YxKEs pJVzFdK4WZtMNt+8dSpTqtfKmdHo7dR9WfCKN7fb2htnhwusaVd3AJWVyADV 8wfDlNs5joTXrOkaRxslOXLeWZ90vTg5D2k9m99acT3uNYcnv7d5xTy0JHib kydOYrnC7QExlryPVtPLTauXw22ip4IlWiRuDURYKTpWWpE5N0OrQrfnRrN2 sHVVFkFpMOZu/FqaPYuAYk60z6rF9qC0rQpM5AfdWZR/0x8KL6j+QMI8Vt45 cOgeLbeimsVdIAmee1fpaKR+iI1QYc1iClJOY/Kim3+cRO9OjGKGqqCC2FBQ nKd9zRzQbCSYGtPSSCaS4CmFIUYCogwelHsrGYD86bwRgMaUMwgx76MaVpp8 6JC2EtrhGh84JrcvpAzGAOtF9xYJdYoywgyQY86qWPcYtMW6ocAjlNIss7UP rhlnL+Ju0FalFtpzMrYBNUK8xC9xC4Uq5cKUfwg1j2Tc3kC2z/TEHCkIQAgR UZcE6nU0pFVtJHp76KPCNs1gt1xhdsg3Dyjb2yj91I9oj1MD3V6XtVZh4iIA 0Nep00e2CR5jWS7rWP7DL3RM670e2sBAzHWK0IbsyXuyK4vG2WypSgB5mq1i fFNuyFBk5z6wKbyOqqc2UXHuKbh0Lh4pEx4dK57i2LhbigSpXnS5PCPS6WlR WxW7i/C1GASZ1mmeBYDi+N3I+r25SzMF1yQkfrVXuzwaVs40190mdRwLh+2w SwyNSt5Q8bp5+XpTQlQRz1FdlcnlbLPqTcmSJSUMCTPPevipyM3XnUFd4Z8c 4QFAGSJ1rH2waK4ypA1k0DYGxElSloJCyr862bOe6CVDyMHaoJwZf7tBKkqA AHWq1jeIBDSmmlSpZjeoLWmi5S3GHBvClyhz9pXrZQpXsJO48zXRLGxdzhMG BuabFJsjVWqc3jhFisbEMpkgzW2L4em+4fetlEArScvkeRp5jyl6snnPtJ4N 4b4+4VuOG+LcKRcJTISsiHWF/wASFbg1+fXbP2P4t2WcbqYeUq6wu4UTaXka LH8Kuih86pXwUX3Iq9b0KnT9ePK/x/8ARyW5H2xjXXlQ59qq54U1O/PSsgeG AK44t3Z3wLxLx5xqnB+GMMcu7ggFZGiGkz7S1bJHr86/XT6LvCjfZV2L8OcH PuNKctrPJcOoBCXH1qK1qHPVSj8qRKa70jT09MnRKZ6SbJCRR+G3At8UbenR J11q4ZjOgsvIctUupUClQkGaFur9LbZyH30CWSGysYriiASVLnzJqjY5jyU5 kpXTHsiIrLKXiOMKXMLg9Zpdh+Juqx9ttMkrOWBuaRnctqC7S4WuBv3bgcuZ Zb6feNPWbZq2tQwwgJSBpTEvItvwSEcp1qNU5oogDQxM71qraagkwCSfzrCl KQ6EyDmE6GY9a441KiFT8qicOUTlmOlQSCXDyUWpcX4ZGxrh/aLfftbi9rDr FKnXSsJCUakk7Cqeqf7pr5LukXrz8HUOF8Kcwjgy1sHlAuNNgLI686bot1vv BLZIJPIU6Ee2CQmb7pNnV+CeHfqnC6xeICxcpIWhQ0KSIIPurxP20fRk/wB2 OLL+54JbV3TLij9SUZhO4yH05V1sO+pxQekv+jdl8M4Mply3eUy8ypC0HKpK hBB6Vsky1MxymvPyjh4PWZysohKyN9Zr5vRYSfxofuKki58N4VDLt8tPidVC Z5AUc9bgXYBGk61846zb9TUTfxsHW8F9wrL9RQU+zFOGl5UxoQOtYC+StLkK auVNqETTOzx15hz94THKasV2yqaaFSipId2fFLKgA7ANOLbHUON+F0EHkTNe ho1cbdvJTlW4hH1i2eEqTlJ5pNRuMoIlt0H1q40pCyFbK9DEx0qBSJ0OnWq0 ovJBEWzvNaKKgDJjzpOHEI+C1AyIij7G/Nu8DO3nQYzucWuy4gauMPLJWM0a TXMO0jiFy3dWwVEKNT1G9vSZX4Opr/eHF8VxNa7hUKJUddaSFF1du5WUOurO wQkq/CvK0wwss24rG46wvs+4rxVQUzha2kH775yCr9w/2O9ytC8Yvy4dCW2d E/HerP0PqfgXO9R2idKwjhu0w+2TbWNslCQPujWrLh/D9w8oFSCkVpU0N+iv gzZz8stuGYA1bNglImnrTCW06cq9dp6Fp4YXJmzn3MUY6jurxt6JSsZVc65b x/wC0m1Xj2DM5Ue1cNJ2T/MPKvJdY037R3w8rdf7jFvFHNHbYiQRQjjBzada +fLYWQqa1iI61lKCk+lM8BErZUFAUY07lTvUPYBhqHfs9/nW3e+fzoATxHbm I8Xu6UwZkK0r9TJpn6KhwMbc+elMWFRAPOmxwNwNGIDGWdTrRLCiNOXSnJLA AYhQEdOooplUqmaPg7wHNqOhkUUhwBrU++jFs+cv22kk5gY3pLifFdnatEqu UIjkVa0EpJLc6MclEx3jlS8yLRK1z94+EVz3Gsau7pZL9wUyfZSayrrG3hEz l2rCK2t5JUYjWoi54faqqUs5IXXgNc0014Z4cxDibEsluCi3QYceIkDyHU02 uHdLAlvueEexuytm14Y4Bw/BmlENtNQVE6kkySc8ACAg411SzuQQCFg+lekj LDwec1acbGx1aXwQ3mBjn60TeY0xbWHfrXBVoE+dW6ZbtGdGPdLBSca4nU84 ouO5UifCDVNxTiQlxQQqSdfDVvY3qKMIRuM47irhFlhtwqfvFJA+Jre17OMb vFheJXbNuk7pSc6v0qnOWXyW5aqqhYW7LPhfAXD2GoDimVXTw1zvGRPptT5t oNtwhKUhOwAgD0pX5Me26dzzMnBT3QObfrtWF5QvzGtcVtzTUObkz51IlZjR W3KuIeDKllQCUpnoIrVbjykFKgfOhBwgdQVtHoByrDlyxbMZ31hHTzqHhDFH OyBgxiuNrCcPtVNNbd+9IT7huafYHwJa2dwLq5Ubm43zrGg9BQpNsdO1VR7Y 8lxtMJ1BPLrTu2sEIbECrMY4RlzlkYpZAQJFDXQCWyPxqxjYrcnDe0NgM8eL cYOjwzHXnXHO1PhDDuNOze6wXE2gtD6DkVGra+Sh5g1XvjmB6WFcbqVGXDWD 87OKMFuuHuN73Bb1OR6zeU0oeh39DvSU76Gs1bo+Q3Vum2Vb5Ta/oY02/wBG r72PdkmOdrfaejBMLlizZAdv71SZRbNTv5qOwHM+QNDOShFyZ1NbusUF5P0B 7Muznhjgq2suE+FbFNvaoUFvuGC7cKG63Fcz8hyruaX+7yFBIKfZg7VlUJz7 pvyeulXGEVBcI6Hwl2htLbbw/Gl5SNEO9fWr82+242HWHApB1BSZFbFc1OJ5 XU0/Sn9hvh3ED9mz9XdUVMzt0rOI40k2xWhRy04qNFLxbFL25UpFrbuq9AaQ rwHG75wqcShoHmtf5Cge42KUeSW34DYUsG+vFudUtjKPjT/DsDwrCm/+Ds22 yfvRKj76hRxuTKbewaopjcVEp0AkEUYB8Fkn8Na0WZSRMVxxHAA3k9a+I8E1 xPJiDGhFanQRNQjjUqTl1NAX2JWljbKduH0oSkTKjUPYJLOyKLi+O43xK6bH hi1UWyYVdLGVtPv5+6i+GOBLTAHDe3Czd4g7qt9Y28k9Kqdrsn3PhFxyVUO1 cst1lht3f3CWrdlSp0hIro3CvAqLQIu8RTKxqEdKslOUi8IbShvKkQBtXPu0 rAE3N8ziKEfvEd256jb5VMeRXB5Y7a+xlOI4c9xDglsE3zQzONpEB4frXmpS VtJU2sEKB1EbGsbV19k+5eT1Ggu+pVh8oGXBJ0rCNFjmRVDxgvvbk67gVon/ AHbZRz7sTX15YFKiYGtfLta++cm/kXB7jDBMRDafq7xg7DzqxtXAUiUq3rKg /BFiwyYuHJAOvka1LoCv1qX9xRp9ZKVGFemtbtYq804Chwp6wajeLyicZGNv xVcsmC7PrrTe24wBA7wiTWhTr517SK8qU+Bnb8RWz268tHN4gw9ol0QfOtav VV2+StKDRNmbc2INYVbhQ2NWWkwDU2ayjRJ+FY+ovHYKoXH7HZN02d6nVBX7 hQ2J8OHHLUM4lbF9I2JEH41XnBzi4Y2Yalh5ArbsvwZt0KRgjRPVYzfjVgsO C+4AFvYssj+RIH5UmvRyW0YhSuzyx1a8IO5gVED0pzacJMJVKzNaFfT236iv K74HNpgdoxH2Ypm1bNoEISK166oUrEUVpScuQlCOlSAUecsWKsfCThep1B0o DD0Jdti06kKQoQQdiKw9V/3kfwWIewpGO8EYSjGXWTaBKScySgxoar112e2q p+r3S0zsFCa2NT+ltB1CtWV+iTXjj+hU+o4vAnu+z7EW5LKmnB6waTXXC+J2 qoctFAeWteG1v6T1+ly4LvX2/wCBisjICVhz7ZgtqHqKym2UFAR8q8rbpbqt pxaGbMnDboToSKzkd6mq2CMM8VsI9dNaYMAyPWv1Gkz9ExGFsClYM69KOYAz CDvTYp8jeA9pYCRO9FNupQoEqiPOnojYnTf2qGjmeSD61snGrFKZDhUeWUTN S5RS5BZlXEUJlm1dV/W0FCvY5i7yYbZbb5TJVQOx+Ae0W3SsRuU/b3zmU/dS copHfW7LIKlkFXOTNVpJ8sngqmMX7bcjMNBtNU+6ui89M1QluyjdNcAqlgEx Q7lyMsTv51CRTlPAfwrgNxxNxL9XGdNujxPODkOg8zXe+HcItLJliztWg20i AEjpV7Tw3yFSspyZf7S+7h4Qo5RpvVwwXitTSEtuLzAc51FakDO1NP1Ilts8 bZuFBSHQsnlzFGKfafti08gKQREE09ZMFxlWxecBw9SlKQ2hfk5qa+RhrTCR 3dq2jzSgfpTHJy5Y/wCvKe0mb5SOR8jWqc3eAER8qhbELBspMJ51oQUwquIy YGYjfevsiidVV2Tm8GAg9Y8q2SptsSdTy51BHJJ3ziz9m2SQI0FbItcQdVCG FAHSVGKBvbBHalyENcPXrwHe3ORJ3DaY+dNbHg+zaeDn1fMrfM4So/OuUW9y HbjaJYLbBgIGWQKasYYhCgSkVYjDBUnMZNWiUiABRCWgNeVPSKreT5WiTqKV Ym6UWqjI2osJBQWWcb4sR+0+J1Fskhvwz51S+JsLU3hygU7J3pdi2PT1PtUU eDvpU8Ot4b2w2uMMoypxK3IcMbrQY/AiuGx13rHifM+uV/T6jYvl5/qsm7DD txdoYZQVuOKCUIG6iToB76/Rvsa7Nrbsr+j/AGOBIbR+0bhAucTcSNXH1DUT 0SPCPTzqnrJYrwT0mvM5Tfg6jwO2gYy9cLABAyzvV0ccHd+dJox9NG5ZyD/W Mh09ZFOcD48xfAnkhq5UtrmhWop3c4PKM+6qNiwzouC9qODYkhKL3/h3Osym rXa4jZ3bWe0um3Af4VVehYprJgW0yre5PnSfabGp3FaktEaaetNK5qcoSSFT 761JJJEVBJGUGNTr5VqJK9E/OuONSFk6nTlFZUAkQPxriTUxlyk7Vr4QnUx6 1xxA5csI1U6PSaFfxAkZWLd1z+zA+NQwsAToxq6SUtutWqDpOq1fpQzfC1k9 dB6+U7fOjUd8qU+5O1A1nkYpKPtLHYcM4heISi2slJSNjEAVa8J7N1FaXMQd PmkUXApyLphuA4fhjOW2YSD/ABc6YgADShFmaT8SsIe4Xczj2SCKKPJDOfXO FMXDSm1pBBERXjD6RvZ6OCu2D65ZNZLLF0l5sAaJWD4x+B99V9VHurb+DT6d Ptux8nHFkAwBJnWKzbeO+QmfaUBXnpbRbPSyex2rh7KrB0J6CnL1l3jOieVf MrV3NlVPDEd5h7jK8yNCDuKktMUdZhu4BjrNY9kXB5LG0ojhi+adQCFgzzmp C8D7MEUKkmJwRuOJzVCpcGJNc2ieCMOmZ51K08sL0POlNE4Dre5czgBRpvaX rsznPxpkG0xMkmN7TEXswGYkdKd2l64UCVT7606b5oqyihta3JUASZ0600YU FDXcVs1WuSK7Qc1ljYUY0hJ0yir0Z5FsLabTvlFFtNgHlVhS3FMMbGugotCB GlPUgWToHKpkprs5AJE6JnlXy1hKJJo0QVzFbs3l6GGiClJ1NE4ewUpE157P 19W5eEWfbDAHxRbJD7D3MpKT7qQqbEV9K0G+niZ8/cRKQDplpViTKS4NKuyW xCFL1mFkgpFCO4Qhw/uk1Rs01Vu045DTwRHAkE+wBWP2Ej+EVQfRdC9/pr+g fezwyjDbcDQgD1NTtYc0l4faiDvrNbi32P0UshKMNSUiHlz6USjD5SEl5Rjp RdrxuHmRKjDEkgqdV8aNYwi1UwCdYOpJkfCjwyG2Tt4c2geFCIipk2KDskCO lNjFfASwtzP1NtKJSoSahcS2hWu3WaF8HdwrxG9ZaByx0qi4/jaUIUEq19ap WvbAuTwig4liKri6Mq+dLFvCZnSqhkWWZYO6+c0ZvWg1LdefCG0lROwGtGkU rJ43O58C4AjBOC2WigB537R4/wAxG3u2q84YoIcz7kCKvUvc1q1iGBw1cGAZ +elFM3hRoFR6c6uwe4mSG1jjqmtQsiPOrDZcUOaJU5mHmauLczrqFLcd2/ED Tg8S9edNmcVZW2Mrm+9ThmTZTKJMLlsgQvXyGlbgpK/DrOkkUIrDRMlMtlKU iTuQNK3RbnIVZUknlBrsNg4Mpw5SlRkiemlTIwqEGUkK9anD8ENkqcDQZJRM 6yTRLWBtoElA8tKhRO7gxjCGyfYOnWj7fC2xoUjSmKCQtywHtYegRA26Uc1a pSPZ86coleUgptgDlpRCG0jlR4EtkmgO/urBIo+CAa4dShPtbVUOIcRdfWbO zJUo6E6wmpW7LmnhmWWIGsCSlJccHiOtVbjLDAMIcIRyobNzUhZmw8P/AEsc DVednTGJNplWHXOZZ/lVofnFeTVDXesTiTR4v9SQ7dd3fKX/AAdH+jvw83xL 9MbhmwuEZ2Wrv624nkQ0krHzSK/Ri5ahrxEExVHVrKQXSo408n9zfArn6hjX iMJchO/OauSLhKm9Vab70nTtOHb8F+WGiN1wkSDpyoNxZCt6bLOCowN+4cSo QSCkyKa4VxXiFg6C3dLEcgTQRbi8oRZBSW5ecH7S8TTlDr3eCNlazVtsePmX 0/btR6VoQsytzHtpSeUObfiCyuU+FWWaOS+y4JQ7M7a07JUccEhS73eZAKvQ 71ktvFM5F/CpINSw+Ro25p5VgWl2oeFl74Vx2UfDC79Y8Ns6a3Tw7iLsZbVX vNcdlBTPBuKLP7pCesmmNvwBdK/fXKRPSuIckNLTs+sUx361r+VPLHhbCbOO 7tUSOZ1oWQ22N27dlpMIQAPKpIihIM19XHGDpSbH7hKrcWiTJVqoUUeSGKLf C5GYp1rzh9Ou0s8D+izacWXDKiMMxVltakjVKHgpBPpOWj7Pq+j5GVWfSsU/ g8MWHFmC4m1NtfNqV0za01s7xlGItPd4CErCvnXntRpp15TR6uvUQtjmLO3c MOpXYtqB8KgCNauDCErQJHvr5XNOM3EVJkdzYJUD4aVXGGNFUlAqpZBNbjIS wDJwlSXJYdKZ130qQW9+yiC2Vg801nypa9URuU+TQvLGjgUJ6ivu8BO0++qr ljk5o+EZt6mQgyKLPwQwthKs360yt0EK1EVOBTG1oPENd9KeWSDMa1br5K8h 3bAFIgEU4tBpE6xW3TyVmMGdYmjmQeVaEOBTDWRRbYETVqAkKbHOimztrVhA MnQRyqQLAGtNQJBcYhb26PG4J6c6TXWI3V+otMgobO55msvW6vsj9Ovl/wBh 1cPLJrHD8uqk607t7cADSKjRU9kTrJCvipr/AIBgxso61WFJ0iPnXv8Apu+n RSnyRLTGm9LbzxPxFaTQKBS2nMdDWyGUnTSuUSeAhNsjLpWfqyelN7Qcn5xs 3UmZg0ay+CnfXzNVuFk/SyQc0/4fM0Yy5ImKcuAsBbZBMyAPWmCHGCAlJG2v IUYueTBdShwhB0OmtYXdgIiQTyg1LeSOQJ26OQEqNLby/OoB85mq8nsSVjGL 9X1cgK5TXPcavlF0jNuaozy2Ur54iV5airnvyqVrCcRuhKLdaU7hStBQrcwr bo1rukwlPDZQc1y8STyT+tNuGsKYOPNtBpIHeJJ9AaYsJGE9RK+2MVxk69bD K1KQTpR1s4W1SZGnxoqHue3gNWXYRrETtW/exISSa1Y7MCS3JmnlBAJHPSjr e4UE+1Pvq3XyJkhtbXiwuSpXxpzZ3yhBB123q0lkp2Ic2t8oqGY704trhSol VQ4GfNJDNh4Abj86NZcIEE6RpU9iKjSCmnJMkGOtHMqGUAAxR/TwJkFMgZpi ddaJbSJy5dPWucBDYYygBW1FNNgVCjgVJthTY2kCfKikCACaISyUQBprWQUj lHvqUQYKwBNBXWIMWqTmcE9BuaMbGLk8IU3Dt3iKyhALbR36mssYGy0j2ZPU 70OcbFxyVce1GlzZpQ34UwBVC42QEYG8JnQ0Mt0TVL1Hi76RXcJ7Ccfce27m AD/EVACvEij4jrtWM/ezz/6maeoh+P8Ac7f9Dm3Dv01rJRE93Y3K/wDCB+de /rhkpEKgqIqveswI6Z/2v82AOWis3h5n4UwscScaSGX1EmYCqya5OuRabwxs LgLRlSrSOtROeJozV5vKyV5AjyFKREVGyye8mduVAsiJcDnDQVNBQzR5irDY BxKNVE+lWoGdYyxWLjiSMqiPU1ZbC4dAHiPxq4ihPBYrG4cKQM1OrZ1RAmmF ZjFkpOpE0eyEkbVAIcyhMeyBRjaE5dhXHMISlIG29EtgcqFnEyYFSp9mlhm1 fVxx9WJFccAX2JoZBbZ8bnyFLrezcff712STrrRrZA8jZm2SG4KYrzR/tA7N t7/ZmcWlTWfufqryf5SLhvX3SabQ/wB7H8nSWx+M671+3uipp1SSDIgxTSw7 QMesNEXjigOSjmFaDhGzaSyVoznXvFnozsB7frDE79vhfi19m1fIAtLhSsqX P5FTseleprJeZtJEEETpXxz9RdO/Yda3H2y3X+56XS3/AF6k3z5DSE5InUn4 0I+wgiR1ry0o7l2L3AHGsjkg/OtUXa2yBvVRpx4H+4Ptn7O4SEvNIVy11ooc PYPdp+zJbKv4TXfTruXq5FNyhwYVwK6fFbXqFDoqoVcIYuzr9XzAc0maqz0F sN47o5XRfJ8MKvWyO9tXERvKaKYYWCJ0iqrUoe5YOck+BlaNgQpQ9RTq0SnS as0tNiJDm2AgRp0ptaxA1rbqfwJYwZjTajmvZ3rSgJYa0oAb0S24kDlVqLS2 EsnD6B7SgB5mvjiVs0mC6n4zTJXQrWZMjtb4I1Y0mIZaUrz2FRqucQuTGfIn oN6z7NXOfpq/qMUEuTZnDFKXmWoknrTO2w4JiBQ0aXfuZEpDFm2SlFEBKRpv FaySisIQ3kS8SlJwhIO+fSqvlG1ex6Z/26K9nJE4kBJ13pVc/wBJUK0XuwUD xJ2qVtJIo4nBKUeHQ/Os5D/o0wjc/M23WYEmKPZWSrf1qmj9KxYeyskR50e0 vwCVT50xfYYFpdMb6VOl7KPDJo1ssMBs1L+pMHWoXHFJ571IHclyQli9uAQx bvL/AKqCaFuMHxZTf9BeRP8AEMv40ixMoajX6aheqSKximEXhu1MuKCTMbzS r/cy1W7nuVuuK6TAqj5PN6nqvftUghvh6wtExb2raY58/jWj1mIkjXyruTAn ZKx5kxdc26RMc+dfcONhHFA02BNS36Rum3vh+To2HvJIE++rBbWrNxbiPxp2 nS5PbNuO4QMMumv3fjG+m9RlCgfGIPnWvBDVOM9yZAgx79eVGMIMg7zVuC+Q JDK2GgNN7X2hOmvKrKRUsHlmAUZpMzGtOrXRHtaDoaNozbBpbFRA05UeyIgG aNFOQwY0SAn3gUa1GXeKLBXkGNDQDMY86LQIUATqaFiHuFtydQCB60S2Tl1O tC0KYQg6CRrUyVlWg512ATcuoQiVOJSBvrQrmLMAZWJdMfdqAoQcgZ12+uYI AaHkZNfMYWkrzr8auZVrRFjMa1hDJiwIEZYqf6iUtyajYqys3FeJlLdsrXlX KuOXZw9xJPhIPOhlsi5R7j8+vpb8bWjKG+BbB4ruVupur2DohGpQk+ZOsdAK 8vHTWsbmTZ5Prt6u1rS/0pI719C1IX9NJiSBGHXB9fZ2r9C3rBDlsViM3M0M llFrpssaf+bAEMrYeK1JlINN7GzwvFGghxtCVesVmutN4Y6/PuQQ5wRdNDvs OuQtI1yKoN3DsRtFRd2biPONDR9jht4KivUtnyDm2Us6/Ct2bDUGCSaJLIMp De0tVJSEmdN6dWjZLYJTMHQdatQRRsY+smAQDzqwWLQgGrKRQmWGyb0FO7Vu E0wSMGUk0wYT4h0FcCHNCOdGtCE1DIJ0CUg0Qga0DJROgbaVIKWGZrUqAEyP jXHAr+JWzMgLzq6J1oB67vLs5UeBJ6UaXlg5N7XDSIUrU0yQ0hpGgqGyUSD2 a80fT4xC2sP9m1xobhSR39s3btgnda3kBI+P4UylZsRzPxWvCBcLIO53oFSp OhnnWoUyZhxTTgKVFKgZBCq9QfR++kwvBkscJdoVytyyEN22Iq1UyOQc6p8+ VZvV+lrqejcF7luvz8fzHabUfQt34Z65w+/scVwlu+w67ZubZ9IWh1pWZKh1 BrZZISQdZr4VfRKqbjJbo9VBp7oDeGYmRQToAMzVOfBaiwdLhbXoojnRNvib jZHiI99VXFrgNrKHlnj7iV5Sv50+ssfSYGb506F7T3K06xuxizLggkGetGIX ZO+0y2fVNXY2wt53Kzi4k6MOwx3UMIHpRDeEWQMoBHoaYtLQ3lLAOWEtYY2m ShxVEt2ak7OE1Kp7eCMhKGXUx4591EIS+Nl/Kmx7l5B2JkIuZ0dPwqZNvcq3 dX8a7Fj4YL7SdvDyfaKlepoprDUAyE0yOncnlkOQYzYJA1FHM2SUgaVoQ08Y rIlyDGmEpqdISBpT8pcCzYGNqwpVFFdzIKvjt2LnEg0kgoa09TzpUrQQBFe2 00fp1KJWluyBxOYGaVvCXyZO/WrMeSCICVbVIhPXSmo5hKUyjQ1nIev+vhTc An5s2mBXS1BKGlx6U6s+EcTejIyr4b1nQbb2R9qf6hohymPrHs5xt8JhETp7 Jp/Y9j+MvEFT8eiJq1GLfgoW/q2qHthn+ZZbDsMuHYL908B5AVYLLsDwyAX3 7hXquJ+VWFV5Zg3/AKu1MvZFL+46t+xXhO1AU/Zhwp/jWozRrXA/CuGj7HCb VMc+7E/hTFCKPP39a12q2nY8fbYW4wLK1tlIaaaQByAiuT8T3rS3ilETPLeq F8lEnS90pZZRL+zSq7UvLOugoJy2CUwRoKz3u8G2nsA3LAzSkDXeldwgAGPf UDPyK7lGhPI9ajwNsJx5e3sEioftZa0v8eP5LbZ3GVQANP8ADsQyrEK91M08 sM9svVEtmGYiy4gIKhPOTTxvDbDEEwqATz51v14ayUpuVbyjLnBpEqtbhKk9 DtQx4fv7YkOMGBzSZFXIoOGojNb7M3atnGtFpIPpTC2bPSZ86ejptMd2jaoE AwBrzpzaIIIR59KLKM+bGjIIE9NKYNyWgNZ31okU5bhrK8qMxjTcUW0oAeLp RCGgxt1KRlOtEtvI2kfGhYlonF2gaFYT76mF+gKgAqPkKEDsbMjEXckIYPTU 1uh+7XEqyyOVA38B/SS5JBZuPGXCTRjFhCANxQoGUlFYQe1Y+HUUaxYAa5aP JSnYFi3Q2mTQd86lDZiuW4mGZSKpi7pUFbxXl36UPbxw52ScILsO+bveI7xs qs7BJnIDs67/AAo6DdXLrSrp9sDQd0aIOyXCPzL4kxrEuIuK7rGcXu1XN3du F151Z1Uo0lOitSDWUfP7Jytm5y5Z0TsB42Y7P/pV4FxDeOZLMP8A1e6JOgac 8KifSQfdX6pWXdPYeh5pxLiFpCkqSdCDsRXPg2unz/dOP3Ir61C2vCPOkizc Wd2XESCNqqWRzujTymsD7COMDbhKHlnTQ1d8L4gw++YSh7IQrfNR12Z2Zk6i lp5QzPDPDmJjOlKGlHmgxUDnZslSCbK8SRyChTvpp8FH60o7Mi/3DxZna3zx zQana4fvGISu0cT1lJqYwwBK1MZ2eGrTrlI9RTu0sykCasJFeTyPLS3MDSab MNEQIqRfgPZZJEUcy1qJmuBDmm9RRSECoZAQhMDyqYKQkSpQHvpbCRhV9aNI 8TyfjUH7aYyeFCyTyqO1hZIlYpdLVDTIT671EW7u5P2rqo6UWEiCdjDQNSPj RzVs2jSBQtk4JgkAaCvqEkwogJk7CvzT/wBp729YZiF3ZdiWAXrb67F9OIY4 pBkIdCT3LOnNIUVq6Ep5g1c0ke6zPxv/AO/zF2PET853liTA+dCz9oR93Yzr NXVyVmSIylW4Hvo620PPrtWlSslWw9rfRnxO5Z7GbBpD6u7yQU/d0J5V6Bbt lXDAUj2onevmnWulR1Vs5w92X/M9LpruyEc8YQFdWjzRhSTS51CtlD3V8z1G nnTLtkjahJNbATyY2oYrWkyOW9Z0kWYkjdxlVor50wtb9SCNTPnVdxXg5ocW eKLn26dWmKlRBKvnXLKRXlEeWeJSkJCt6cWt6lceLbzrQqtxsytKOBpbv5tz RzS0n/1rSjLYU0FNQRrRjSUmNqYnsLYW22mNKIQ2I6U5bgBCEJmKIRA5CnRe AGghtQ6VOlQ3p/flbAYJEr0rbOK5JtkM+LoSgqWQANSSaQ4lj6VhVvZKmdCv 9K2dFpu+XcxcnhCcSqJk1g16ZFYgdAANKnUyo/jRRCRGkGY1qRtOulORAWgK yaCtoX0+dMwCeOMEwSzKxmbBmr5hmEWaECGUx6UFUUa19kmyz2FlboAHdjyM U8s2GUIBCBVxLBmSeRszkCdB8K2W+hBAUoenWpAwAX14A2dQIqq4niyUz49N t96CTwh1ccs59xLjhUFIQ5Pvrnl04t65WpeuvWsS6XdLY9HpodqF96gSmdTE 0ueSIAnfrSn9i4uBZdCEmTSe5ABMx03oRvArfSnxTrQtm8LbiFK1HwkQoDpU tZQ6qXZZGRZEKEBSFSDsetFW90pC9zpS63g9zVNNZHNhioSseIACrVheNkZY WfjW9p7ArI9yLXh+NgpHeLBI2M08tcRZc1UQfdWrF5MycMDFtdu7qtAVI6UY 1aWh3t0SPKjK8sryGtWFmXc6Wh6zFFsWNpnSqVdYmpSYl9wW1aW6QFAqMGfU UV3bYHhQfLyollisNkiWTvBid6KQwFHUmAOXOj3IaCUWye7+8df4qKZsgUiG z6nrQvIt7BiMPUYUUJnrRjVl4IMUGRbkidFi2D1NGNWewSkV2BM7A1mxIVJo 1q0QNSRFdwUpzCUNtoOtbKeSkQKlIrPMmDuuKV1pZiLqGrNbzziUNoEqUtUA DqTXNpIsVrB44+lX9MVns0sP92+zu1bvcYvELT+0nxLFsBoShH31a7nwjzr8 3+JeJMZ4q4vusd4gxO4v7+8cLj9w+4VLcUeZJrMts73sY/VNT3NUx4XP5/8A oSONOvvBtptaydgkEn4U3wvs94pxVTwAICAMmGLYbV997wD4HWkNpcmHGEpv CLrg3ZTh+Hxc4s+bp1OoREIH6167+j1254b9Tt+zviu9Sw80Azht04qEuJ5N qJ5jl1oFLLwammX0Xj5PRLqJTPwpbdMJMwBM0LRp5wJbq2CVKUnnUDOJ3Vg/ 4HD8aqtYeUS8SWGWbBON3UuBC3SKvmFcbBSBmdEetWa5mVdUWuw4rQ7BK9/O ntpjDDoHiHxq0mZ0o4GLN1bueFTaDRbYtFad0j4UYnAQ0hlKfCkCiGyIkAgV OQcBDbiwdDRKbl0bRXZOwSi8uQICgK2F1dqHhciuOwbpVdrVK31RUibdS91k ++oOJ27FJ1Aohq0QU6CobJCm7VCRqKnQ2gDSltk4JNANK+SSU6iKgk2rUqAr jjyL9MT6cHDnY/wrfcDdnmJ2+I8aPIUw4+0oOM4SSPaUdlOjkj7p1VtB/I3i HGr/ABrH38SxG7duLm6dU6686srWtSjJUonckmZ862a6/oUpPmW/8vH/ACVZ y7nt4ED6pUdYFRA+LlXLkWyZsAny9aOYTKgQPlWvpkVLD2L9GhWbsmsgDsVD X+sa9MYWU90gHp1ryWoX7+a+7Nyr+FF/ZDtlll9nI62FJ86HueFrG6lSCpo8 uYrH1nTqNbHE1v8AJYqulW9hHf8ABl+2CpgpdT5K1qvXeEXLDpS6ypPka+e6 7ot+lbeMx+TZp1EJgX1ZaTGWpEJWIGwmvNSrcUXU0GtFQQPmaZWzxBG8zoKT KOBbHVrcL7sJzU7s7pQAGlStnkRIeWlyJ9qm1u/KRP41pVNYEMYsugwRRjTp 061ci23gU0GMu6CjG16f51YjlC2ToUdNanQunJN7AMISrSPzqZKtKuQqbFZJ 2GX3lQ02pRPSt8UYfwjhp/ELhKfskZgjNqTOgrd0vTpWPueyEymkUG6x2+xJ wpedhHJCdBWWtEyK14RjBdqFvcIBNfGetNBB3iA2fSli/apkWcaAa1MgHlT4 kMLbSO73itso600E8kYMUnJBHrVxw9wiJMfnQVcGjdhPYsVmqTJVypzbr8Iq 3koMNS8lKNzQtzdRJriBFil/DZ8Vc+4ixgh4oCh5a1WtlsXtPHLKbfPqfdJm QdNOdJ3kBDh10iseW7N+vZYBLxANoF5ogxSt4jcbxFQ0kNQsuZ1mk92nltzr mhyYquAMpEHeliiQ4FKEGYianBJNhePJs3hZ3hlomEq3KDVjQQWw40sKSRKS DIikyj2vJ6jp2oVlfY+UbtvqQ4NSaaWeJLbIGarunng2luWPDsXXmBUqRvrV jw/G4++Y/GtyqeVgryWSyWGNSkQsTO3OrDZ4sFkSvX1q6lkpWVoeWt6FtiTI pk0pDioEDnpRrYptYDmkkpAGvrRbLaR90a0eRcmHNtgnlRjFsiJgE0OSvJhz TKUplIGtGMtSkACZ86HGSuwpFuI1ohtlM67eVchcngJQ02DrFTtlA84riu8s lS5poK3StXI1Ipo2GdRqRu3cedyNoUpR5ASahySAbUVlhK8Ieaty5ckN88u5 rhvbXidwuxNih5Qa18AOh/WqN1ra2M79s+pZ2Q4PEfHXY5Z9qvaG4/f4q9Zt 4d4crSAorza7nbaljP0auz3B1pL9vc3pG/fvGPgIrOz2or3VRnc2wh3hHhvA WijC8HtmABoUNifjVbv209+op0ikN5GqCjHYSXhCQrUzVD4tWtDOdlakLCgU kGDvvTIvBWszg7R2KfS9xrhexY4b7R0vYrhyIQ1foM3DI6K/jHzr1zgXE+Bc YcHW+OcOYg3eWV0nO24g7iY1HLUGjbT3LlVnfHfkzdIkHn1pTdMhR1ToPOky WxYTFyyppUoJ03IphhmMvtqKc5ApOWmDJdyLVh3El0lxKSYSOc71b8M4mUAl IcJ99XIT8GZbWWrD+JATqvX1qxWOOpWIzT76tJ7lCUcDq3xRtceIRypkzdoU keLeiEtYDWnkwNaKbykzNcCEthBMaUS2lAA864kKRkqZASDMaVBxICJqVJAG lAyUSZiUEA1lAhIk8qEkkT6mttK44Fv8StMPtFPXLuUJE6an4V+bH0zPp78d I7Sca7Juzcr4esLB02d5iLTh+uXJygqCVD90jWPD4jG42q/o64OTnPhePl/8 CrJNLCPAGIYpc390t+5eWtSjJJOpnelbpKiep86tzk5y7mIxsCuEkT8hUaR/ FqfjQpbgsnajN7U+VMbbU6p0Hzra0qwUrWew/oupz9lVqByW5r6GvSmF+ykz yryeqTWpn+WbtLzTH8IsFrAVB2pij2dKTgI3WAWidqrOLoCr5UgaUFiTjhh1 vcRP26CT4R50GppCR4mxp0MV5vWdJ0+o3xhmjXdKJlC7VK/GlQHlRbDlh/8A mQk+YIrzF3QrIv07ltXZ5Gtqq0JGW7aPTxU6smm90uoM9FVmS6XbF7oFzyOL VChoKbWwWIkSDRw0k1sKckM7eTptRrSVTIBq7HSy5wKcgxoK0E0ayy8tUIaU r3Gr1ehsn4FSkkMmMLv3YCLZfv0pnb8NXy4Lim0DzVJrXp6RY/dsV5XRQyt+ GGxBeuSfJIimVvguHsgFLOY9VEmtyjQVU78sQ5uQcltCEhCEpSPIRVS7S7kM 8BqaCtXnUp/P8q0OEActtz4hJpkydoNZCkMCEkBOtfEjTWmJkA9yqLdXnS8w TTYnM1GpOlTtog76VZiCHIT9mImtsvrTQcnjrBHMqRMb61crF4d2mTS6uDSu 5LBZvwgAHTnTRl45RrA9atJlCSJzdEJ9oRQF1dnUk1zwckVvFrwhpZnSJ3rm +O3Kl3p159apWtGnp1uLUxlGpAoG7IStUHbnWbJbmrBgjyc2FOajw6xSdShG 4qGWI8i+4E6HX8KVXQGUwBUfcathPdJATEzvoRvSp8faSFelESJ7pf8AxY5a 1hfEV/gTC3rVYcSB+7Xqk/pRtZWGOotlVLujyOeFO0bBeJ3k2Kkqtb9RKe4X qCRvB51ckNFJ8QM9DQpfTeGer0urhqId0WMrQqygnlTqzeWImZNadEsItuSH 1jdOCE8h51ZcPvwGgnMDGla8J5K09yxWV+d0qj309s8RBjMfnVgpSQ6t70FQ Vp60yYu5MzAo0VpIYMXCZGo9aYtXCcoTvPSuaK8g1q4G87UW3cAjeaFoQ0Fs v+ETU4WTAk1At4JW8yjrNEIbUo6VDYqTSDLa0ffcDbDTjijyQCafWPB2MXAC nGUsJ6uqg/Aa0qdsY8mbfqa6eXuPLXgyxthmu31vKG4T4U/rRS2bazYLdqyh pP8AKKpuxzZ56/VTu24RWsce/wCFXryrzf2qS/jHdyNTFKt9oWl95wHh63Ke KcYSoCQ6lJHuNYxtrxmOVVnvEvzf7woeNoAKtDBqgYlPfKkDoYqu+dhmdivX yiEGNK5/xY5CQCZlU0xcFWZXELTm+de0vomYkp/6PyLdDypt3XWt+i83/wBV HEPTvEj0A39sACdSKgu8MuvaS2VDmRvUSg+UXVNZwxFcWy0OKCkKT0moGWSl ZnlVRrMhngaWrqkq032qw4c6oQQI99NT3KliLHZXCkx4onzqx2F0sKAzGrcG UJof2V64AEhWhqw2N2qB4tKfEqSQ7t7orgTTJl89aMSw1l06RRjayY1qDglt R60UgyneoZxKnaJmpkHw0LOJUjrW2dI3NCEbBSvupPvNRvqUlsyv4VyIZTuL rjJgrys0eE6zX4YduONftr6WXFuJgz9Yxi5UNZ0DhSPkkVeq2QprYombMgnN uN6idIKiDG3Knigde+/mNa1BGc/PWijyAwhgDMJMT8KYs+JYnT4a1vaRLKKF p7H+ie2Xuymc4+zdd5V6Rw9JDSBM15HWL/qrPyzdo/gx/A/tNd6YNJnWZikI Nky/3G4FVfFtcTWJiaiXAcORO6CNqEUkdKqtFmJH3IMVsiyCtTSnHIecBrGE hxWiRTa0wHMoEaUP0FIhzwWCw4dVnELX7lGrNh3DLikgl1Y/tGmx00PgTK34 LFY8MthIzuLP9o0+tMAtkRKZ9TT46eteCu7GObXCbVEHuxTVi1aQjRAqwopc CW8hrSBl6UQ2IqTiZI51IAJoGEuD779c07XsUaYRYWa15e8Utep6QPzpNs1X VKT+CVyUa0cSsAp1pqzt5VjwmpLKGk42rBM05M7ANdKhvbnQRjNT4MFmUx0F TsiVRNWoAsYtj7LSto9PhTgDxVgr4CBJEHzq42DwLY1kjzpFT2Na5bjy0f0G uvrTNl7TRUGrS4KEiVTxI32oG7e1Mq9alkpFaxZZ+rLUNz1qgYk2pV6SRudB vVK00KNiJltRt9RoN9aEvWfASNQedUbFuaUGsi//AJDiYmQaRvEDoIG9DgtR 2YE6qdfPellxqFA1HAwUXY3PTpSe60kTyqcBeBPdjxg86T44sJwhySDpApiC h7ih4BiP7L7WmbpBgM3iSdeU6160w3uX7dPegKSpGk+lK1W3bJAaSxx7u3w2 E2VuytkKiDMabUeh20s0j6wsp9RIoKNYoyxI9FHWeJDewvLF1ADN0z/fg09s mwpYLakn0VNehqtjLyPVsXwx/aNuJbScpHkac2gVvEE1oRmBKWR5Z5ssyfwp rbZyqOflTO4qykMmUuHQTTFhpwJ0n1FH3ITKQyZYcP3CPOmNtY3Tn7thR9AT QOSKk7Ix5Y6s+G8XuAMlk7HmMv409suBcVc/ehtv+sufwpErUjJu6hRXw8/g e2XZ+wI+s3qj5Npj5mnlpwlgdqQTad6erqir5bVXldJ8GNd1C2zaOyHLDLFu 0EMtIbSOSRAqQqAGlVuTMbzuwN9yZ1pVdueFRpyQJVcaUTbL15V577Rk5uI0 GNlD8aC3gu6b3HE8LaR/vzj2UQBdJHX7s/nQeOoglQ86rv2lyX8RnPMfHiVz jzrnuKf0hW29VmPfBXMRUO5VET61zPi58nEEIB6nemR3KlmyESHyDEa16z+h piQe4YxbDyrRm6zDXktA/wD6aZFYZNEvWeqbMaJOk9aeW4BAgxT4j7CHFWGX cLyrQkkmJia5+9dqtbhaS0leUxEwar2wjyWKX+7NrfH7NLv2rDiPMeICnuHc SYCtQT9fQ2rosEUhbMmyDfBaMNxLC3iC3iLC5/8AiCrRYusr1Q82oHmFTVqD RnWRaH9mkHKcw086sFkrQAnQVYiUZju0PhGtNWFAjQ0YkOZUAQSqjWXGxu4I 9aggIRdW6Tq6n40S3dNH2SpXoK7BAQhbqhKWyPUxU6Q4d1AelRg4mQ1rKlE1 MhCUnQCgYSJZ8E0HdqhJBro8nPg5p2p4mMM7M8SvlKj6vbOO/wB1JP5V+D3E N0u84ofvHCc77inVeqlEn8atwaSQOMxYvCgUeU1ookifzq0VmQqG5HLWtRE6 71K5BYWwITO1M7VIIAEeLbWt/SGfce3/AKOHD6uG+CkYasnvFtJedJ/jUJI9 21d6w5EITNeIlf8AtFkrF5bPRqv6UVD4Q7tEkO+EabUwb9jxAa+dEAbrksEE 7VV8XM4mtPnrUS3QcORS7vE7UGv29fdFV2iyjdsDp60dapBOooUgnwO7JKI8 hvAp/h7aO8EU+KK8mWOwbAjb3VZrBAyCKakIbHVugZR+tMmBEACjwLGLIEaU a1MbVwLCG9RpUyR4qFkomR7NbiOVAw1wfHRJ8hXnbt6xRTnaWxZoXpb26Z15 kk/pXmf1Na6ekXSXwv8AKGVrM0UjDMfu7VQhRIHImRVsw/i63UkJuBB5kV8v 6N+p/pYp1PHz/wAliVflD+2xWyuGxkeT8aJ7xCkylQNfUKNVXfHug8oSDXW4 FCEeLUiK0oNYIZsjbnRTAGcdatwYDGCEju62yJqwAeGMIeEJCquOGP5kDXlV WpprY2rluPbVznmpxbuSiauozmiaTHzoJ+YIrskIUYgwpbahBqp3mHZrsqyx rVWSTLtTwQIw6GVD30vv7NQZKiDVS2KW5drluIEAfX+7IkK0pC+kpuFp6HrV fwaEQB+ch1I/Olz8RqN67G+R+yFV0kGYAnrSS7kTJo1jBzE1y4UOEjWqpjt8 l94toMpbMnzVTEMqy5HPXHFN8UvkTOea9acEYqnEezmwv+81cYSVHziKXrE/ pplHRy9c19y0YblLBEyZFbYsCbBU6QQawuJmvJ4YnbR4gY99NsPZeKxkdWkn oYrVqfwKc8LYt+ENYoogIvbgdPtDV3wixxZcZr54g+c1r1TsS5KlmslX5Llh mD4itKQbpxX9bWrZhvDV44ElT6/jV6Ln5Zm2dSt8MsuH8HqWQXH1z61ZrDhC zQgFzxR503LM+zX3y/1FgssBw5kDLbokdRTu1s7dAhLYHuoOShOyU95MaMoS BATRaIjShYonRvUqJ6UDOTN5ETUbixFQkS2BvK0pTdnwGmoHyVnFRmYX6Vw7 j20z4wFRMKFBYsotU7M4Zgjebi7Hzz+vQf7g/WhuImglklIiJqvj0IuyebWc t4hXCVRtXPcTUTcKE1VezLPgrWKyWT03rlXFrhPEYTPsp+NNiU7eBMlZjfWv Sv0L8SydpGM4eTAcZZd+ClJ2/tCmpA0P1o9pWidBBp60nwg7aa01FyxEF+SL ZI9YrnuJJi/e0iVHelWFir2IUOoTmhMitUWocVOuulVeRrbSDbXDitQ8Onlp T/DsHuAuEPOp9FEUai/BVnZjks+G4ZiiVpyYjdp9HlVacPsMcJSU4veD/wAU 1bSkZ85os+HYXjivaxi8/wDNNWfD8CxAx3uK3SvV009ZKbmiw2WBISiHLh5Z 83DTq1wq2SkeCfU1IpsbW9owgDK2PhTBtCAiQKFghCEialTE0JKJk9akQNaB ho2VGSl12rQ71MSGcG+lLixwj6IHF1+leUs4RcEGYglsgfM1+JOJJi79onl5 1YzjtJivRIFAERvWqokRV1FRkStAR8awknvJ1EVKAYWwZURANN8OKU3rRUJA WCR763tItiha9z9Dezm1Q28y+2BldZSRHQiumWKQGwOlfNumy7qPw3/k9Tf7 sjq1T4I3o5A8EGtVFY2c/o+4qrYrBxBwzJBrnwHHkUOnWDQju+u00hliJs2C pwSRTG1G2lCsBMc2ZkAa+Zqw2J2jnzp8UV5Fjw/QCdas1h7ApqEMdMDQUyYA kRRIBjBmaNa9ioBYQ3UqQAdKElEyQI9K3Hs0DDRq6YYVFeTu1PEvr/bjiTiT KUPFpOvJOn5V4f8AWlnZ0eS+WkOq95XmDoBRSDChX54bLgS1dvNeJCyD60xY 4hvGQPGSPWtbRdU1WgeapAOKkMGeKQYD0n1NHMY5YOK8SyDXvdF+s0li+P8A QS62uBgzf2CyD9YSKYW1xYlf9IR8a9np/wBUdPsSbngS4tB6Liy7v9+j41t9 Ysv/AMwj41qrr3T8fxF/UDDPBli73d5lmBvVuwx0KSkgxIrT07zFG9qI7ljs 1yBOoHKadW58OhrSjwZUgwJlEVC40CrbWpByCPWpVJ/GltzhyVKMpA60uSGw eARWHJSopCaR4zZgWqtPfVW1bFuuW5RbiUYzmnQKn0qv3pm8XBkZj+NZ+6Nq v5AHSCI6UA+E5ompHiq7BKCY+NV7E3kstlRO2+tF52JZRcc4hS6Vs2qwOSlj l6VXFOhTe8DlrTV8D612xz8lSvXAjiF1Q18ZNd/7HcZXc9mLdln/AHKyg+m4 qdUs0mR0+S/aZx/J17CHZEA6qTRuIIK8LcOkxNecltM2rORO37fvp9hSUl5I PWtWndlSx7F/wBCRkECd96v+EBBCcorcrRhXvcu+EAQCU1cMMiRFXUkZU2WW xEDanVufDUsSMGdqYMRQgh7MECikbb0LIJkGpEmahkmSYQdajWdKhHAjus0s ux4DFGiCu4iiWlAbxXJuNbIKfKynYzUSWxYqeGeecBbK+JMeV/FiSxPWEpof iO3ULNXPSq7WIFyT/es4xxQQi6WNd6od9Hekiap75LrykVvFlBLKo51yPH3U 3HFLqv4fDM86fEpW44AktkSflXefohtXY7fr+4bTLDOH/akdS6nL+CqNYyTp 0/qI92WsFOb30/tJLA15U+JbsRBeqQtMJ2T8659i4KcXeED2jSrEWYLEUhQ7 oqamtcqkyJ15VWWDp8D/AA1tOcfCrThrSfDMU6BnWMtWHMpzggQPOrVhzSSE mBVpGfMs2HNjMBpVhtEaA6UxiGNrdIpjbj4VBAcyBAii0gEeVCzidAlWm1Sp gqIoTkTIAit0b0DDR857GlAXAzT0qYkSPL305bp20+gFxaWkqUp21SwQnkFO IBPoBNfjniaT3ildSTTm94oZBfu5MCBkwSQBqNKwVDpBq8USMypyAd/lWEgg +dEgGFMjUCm1qCCNtB51vaQoXH6F9mt0T2e4TdtmVG1aPxSK6lhpSq3C0mZr 5H0m9K+2l+G/8nrLVmMZfYd2yYUIEUa3MCNK9QimfPAdzr7qq2KD/wB4LjrX S4CgKXtyBBoNz2iSdtaS9i0jLYlc9fOmNsNhMGhRDHdl8ZqwWSdBqKekIkyy YckZR1NWaxHgApohjm3B01pkxsKIAYNDSaMa9jaKhkBLQ1kVKnn60BKJhERt W229Aw0QXaimzkb1454xt7mz7VsTtrpUut3LiVHr4t6+d/ruTXTYpf8Al/sy xR7mCMK8OlFoMV8DfJbZJmjTY1jUb1yZBqFkGAY99bocgTPyoyAll4gyFAe8 imFu+qAAs/36KOwDD0PrDejh/v1t9YX/ANU/36d3Nef7gHkC3WISv3HXWrVg 74ITr5amv05pJ5RsamOGW2yVKBKoA8t6d2ygEbmelbEeDHkg9pRJ61N3UmCN 6YJZ99WCh7O1RO2Q7smJ8iKjGCU8C561Id9ketIcdtMtsrT0qval2lquW5yz F2y3ixGm/XSq3ewL5cGso36+EAOESdfjS27cbQglSxUrBaSyVPHeKsNw9CkK fC3P4U6muc47xNc4isoSe7bP3AdT60UUi5XVt3SK2t0qV4jt0r7P4Inam4Bl LcqmJH/3+8ZPtda6v2HYgZurEq6LAn3U29ZpZ5zRyxrf5s7/AIK79ujMrQ6e 6n60BzDSkgGQRXmbHlnpLBCgQuJiDTvDFjvEmfU1p0soz4L1gLoOU7xFdBwZ wkp51tVGFqOS8YOvUDrVww1e0GryMqfJZrFUxTy2V4dOVEKGFudRrTBjlB1q GCHs6DpRaNqFnEyYzVImAdKE5HxJykVooSmoJYMtO9L7ps5DNEiBBfNyFCuc 8YW32KzG2tdLgbF7nmvhttK7/GFge1ir2vpArHElun9nqJ6UjHoWS3N5tOAc ZOZMWcSJ05VQr16JKiBVLyaL4KDxRjrZzWlgsLcIhSwZCaor1oUuE6Gaangp yTbIwxlXPKvUH0PMLbe4O4ovG8puBc2zXonKsj51O/gfpklYeubFR7gK1MpB im7DhLAEnWrcUWsHzgAbJI99UbHW8uOOka6zS7UN4EboBXEbb1NaDL7JA1qt jyDLgsOHGVgTGtWrDQEpA0k02DM20tWF/dnTSKtOHHUdDVqOxnzLLh0EjSrF aAZQaYJGlvpApkxrUEBrJ1GtFImOdCyCdGhqVO8UJK5JhW6RO2lAw0fLHgoN 9IyGpiRI49218KMcadlGNcOXLYWze4dcsqB6qaUAfcdfdX4dXdncLfSwpJzE geRJqbHjEh1Kbi4ix1ly3cU28kpcQYUDUaiSqVHQ8q0Y4aTKEtngjUBMH8dK wncAnzpi5FhlufHlUfSmtqmE6Ct7SfBn3HvvsocL/YjgTp+9YtfHKK6bhtyp iOaTuOtfn+Woel6lZJeJP/J7RR76ln4RaLC9ZeQJVB6E01QE5R+E19FoujfW px8mdKPa8GXhLfrVVxOfr7sEb098HQ5E7yCJM0G4CHCZFJZZSN2pkab0ytSA QDMioSOY7sk6py6VYbFOop6K8ix4ckQNZqy2QhApq4EMc241E0ytxA3qQRgy DHrRiB4YqGQENgBMzUiNpnegJRMlOm1bR4aBhoguky3r90fOvInaZdtXfbxj DrC5SbtaRHlAPzFfOP11NLQRj9/+Szp16mJmFApjrRbZlI1/OvgzLmMG4UI3 +dYK+n6VyQODWTl1JPnvWyD4uXxIoiGFMnWZP96mNsD1PyNGgGMm0kNDf4Ct 4PQ/AUWZC9jxpa3SHbTwqBG+9WTBboQkA/5V+nNHlI39VBou2GuFTaefvqwW up10rbiYM0xpbpOkaCjkN6D/AFNO5K7Jm2hmAFSqtwUaAUT4ByLbm1EnkBSH GbcG2VIgUixeks1vc43xWpq3xNWZQAnma55jnEuD2N0S9ftJ0mM1Y0udj0+n g5RWCk4t2m2LSFN2Lanj1Ggqj4vxri+JKUk3HdIOmRv9ahG9VpVFZmVx59ay TJ113kz50G54hmOx3mnI6wgUZkGdTXxMNHXWmFCRU8UP/v12I0NXXsgxA2na Uhgq0eQUf6+FPsWa2eXol261P7npnCXPACdYg1bmTnaIkCda8tbyestEdwju sRcR0UaYYcqCAd/Kr1DxhmfYXjh9ZlI0/wAq6Jgq9EweVbtWDD1HJeMHWQE6 zVww1c5RV5IyZlnw86jXWntorYdaMUxmxyo9jpUEDBk6UWjQaUDIJkR0qUgc 6Ek+MbTWqhyriWQlOtC3Df2Z0okQIb9ka1z7jNoCwdVHI/hUvgOPJ5Y4UxOx T+1EOPIQWsTuM+ZURKpG/lS3jfjvhLDcKcRcY5aZ49hDgWr4CkuUYw3NCdU3 c1g8t8b9ojF7jLwwmyedBVotwZE/rXOcSxLF8SJRc3IQ2d22vCD6nc1R7lnY uNSawxSu2S2giMscuVA3DQyHwipAccAqmh/CQfOvSf0IsQKu1ziDhtbg7u9w wXCQdyttwCR7lmmQ3eDqtpHrxpBZue7UAFAwoU0tcpaAJ8t6txLhK4JaJETV M4iQU4uqR7SRQWoLwVt9IQqI/wA6ktNEiRr51VBlwPsMgnfU+dWrDDCgCd/O nRZnWFpwwxH+pq1YeTkHPAAgIJVaRnzRZsOIKhVktCMtGKGdvvTJjauYIayN qMRyoWQTI1PSpU86FkolTtUqaWw0ZUnw0LdD7M9a5HM5t2t4q1wn9HTizix4 AjB8Fu7n1WGlZR8Smvw6v2i3i4yr1QQDrvFddtWvyW9Ks5ZZcR4MteJcBF1b LSzeBPtcl+Rrm+L4BieDX3cX9q42obGJB9DTNJemux8ka7TOL+rHhixScp/y r5KQRH+jWkuTIYXb5kmf8qa2ZCsqfjW9pOTOuPeHYg8Xvo7YAvcizSn4aflX U7VP2YMfOvzr1KONfcv/ANpf5PbVfwo/hBra1oghRnrTK1xt1gBLgzp8961O mdQlppYl7QLK1MbNYvZXTMB0A/wnQ0ixAtqv3ADzr3sLYWw7ovJRUXF7il1K idjp50G5PeRXMcjLQKTMEnpTK2TtoNt65fJzHlh90mrDYQSCDvTkivIs2HJi JNWSzGgimoQxvbDWaZMDUVJAezv1oxHLlUMgIbHhqZCaAlEqQRzrY+zJMCls NCnG8TRZYHc3pPgtWVvH+ykn8q8V3V0u8xp25dOZbqytR8yZNfIf1zqO+MIL 7l2hchTJETNFNkTvXx98lklzHJp8K1JMCD865EGJnX8qkbVrof8AFU8AtBjE n/QNM7ZOxy+/LRimMkNnu9v8Nbd2eg/uVOGDg/MbDeNryzgd6tIIiFbVeMC7 V+4UkvsJWBzSuDX6irkovc+uanplGrXp2Z0LBO2nh0lKbtp9o+Qmrvhfa7wQ 8pOfGQ1/XbUPyrShZGXk8lqv03q4vNayWSz7TOBVkRxNZeRUsj8qaI7RuBu6 GbijD/8AzqtKSMWfRNenj6bPl9q3Z/baq4osv7Kir8BQF5279nFqg5cXXcEc mmFH8hXOcUt2Mq/TvUbX7MfnYqON/SS4XbQoYdhV8+eRWUtg/jXNuKPpH4ze MLZwzDrW0TG6lFxX5CqVt8cYR6XSfpV1vu1Ev5I4jxbxtxFjlwp67xJ8zsEe BPyqhv3Dq7glapJ3KlSazs5NqWnr0/prQMpWpzE789KjOg1/QVyK8iFyBoZ1 6/pQ6+etNiU7CBUSTP5VosjuzHrTDOngq2KiMdeAAg60w4PvxYdodlchRgPJ kz51a5jg8l3duoz9/wDc9ZYK8DboP8Q5VdrBSVMtqERl1rylx7SzgAxUEYqF kDxCdK2sVkXAM1a079KM+wueBPQpJro2COSlJ5etb1HBh6gvODL1A61c8MWA E66bVoLcyJotFgoaRT+0OgoxQ0YNMGCNzUMgPZ2oxsyihZBMjVW4qSNd6Ak2 gECsxIrgjRSeVCvplBE1KBEuIN/Z+6ub8ckIwV9XRJ/CifAcOT85+0e2Ta8Y vqWT47lzQq0JmTVGvXAlYKAhIPlWBavXue4vjhr8L/BW+KbSza4idTbOh1rQ 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 AQAAAAAAAL7///8kAQAAd////ywBAAAUAAAApwAAAAAAAAAAAAAAAAQAAAAE AAAABAAAAAUAAAQAAACC////LAEAABoAAACpAwAAtQYAAPYFAACpAwAAAQAA AEECAABgAQAAWQEAAFsCAADs////BwAAAAAAAABIAQAAtwAAAAAAAAAAAAAA AAAAAFMDAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAigMAAAAAAAAA AAAAAAAAAEgBAAC3AAAA2Pn//wUAAAAJAAAATQMAAFADAABSAwAAWAMAAFQD AABTAwAAYgMAAF0DAABYAwAA2wEAAAAGAADmAAAAYgEAADUAAAAUAQAAKQAA AAAAAAAAAAAAAwAAAAMAAAAeAAAABwAAAK61TU8AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAABAAJAAkAAAw8ACAgAAkABuYAFAEU ARQBFAEUARQBFAEUARQBKQApACkAKQApACkAKQApACkA7P4AABQB7P4AABQB 7P4AABQB1//X/9f/AAAAAAAAKQApACkACAEAAAAAAwAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAEADAACAAIAAgACAAAAAAAA AAAAAAAAAAAAAAAAAIoAAQAAAAQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAKABAgABABAACAAYABAAgALgAcD+GP9AAegAAgAI AIABAAAAAAAICQoLDAwNDQwMCwoJCAAAAAAAAAAAAAAAAAAAAAAPDw8AAAAA AAAAAAAAAAAAAAAAAAAAEhMAAAASAAAAAAAAAAAAAAAAAAAAAAAAFgAAAAAW EwAAAAAAAAAAAAAAAAAAABQYHAAAAAAcGBQRAAAAAAAAAAAAAAAQExgeJCcA AAAAHhgTEAAAAAAAAAAAAA4RFRsjKCwtLSwoIxsVEQ4AAAAAAAAAAAAAFh4l Ki4vLy4qJR4AEg8MAAAAAAAAAAAAAAAlKi4vLy4qJR4WEg8MCgAAAAAAAAAA AAAAKCwtLSwoIxsAAAAAAAAAAAgAAAAAAAAAJCcpKSckHhgAAAAAAAAAAAAA AAAAAAAAHCAiIiAcGBQAAAAAAAAAAAAIAAAAAAATFhgaGhgWExEAAAAAAAAA AAAACQAAAA8AABMTExMSEA8AAAAAAAAAAAAAAAAAAAAAAAAPDw8ODQwLAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAJCAcGBQQACAAAAAAAAACcACMAAAAADAAJ AQABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAOIwAAAAAAAAAAAAAAACsbnHaA204+aOHQksOQHG1JSSoA pgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA AQACAAQAAABSOTgAAgAHAAQAAAAwMTAwAAAAAADgLgDhAAAAACgjAKkAAAAA DAAAAAwAAAMAAwEDAAEAAAAGAAAAAQIEAAEAAAB/DQAAAgIEAAEAAABTHAAA AAAAAP/Y/+EA5kV4aWYAAElJKgAIAAAABQASAQMAAQAAAAEAAAAxAQIAHAAA AEoAAAAyAQIAFAAAAGYAAAATAgMAAQAAAAEAAABphwQAAQAAAHoAAAAAAAAA QUNEIFN5c3RlbXMgRGlnaXRhbCBJbWFnaW5nADIwMTA6MDE6MzEgMTU6MTU6 MjAABQAAkAcABAAAADAyMjCQkgIABAAAADc2NQACoAQAAQAAAKAAAAADoAQA AQAAAG4AAAAFoAQAAQAAALwAAAAAAAAAAgABAAIABAAAAFI5OAACAAcABAAA ADAxMDAAAAAAAAAAAP/AABEIAG4AoAMBIQACEQEDEQH/2wCEAAMCAgICAQMC AgIDAwMDBAcEBAQEBAkGBgUHCgkLCwoJCgoMDREODAwQDAoKDxQPEBESExMT Cw4VFhUSFhESExIBBAUFBgUGDQcHDRsSDxIbGxsbGxsbGxsbGxsbGxsbGxsb GxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG//EAaIAAAEFAQEBAQEB AAAAAAAAAAABAgMEBQYHCAkKCxAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi 4+Tl5ufo6erx8vP09fb3+Pn6AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJ CgsRAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGx wQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZX WFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5 +v/aAAwDAQACEQMRAD8Ayra1HFbdlbDacjn6VRKRsW1uAwyMn0rUgtuRgdRR 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 9hhsb+k4no0n0n5Fd6wNdPSLfNdikpLB+ebrZ62y1fl6y/5KWY0G1crexp1G JC+LvEzJHcL+P2Z4NjS2hiav5qhyGl94HsZC493FOCZ9F8Naq0t7XqjWANrU NJEyLhcxm2Wuw+NdVYJY4/ILxtJ9ro/Vd3Dv0+4Xl+Nq4WtM+nmF1OCzGnWp CTco1orlGe01f3WbBrmktcYMJoAHIWK47PWWUYBJmRcboixpJiR+yLaK7bIh wNnSR1Rlz52HQ3StMSbQWo6Ls3WAuA2Em26GkaW/Qwh5MiPaVOkl3qcQOiFX gmmE2kxu0n5o2hofslbKSojSDYRZSWQ2XOtyQmDKWKxzabdFPeLrnMzfVxDT D4PTku7RSTyeZvJ98e1HnGe4N2Fzl79OltX1DseaRh3gDnI7r9y6TrrV28J+ qR/LXV9u9tvdXSfhs2VNwdQGkocQzzKewhfUK3E+fWGa/SWnSWx+6NpiSeW6 x8nQ8lvD1iwibtPJWfL1Uy+lcOOx5LeMsHPLDsXGkSXXUua1wIMeyppMXuV6 lAtqTTuOiSCfNiLt6rCnF5Nk7C32I6o6fpfJuO60S9BMY4GZJ+SEA+Xq5Duo wSRILZMALAGlvX5KKaGQCDYHZZsdMwEqGRbRfbdYC+dzphYyVugHYXEYnB5j SxmEqmlWouD2PbuCF9DeH3GeH4i4Wp1pDMRT9FemD8Lv8juF+S/9QemLW2kd 1BZg6f4f+H/U7tpPtl2s9BweJIqB7YJhdLl2PcSGl3uF/OmvC0e0vU6GhiWV qQAIlFWpNrNIcJ+S8n7WDSs1GMwDqbyWbc+i19Rg0G8dV2wlaGsChPUwnNqu aYmFo1ZSLmHxxp05Lt1fZjaL2+uBPMLlnDyivJWdpfXJa6RPJWsKz1gDcbhb JYPf0PsSN7hh+jc26qa7fQQfYLn1DoRrHBs2iespNzEDst4K1Q2NpicMWOOw 2VWq09Fs1hNGaNbjmem45oKbdIvzF0XZbdoJzW7DndKNrH6pxQeyFEOiAAY+ 6S5gJN7xdWvcVWILWtcIulPZ6ZAWybFRTxGEFVpaWwDzVEnFYF03q0+o3C3j UlTM3fgdh8xo1p0vgxsVcbVa4B03CzlBpmtFilXE3dZE+owVPNBgjksKyPkY yuxzdwiJaQQSL2lNWngVGjzGk0VDDed1Sy/HvyjiihjmPIDHQ8dWndexs9R6 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 9F3snjMSduqbEzstuZTk+m4NpsZYA5s6tcLPcNW7favcce+vJoryKjNdzW2M Pk4bgvI8fDyqv0j6bKx4uaQF3f1N6j6mMen2aOpBfT4FhPuYP+LeljyWdeqs uPhAI6PSpJJKZgf/0tRg9oideYaI1Sc7lzu8GSRyInRqfaNsRIEnU9wh2v2s Lg06DdAHgOB/ZRXBo52jS0HQgtkd4O9v/RWSxxnU8rQzfXvoudiVuuuoBL2O aWOBA0ZtuDHvsez+bbX9NUelYeT1DDbfin7RY1xquY0CtwcPfOx5+g1n87u+ h/xai97HxcPEL0/53y/4zJ7U+EyrQfanpMXan6TpEact1/6pWA8saH6lzC2x smR7SHKrVbTY8it291Tg1+3tO4MdrG5jtv01YsJZW53ZgcHaaatPKk4hwmQ1 0J+xAieIRIo2BR8XDwnC36wYwdq2t28/e561erVFuYJ71geXtc9qy+gVX5HX bhRW6zbUQ8tIlrY279fp+/2+z3rb6nVZlW4zqml1toIjt9EW/S/s2KHBUMVk 0ALkT0jGLY5wmeahr0HmZIemYtWfm0Ydr3V1Ftj3emRvd6bfUbU1zw5rN+36 W1dtT9Xej5OFWOnvuxWVn9LW1+95J9zmvdketse76TbK153i5tmHl1ZlbZsx nts2eO0nfV/bZvrXo/Tr2VWNycd2/Gta14I/Pot/S1P/AK9W5PkAdCLDXBlH UEg+Dg/Wj6g03YzMzpNrqxU4Py6bXOt3MaHbr6fz/Xr3b30fzVv+D9Oz+co/ V3Fxq77mUAvNbBvyHAcO+jXXH83v+mvRS8VXgzFduod2B5/6X0lxOW7BwK76 8Gt1ddlrrCOdpfq1m76O1lf83V/gmKLKAKr7GblyZXdn+si6hltoc5jyTW6A QOw/0jf6n0lLpWU/EspzamucW+8sHBBH6Rm7+U1cp1fNvyT9moMveQ0kclpO jB/Kf+cuhOA7BwG1XOc7JcAXPDiC0/S/R7S1rPT/AJCaCRRvVkIuxT6PhZlG di1ZdBJqububOhH7zXD99jva9JcL/i8y82vqN+JkXFmNYyMehznv3WNH0mOf 7Kf0DN76/wD0mkp+P0XWuzU4PVX1+j//09dvDCY7T8QdqhcAxshpedpIAJEx J2zCW6QQCNOeOeUnOOyXEmCY7D95Fe4fTOtdaynWYljan/Z3udXY9ofUwEtZ 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 p7eP8V6P9QGEY+e4/wCmY0fBtbf+/JIL1aSSdJCkkkklP//Z/+0cjFBob3Rv c2hvcCAzLjAAOEJJTQQEAAAAAAAHHAIAAALNpAA4QklNBCUAAAAAABBxdR8i +EO5mAgtFqWyCWJlOEJJTQPtAAAAAAAQAEgAAAABAAEASAAAAAEAAThCSU0E JgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAeDhCSU0EGQAA AAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4 QklNJxAAAAAAAAoAAQAAAAAAAAABOEJJTQP1AAAAAABIAC9mZgABAGxmZgAG AAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUA AAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD///////////////////// ////////A+gAAAAA/////////////////////////////wPoAAAAAP////// //////////////////////8D6AAAAAD///////////////////////////// A+gAADhCSU0EAAAAAAAAAgABOEJJTQQCAAAAAAAEAAAAADhCSU0EMAAAAAAA AgEBOEJJTQQtAAAAAAAGAAEAAAADOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJA AAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA1kAAAAGAAAAAAAAAAAA AAGQAAABLAAAABIAaQBtAC0AbgBvAHQALQBhAC0AcABhAHAAZQByAC0AYwB1 AHAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAASwAAAGQAAAA AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABu dWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRv cCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAGQAAAA AFJnaHRsb25nAAABLAAAAAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAAAAAF c2xpY2UAAAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdncm91cElEbG9uZwAA AAAAAAAGb3JpZ2luZW51bQAAAAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVy YXRlZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBlAAAAAEltZyAAAAAGYm91 bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAA TGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAABkAAAAABSZ2h0bG9uZwAAASwA AAADdXJsVEVYVAAAAAEAAAAAAABudWxsVEVYVAAAAAEAAAAAAABNc2dlVEVY VAAAAAEAAAAAAAZhbHRUYWdURVhUAAAAAQAAAAAADmNlbGxUZXh0SXNIVE1M Ym9vbAEAAAAIY2VsbFRleHRURVhUAAAAAQAAAAAACWhvcnpBbGlnbmVudW0A AAAPRVNsaWNlSG9yekFsaWduAAAAB2RlZmF1bHQAAAAJdmVydEFsaWduZW51 bQAAAA9FU2xpY2VWZXJ0QWxpZ24AAAAHZGVmYXVsdAAAAAtiZ0NvbG9yVHlw ZWVudW0AAAARRVNsaWNlQkdDb2xvclR5cGUAAAAATm9uZQAAAAl0b3BPdXRz ZXRsb25nAAAAAAAAAApsZWZ0T3V0c2V0bG9uZwAAAAAAAAAMYm90dG9tT3V0 c2V0bG9uZwAAAAAAAAALcmlnaHRPdXRzZXRsb25nAAAAAAA4QklNBCgAAAAA AAwAAAACP/AAAAAAAAA4QklNBBEAAAAAAAEBADhCSU0EFAAAAAAABAAAAAM4 QklNBAwAAAAAFmMAAAABAAAAeAAAAKAAAAFoAADhAAAAFkcAGAAB/9j/4AAQ SkZJRgABAgAASABIAAD/7QAMQWRvYmVfQ00AAv/uAA5BZG9iZQBkgAAAAAH/ 2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4U EQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/A ABEIAKAAeAMBIgACEQEDEQH/3QAEAAj/xAE/AAABBQEBAQEBAQAAAAAAAAAD AAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQB 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 Ox/oVbG+srj7a8q+zMx2ltD4Z1WyvbFllM/Q2t93oss2Zl9D/wBN/wBt+o2a 8faK2X3upxm2MNYa0PFTj7bL/T/wzNfez6f01qZX1d6hTj4+BhY1V2DXa9/q 4ziAwOH83bhv3erus/lbP9Is84ZcZMoVf6UT85O/FGLcjkx6cMhp+idOEf3p NfPyekVYb8unApDCwO9RoG95I9zBs93t/Nd+Yr31r6f0LD+rVmbi0Cu3J9Ft Nhe93865rz/OPd/gg9ZNRprqb0lzoyS2LqnaOAeYeW3abd36RqpfXjrdw6Zg dNZ76KDFlmkOsa11VYkf6Gl3v/lqLBPhnlxyJHuACAPp6axjH/DZJQBlikB8 kjKUv6vT/oND/F3kYbPrVtzDtZlVPZW6S39LuZbW3cz97Y/2rt8zonSfc6ov NdLSGG5+9osnc6/a7+cdX/wns3+/0/5peZ/VVtLus4/rNJdXLqiTth8j0j/V 3De5ejNzn1WvxsEV2317WOHusYx7v0jrLrI+m6W2vrap8spUcY2I1kPmYpj9 ZxjdwOr9DyXY9WXig3WNaftRaA3cG/RyaWfn7foXMb+l/PVr6rdZNVB6fcfd QXOxwefTd778f/rdn6ar/ri0MkHGxX3Zb304bGF91TB+lt+j+ibPtpbZb7f/ AD2uK9S91pyGu2ZG/wBVp7b53bf6mu1Sct7ntREhVAAX82n9VizcHESDdk3W z6vjXjO6fZXW4GyvRh+I3Vf9+YuK6tX1fKxbLKqQaccOseA4B0sBLmNq+nu/ eWp9Weoh11drZZXlNNbmH8ywe70z/Vsb7P8AjEfKs+yZmTtBLLQHCBJl52bW M/Pe/wCi1PmBoT0RhlIExjWryX1U6aLbf2zm/wAxWSceeHv72t/4Jn+DVv6w dVY0WPJkOEAdzu+ixv8AKep9ZzW11ijZ6LahAr0gbdGt9vt2t/krCwq39SzP Xt1po+gDwXHTeoxqbLOdBQeh+p0VdSwjaf0t1u6xx43ua9o2/wCd6SSzLbbT kVtxiRaxzfQ26EP3N2Ob/wBc2JJ9+n62x0OK/Cn/1L9D22VtO6Z1RngbDpro Z8+FjdCzvVx2te+CIHx7LWJIAA8fcI8QkucjrJJqsgAe2NOZhehYwZkY1GS0 lrrqq7N7TB9zGu7fFeedRLYDSdTAjx12ruvq1Y+zoGAXgh7aRW4EEGay6nh3 8mtAqLasbklsGwWDwsY13/VBZuX03HyKzXkYOFkMmYfQ3k9/aFtOCr2gQUKV ZcCrp1GCZwcLCxXfv10NL/8Atyze9RuszwNbyAezWtaPyLRv7qlbqkm3F6v6 n2C4klznbWkuMnV09/6q5twLTHwXVdXIGG8fvOH/AH5cxZ2cfNEKLqfVp1py cmtrva2n7QGns6pzN7mfy21v9T/i6lu9astaW5VLxWA07yeI/nG6/wAn3LD+ qd4o+sWA530XWGl09/VY+po/z3MW79ZcU4bbMPT0XCanP+j6U7trj/I99Kbk AIK7HIiQILx2di5GdN/rAutO4tgiGcV7d3u27Uwsdg0+k3V3YDSfJXsvJBr9 lTmVkl5LhDiT7mt93u9R3/QpVn6sfVHO6/d9uyy7H6dOto0dZ/wWH/wf+ky/ +2f0n8zFEGTZyER3b/8Ai+6DZm5LusZgmmh0Udg+5h+k3/gsX/z/AP8AEvSX oWJiY2FjVYuJW2nHpaGV1tEAAJKbgFU1fcPFxfh4P//VB0L6vdXxAX5Zrx2c hu7e8f1vT/Rt/wC3VvtxqnHUOs/Acq65jJ3O1I4TuIgFsEcj4ql72Q9a8m/H BAdPtWoxG1DdUyulx5MS7X+WtDCzPs9XpOHqQSd3B1O7+UqVmQ5rNwbMdhyY VavqmM8+xwJGhg6g+BRjIg3a6UIkVWng7p6pR3Y7TmCD/wCRUH5+M8TDwP6s /wDUlc5kdUDGvDRO4RInn5ILOrtayC6COxTxll3DGcEPF28i/GcDtsHmIIP4 hZ9uRWR7XAntCxszrEg7bNSdI5VGvqXpkkt1e4EGQXEDkR9NEZDeo0QeXjWh Nuh1m79FUPF5/ALBfxr5/itDqeTVkNpfVuhpcyyRABO0th35yz3ARHMduyni QRYa0gQaKbptpr6hiPZO5uRS4dpIsZwvY7cXGutqutqbZZQSaXOAJaTEuZP0 forxWlxbYxzeWuaQfMFe2seLK22N4eA4fAiUVpcRn1L+rzcz7W/HNxaSa6bX ufS0n92h3s/q+pv2LcAAEDRJOkABsFEk7m1kk6SSH//W6PczgugyhutrY4S4 TPCzjdaHEO1J5TOubY0NIMn7tFnOqHWOVRIG9sntKHfj9Mydcimt7jw4gT/n fSWUcd4MuJ1RKsDIeSW5QDR+aWz/ANLcnAol4aM7+hdHe0k0NdGsFVX9M6JR XtFFWh0ESOPNW7Om5obIyK4Pkf4PWbl4mZIY7Ka0c+1s/wDS3J+q0d0nodGa wu+zVk99As7NzMelrvs1VdLXQCWgNEfyiiv6W/0/fmOA7hjWt/6TvUcs3IxO n1uJ91tkSLLHFxHwn2tR0W2d122P9JoLmvY6HMDDOkn6cf4T+Q73qLidZRzb X6LKm0ekQQR+8dNrnO/rbkFxmflCsw+VqZfnOtsW9ie5kBezdLf6nTMN/wC9 RWT82tXjtTdz2x4wvWvq47f0PCPhUG/5pLf4J7GXRTpJIIUkkkkp/9ey91g0 Crusv4DA4fGPnqq2Fm5VrW+pt3HvBH/Uq09t41Br0E8GVV9iXZu+/HujdZkV 6+mYPhqP7Tm7kfEHULxvmpgP0Wy5xPx0a1Z2RkXteWDSGzpImfmi9FvuyOrY +Hbc5lN7iyQASHbXPrjd+84bUfZl4I9+PW2/c3qLBDmNc0ayHkD/AKTVQuq6 pY7c2oNA4L7Af++rocr6vdVLCMXKpsa4y71N9R0+jO1t7Xf5yoWdE6//ADRN LW/6QPJ/Dal7cuy45oVu49tOYWj1siuuedoJj4vs2/8AUIuPi4lTyanG8iP0 zwJk87fzVeP1eub7sjI3nktaIEpq8cMvrqBmXAfinwgbssWTLExIiD5uT1L3 dUyXT/hS0+e1rWj/AKhVn6OI8I/Ip5T3eu+wiPVuc/8AzibP+/IdnJPiNCpm BJin3Hy1+5eo/VC3f0VjP9C9zPv/AEw/8+ryzHd+kA8dF6F9RMncM7GJ0Bqu aP67TW//AKVKPRR2erSSSQWqSSSSU//Qhhs2kaAifBXXEa+0jgHXx+aHjgNa ZEHnv/BTs2FsyZ0+EpLnFzTuudr+aAq+O9zclljXlljCHseOQ4GWun+yiZD9 1jyAY1n7igY7ycgiOAYPCSnusL60MfWBm0ubYObKYLXfyvScWvr/ALPqItn1 g6OSQcjaeIcx4/74uZrJDNAdePu8lWyt2+AI3O4+IQoKeiyur4DgfTeX+O1r v4hc7m9TfbZ6FLTWbwGeoSA4B493pAfRft9u9SY8+lu1ADZJaJ7fu/2Vnt16 pSxwktgkHkbWN5P8l7keFSTqPtdW1ohvuIb4AFrG/wDRQdxc0fd+CLne68M5 2tHPmdyAJDDpPB/BJTKhxD2k+Oq736gUn18+4n6IrZHxNln/AFK4Cqe3j/Fe j/UBhGPnuP8ApmNHwbW3/vySC9WkknSQpJJJJT//2QA4QklNBCEAAAAAAFUA AAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAATAEEA ZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADQAAAABADhCSU0E BgAAAAAABwAIAAAAAQEA/+ERg2h0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu MC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6 TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRh LyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4yLjItYzA2MyA1My4zNTI2 MjQsIDIwMDgvMDcvMzAtMTg6MTI6MTggICAgICAgICI+IDxyZGY6UkRGIHht bG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3lu dGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5z OnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxu czpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jl c291cmNlRXZlbnQjIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29t L3RpZmYvMS4wLyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYv MS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8x LjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhv dG9zaG9wLzEuMC8iIHhtbG5zOnhtcFJpZ2h0cz0iaHR0cDovL25zLmFkb2Jl LmNvbS94YXAvMS4wL3JpZ2h0cy8iIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2Jl OmRvY2lkOnBob3Rvc2hvcDpkZmNmOGJkMi1mMjM0LTExZGQtYmYzOS05MGU1 NDc3YzQzODIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzNFNDEwMjM2 Qjk2REUxMUJDMTFBNkVCQkM5MEMyNkMiIHhtcE1NOk9yaWdpbmFsRG9jdW1l bnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmRmY2Y4YmQyLWYyMzQtMTFk ZC1iZjM5LTkwZTU0NzdjNDM4MiIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlm ZjpYUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9u PSI3MjAwMDAvMTAwMDAiIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiIHRpZmY6 TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwyNTksMjYyLDI3NCwyNzcsMjg0 LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5LDUzMiwzMDYs MjcwLDI3MSwyNzIsMzA1LDMxNSwzMzQzMjs4NDA5ODFGRTFEOUMzNUUzRDZB QUM4NTY2QkMyMzY4NiIgeG1wOk1vZGlmeURhdGU9IjIwMDktMDgtMzFUMTM6 MTY6MTYtMDc6MDAiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9w IDcuMCIgeG1wOkNyZWF0ZURhdGU9IjIwMDktMDgtMzFUMTI6Mzg6MzMtMDc6 MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMDktMDgtMzFUMTM6MTY6MTYtMDc6 MDAiIGV4aWY6Q29sb3JTcGFjZT0iNjU1MzUiIGV4aWY6UGl4ZWxYRGltZW5z aW9uPSIzMDAiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSI0MDAiIGV4aWY6TmF0 aXZlRGlnZXN0PSIzNjg2NCw0MDk2MCw0MDk2MSwzNzEyMSwzNzEyMiw0MDk2 Miw0MDk2MywzNzUxMCw0MDk2NCwzNjg2NywzNjg2OCwzMzQzNCwzMzQzNywz NDg1MCwzNDg1MiwzNDg1NSwzNDg1NiwzNzM3NywzNzM3OCwzNzM3OSwzNzM4 MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NCwzNzM4NSwzNzM4NiwzNzM5Niw0 MTQ4Myw0MTQ4NCw0MTQ4Niw0MTQ4Nyw0MTQ4OCw0MTQ5Miw0MTQ5Myw0MTQ5 NSw0MTcyOCw0MTcyOSw0MTczMCw0MTk4NSw0MTk4Niw0MTk4Nyw0MTk4OCw0 MTk4OSw0MTk5MCw0MTk5MSw0MTk5Miw0MTk5Myw0MTk5NCw0MTk5NSw0MTk5 Niw0MjAxNiwwLDIsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYs MTcsMTgsMjAsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMzA7OEJGQTJBQkIzNkE2 OThCQjlFNUY0NUIzMDE1MDlGNDAiIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyIg cGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wUmlnaHRzOk1hcmtlZD0iRmFs c2UiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6 YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpCMDA1 NkE4OTU1OTZERTExQkMxMUE2RUJCQzkwQzI2QyIgc3RFdnQ6d2hlbj0iMjAw OS0wOC0zMVQxMzoxNjoxNi0wNzowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0i QWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIv Ii8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFu Y2VJRD0ieG1wLmlpZDpDM0U0MTAyMzZCOTZERTExQkMxMUE2RUJCQzkwQzI2 QyIgc3RFdnQ6d2hlbj0iMjAwOS0wOC0zMVQxMzoxNjoxNi0wNzowMCIgc3RF dnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNCBXaW5kb3dz IiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0 b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0 YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ACAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0i dyI/Pv/uAA5BZG9iZQBkQAAAAAH/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgMDAwMDAwMDAwMB AQEBAQEBAQEBAQICAQICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD AwMDAwMDAwMDAwMDAwMDAwMDA//AABEIAZABLAMBEQACEQEDEQH/3QAEACb/ xAGiAAAABgIDAQAAAAAAAAAAAAAHCAYFBAkDCgIBAAsBAAAGAwEBAQAAAAAA AAAAAAYFBAMHAggBCQAKCxAAAgEDBAEDAwIDAwMCBgl1AQIDBBEFEgYhBxMi AAgxFEEyIxUJUUIWYSQzF1JxgRhikSVDobHwJjRyChnB0TUn4VM2gvGSokRU c0VGN0djKFVWVxqywtLi8mSDdJOEZaOzw9PjKThm83UqOTpISUpYWVpnaGlq dnd4eXqFhoeIiYqUlZaXmJmapKWmp6ipqrS1tre4ubrExcbHyMnK1NXW19jZ 2uTl5ufo6er09fb3+Pn6EQACAQMCBAQDBQQEBAYGBW0BAgMRBCESBTEGACIT QVEHMmEUcQhCgSORFVKhYhYzCbEkwdFDcvAX4YI0JZJTGGNE8aKyJjUZVDZF ZCcKc4OTRnTC0uLyVWV1VjeEhaOzw9Pj8ykalKS0xNTk9JWltcXV5fUoR1dm OHaGlqa2xtbm9md3h5ent8fX5/dIWGh4iJiouMjY6Pg5SVlpeYmZqbnJ2en5 KjpKWmp6ipqqusra6vr/2gAMAwEAAhEDEQA/ALhqnYnZ+4s9ursLujMQ777A 3/l6eurmxFBNT7b2TiYHj+z2piIhr81PilQyCYOyu0p/p7UbZD9PaeFSnQht spg9BjmN19WbJVod0dkbcxAjerT7eszVFTVlLWRzuwgmp5ZVliX7ZS3I+nte MAdKTxz0E24fn78cev4IqWPd2Q3xXLULLT4rZuCqsn5qcarxxZWlknpvJPwb 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 UrVOjBtJXSNP1vf3XpX0hu0p66Ks2JnIJnmoMbuHbVRVxFtQCrUSF5tbnUsM drm3vY6amBK46G/+YFU42lwPU3aOIArqOCaLa2SgppikkH3eGhqoJZWiIOn7 mpAIPFvpz7sCR0k6KJk9xz5nbGBpKjwQijq5Ym8ZMhk+4WNfuIpGu8b01CtS h/qtR/h7xl+8nu0o2rlnliGUhb+71SAeccNGP8yPl1lh91XZYn3vmbmmVKvY 2uiPHB5Q1SP9qun17+gM8tNNkMrmMmrfau9bka2NbA/wfHx1SSQpdltejpZ2 UDgsfxYH3iVzK1xO1jtVji7vbgAjyEa0VBgVA1d5oPiHWaFkI1llu5STFbR1 qP42yf2cD518vPqvmrzdZv8A7/x1XVyiVqjceRrJpUJMI+2oK8fcR6gAsKal ZF40+kf602WuzRW/Lb2FlFS28OOMeoVGQk/mFOv5s3HqO7zcivMFhLKaMzu/ y1KhH+an+lH5Gk2IkldltwZSncx0yypjKCULa1OeAy/WzvCg1/jUx+v19jz2 b2RZ93vd3eKkcCeGnpUnP546g77xvMf0+z2OwRy1luZfEf10qP8AASehvpaR Y5Ued/LL41jgdj6iPrc2/B1H3kn1hp0NO28TBDSxyKIZah5gYV8SN9uDA3kM szL5P1/SxP19+690oMzRmHb1HNT1rVORaVDDSRi/lMJOsNb9CDV/h7WxU0Ch z0siPYOkNkKCj/hH3dbjJ5sxSS6JadJ1WnphxMpp1aQIXd2sdXP+8e3eHA9O dJPK7xXH4CdqvbFNpqq+m8JkdGmiaGN42L+o8ljf6+0TishFereVega3VXfx ivpWqNFJSJEkiiG0Lmq+pBc6AYxYWN7+2+t/4emKSajw/wDlESyVVROGEQOl lBZSCTcmxDfkfX37p2b42p6f5OgQ3fAKzK0k00KGcg8kn03I1Ej+h/HvXRZN xT7OpdBRUsdVSOY0SnTSk7EsTckXew9OlPfumuhV20qUOQ0QRpU4+SQSip4Z AdV9JJubaef9f25D/aJ9vXuh2qsbj8olPIYTViWJVWGOyiN7WFipB0gnn2vP XuudJjaPGNF9x4JYVI8lLTDxNEqk6ROVCXOri/PukjFUNOPXtOshfPp5ze5a HFUyT1E6fbsqilpYwjaGIsplYXcW9pDcmtKivVvpz69O/SXSPffy37FpuuOj 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 LSKP2sB0RnvKvbIdrRvMxdaXKS5SQCxu9Lrq10fTnyRD6ke+PfLcBm3bdmoN U944P+2kJP8AI9dlSv0/Lu2RN/oVmg/6pjqrffVRJX9kZEO2s0EwpA6MW1HG Rw0wk5HJdobi/wBb/j3lO5UW0iqaIdOn+QFfsHHqIblf1VP8JJ/4rrYI/l/b Nx2C6OwWRyZSJ925LIZsRTRwsTFj6pKWmQM66mQrTsOefeTntbZC35Rs3C0a Us5/M0/ydYHe8F5+8ed9ziZqrCFQfsqf8PRX+94KjHd9bqEbLHS5CeLIUkdO ioBHkRJLIqgAKUGkWPuQJG8Pyz1F5t0JAyB0nQ1ZWQ18SkUkKyKTLOVD6LKH bSpB0ab2sPr7Ru5c8MdOqqqKDpebPkgMYhjyBr4419d0KR3W4IVioF/9j7b6 t1PoTSUmdyE1JSyvLVU37/iZSaeMhtUjliVDAf09pZJXViBw6cWKRhUDHQMS Vk0jSvQwPXO1RMJ5HssdFGJnBtezOQBfi/uouX1V9On1ttQy1BTq0/4TYuGi 2Xkt0VdKkeQrMuKXH5XQwqJqCnhliqoGVxp8Bm08gX4HuFPcTcxLIbXUM8es iPaSKS1rILYN0YDsiYVWAqVkdpGCrJCmo+pbtYcci1vcZxRMGWFDVCOshIpY VUzSijV/meqje3VnMuTnqpGSCLWBEOFPrtYj66f6+/ItvG50HuU0P29EVzcX EcukoKHqtj5zY+j3X0F1fmVRJMxs3f7YKnqeGl/gu5KuSoq6dieVij+0UIB+ Pr7l3kq9MsTDVQL/AKv2dY7e7NlIZYHoQGYVp8+isdWYXwx0sCREROkbC6gW Orhfp/X+vtdzDOSrDoO7Rapa+GRx0jo7G1KFEhiUJIWR/wBxQLEpyBovZb6j /tvcfzNRJDx6kOzt9TRNqPrx6Mr151ru7sWqbC7L2/XZit+ks9HAUpKIfkz1 k6rTFl/NnPslX9atT59CEzPH30qR0cnbXwb7damikrYMOkhju0VVKzzxEqRZ jBK0ZIb3uewHh64TVx1Rd1lDfqRgJ69L1fjF2HtGhBkyuKqak3K0DRVMLF1/ sQSzqsd7cDm3tVY2UqrqkFOqzXyTqwA6ZqajloKo0eeoJY62mYx1aSAa6dvo SrR3jeOQD02v/j7NrSQiUqeFOiG/bREjDjq6OF0DvjMdW762zvjCTTQfwito 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 DD+ogr0B542Nx4qkhj6Hq3rqDDz5fFbXweekdsltXce1tx0Na4AjYU24MZBI jEkgLoZiPyPblisdxuNvqjBUHh+fSbd5JDt0wdyTpI49b0v8ZpP7ofx3yQ/Z f3d/iXn/ALH2/wBn5PJrte2jm/uWfBh8Onhrp4dQF4Y8fRq/HSvX/9Q/Oxcc xqt1RSxNHT5CikrDEb+SUIGJjiv+gqB/sb+10I/T6P5gCQVGenaPGvalocbV MFqqN2hNi8sdRBIZih+t2WKMj/Ye3a+vTOlvQ9KulKVOJoA8jVbNVXkeepip zDUMbz64nXUoLW9l8nxn06qA38J6TW4nOLklxlNWJMauNpUKOJIqY6TZRIOD z/t/dOt0Poeiz917q3RTdWb7yey8i77lo9u11HQClQyVMlcadoo4o0USEyiW xXg+q3B9sb5dy2WzXt3AR4iR1Hy6FvKtrZ3m/bTbbgK2bygMOFR6fKpx1q99 87J7l2FvIU2do95VrUcFGuRzNCslVR5GXK1a1MtTXZWJ1p81HVqqTIsd6DTJ 5YkCSI3vFI+4m0c0StaWO8WyTgupUyAS6g1SCA3GowNVajGQaZfWHJD7daHc dxtHaB8oDXQi6SAFHDH4jigpx0ip9+id/wA/c+5tidTY7a9XuSvTbWKRcC5Y 1yS7f2zlcru7O4yvpEPgpf4TQUySPqZTNKyqz8XE8HMlpulodrvtv8eEQBWR gPwltb8MVUdpqJCWXSQakRvzBsB2Ez71tu5C3la41KUBodXwA1bPexNKU0iv y6se6z2rvzorNRYyPOPnencq+BrMVBW7MwW8cvsyLI5ukmXc2TwWSpfDno8D kj93Q1mKpQyyTSzNLpBjqIY3u15M3Dd7HceXIbRriWVBIk8aStJGvDQ2ph2N UodKltQ1Gumoisdw3mfbLyHewVnRHPiozxioQkxnSy6Vb4GDlqEkAEgkPnyA 793h8lUxPTPUO69t7t3FsJaGvxtDtaiki2Z8mYmrqqkzedx1Fma1YnwOJqcP L4KeuyNZTmelqEmrKjVDVKVcxcuR3u+3Gz7FZJDBLGHDwqgDyBSZFbQpCKxb LBu0q2sGgbow5XuItigG67nG4Lu6fqsddqoAZFpQHXRhxWoVtSoOB6+PU9N0 fSx9MbhxmH/g+erK+rwW8sbqli3JnKKghq5Fihr1GSxlXiK5mp445ok8U0Ms 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 JKfD0tOuOpMnv6glrszkJsA1MyfeY6qp52yI0/QQpp0+OwP9n2I9ttUvNLhh StCOgzzFuD7cjihoB0d7YHUWw9uVEElPhYcpklMLfxDKhWYfp4jiLCJVDC4B W/saWW1WkC+BKg8XjX5dQ3e8w3lxNI0bUX7evfPxo22t8dNsRyGjpmXPZg0l EaOmHkiyU1N5W8KR6yA9lvfj2KtvsVsv1oxUdBWXdpbm7WOQtp6rvoK6XG5q TE0rTzfc49rT1RDMrKhLElAASb+1sshlcuRQk9O3Cosg08KdKqip4Ex9AsjK 0kM8ihx9E1An0f1Fz7b6Y6bXMddnKmKAGOQUzRvK36WKjkm1r3t791vpljWY LLGssUbRMynyGytp+pFv639+6903M8ih7M1/uowSOP1KNVvxY/X37r3Q4YKK M0NE2hfJ/qrDXfgcG3Bv72vxDra/EOjS9YLJTTshpn8uPpo5VU3Hk1sQkrX/ ACpPB9mS9K2yo63oPiJuf++Hx16rzOtnlj29S0U1zqOuijSmKn/WCC3tLJhn rwPRJOCjv8+jL3N/p+T+f9sf9j7TdJ+u/fuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691//QHatWtjlgWo8bqSxVlRSSD9FYgX08fT3h+0aaj4YB HWcyzfvClwvaDigwOkdkIalpppAFSsLHwosYC6QfzYWPHunhH/ffW/p2BrqP SJztHXyRPIEBZgNVhyWvyAbXsD734P8AwvPSlWMceknh0HNbjcw8XlpKupjm h/TCkYZVI+osWF1APvXgjzj6RyT549MIyPbUEwRMNjsvQ8aoKl3ikkUf2vSh sSPexERwQjorYnUSD59SK+fdj2lrNm5HHQFRrqaZDPChP1Easw1AH+oHvehx wBHWgWBDVOOkjPuySkn+2patqeeEeqllV4nk1+m7kgAG7fS/HtX4OFJHS395 K8YjNQR0ls4/a+Zv/B6yjoaY8I88zS31cDlr6Tc/j35Y9BViOBr1owSXKlVY 6j8+hU6y+LG+NxLT5zffdO5ZHeLyQ7a25R08MCJOSqpPUrUwySKAPqQfa+Lc Y6kUFK9X/c0sVHapx0Z+m+KkdNSU8NPuveLCQarFxI44/shqqxYEfQ+zFbyO SMroWp62tshYRlaA9JLNdDdi4V3iwO+sgIluY6bLU0beY2vpc65Db/H20Sp/ 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 vowVSLAk8n37r3UOsyEUbw1cqaZTXVlPHGq/RpURVMgI9Kk/63v3XukhSx1E 2UapmA1B3XQD6eWYXW5tx/X3qvVNY9OlrjJWjjndAHkjcL6zewJIIBP4Fve+ vBwTSnRlenKWCpra2WaqEZFHIySOwBikVSQo+nFx72FZuHVur8/5BFFPWfIT t7I1M5qP4bsuSNGbm3nylOAVJ5AKvf260DIpYnpq4/sj1tke2ei7r314Hv3X uuWhv6f7yP8Aivv3XuuSqQbn8e/de6ye/de697917r3v3Xuve/de697917r/ 0FLisHkVK1FNJCZZ62PT5UVoxZlOpXPOn/Ye/dG/QnUFRmYJZWq8fS5SFKgU 0a6RG2rRqYo6i9tXv3XusdVlZyZ3l2/UQJFL4yFa5AVv7DagRa3v3XunGvq5 pJa/TFVwwSyoycepXWKM6S2q7If6+/de6CfcddPOsIlpppnjinFO0YvGJEku fOSQQoAP9ffuvdV/9j1NS2Yyaw041VdTI7TqbyRFvqqA2sOP68e/de6Dalxk kkNIJFkFKySNoPF51LEyHn6lV/2/v3Xug+z0GubKpqvqp1CQkkz8AC5U8BTf +vv3XugbOMZZzRtTufNWRSyubei7Ag6r3sPfuvdHJ2LBRDDrFHS1dQ0c9IpD RqVdgIwbEt9AP969+690avbuLlkiqHeilKAxCPWFP25IaxNyeDb37r3S6SGr gTFU9Xj9SrJNCrpOwjOqK66l+h/UPfuvdd0+38lNWKjLTx0sa1Ev2kEMcpmk V206ywUgW+vv3XugR3Rjahpq5ctWV07iSUwUsU7wwQU8vAhREbSdVrMLe/de 6CTD0Er1tfFBjUpYYaXzPMXLO3jnZro5GpmKj6f19+690t9neSuxldTlPVRZ BqyNpLK5RtZFgNV2Ib2ptjTV69e6Eqgx04FHMtOKbXQVtppW0Rmo8NwWIvZX Nrcc29qvI9e6DalxGdrO6xmqyKaoptmbQyWWxlJHKRFWVktJUUwBQG0igy3u bcD27/ocn29Ufy6rd7Cz2Wix+6MpHjgKmvqGWrR2Limqp3P3NibWiVvp7Szc G+w9N+XRy/iZt6PG7Hx81RFVRy1rLVxtRSExAo3mkYi62JA4/wAfdLb+zP8A punI6UNOhb7aqpMb19lZmetWWehylSJXOsnVXiGEFC1iwjk/r9PajpzokWKg k/h9BZNTxUwaVyAt3/1QUccH2gl/tG610+ZCiJmpJI4n9YVr2F7m1zweBce2 +vdTcVR1ByVLUSIW8Ekg0py7EnhW5F1P/Ee/de6Zs7S1MFRV+WF7y15ZlHKo JbBSnIswA/2/v3Ws+XHpNwSVrVdFFFTupWdopi3AIOoghr3Pp+v+PvXTGc16 XmOoKkpXlU+klgtxckE3t/j791sYIPRpul6ejTF5FnpGqal6SeMLpBeORkZV L/6kAj6+34/L7envPrYS/kJ7eqMJ2l2fWyKWkzOzi9ULgpAtPlaWKNUP1JIU X/1/aycfpNn0/wAPTU4rG3W0iOeBf625/wB4Pst6LusioQQePfuvdZPfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvdf/ZUgAH8MhXAAAFBeGfq4zREazm RICqnn97ec7/AKRXAAABAAAAAAAAAAAAAACgRh3wnFcAAOGfq4zREazmRICq nn97ec7//9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwME BQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYU GBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAFpAiQDASIAAhEB AxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAk M2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5 usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl 8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3 eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbH yMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9 U6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKwfGPjrw/8P9JfU/EWrWukWSdZbmQLn2A6k/Svm7xz/wAF FPAGhM8Xh60v/Esq/wDLVYjbxfm4BP4CgD6vor80/GP/AAU18ZXc0keiaXpO jryFEsb3Ug9+CBXlHiD9tL4yeJSSPEF5AD0W1jS3X/GgD9g6gmvra3/1txFF /vuBX4l6t8afihrMrCfxdrZBGcLfTAE+nykCsC41vxlqjE3OuajOCf8Alrcy N2939aAP3Em8W6HbHEusWEZ9GuUH9apt8RfCqMVbxHpYI6g3af41+Hctjrcu N95cP6lpf/r03+xdRcjddurA5Lbgc+31oA/cqLx54am+5r+mN9LuP/GrkPiT SLgZi1SylHqlwh/rX4UtpmqQ7vLlmk4zneBzT45tatGKia5jPUkOcD8jQB+8 UU0c67o5FkX1U5FPr8M9N+JHi3RsfY/EmrWoT/nlfzxY/Ddiu98JftUfE3Rp 4hZeNtUZgflS5lE6MfTLA/zoA/Y6lr88vh3/AMFCPGmi3MUHjHSLPXLMEBri zXyJwO5xkqT+Vfb/AMMfil4e+LvhiLXPDl59qtGOyRGUrJC46o6nkEUAddRR RQAUUUUAFFVbzU7axH72QA/3Ryaxp/FTM223gyfVzQK9jo6K5CXXr6Rj+9WP 2Vc1Ul1O8c4a5k/PFS3YXMd1SZHrXBG6uSvM8n/fZqNri4PWZj+J/wAaXMLm PQc0V575tx/z1b/vo/40nn3WeJ3X/gR/xpp3DmPRKK4CO+vEzm4fAHUOafDr V6x+W4dvowP6VQ+Y7yiuMi8T30Rwzo+P76/4VoQeLSAPOt+D3Q0DTudHRVGy 1m1vjtjkw/8AdYYNXqBhRRRQAUUVFcXMVpBJNM4jijUs7twAB1NAb6Ilor5e +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 FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFZviHw7p3ivRbvSdWs4r7TruMx zW8y7lZTWlRSaTVmVGTg1KLs0fmz+0L+x7r/AML5rnVvD8Vx4h8LZL70Xfc2 g9JFHLL/ALQH1HevnBrZJBvR+OnHrX7ZsoZSCAQeCDXh3xh/ZB8DfFdZLpLX /hHdbYlv7Q01FXe3+2n3W/nXzmIyhNudB28j9gybj6dKKoZnHmW3Ot/muvqv uPy5NjITw+BQdLZgNznHfBr6W8afsEfEzQLk/wBhzab4ktc8SLL9nk/FW4/I 1xt1+yD8ZIpgg8Js4xy0d0hX+deM8Jiouzgz9Mo8SZRXipRxEV6tL8zx6PT7 aE7mG4j1ouL1YF+ThDX0J4a/YL+KmvXUa6imnaDbN96ae5ErL/wBRk/nX0L8 M/8Agnt4M8LvFd+Kb658WXa4PkOPJtlb/dXlh/vGtaWW4io7tW9TixvGOT4G OlTnl2jr+O34nxH8Kfgx4v8AjRq6WfhvS5Z7YOBPqMo2W0A7lnPX/dXJ9q/R X9n79k/w18EootRmxrnipkxJqc6/LDnqsK/wD35Y+vavZNF0HTvDenQ2GlWN vp1lCMJb20YRFHsBWhX0mGwFOhaUtZd/8j8bz7jDG5zejD93S7J6v/E/029R MUEZGD0paK9Q+CPnz4u/AySG5ude8NweYjkyXOnxjlT3ZB/Nfy9K8gs3CttP DA4I9DX3DXB+OPg9ovjJmuUU6bqXX7TbgfMf9teh/nXBVw3M+aB7GHx7glCr qj5ztlDjmrItVI4rW174d+IPCV3IlzaSXFqpwl1ANyP+XIPsapQRTjCtEwY9 AVINcTpyTs0d7qxlrFjI9KErcdK1tK8N20bB5sAZzzyas6T4f1LUJAltaTyk /wBxCQK9F8NfCy6kKy6m4gXg7F5Y+3tW9Oi30OKtiLKyZQ8N6JLrVwkFtGUg H3pD/CPU/wCFenaZ4W07S3WSOASTj/ltL8zD6en4Vd0/TbfS7cQ20QiQdh39 zVqvRhBQR48pOTuxKWiitCQooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEoxS0UAJS0UUAFFFFAB RRRQAUUUUAIRkc1A+n2sjh2tomYfxFATViigBkcSRLtRFRfRRgU6looAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigD/2QIAB/AkAAAAAAAAAAAAAAAAAAAAAAAAAAAA /wAAAAAAAAAAAAAAAAAAAAAAUgAH8OAYAAAFBWsKziwZUGzUXUYwRITGE0// ALwYAAABAAAAAAAAAAAAAACgRh3wtBgAAGsKziwZUGzUXUYwRITGE0///9j/ 4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2Jl AGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwM DAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhUR FRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f Hx8fHx8f/8AAEQgAyADIAwERAAIRAQMRAf/EAIsAAAEEAwEAAAAAAAAAAAAA AAACAwQFAQYHCAEBAQEBAAAAAAAAAAAAAAAAAAECAxAAAQMCBAIHBQQIBQMF AAAAAQACAxEEIRIFBjFBUWFxIjITB4GRoRQIsUJSI8HRYnKCQ1MV4ZKisjPC YyRzg6OzFhEBAQEAAwEAAAAAAAAAAAAAAAERIQISMf/aAAwDAQACEQMRAD8A 9UoBAl8sbPG8N7TRA06/tB/MB7KlAj+42/LMewID59h4RuPuCDPzpPCI+8ID 5t/9L4oMi6fzjPvQHzfTGUGReR8w4exAoXMB+9TtqEDjXtd4SD2IMoBAIBAI BAIBAIBAIBBDvdTitjkAzydHIdqCom1W4kJzSFo/C3ALOiMbkV4pocZcs6Kp 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 9xouozyrxS8D4m2uMor8GQ/A+JX/AFlH2Z7bTkn7ENLp9BqHKvEPwRj/AN3E Yd+rf8jCr4P2pT+GNKp6Tt+Z720eZXeRh6DRyr5riNi7QwibrYSoor95K6+g nk7H0utjadNO95dkeP23GFXG7+FKNNT4xiunMlmmpltxMnYtCH3iN92WhDzr QjRh0/M/UN2NOn5n6kbtFRlRWWXYfo8BVwyq/QYomp455enIJNcDaNKL5GNM ZgrsIlYaDRdYVWNIcDWIGMcNY0VGS5v3NkjSMQF1Tl8zNI0Z/Mb5exaIGSw7 fGRosP8AxM1RZMCkcPHuzSNGPQsiyYAqcVyLJIAQE8jyvjCWaWGpp/M2vY9U +DPJeJfvNpQXy00vqSrj689uw3Yzuw3aMuhbdhuxndoN2gFt2G7Gd2g3aAW3 YbsZ3aDdoBbdm2DwU8ZjKeHhxm7X6Ivux7ZOKjs7HRrzpuULOLtxSfNFK9Hs zB4XZkJU6dPI5WvN8ZHSzRfBp+jF8Ni8JjYt0KsZ24rg1+BuqEflsack6hrf iDptcG0VyP5mB//R+u3KS6E5H8xDi+oGUxeotGMyilxbMpKPdlHMrU3JOyuJ VMBCqpOvFZbaX43OvVUkvLD8TlYqvHVOtC/CyknZgefq0d3UlFO6T0ZEafnQ 1OClJ2TCNPzow6wy6er9Q3Y06er9SN2GSdWn93J9rkUXoN1KWanJdUxKg21f kyxmnqb0G6YnSG6ZUMRNYmcVoaRA1iawehlFGsLWA0RKRCLASiVxI4ItFAWJ iQTEC6JRCWhIES4HlNsLPtOrztZfQ9XPgeXxsXPG1pfxslWOfuw3Yzuw3ZGi 27DdjO7DdgLbsN2M7sN2Atuw3Yzuw3YC27DdjO7DdgNeH7Qx7i+E4Nfiej3c eV16M85syOTaFJvq19D0xYzWbhJfDWmvqZt4hcK/vFGrZVlQtPEYyPCpTfrA wnjNoJaOj/4Dco6mcoJFHMrYzaz4VacfSmhGtPbFS6ljqkV/Ckv0O3OKFK+i YHnsRs+rW/vOLr1V0lUdvYMLhKVCk40oKMW2x7ES8rK4em9xG/PUlWest2TG n50MbsmNPzIy0ZdPV+obsZdPVhk7ALbs49GOWTg/3W19T0OTscGpDd42tDpN /XU1EpmlZjdLSyE6Q3S4hk3E1irGUGbIC6NIaGaNIrmBoiyKosgLIsiqLoCb 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 FHg+xEIxlIdwWMrYSpnhqn8UXwZP2R9C8cM+hVd7DYqniqSnTfqnxRtGpZ2u cKjCpRmp024tHUo4lVElVWWXXkwOhCd+DNLRlxEoPAAgILcdeKNY1111A3dF S4MruqdN3l5mQq/JO7DWTuwNINylmf4I3i7mMUzWKAuAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAFXBMpKimagAtLD35GUsN2HiLIDmywq6GbwnY6u VdCN3HoByHg+xV4Psdh0okblAcf7H2D7H2OxuURuYgcpYTsXjhbcjpKii26S A5ywqfVejLRwa5ylL1Z0FTSJypcgFoUcqtFWNY0zWyJAqo2JJAAAAAAAAAAA AAAAAAAAAAD/2VIAB/B0JgAABQVSdIqo916PMG1TOhV3sVox/wBQJgAAAQAA AAAAAAAAAAAAoEYd8EgmAABSdIqo916PMG1TOhV3sVox///Y/+AAEEpGSUYA AQEBAGAAYAAA//4AHFNvZnR3YXJlOiBNaWNyb3NvZnQgT2ZmaWNl/9sAQwAK BwcIBwYKCAgICwoKCw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBB MTQ5Oz4+PiUuRElDPEg3PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8AA EQgBIQEhAwEiAAIRAQMRAf/EABwAAAEFAQEBAAAAAAAAAAAAAAABAwQFBgIH CP/EAEUQAAEDAgIECQgIBgICAwAAAAEAAgMEEQUhBhIxQRMWIjJRYXGhwQcU U3OBkdHhIzM0NUJSVJMVYnKSsfBEgoOiJUOy/8QAGgEAAgMBAQAAAAAAAAAA AAAAAAIBAwQFBv/EAC8RAAIBAgQFBAEEAwEBAAAAAAABAgMRBCExMxITFFFS QYGhsWEFIjLwQpHhwdH/3QAEACj/2gAMAwEAAhEDEQA/AKFCFExDEI8OhbLK x7g52qA2y8+k5OyPLRi5Oy1JaFS8Z6T0E3d8UvGek9BN3fFWcir2L+lreJco VNxmpPQTd3xRxmpPQTd3xRyKnYOlreJcoVNxmpPQTd3xS8ZaT0E3d8Ucip2D pa3iXCFT8ZaT0M3d8UcZaX0E3d8Ucip2Dpa3iXCFT8ZaX0M3d8UcZKX0M3d8 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 2Gg2vT7S9xh59ZxamFhTXMT2MFclrq9mTbyVLs8ieo+pldTxKzHvL1Dk32A9 BOX+jL46dPBLM5cfbXYXDFVt3hCfcS+qdK0CroATD43F7LBtnJlvjcR5lClu s4OPkxxy1p0c3nl3lWiawEQYcdpWpmntuOGVs952zLbm0o/8SsYX+H6cxf2m NaBv6GeYlhcNjo4/vPTvHWUB4RvUnqzqB/WeTBiDsHrOvj9MM+qlJd15T0Ye sPj4F2aWNbpzA9VJ0ZCJFvXs3+sfTkPW4YMVdexl9/RS/rT8L8HcSyajcjUg HoNmH4j4O4lj4Zd7aNHprfWMwPHmXiUpQuJSQo13PWA4t46zc7lT8PSip1IG zuTPO1rvHT6Bf52+5lHx7mrVND4GPU/WXb78xvvIufiLmYb0nv3U/WZcmPlj YjjymOUtZfHsV25lVWYdt+kkWXXa+ca+nSQq7Ka+ZK3Wtt6bmPXcDfl+Wjbv QH333nl5W+o9KYeVTLDYydLHQ/cakC6p32LcmoD0I7yNg5FWRa65VpLjXL16 S2DY2NWUoRVA6s2tkxXHx9tMsbh0o7q6qjzWZVtoHZB8MpcvLzMu+xcRTUn0 69PqZZ8b58mw21DmVOh1/rKUjy9gX9T/AAnQ1OzhnW6q8EuPV1s7FrLWBLX8 6xvUtoLJVwqq/aObDvWt6EDXnY1SWVHGRg499EH7yBdc5I+MMD07zWzyqsMM eOa0sLHXQNdYHWXnhK41eIsYHSrYGQ/qJmOayio7sBJG9A9oXhufYvFcTy33 aLVKj9ZMxsu/xXNyY+Fx/Xr/AA7LuORkYeTXyvS3wt6Op7GSMtuXHscDbKpI 666x/Or1Gwrs8u9DvImDxLH4nj+ZS2/RlPcH2InX/t87L43xt7UiYCcaw6+I 5mIlWcgIKt16jt1HcTGeZbXltfkFTqwVrXWPlIHuPQzb8Z4Xlpjt/l1j+Sdm yhT8X3Un/SYbLZMQclNSlmJ83zCRYOmhv7Rxd1bbJpYcGqrzMmi7OKqMdGsN JPwjr0bc0OdZTn8NuVvKfGKnnKv8oH2mY4FmYDOOHZ72hWp5fMsPzHfXZmhx PDWLVjX0va91V4PQMQAv6esdRd71rpQcAp4cudbbh8RUty/CrKRoep695LHH aruMPwcU25P8btrX9PaWHDfDGBwm97qeex2Gl8w75B7CTTTUtpsFaByNc3KN 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 kvYqwhWT5GldvhozfRP8Dcm+RpXUHVg6UXhz7q+vIJn2+cU6GZcMkkm3zPpH YOdeWgyp1ZOUKVaUKTfw8n+Zy12EvJVOCVxRUF99J8/oev0vTqel6fSs6UnK NNe8929zjrxy72tm7ZhlhJG2SQSd2QAAAAAAAAAAAgETnGnCU5tRjFZbfggK XFenb0J1qssQgstnkKtxK9up3M85lsui8CdV1eWqXXsqTcbWD5L431fkY6cW ngx7NnleRpww8Z2sj91vCkc+5ceLCp8zeqPEWjmV5ty95nN0xrXqptPMUvIv 2Oq/Z+1Vag3j29u//lp/7MNWc+Hu8urZytL1H7P25015xGdR05f3Jr8Trr/J Od7jX1pbBkIlmpgQVexYq9gIZVlmVYFWVZZlGEKTMEZU43VJ1ZxhBSTcpPCR mmcLtQ3+o7qKfOUcf5Ivr2tJbeR7dSjKKaacWsprmmXPl3ZjtBqGjuja869p KoouE8txz8LPqAxymTps13C8qQAWcwAAAAAAAAEDIBtJHkdd1h383aWsn7CL 78l99+XkZe0Gtu4crCzn3E8Vaie/9KOLRjwJJ+hi37v1xatWr9q2LalGEF6G ZZjFJ+HuvqatWq4LK917+T6incyb4Z8m9m9pGfG+3XKUuazic6dSUpf7NutL O8cfU1JzUc5k19Dp5ImLBWwqcm2eRu6srfVra5i/3FaM/Ro9RdVl7NpZfmzy 97RdSUnj5MvheV08Ox91hNTiprmpLKLHO0C4+1aDY1s5cqEc/NLD/A6Jtebf VCs8ACAg4Esh7BCrKssyrAqyrLMowP/T+kTOXqtjcalbO2tocc208ZxyR1J7 GXSUneVG1zUPzK2d9Etl65egdk52tzC7v0uKm8wpJ5w+rPWkYJGOMxnItlnc r2gALKgAAAAAAQAPOa/reFKztJd58qlRPbyROu66qfFZ2c+/tUqL7vkvM8y5 YiY927nxxatWrvyyTmMFleBilXxPGdzHOq/qY4xcm5eJi42cbim5LDXgVi0u 7PnTez+FiL4Y5b8DA6ic3Fp4e5aObJXcoLEk5x+Jbr59TFOMXHPVcmVVZ0m4 ZcovZ9CM8Em45cXvH/R0i0jFKhx8pvK6HNvrTEW8d1HcpVbea4qfe/Jmpfyg 48K+bLQ8nqOwtd1OzVKnJ86E5Qfrlfiek2PF9g67U7y3fJPhnH8GezT5G7C+ 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 QVGRFCJSYXGhFSMyQoGxwVNUYhYkM0NEkjQ2N3J0hKKywvEXGCUndXbR4SY1 RWNzgvD/xAAbAQEBAAIDAQAAAAAAAAAAAAAAAQIDBAUGB//EADQRAQABAwED CQYHAQEAAAAAAAABAgMRBAUhMQYSE0FRYZGhwRYiMlKx0RRTcYHh8PFCQ//d AAQAKP/aAAwDAQACEQMRAD8A7MiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiArCrvFDRuLJZhuHVreZVzVS8Gllk9lpK5zUSl0jiTknqp LKIy25+q6NpwyKR3xwF4u1dH92n83LUN/vVQ9RcQ2v8AlY49IGfiSqfyqmPS KP5rWA8qbXFUxDZP5T1B+5H5Kv8AKSpP3Y/Ja81y9GuTAzw1FUnuj8lIagqT 3M8lgmuXo0q4GcF+qD3M8lIXyoP3Y/JYUFTBTAzIvc56sYvQXqY9YmfNYdpU 2ODnFrXNLh1AOSEwj//Q6eLzJ3xM81IXg98I/ByxPMKoVwywy/0yP2B/vKov DO+Jw/FYjKZTBhmReIO9jx+C9G3Skd1eW/FqwJVCeSYMNminhmGY5Gu+BXqt UimdBMyRpwQefwW0tcHNDh0IyokwkiIiCIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAqKqsqu6UlEdssnreyOZQW2o6 gU9peM4MhDVz6SUblst/uEV2bHHE90bGZJyOqwYtkH3qhx+AwsWyOCzEimHq 9bbaQdZJCvVtBRjvf5qiwDl6Ncr5tHSDud5r0FLSey7zRFi1ym0lXwpqX2T5 qQp6b2T5qi0aV6NKuhT0/snzUhBB4HzVFu0r0aV7CGHwPmpiKP3oPNpWrXPs /pbhcJq+nutfRVEztzzG/Iz8uS28RM96kI2jxRGiDTeuLaP+ztUMqmDpFUN/ U5VfpztBtv8Ahtgp69rer6d2OX4Fb2GN96qIx4oYaKztPgpztu1juFCR1cWZ HzwsrRdoOl63Gy6MiJ6NnaWFbI+FkgxI1rx4OAP5rFVmkNP3Ak1NopXOP3gw B3mEF7T11JWAGlq4J8/s5A78l7HK1Cp7KrBIS6jkrKF3jFLn81bfyH1Rbv8A 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 YWNlIEdpZnQgTHRkAQAMAAUANwAAAAAAAAAAAAUABBAAAABQaG90bwEADAAF ADcAAAAAAAAAAAALAAQQAAAARGVzY3JpcHRpb24BAAwABQA3AAAAAAAAAAAA CAAEEAAAAFF1YW50aXR5AQAMAAUANwAAAAAAAAAAAAYABBAAAABSZW1hcmsB AAwABQA3AAAAAAAAAAAABgAEEAAAAE5vdGU6IAEADAAFADcAAAAAAAAAAAA4 AAQQAAAAUGF5bWVudCBUZXJtczogMzAlIGRlcG9zaXQsIGJhbGFuY2UgcGFp ZCBhdCBDb3B5IG9mIEIvTC4BAAwABQA3AAAAAAAAAAAAWwAEEAAAAFByaWNl cyBhcmUgcXVvdGVkIGJhc2VkIG9uIEZDTC4gWW91IGNhbiBvcmRlciBkaWZm ZXJlbnQgaXRlbXMgZnJvbSB1cyB0byBjb25zb2xpZGF0ZSBhIEZDTC4BAAwA BQA3AAAAAAAAAAAAQgAEEAAAAExvdyBxdWFudGl0eSBpcyBhY2NlcHRlZCBw bGVhc2UgY29udGFjdCB1cyBmb3IgcHJpY2UgY29uZmlybWF0aW9uLgEADAAF ADcAAAAAAAAAAAAqAAQQAAAAUHJvZHVjdGlvbiBsZWFkdGltZTogNDUgZGF5 cyBmcm9tIGFwcHJvdmFsAQAMAAUANwAAAAAAAAAAAAgABBAAAABJdGVtIE5v LgEADAAFADcAAAAAAAAAAAA8AAQQAAAAd3d3LnBhbGFjZWdpZnQuY29tICAg ICAgICAgICAgICAgICAgICAgIHNhbGVzQHBhbGFjZWdpZnQuY29tAQAMAAUA NwAAAAAAAAAAAAUABBAAAABEYXRlOgEADAAFADcAAAAAAAAAAAANAAQQAAAA QmVzdCByZWdhcmRzLAEADAAFADcAAAAAAAAAAAAUAAQQAAAAc2FsZXNAcGFs YWNlZ2lmdC5jb20BAAwABQA3AAAAAAAAAAAACAAEEAAAAFF1b3RlICM6AQAM AAUANwAAAAAAAAAAAB0ABBAAAABTYW1wbGluZyBsZWFkdGltZTogMTUtMjAg ZGF5cwEADAAFADcAAAAAAAAAAAAHAAQQAAAAMTAwMHBjcwEADAAFADcAAAAA AAAAAAAPAAQQAAAAVW5pdCBQcmljZQpGT0IgAQAMAAUANwAAAAAAAAAAAA8A ADIuIE1pY3Jvd2F2YWJsZQ8AADMuIERpc2h3YXNoYWJsZRkAADQuIEZvb2Qg R3JhZGUgc2lwIHRvcCBsaWQYAAA1LiBGREEgYW5kIEVFQyBjb21wbGlhbnQ7 AAA2LiBDdXN0b20gY29sb3IgZm9yIHRoZSBsaWQgcG9zc2libGU6IDEwMDAg cGNzL2N1c3RvbSBjb2xvch0AADcuIExvdyBtaW5pbXVtOiBvbmx5IDEwMDAg cGNzIQAAOC4gRmluZSBQb3JjZWxhaW4gQSBHcmFkZSBxdWFsaXR5QgAAOS4g RGVjb3JhdGlvbiB3aXRoIGltcHJpbnQgb3IgZGVjYWxzIHdpdGggeW9ydSBk ZXNpZ24gaXMgcG9zc2libGUuPQAAMTAuIEN1c3RvbWVkIG1hZGUgbGlkIGNv bG9yIHRvIG1hdGNoIHlvdXIgZGVzaWduIGlzIHBvc3NpYmxlIBEAADEyLiBF Y28tRnJpZW5kbHkuCQAEEAAAAEZlYXR1cmVzOgEADAAFADcAAAAAAAAAAACq AAQQAAAAMS4gSW5zdWxhdGUsIHZhY3V1bSBhbmQgZG91YmxlIHdhbGwsIGtl ZXBzIHlvdXIgaG90IGRyaW5rIGhvdCBmb3IgYSBsb25nZXIgdGltZSBhbmQg Y29sZCBkcmluayBjb2xkIGZvciBhIGxvbmdlciB0aW1lIHRvby4gQW5kIGl0 IGlzIHRoZaBjbGFzc2ljoFN0YXJidWNrc6BhbGwgdGhlIHdvcmxkLiABAAwA BQA3AAAAAAAAAAAAXAAEEAAAADExLiBWYWx1ZSBhZGVkIEdpZnQgQm94IGlz IHBvc3NpYmxlLiBWYWx1ZSBhZGRlZCBGdWxsIENvbG9yIGNvcnJ1Z2F0ZWQg R2lmdCBib3ggVVMkIDAuMjkvcGMgAQAMAAUANwAAAAAAAAAAAAcABBAAAABN aWNoYWVsAQAMAAUANwAAAAAAAAAMAFUABBAAAABQcmljZXMgVmFsaWQgd2l0 aGluIDYwIGRheXMgYW5kIGFyZSBzdWJqZXQgdG8gY2hhbmdlIGlmIHRoZSBy YXcgbWF0ZXJpYWwgY29zdCBjaGFuZ2UuAQAMAAUANwAAAAAAAAAAAC4AADEy IG96IGRvdWJsZSB3YWxsIFN0YXJidWNrcyBjZXJhbWljIENvZmZlZSBNdWc7 AAQQAAAAUGFja2luZzogMzYgcGNzL2NhcnRvbiwgY2FydG9uIHNpemUgNDJY MzJYNTBjbSwgMTZrZy9jYXJ0b24BAAwABQA3AAAAAAAAAAwA/wAqAAgAFiUH AAwAAABXJgcATQEAAGQoBwBaAwAAZikHAFwEAAC8KgcAsgUAAGMIFABjCAAA AAAAAAAAAAAUAAAABAAAAAoAAAAJCBAAAAYQANIozQfJgAAABgIAAAsCJAAA AAAAAAAAAIcAAAAQOAcA0T4HAFlEBwDhSQcAlVAHAEtSBwANAAIAAQAMAAIA ZAAPAAIAAQARAAIAAAAQAAgA/Knx0k1iUD9fAAIAAQAqAAIAAAArAAIAAACC AAIAAQCAAAgAAAAAAAAAAAAlAgQAAAA7AYEAAgDBBBsADgACADYAAAAFAFoA AAAFABoACAABAAYAAAD//xQAAAAVANkAawABJgBMACYAIgBBAHIAaQBhAGwA LAA4XsSJIgAmAEYAJgBDACYAIgBBAHIAaQBhAGwALAA4XsSJIgBQAGEAbABh AGMAZQAgAEcAaQBmAHQAIABMAHQAZAAKAHcAdwB3AC4AcABhAGwAYQBjAGUA ZwBpAGYAdAAuAGMAbwBtAAoAcwBhAGwAZQBzAEAAcABhAGwAYQBjAGUAZwBp AGYAdAAuAGMAbwBtACYAUgAmACIAQwBvAHUAcgBpAGUAcgAgAE4AZQB3ACwA nGVTTyIAJgBQAC8AJgBOAIMAAgAAAIQAAgAAACYACAD8/X6/3+/nPycACAD8 /X6/3+/nPygACADg7/f7/X7vPykACADg7/f7/X7vP00A0ggAAFwAXABEAE8A UgBBAFwAUwBhAG0AcwB1AG4AZwAgAE0ARgBQACAANQA2ADAAIABTAGUAcgBp AGUAcwAAAAAAAAABBAAF3AD0Bw/PAQABAAkAmgs0CGQAAQAHAFgCAgABAFgC AwAAAEEANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUklWoBAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AgABAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAABAA8ANAiaCwAAAQAP AAAAAAAAAAEAAAAAAAAAAAABAAAAAQAPAAAAZAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQwBvAHUA cgBpAGUAcgAgAE4AZQB3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKEA IgAJADUAAQABAAEAAgBYAgAAGAwGg8Fg4D8YDAaDwWDgPwEAVQACAAgAfQAM AAAAAAAAChcAAgACAH0ADAABAAEAwC8XAAIAAgB9AAwAAgACAAAdFwACAAIA fQAMAAMAAwBgDCwAAgACAH0ADAAEAAQAAAkXAAAAAgB9AAwABQAFAGANFwAC AAIAfQAMAAYAAAEACRcAAAACAAACDgAAAAAAhwAAAAAABgAAAAgCEAAAAAAA BgArAgAAAABAAQ8ACAIQAAEAAAAGAGgBAAAAAAABDwAIAhAAAgAAAAYAaAEA AAAAAAEPAAgCEAADAAAABgA7AQAAAAAAAQ8ACAIQAAQAAAAGADsBAAAAAAAB DwAIAhAABQAAAAYAhAMAAAAAAAEPAAgCEAAGAAAABgCUAgAAAABAAQ8ACAIQ AAcAAAAGAJQCAAAAAEABDwAIAhAACAAAAAYAhgEAAAAAQAEPAAgCEAAJAAAA BgCGAQAAAABAAQ8ACAIQAAoAAAAGAIYBAAAAAEABDwAIAhAACwAAAAYAhgEA AAAAQAEPAAgCEAAMAAAABgCGAQAAAABAAQ8ACAIQAA0AAAAGAIYBAAAAAEAB DwAIAhAADgAAAAYAhgEAAAAAQAEPAAgCEAAPAAAABgCGAQAAAABAAQ8ACAIQ ABAAAAAGAIYBAAAAAEABDwAIAhAAEQAAAAYAhgEAAAAAQAEPAAgCEAASAAAA BgCGAQAAAABAAQ8ACAIQABMAAAAGAIYBAAAAAEABDwAIAhAAFAAAAAYAhgEA AAAAQAEPAAgCEAAVAAAABgCGAQAAAABAAQ8ACAIQABYAAAAGAIYBAAAAAEAB DwAIAhAAFwAAAAYAhgEAAAAAQAEPAAgCEAAYAAAABgCGAQAAAABAAQ8ACAIQ ABkAAAAGAIYBAAAAAEABDwAIAhAAGgAAAAYAhgEAAAAAQAEPAAgCEAAbAAAA BgCGAQAAAABAAQ8ACAIQABwAAAAGAIYBAAAAAEABDwAIAhAAHQAAAAYAhgEA AAAAQAEPAAgCEAAeAAAABgCGAQAAAABAAQ8ACAIQAB8AAAAGAIYBAAAAAEAB DwD9AAoAAAAAAE0AAgAAAL4AEAAAAAEATgBOAE4ATgBPAAUA/QAKAAEAAABT AAAAAAC+ABAAAQABAFQAVABUAFQAVQAFAP0ACgACAAAAVgANAAAAvgAQAAIA AQBXAFcAVwBXAFgABQC+ABIAAwAAABgAGQAZABoAGQAbAAUA/QAKAAQAAAAc AA4AAAAGAB0ABAABAB0AAAAAACCi40ABANQAq/wHABkBAABB3QABAgYABAAC ABkA/QAKAAQAAwAeABEAAAC+AAoABAAEAFkAWgAFAP0ACgAFAAAAUAABAAAA vgAQAAUAAQBRAFEAUQBRAFIABQD9AAoABgAAAB8ADAAAAP0ACgAGAAEAIAAD AAAA/QAKAAYAAgAgAAQAAAD9AAoABgADADcAFAAAAP0ACgAGAAQAIAAFAAAA /QAKAAYABQAhAAYAAAD9AAoABwAAAEoAJAAAAL4AEAAHAAEASwBLAEsASwBM AAUAvgASAAgAAAAvADAAMABEAEUARgAFAL4AEgAJAAAALwAwADAARABFAEYA BQC+ABIACgAAAC8AMAAwAEQARQBGAAUAvgASAAsAAAAvADAAMABEAEUARgAF AL4ADAAMAAAALwAwADAAAgB+AgoADAADAEQAAUBrQP0ACgAMAAQARQATAAAA AQIGAAwABQBGAL4AEgANAAAALwAwADAARABFAEYABQC+ABIADgAAAC8AMAAw AEQARQBGAAUAvgASAA8AAAAvADAAMABEAEUARgAFAL4AEgAQAAAALwAwADAA RABFAEYABQC+ABIAEQAAAC8AMAAwAEQARQBGAAUAvgASABIAAAAzADQANABH AEgASQAFAL4AEgATAAAALwAwADAARABFAEYABQC+ABIAFAAAAC8AMAAwAEQA RQBGAAUAvgASABUAAAAvADAAMABEAEUARgAFAL4AEgAWAAAALwAwADAARABF AEYABQC+ABIAFwAAAC8AMAAwAEQARQBGAAUAvgAMABgAAAAvADAAMAACAH4C CgAYAAMARAABQGtA/QAKABgABABFABMAAAABAgYAGAAFAEYAvgASABkAAAAv ADAAMABEAEUARgAFAL4AEgAaAAAALwAwADAARABFAEYABQC+ABIAGwAAAC8A MAAwAEQARQBGAAUAvgASABwAAAAvADAAMABEAEUARgAFAL4AEgAdAAAALwAw ADAARABFAEYABQC+ABIAHgAAADMANAA0AEcASABJAAUAvgASAB8AAAAvADAA MABEAEUARgAFANcARAA5BgAAbAIiACIAIgAWAFUAIgBUACIAFgAWABYAFgA2 ABYAFgAWABYAFgAWABYAFgAWABYAFgA2ABYAFgAWABYAFgAWAAgCEAAgAAAA BgCGAQAAAABAAQ8ACAIQACEAAAAGAIYBAAAAAEABDwAIAhAAIgAAAAYAhgEA AAAAQAEPAAgCEAAjAAAABgCGAQAAAABAAQ8ACAIQACQAAAAGAIYBAAAAAEAB DwAIAhAAJQAAAAYAhgEAAAAAQAEPAAgCEAAmAAAABgCGAQAAAABAAQ8ACAIQ ACcAAAAGAIYBAAAAAEABDwAIAhAAKAAAAAYAhgEAAAAAQAEPAAgCEAApAAAA BgCGAQAAAABAAQ8ACAIQACoAAAAGAIYBAAAAAEABDwAIAhAAKwAAAAYAhgEA AAAAQAEPAAgCEAAsAAAABgCGAQAAAABAAQ8ACAIQAC0AAAAGAIYBAAAAAEAB DwAIAhAALgAAAAYAhgEAAAAAQAEPAAgCEAAvAAAABgCGAQAAAABAAQ8ACAIQ ADAAAAAGAIYBAAAAAEABDwAIAhAAMQAAAAYAhgEAAAAAQAEPAAgCEAAyAAAA BgCGAQAAAABAAQ8ACAIQADMAAAAGAIYBAAAAAEABDwAIAhAANAAAAAYAhgEA AAAAQAEPAAgCEAA1AAAABgCGAQAAAABAAQ8ACAIQADYAAAAGAIYBAAAAAEAB DwAIAhAANwAAAAYAhgEAAAAAQAEPAAgCEAA4AAAABgCGAQAAAABAAQ8ACAIQ ADkAAAAGAIYBAAAAAEABDwAIAhAAOgAAAAYAhgEAAAAAQAEPAAgCEAA7AAAA BgCGAQAAAABAAQ8ACAIQADwAAAAGAIYBAAAAAEABDwAIAhAAPQAAAAYAhgEA AAAAQAEPAAgCEAA+AAAABgCGAQAAAABAAQ8ACAIQAD8AAAAGAIYBAAAAAEAB DwC+ABIAIAAAAC8AMAAwAEQARQBGAAUAvgASACEAAAAvADAAMABEAEUARgAF AL4AEgAiAAAALwAwADAARABFAEYABQC+ABIAIwAAAC8AMAAwAEQARQBGAAUA vgASACQAAAAvADAAMABEAEUARgAFAL4AEgAlAAAALwAwADAARABFAEYABQC+ ABIAJgAAAC8AMAAwAEQARQBGAAUAvgASACcAAAAvADAAMABEAEUARgAFAL4A EgAoAAAALwAwADAARABFAEYABQC+ABIAKQAAAC8AMAAwAEQARQBGAAUAvgAS ACoAAAAvADAAMABEAEUARgAFAL4AEgArAAAALwAwADAARABFAEYABQC+ABIA LAAAAC8AMAAwAEQARQBGAAUAvgASAC0AAAAvADAAMABEAEUARgAFAL4AEgAu AAAALwAwADAARABFAEYABQC+ABIALwAAAC8AMAAwAEQARQBGAAUAvgASADAA AAAvADAAMABEAEUARgAFAL4AEgAxAAAALwAwADAARABFAEYABQC+ABIAMgAA AC8AMAAwAEQARQBGAAUAvgASADMAAAAvADAAMABEAEUARgAFAL4AEgA0AAAA LwAwADAARABFAEYABQC+ABIANQAAAC8AMAAwAEQARQBGAAUAvgASADYAAAAv ADAAMABEAEUARgAFAL4AEgA3AAAALwAwADAARABFAEYABQC+ABIAOAAAAC8A MAAwAEQARQBGAAUAvgASADkAAAAvADAAMABEAEUARgAFAL4AEgA6AAAALwAw ADAARABFAEYABQC+ABIAOwAAAC8AMAAwAEQARQBGAAUAvgASADwAAAAvADAA MABEAEUARgAFAL4AEgA9AAAALwAwADAARABFAEYABQC+ABIAPgAAAC8AMAAw AEQARQBGAAUAvgASAD8AAAAvADAAMABEAEUARgAFANcARABABQAAbAIWABYA FgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAW ABYAFgAWABYAFgAWAAgCEABAAAAABgCGAQAAAABAAQ8ACAIQAEEAAAAGAIYB AAAAAEABDwAIAhAAQgAAAAYAhgEAAAAAQAEPAAgCEABDAAAABgCGAQAAAABA AQ8ACAIQAEQAAAAGAIYBAAAAAEABDwAIAhAARQAAAAYAhgEAAAAAQAEPAAgC EABGAAAABgCGAQAAAABAAQ8ACAIQAEcAAAAGAIYBAAAAAEABDwAIAhAASAAA AAYAhgEAAAAAQAEPAAgCEABJAAAABgCGAQAAAABAAQ8ACAIQAEoAAAAGAIYB AAAAAEABDwAIAhAASwAAAAYAhgEAAAAAQAEPAAgCEABMAAAABgCGAQAAAABA AQ8ACAIQAE0AAAAGAIYBAAAAAEABDwAIAhAATgAAAAYAhgEAAAAAQAEPAAgC EABPAAAABgCGAQAAAABAAQ8ACAIQAFAAAAAGAIYBAAAAAEABDwAIAhAAUQAA AAYAhgEAAAAAQAEPAAgCEABSAAAABgCGAQAAAABAAQ8ACAIQAFMAAAAGAIYB AAAAAEABDwAIAhAAVAAAAAYAhgEAAAAAQAEPAAgCEABVAAAABgCGAQAAAABA AQ8ACAIQAFYAAAAGAIYBAAAAAEABDwAIAhAAVwAAAAYAhgEAAAAAQAEPAAgC EABYAAAABgCGAQAAAABAAQ8ACAIQAFkAAAAGAIYBAAAAAEABDwAIAhAAWgAA AAYAhgEAAAAAQAEPAAgCEABbAAAABgCGAQAAAABAAQ8ACAIQAFwAAAAGAIYB AAAAAEABDwAIAhAAXQAAAAYAhgEAAAAAQAEPAAgCEABeAAAABgCGAQAAAABA AQ8ACAIQAF8AAAAGAIYBAAAAAEABDwC+ABIAQAAAAC8AMAAwAEQARQBGAAUA vgASAEEAAAAvADAAMABEAEUARgAFAL4AEgBCAAAALwAwADAARABFAEYABQC+ ABIAQwAAAC8AMAAwAEQARQBGAAUAvgASAEQAAAAvADAAMABEAEUARgAFAL4A EgBFAAAALwAwADAARABFAEYABQC+ABIARgAAAC8AMAAwAEQARQBGAAUAvgAS AEcAAAAvADAAMABEAEUARgAFAL4AEgBIAAAALwAwADAARABFAEYABQC+ABIA SQAAAC8AMAAwAEQARQBGAAUAvgASAEoAAAAvADAAMABEAEUARgAFAL4AEgBL AAAALwAwADAARABFAEYABQC+ABIATAAAAC8AMAAwAEQARQBGAAUAvgASAE0A AAAvADAAMAAxADAAMgAFAL4AEgBOAAAALwAwADAAMQAwADIABQC+ABIATwAA AC8AMAAwADEAMAAyAAUAvgASAFAAAAAvADAAMAAxADAAMgAFAL4AEgBRAAAA LwAwADAAMQAwADIABQC+ABIAUgAAAC8AMAAwADEAMAAyAAUAvgASAFMAAAAv ADAAMAAxADAAMgAFAL4AEgBUAAAALwAwADAAMQAwADIABQC+ABIAVQAAAC8A MAAwADEAMAAyAAUAvgASAFYAAAAvADAAMAAxADAAMgAFAL4AEgBXAAAALwAw ADAAMQAwADIABQC+ABIAWAAAAC8AMAAwADEAMAAyAAUAvgASAFkAAAAzADQA NAA1ADQANgAFAL4AEgBaAAAAGAAtABkAGgAZABsABQC+ABIAWwAAABgALQAZ ABoAGQAbAAUAvgASAFwAAAAYAC0AGQAaABkAGwAFAL4AEgBdAAAAGAAtABkA GgAZABsABQC+ABIAXgAAABgALQAZABoAGQAbAAUAvgASAF8AAAAYAC0AGQAa ABkAGwAFANcARABABQAAbAIWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYA FgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWAAgCEABgAAAABgCG AQAAAABAAQ8ACAIQAGEAAAAGAIYBAAAAAEABDwAIAhAAYgAAAAYAhgEAAAAA QAEPAAgCEABjAAAABgCGAQAAAABAAQ8ACAIQAGQAAAAGAIYBAAAAAEABDwAI AhAAZQAAAAYAhgEAAAAAQAEPAAgCEABmAAAABgCGAQAAAABAAQ8ACAIQAGcA AAAGAIYBAAAAAEABDwAIAhAAaAAAAAYAhgEAAAAAQAEPAAgCEABpAAAABgCG AQAAAABAAQ8ACAIQAGoAAAAGAIYBAAAAAEABDwAIAhAAawAAAAYAhgEAAAAA QAEPAAgCEABsAAAABgCGAQAAAABAAQ8ACAIQAG0AAAAGAIYBAAAAAMABPAAI AhAAbgAAAAYAhgEAAAAAwAE8AAgCEABvAAAABgCGAQAAAADAATwACAIQAHAA AAAGAIYBAAAAAMABPAAIAhAAcQAAAAYAhgEAAAAAwAE8AAgCEAByAAAABgCG AQAAAADAATwACAIQAHMAAAAGAIYBAAAAAMABPAAIAhAAdAAAAAYAhgEAAAAA wAE8AAgCEAB1AAAABgCGAQAAAADAATwACAIQAHYAAAAGAIYBAAAAAMABPAAI AhAAdwAAAAYAhgEAAAAAwAE8AAgCEAB4AAAABgCGAQAAAADAATwACAIQAHkA AAAGADsBAAAAAAABDwAIAhAAegAAAAYAOwEAAAAAAAEPAAgCEAB7AAAABgA7 AQAAAAAAAQ8ACAIQAHwAAAAGADsBAAAAAAABDwAIAhAAfQAAAAYAOwEAAAAA AAEPAAgCEAB+AAAABgA7AQAAAAAAAQ8ACAIQAH8AAAAGADsBAAAAAAABDwC+ ABIAYAAAABgALQAZABoAGQAbAAUAvgASAGEAAAAYAC0AGQAaABkAGwAFAL4A EgBiAAAAGAAtABkAGgAZABsABQC+ABIAYwAAABgALQAZABoAGQAbAAUAvgAS AGQAAAAYAC0AGQAaABkAGwAFAL4AEgBlAAAAGAAtABkAGgAZABsABQC+ABIA ZgAAABgALQAZABoAGQAbAAUAvgASAGcAAAAYAC0AGQAaABkAGwAFAL4AEgBo AAAAGAAtABkAGgAZABsABQC+ABIAaQAAABgALQAZABoAGQAbAAUAvgASAGoA AAAiAC4AIwAkACMAJQAFAP0ACgBrAAAAGQAlAAAAvgAQAGsAAQAtABkAGgAZ ABsABQD9AAoAbAAAAEEAHwAAAL4AEABsAAEALQAZABoAGQAbAAUA/QAKAG0A AABCACAAAAC+ABAAbQABADgAOQA6ADkAOwAFAP0ACgBuAAAAQgAVAAAAvgAQ AG4AAQA4ADkAOgA5ADsABQD9AAoAbwAAAEIAFgAAAL4AEABvAAEAOAA5ADoA OQA7AAUA/QAKAHAAAABCABcAAAC+ABAAcAABADgAOQA6ADkAOwAFAP0ACgBx AAAAQgAYAAAAvgAQAHEAAQA4ADkAOgA5ADsABQD9AAoAcgAAAEIAGQAAAL4A EAByAAEAOAA5ADoAOQA7AAUA/QAKAHMAAABCABoAAAC+ABAAcwABADgAOQA6 ADkAOwAFAP0ACgB0AAAAQgAbAAAAvgAQAHQAAQA4ADkAOgA5ADsABQD9AAoA dQAAAEIAHAAAAL4AEAB1AAEAOAA5ADoAOQA7AAUA/QAKAHYAAABCAB0AAAC+ ABAAdgABADgAOQA6ADkAOwAFAP0ACgB3AAAAQgAhAAAAvgAQAHcAAQA4ADkA OgA5ADsABQD9AAoAeAAAAEMAHgAAAL4AEAB4AAEAPQA+AD8APgBAAAUAvgAS AHkAAAAYABkAGQAaABkAGwAFAP0ACgB6AAAAHAAHAAAAvgAQAHoAAQAZABkA GgAZABsABQB+AgoAewAAACYAAADwP/0ACgB7AAEAGQAjAAAAvgAOAHsAAgAZ ABoAGQAbAAUAfgIKAHwAAAAmAAAAAED9AAoAfAABABkACAAAAL4ADgB8AAIA GQAaABkAGwAFAH4CCgB9AAAAJgAAAAhA/QAKAH0AAQAZAAkAAAC+AA4AfQAC ABkAGgAZABsABQB+AgoAfgAAACYAAAAQQP0ACgB+AAEAGQAKAAAAvgAOAH4A AgAZABoAGQAbAAUAfgIKAH8AAAAmAAAAFED9AAoAfwABABkAEgAAAL4ADgB/ AAIAGQAaABkAGwAFANcARABsBgAAbAIWABYAFgAWABYAFgAWABYAFgAWABYA IgAiACIAIgAiACIAIgAiACIAIgAiACIAIgAiABYAIgAuAC4ALgAuAAgCEACA AAAABgA7AQAAAAAAAQ8ACAIQAIEAAAAGADsBAAAAAAABDwAIAhAAggAAAAYA OwEAAAAAAAEPAAgCEACDAAAABgA7AQAAAAAAAQ8ACAIQAIQAAAAGADsBAAAA AAABDwAIAhAAhQAAAAYAOwEAAAAAAAEPAAgCEACGAAAABgBKAQAAAAAAAQ8g fgIKAIAAAAAmAAAAGED9AAoAgAABABkACwAAAL4ADgCAAAIAGQAaABkAGwAF AL4AEgCBAAAAGAAZABkAGgAZABsABQD9AAoAggAAABgAIgAAAL4AEACCAAEA GQAZABoAGQAbAAUA/QAKAIMAAAAYAA8AAAC+ABAAgwABABkAGQAaABkAGwAF AP0ACgCEAAAAGAACAAAAvgAQAIQAAQAZABkAGgAZABsABQD9AAoAhQAAACcA EAAAAL4AEACFAAEAGQAZABoAGQAbAAUAvgASAIYAAAAoACkAKQAqACkAKwAF ANcAEgBuAQAAeAAuABYAIgAiACIAIgDsANgADwAC8MoHAAAQAAjwCAAAABMA AAAgBAAAMAAY8QwAAAABAAAAAgAAAAMAAAAPAAPwngcAAA8ABPAoAAAAAQAJ 8BAAAAAAAAAAAAAAAAAAAAAAAAAAAgAK8AgAAAAABAAABQAAAA8AA/AaAQAA DwAE8GQAAAABAAnwEAAAAFYAAAAyBQAAkwIAAFMGAAACAArwCAAAABQEAAAB AgAAMwAL8BIAAAAEAAAAAAB/AAQABACIAwIAAAAAABDwEgAAAAAAAABmARMA bAACAGYCHgCKAAAAEfAAAAAAXQAgABUAEgAAABQAEWAAAAAA6Cd0AQAAAAAG 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 AD4BAAAkAwAAZAMAANsDAAAAABHwAAAAAF0AJgAVABIACAAaABFgAAAAAHww dAEAAAAABwACAP//CAACAAAAAAAAAOwAigAPAATwggAAALIECvAIAAAAHQQA AAAKAAAjAAvwSAAAAARBAQAAAAXBPAAAAGMAbwBsAG8AcgBmAHUAbAAgAGwA aQBkAHMAIABhAG4AZAAgAG0AdQBnACAAdwByAGEAcABzACAAMgAAAAAAEPAS AAAAAgAAAM0CLQAAAAIARwE1ANkAAAAR8AAAAABdACYAFQASAAgAHQARYAAA AADsMHQBAAAAAAcAAgD//wgAAgABAAAAAADsAIQADwAE8HwAAACyBArwCAAA AB4EAAAACgAAIwAL8EIAAAAEQQIAAAAFwTYAAABjAG8AbABvAHIAIABmAHUA bABsACAAbABpAGQAcwAgAGEAbgBkACAAaABvAGwAZABlAHIAAAAAABDwEgAA AAIAAADNAjYAAAACAEcBPwCKAAAAEfAAAAAAXQAmABUAEgAIAB4AEWAAAAAA 6DF0AQAAAAAHAAIA//8IAAIAAQAAAAAA7ABqAA8ABPBiAAAAsgQK8AgAAAAf BAAAAAoAACMAC/AoAAAABEEDAAAABcEcAAAAQwBvAGwAbwByAGYAdQBsACAA TABpAGQAcwAAAAAAEPASAAAAAgAAAM0CPwDZAAIATwFMAIoAAAAR8AAAAABd ACYAFQASAAgAHwARYAAAAACQMnQBAAAAAAcAAgD//wgAAgAAAAAAAADsAIQA DwAE8HwAAACyBArwCAAAACAEAAAACgAAIwAL8EIAAAAEQQUAAAAFwTYAAABD AG8AbABvAHIAZgB1AGwAIABsAGkAZABzACAAYQBuAGQAIABtAHUAZwAgAHcA cgBhAHAAAAAAABDwEgAAAAIAAAAAAh8AWQACACwCLQA7AAAAEfAAAAAAXQAm ABUAEgAIACAAEWAAAAAAHDN0AQAAAAAHAAIA//8IAAIAAQAAAAAAPgISAL4G AAAAAEAAAAA3AGQAAAAAAEEACgAAAAcAcgBAAAIAHQAPAAMAAAAAAAABAAAA AAAAAB0ADwACdQADAAAAAQB1AHUAAwPlADIABgAHAAcAAAAFAAAAAAAAAAUA BQAFAAAABQABAAEAAAAFAAIAAgAAAAUABAAEAAQABQDvAAYABQA3AAAAuAGs AAIAAgAAAAAA0Mnqefm6zhGMggCqAEupCwIAAAAXAAAAEwAAAHcAdwB3AC4A cABhAGwAYQBjAGUAZwBpAGYAdAAuAGMAbwBtAAAA4Mnqefm6zhGMggCqAEup C04AAABoAHQAdABwADoALwAvAHcAdwB3AC4AcABhAGwAYQBjAGUAZwBpAGYA dAAuAGMAbwBtAC8AAAB5WIH0Ox1/SK8sgl3EhSdjAAAAAKWrAAC4AbIAhQCF AAAAAADQyep5+brOEYyCAKoAS6kLAgAAABcAAAAVAAAAcwBhAGwAZQBzAEAA cABhAGwAYQBjAGUAZwBpAGYAdAAuAGMAbwBtAAAA4Mnqefm6zhGMggCqAEup C1AAAABtAGEAaQBsAHQAbwA6AHMAYQBsAGUAcwBAAHAAYQBsAGEAYwBlAGcA aQBmAHQALgBjAG8AbQAAAHlYgfQ7HX9IryyCXcSFJ2MAAAAApasAALoBCQAG AABTaGVldDEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /v8AAAUBAgAAAAAAAAAAAAAAAAAAAAAAAQAAAOCFn/L5T2gQq5EIACsns9kw AAAArAAAAAgAAAABAAAASAAAAAQAAABQAAAACAAAAFwAAAASAAAAaAAAAAsA AACAAAAADAAAAIwAAAANAAAAmAAAABMAAACkAAAAAgAAAKgDAAAeAAAABAAA AAAAAAAeAAAABAAAAAAAAAAeAAAAEAAAAE1pY3Jvc29mdCBFeGNlbABAAAAA gLyGskiiygFAAAAAAJkcMrrruwFAAAAAAFMfs0iiygEDAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AP7/AAAFAQIAAAAAAAAAAAAAAAAAAAAAAAIAAAAC1c3VnC4bEJOXCAArLPmu RAAAAAXVzdWcLhsQk5cIACss+a5MAQAACAEAAAkAAAABAAAAUAAAAA8AAABY AAAAFwAAAGQAAAALAAAAbAAAABAAAAB0AAAAEwAAAHwAAAAWAAAAhAAAAA0A AACMAAAADAAAAM0AAAACAAAAqAMAAB4AAAAEAAAAAAAAAAMAAAC3GgoACwAA AAAAAAALAAAAAAAAAAsAAAAAAAAACwAAAAAAAAAeEAAAAwAAAAcAAABTaGVl dDEAEgAAAFNoZWV0MSFQcmludF9BcmVhABQAAABTaGVldDEhUHJpbnRfVGl0 bGVzAAwQAAAEAAAAHgAAAAcAAAC5pNf3se0AAwAAAAEAAAAeAAAACQAAAMP8 w/u3ts6nAAMAAAACAAAAAAAAJAEAAAMAAAAAAAAAIAAAAAEAAAA4AAAAAgAA AEAAAAABAAAAAgAAAAwAAABfUElEX0hMSU5LUwACAAAAqAMAAEEAAADcAAAA DAAAAAMAAAAVADEAAwAAAAEAAAADAAAAAAAAAAMAAAAGAAAAHwAAABwAAABt AGEAaQBsAHQAbwA6AHMAYQBsAGUAcwBAAHAAYQBsAGEAYwBlAGcAaQBmAHQA LgBjAG8AbQAAAB8AAAABAAAAAAAAAAMAAAAmADsAAwAAAAAAAAADAAAAAAAA AAMAAAAGAAAAHwAAABsAAABoAHQAdABwADoALwAvAHcAdwB3AC4AcABhAGwA YQBjAGUAZwBpAGYAdAAuAGMAbwBtAC8AAAAAAB8AAAABAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAA AAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAA FwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAi AAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0A AAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAA ADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAA RAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABP AAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoA AABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAA AGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAA cQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8 AAAAfQAAAH4AAAB/AAAAgAAAAIEAAACCAAAAgwAAAIQAAACFAAAAhgAAAIcA AACIAAAAiQAAAIoAAACLAAAAjAAAAI0AAACOAAAAjwAAAJAAAACRAAAAkgAA AJMAAACUAAAAlQAAAJYAAACXAAAAmAAAAJkAAACaAAAAmwAAAJwAAACdAAAA ngAAAJ8AAACgAAAAoQAAAKIAAACjAAAApAAAAKUAAACmAAAApwAAAKgAAACp AAAAqgAAAKsAAACsAAAArQAAAK4AAACvAAAAsAAAALEAAACyAAAAswAAALQA AAC1AAAAtgAAALcAAAC4AAAAuQAAALoAAAC7AAAAvAAAAL0AAAC+AAAAvwAA AMAAAADBAAAAwgAAAMMAAADEAAAAxQAAAMYAAADHAAAAyAAAAMkAAADKAAAA ywAAAMwAAADNAAAAzgAAAM8AAADQAAAA0QAAANIAAADTAAAA1AAAANUAAADW AAAA1wAAANgAAADZAAAA2gAAANsAAADcAAAA3QAAAN4AAADfAAAA4AAAAOEA AADiAAAA4wAAAOQAAADlAAAA5gAAAOcAAADoAAAA6QAAAOoAAADrAAAA7AAA AO0AAADuAAAA7wAAAPAAAADxAAAA8gAAAPMAAAD0AAAA9QAAAPYAAAD3AAAA +AAAAPkAAAD6AAAA+wAAAPwAAAD9AAAA/gAAAP8AAAAAAQAAAQEAAAIBAAAD AQAABAEAAAUBAAAGAQAABwEAAAgBAAAJAQAACgEAAAsBAAAMAQAADQEAAA4B AAAPAQAAEAEAABEBAAASAQAAEwEAABQBAAAVAQAAFgEAABcBAAAYAQAAGQEA ABoBAAAbAQAAHAEAAB0BAAAeAQAAHwEAACABAAAhAQAAIgEAACMBAAAkAQAA JQEAACYBAAAnAQAAKAEAACkBAAAqAQAAKwEAACwBAAAtAQAALgEAAC8BAAAw AQAAMQEAADIBAAAzAQAANAEAADUBAAA2AQAANwEAADgBAAA5AQAAOgEAADsB AAA8AQAAPQEAAD4BAAA/AQAAQAEAAEEBAABCAQAAQwEAAEQBAABFAQAARgEA AEcBAABIAQAASQEAAEoBAABLAQAATAEAAE0BAABOAQAATwEAAFABAABRAQAA UgEAAFMBAABUAQAAVQEAAFYBAABXAQAAWAEAAFkBAABaAQAAWwEAAFwBAABd AQAAXgEAAF8BAABgAQAAYQEAAGIBAABjAQAAZAEAAGUBAABmAQAAZwEAAGgB AABpAQAAagEAAGsBAABsAQAAbQEAAG4BAABvAQAAcAEAAHEBAAByAQAAcwEA AHQBAAB1AQAAdgEAAHcBAAB4AQAAeQEAAHoBAAB7AQAAfAEAAH0BAAB+AQAA fwEAAIABAACBAQAAggEAAIMBAACEAQAAhQEAAIYBAACHAQAAiAEAAIkBAACK AQAAiwEAAIwBAACNAQAAjgEAAI8BAACQAQAAkQEAAJIBAACTAQAAlAEAAJUB AACWAQAAlwEAAJgBAACZAQAAmgEAAJsBAACcAQAAnQEAAJ4BAACfAQAAoAEA AKEBAACiAQAAowEAAKQBAAClAQAApgEAAKcBAACoAQAAqQEAAKoBAACrAQAA rAEAAK0BAACuAQAArwEAALABAACxAQAAsgEAALMBAAC0AQAAtQEAALYBAAC3 AQAAuAEAALkBAAC6AQAAuwEAALwBAAC9AQAAvgEAAL8BAADAAQAAwQEAAMIB AADDAQAAxAEAAMUBAADGAQAAxwEAAMgBAADJAQAAygEAAMsBAADMAQAAzQEA AM4BAADPAQAA0AEAANEBAADSAQAA0wEAANQBAADVAQAA1gEAANcBAADYAQAA 2QEAANoBAADbAQAA3AEAAN0BAADeAQAA3wEAAOABAADhAQAA4gEAAOMBAADk AQAA5QEAAOYBAADnAQAA6AEAAOkBAADqAQAA6wEAAOwBAADtAQAA7gEAAO8B AADwAQAA8QEAAPIBAADzAQAA9AEAAPUBAAD2AQAA9wEAAPgBAAD5AQAA+gEA APsBAAD8AQAA/QEAAP4BAAD/AQAAAAIAAAECAAACAgAAAwIAAAQCAAAFAgAA BgIAAAcCAAAIAgAACQIAAAoCAAALAgAADAIAAA0CAAAOAgAADwIAABACAAAR AgAAEgIAABMCAAAUAgAAFQIAABYCAAAXAgAAGAIAABkCAAAaAgAAGwIAABwC AAAdAgAAHgIAAB8CAAAgAgAAIQIAACICAAAjAgAAJAIAACUCAAAmAgAAJwIA ACgCAAApAgAAKgIAACsCAAAsAgAALQIAAC4CAAAvAgAAMAIAADECAAAyAgAA MwIAADQCAAA1AgAANgIAADcCAAA4AgAAOQIAADoCAAA7AgAAPAIAAD0CAAA+ AgAAPwIAAEACAABBAgAAQgIAAEMCAABEAgAARQIAAEYCAABHAgAASAIAAEkC AABKAgAASwIAAEwCAABNAgAATgIAAE8CAABQAgAAUQIAAFICAABTAgAAVAIA AFUCAABWAgAAVwIAAFgCAABZAgAAWgIAAFsCAABcAgAAXQIAAF4CAABfAgAA YAIAAGECAABiAgAAYwIAAGQCAABlAgAAZgIAAGcCAABoAgAAaQIAAGoCAABr AgAAbAIAAG0CAABuAgAAbwIAAHACAABxAgAAcgIAAHMCAAB0AgAAdQIAAHYC AAB3AgAAeAIAAHkCAAB6AgAAewIAAHwCAAB9AgAAfgIAAH8CAACAAgAAgQIA AIICAACDAgAAhAIAAIUCAACGAgAAhwIAAIgCAACJAgAAigIAAIsCAACMAgAA jQIAAI4CAACPAgAAkAIAAJECAACSAgAAkwIAAJQCAACVAgAAlgIAAJcCAACY AgAAmQIAAJoCAACbAgAAnAIAAJ0CAACeAgAAnwIAAKACAAChAgAAogIAAKMC AACkAgAApQIAAKYCAACnAgAAqAIAAKkCAACqAgAAqwIAAKwCAACtAgAArgIA AK8CAACwAgAAsQIAALICAACzAgAAtAIAALUCAAC2AgAAtwIAALgCAAC5AgAA ugIAALsCAAC8AgAAvQIAAL4CAAC/AgAAwAIAAMECAADCAgAAwwIAAMQCAADF AgAAxgIAAMcCAADIAgAAyQIAAMoCAADLAgAAzAIAAM0CAADOAgAAzwIAANAC AADRAgAA0gIAANMCAADUAgAA1QIAANYCAADXAgAA2AIAANkCAADaAgAA2wIA ANwCAADdAgAA3gIAAN8CAADgAgAA4QIAAOICAADjAgAA5AIAAOUCAADmAgAA 5wIAAOgCAADpAgAA6gIAAOsCAADsAgAA7QIAAO4CAADvAgAA8AIAAPECAADy AgAA8wIAAPQCAAD1AgAA9gIAAPcCAAD4AgAA+QIAAPoCAAD7AgAA/AIAAP0C AAD+AgAA/wIAAAADAAABAwAAAgMAAAMDAAAEAwAABQMAAAYDAAAHAwAACAMA AAkDAAAKAwAACwMAAAwDAAANAwAADgMAAA8DAAAQAwAAEQMAABIDAAATAwAA FAMAABUDAAAWAwAAFwMAABgDAAAZAwAAGgMAABsDAAAcAwAAHQMAAB4DAAAf AwAAIAMAACEDAAAiAwAAIwMAACQDAAAlAwAAJgMAACcDAAAoAwAAKQMAACoD AAArAwAALAMAAC0DAAAuAwAALwMAADADAAAxAwAAMgMAADMDAAA0AwAANQMA ADYDAAA3AwAAOAMAADkDAAA6AwAAOwMAADwDAAA9AwAAPgMAAD8DAABAAwAA QQMAAEIDAABDAwAARAMAAEUDAABGAwAARwMAAEgDAABJAwAASgMAAEsDAABM AwAATQMAAE4DAABPAwAAUAMAAFEDAABSAwAAUwMAAFQDAABVAwAAVgMAAFcD AABYAwAAWQMAAFoDAABbAwAAXAMAAF0DAABeAwAAXwMAAGADAABhAwAAYgMA AGMDAABkAwAAZQMAAGYDAABnAwAAaAMAAGkDAABqAwAAawMAAGwDAABtAwAA bgMAAG8DAABwAwAAcQMAAHIDAABzAwAAdAMAAHUDAAB2AwAAdwMAAHgDAAB5 AwAAegMAAHsDAAB8AwAAfQMAAH4DAAB/AwAAgAMAAIEDAACCAwAAgwMAAIQD AACFAwAAhgMAAIcDAACIAwAAiQMAAIoDAACLAwAAjAMAAI0DAACOAwAAjwMA AJADAACRAwAAkgMAAJMDAACUAwAAlQMAAJYDAACXAwAAmAMAAJkDAACaAwAA mwMAAJwDAACdAwAAngMAAJ8DAACgAwAAoQMAAKIDAACjAwAApAMAAKUDAACm AwAApwMAAKgDAACpAwAAqgMAAKsDAACsAwAArQMAAK4DAACvAwAA/v///7ED AACyAwAAswMAALQDAAC1AwAAtgMAALcDAAD+////uQMAALoDAAC7AwAAvAMA AL0DAAC+AwAAvwMAAP7////9/////f////3////9/////f////3////9//// /f////7///////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ////UgBvAG8AdAAgAEUAbgB0AHIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAABYABQH//////////wIAAAAgCAIAAAAA AMAAAAAAAABGAAAAAAAAAAAAAAAAAAAAAAAAAAD+////AAAAAAAAAABXAG8A cgBrAGIAbwBvAGsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAEgACAf///////////////wAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYXwcAAAAAAAUAUwB1AG0AbQBh AHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAoAAIBAQAAAAMAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAsAMAAAAQAAAAAAAABQBEAG8AYwB1AG0AZQBuAHQA UwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAA ADgAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAC4AwAAABAAAAAAAAA= --= Multipart Boundary 0131102059--